git-svn: trunk@4989
aCaB authored on 2009/03/29 20:41:14... | ... |
@@ -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); |