diff options
| author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-04-07 15:56:53 +0200 | 
|---|---|---|
| committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-04-07 15:56:53 +0200 | 
| commit | e81e5f4db0d3757ce311d1b81a7b0c6afc9162c9 (patch) | |
| tree | 849f4320c631dacdb280e50754b65454bacbbdfd /src | |
| parent | fa801ea0a0322711a652a05c8e48263dd210e2f4 (diff) | |
add mkstemp() alternative
Diffstat (limited to 'src')
| -rw-r--r-- | src/ImageMetaData.cxx | 29 | 
1 files changed, 17 insertions, 12 deletions
| diff --git a/src/ImageMetaData.cxx b/src/ImageMetaData.cxx index 1c6c3c6..cda2de6 100644 --- a/src/ImageMetaData.cxx +++ b/src/ImageMetaData.cxx @@ -20,6 +20,7 @@  #include <exiv2/image.hpp>  #include <exiv2/exif.hpp> +#include "../config.h"  #include "ImageMetaData.H"  ImageMetaData::ImageMetaData() { @@ -200,27 +201,31 @@ ImageMetaData::load_image_jpgcom(char *name) {  int  ImageMetaData::save_image_jpgcom(char *in_img, char *out_img) { -    char buf[1024], tmpname[MAXPATHLEN]; +    char buf[1024], *tmpname;      int n, in_fd, tmp_fd, err = 0;      char* dirbuf = strdup(out_img); -    snprintf(tmpname, sizeof(tmpname), "%s/.gipfelXXXXXX", dirname(dirbuf)); -    free(dirbuf); +#if ! HAVE_MKSTEMP +	tmpname = tempnam(dirname(dirbuf), ".gipfel"); +	tmp_fd = open(tmpname, O_WRONLY|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP); +#else +	char tmpbuf[MAXPATHLEN]; +	snprintf(tmpbuf, sizeof(tmpbuf), "%s/.gipfelXXXXXX", dirname(dirbuf)); +	tmp_fd = mkstemp(tmpbuf); +	tmpname = tmpbuf; +#endif +	free(dirbuf); -	in_fd = open(in_img, O_RDONLY); -	if (in_fd == -1) { +	if (tmp_fd == -1) {  		perror("open");  		return 1;  	} -#ifdef WIN32 -	tmp_fd = open(tmpname, O_WRONLY|O_TRUNC|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP); -#else -	tmp_fd = mkstemp(tmpname); -#endif -	if (tmp_fd == -1) { +	in_fd = open(in_img, O_RDONLY); +	if (in_fd == -1) {  		perror("open"); -		close(in_fd); +		unlink(tmpname); +		close(tmp_fd);  		return 1;  	} | 
