diff options
author | Ton Roosendaal <ton@blender.org> | 2004-12-16 17:40:25 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-12-16 17:40:25 +0300 |
commit | 1b4667b33f4937f3ae2ee1c4f0661d35b14cdffd (patch) | |
tree | b15db342dfaba42e42e6d8d734f6111f92ab3075 | |
parent | 6719d88aab15627bdbe05f7ac116addffd2e165f (diff) |
Errors in saving runtime, and fileops in file window; files were copied
or deleted without keeping track of spaces in names, causing in potential
loss of data.
Needs review!
-rw-r--r-- | source/blender/blenlib/intern/fileops.c | 23 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 12 |
2 files changed, 23 insertions, 12 deletions
diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index a0d071aa177..a743e552407 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -222,12 +222,19 @@ int BLI_rename(char *from, char *to) { * */ static char str[MAXPATHLEN+12]; -int BLI_delete(char *file, int dir, int recursive) { - if (recursive) sprintf(str, "/bin/rm -rf %s", file); - else if (dir) sprintf(str, "/bin/rmdir \"%s\"", file); - else sprintf(str, "/bin/rm -f \"%s\"", file); +int BLI_delete(char *file, int dir, int recursive) +{ + if(strchr(file, '"')) { + printf("Error: not deleted file %s because of quote!\n", file); + } + else { + if (recursive) sprintf(str, "/bin/rm -rf \"%s\"", file); + else if (dir) sprintf(str, "/bin/rmdir \"%s\"", file); + else sprintf(str, "/bin/rm -f \"%s\"", file); - return system(str); + return system(str); + } + return -1; } int BLI_touch(char *file) @@ -242,19 +249,19 @@ int BLI_touch(char *file) } int BLI_move(char *file, char *to) { - sprintf(str, "/bin/mv -f %s %s", file, to); + sprintf(str, "/bin/mv -f \"%s\" \"%s\"", file, to); return system(str); } int BLI_copy_fileops(char *file, char *to) { - sprintf(str, "/bin/cp -rf \"%s\" %s", file, to); + sprintf(str, "/bin/cp -rf \"%s\" \"%s\"", file, to); return system(str); } int BLI_link(char *file, char *to) { - sprintf(str, "/bin/ln -f %s %s", file, to); + sprintf(str, "/bin/ln -f \"%s\" \"%s\"", file, to); return system(str); } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index a325749dede..7fc8ac914e4 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1667,7 +1667,8 @@ static char *get_runtime_path(char *exename) { #ifdef __APPLE__ -static int recursive_copy_runtime(char *outname, char *exename, char **cause_r) { +static int recursive_copy_runtime(char *outname, char *exename, char **cause_r) +{ char *cause = NULL, *runtime = get_runtime_path(exename); char command[2 * (FILE_MAXDIR+FILE_MAXFILE) + 32]; int progfd = -1; @@ -1676,14 +1677,16 @@ static int recursive_copy_runtime(char *outname, char *exename, char **cause_r) cause= "Unable to find runtime"; goto cleanup; } - + //printf("runtimepath %s\n", runtime); + progfd= open(runtime, O_BINARY|O_RDONLY, 0); if (progfd==-1) { cause= "Unable to find runtime"; goto cleanup; } - sprintf(command, "/bin/cp -R %s %s", runtime, outname); + sprintf(command, "/bin/cp -R \"%s\" \"%s\"", runtime, outname); + //printf("command %s\n", command); if (system(command) == -1) { cause = "Couldn't copy runtime"; } @@ -1707,6 +1710,7 @@ void BLO_write_runtime(char *file, char *exename) { char *cause= NULL; // remove existing file / bundle + //printf("Delete file %s\n", file); BLI_delete(file, NULL, TRUE); if (!recursive_copy_runtime(file, exename, &cause)) @@ -1714,7 +1718,7 @@ void BLO_write_runtime(char *file, char *exename) { strcpy(gamename, file); strcat(gamename, "/Contents/Resources/game.blend"); - + //printf("gamename %s\n", gamename); outfd= open(gamename, O_BINARY|O_WRONLY|O_CREAT|O_TRUNC, 0777); if (outfd != -1) { |