Errors in saving runtime, and fileops in file window; files were copied
authorTon Roosendaal <ton@blender.org>
Thu, 16 Dec 2004 14:40:25 +0000 (14:40 +0000)
committerTon Roosendaal <ton@blender.org>
Thu, 16 Dec 2004 14:40:25 +0000 (14:40 +0000)
or deleted without keeping track of spaces in names, causing in potential
loss of data.

Needs review!

source/blender/blenlib/intern/fileops.c
source/blender/blenloader/intern/writefile.c

index a0d071aa17700c3355cbe60299742ffb913104c4..a743e5524075f50ab19057ba6a43aec6f5dc3bb8 100644 (file)
@@ -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);
 }
index a325749dedec9b4f60c7e9457eb2fd3bc3375234..7fc8ac914e41fdf4155046c19183275e5c5560a3 100644 (file)
@@ -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) {