Browse code

bb#1517

git-svn: trunk@4989

aCaB authored on 2009/03/29 20:41:14
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Sun Mar 29 13:38:43 CEST 2009 (acab)
2
+------------------------------------
3
+ * shared/actions.c: fix logic in --move (bb#1517)
4
+
1 5
 Fri Mar 27 13:19:05 CET 2009 (acab)
2 6
 -----------------------------------
3 7
  * clamav-milter/clamfi.c: Make sure connect/gentemp is called even
... ...
@@ -49,7 +49,10 @@ int getdest(const char *fullpath, char **newname) {
49 49
     int fd, i;
50 50
 
51 51
     tmps = strdup(fullpath);
52
-    if(!tmps) return -1;
52
+    if(!tmps) {
53
+        *newname=NULL;
54
+        return -1;
55
+    }
53 56
     filename = basename(tmps);
54 57
 
55 58
     if(!(*newname = (char *)malloc(targlen + strlen(filename) + 6))) {
... ...
@@ -74,14 +77,14 @@ int getdest(const char *fullpath, char **newname) {
74 74
 
75 75
 static void action_move(const char *filename) {
76 76
     char *nuname;
77
-    int fd = getdest(filename, &nuname);
77
+    int fd = getdest(filename, &nuname), copied = 0;
78 78
 
79
-    if(fd<0 || rename(filename, nuname) || filecopy(filename, nuname)) {
79
+    if(fd<0 || (rename(filename, nuname) && (copied=1) && filecopy(filename, nuname)) {
80 80
 	logg("!Can't move file %s\n", filename);
81 81
 	notmoved++;
82 82
 	if(nuname) unlink(nuname);
83 83
     } else {
84
-	if(unlink(filename))
84
+	if(copied && unlink(filename))
85 85
 	    logg("!Can't unlink '%s': %s\n", filename, strerror(errno));
86 86
 	else
87 87
 	    logg("~%s: moved to '%s'\n", filename, nuname);