summaryrefslogtreecommitdiff
path: root/src/ImageMetaData.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ImageMetaData.cxx')
-rw-r--r--src/ImageMetaData.cxx20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/ImageMetaData.cxx b/src/ImageMetaData.cxx
index a678360..f22a641 100644
--- a/src/ImageMetaData.cxx
+++ b/src/ImageMetaData.cxx
@@ -93,7 +93,7 @@ degminsecstr2double(char *val) {
int
ImageMetaData::load_image_exif(char *name) {
- char * args[32];
+ const char * args[32];
FILE *p;
pid_t pid;
int status;
@@ -107,7 +107,7 @@ ImageMetaData::load_image_exif(char *name) {
args[3] = name;
args[4] = NULL;
- p = pexecvp(args[0], args, &pid, "r");
+ p = pexecvp(args[0], const_cast<char * const *>(args), &pid, "r");
if (p) {
while (fgets(buf, sizeof(buf), p) != NULL) {
@@ -155,7 +155,7 @@ ImageMetaData::load_image_exif(char *name) {
int
ImageMetaData::load_image_jpgcom(char *name) {
- char * args[32];
+ const char * args[32];
FILE *p;
pid_t pid;
int status;
@@ -168,7 +168,7 @@ ImageMetaData::load_image_jpgcom(char *name) {
args[1] = name;
args[2] = NULL;
- p = pexecvp(args[0], args, &pid, "r");
+ p = pexecvp(args[0], const_cast<char * const *>(args), &pid, "r");
if (p) {
while (fgets(buf, sizeof(buf), p) != NULL) {
@@ -208,15 +208,18 @@ ImageMetaData::load_image_jpgcom(char *name) {
int
ImageMetaData::save_image_jpgcom(char *in_img, char *out_img) {
- char * args[32];
+ const char * args[32];
FILE *p;
pid_t pid;
char buf[1024], tmpname[MAXPATHLEN];
int status, err = 0;
ssize_t n;
int tmp_fd;
+ char *dirbuf;
- snprintf(tmpname, sizeof(tmpname), "%s/.gipfelXXXXXX", dirname(out_img));
+ dirbuf = strdup(out_img);
+ snprintf(tmpname, sizeof(tmpname), "%s/.gipfelXXXXXX", dirname(dirbuf));
+ free(dirbuf);
tmp_fd = mkstemp(tmpname);
if (tmp_fd < 0) {
perror("mkstemp");
@@ -242,7 +245,7 @@ ImageMetaData::save_image_jpgcom(char *in_img, char *out_img) {
args[4] = in_img;
args[5] = NULL;
- p = pexecvp(args[0], args, &pid, "r");
+ p = pexecvp(args[0], const_cast<char * const *>(args), &pid, "r");
if (p) {
while ((n = fread(buf, 1, sizeof(buf), p)) != 0) {
@@ -263,7 +266,8 @@ ImageMetaData::save_image_jpgcom(char *in_img, char *out_img) {
err++;
}
- close(tmp_fd);
+ fsync(tmp_fd); /* make sure data is on disk before replacing orig file */
+ close(tmp_fd);
if (!err) {
if (rename(tmpname, out_img) != 0) {