Commit c786a7ae authored by Wayne Davison's avatar Wayne Davison

- Changed the calling args to delete_file() to take an st_mode instead

  of a DEL_DIR flag.
- Call log_delete() instead of outputting "deleting ..." messages..
- Log deletions if either verbose or log-format is specified.
parent 8a8356b7
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
extern int verbose; extern int verbose;
extern int dry_run; extern int dry_run;
extern int itemize_changes;
extern int preserve_times; extern int preserve_times;
extern int omit_dir_times; extern int omit_dir_times;
extern int am_root; extern int am_root;
...@@ -33,11 +34,13 @@ extern int am_generator; ...@@ -33,11 +34,13 @@ extern int am_generator;
extern int preserve_uid; extern int preserve_uid;
extern int preserve_gid; extern int preserve_gid;
extern int force_delete; extern int force_delete;
extern int inplace;
extern int recurse; extern int recurse;
extern int keep_dirlinks; extern int keep_dirlinks;
extern int make_backups; extern int make_backups;
extern struct stats stats;
extern char *backup_dir; extern char *backup_dir;
extern int inplace; extern char *log_format;
/* /*
...@@ -54,7 +57,7 @@ void free_sums(struct sum_struct *s) ...@@ -54,7 +57,7 @@ void free_sums(struct sum_struct *s)
* delete a file or directory. If force_delete is set then delete * delete a file or directory. If force_delete is set then delete
* recursively * recursively
*/ */
int delete_file(char *fname, int flags) int delete_file(char *fname, int mode, int flags)
{ {
DIR *d; DIR *d;
struct dirent *di; struct dirent *di;
...@@ -62,12 +65,10 @@ int delete_file(char *fname, int flags) ...@@ -62,12 +65,10 @@ int delete_file(char *fname, int flags)
STRUCT_STAT st; STRUCT_STAT st;
int zap_dir; int zap_dir;
if (!(flags & DEL_DIR)) { if (!S_ISDIR(mode)) {
if (robust_unlink(fname) == 0) { if (robust_unlink(fname) == 0) {
if (verbose && !(flags & DEL_TERSE)) { if ((verbose || log_format) && !(flags & DEL_TERSE))
rprintf(FINFO, "deleting %s\n", log_delete(fname, mode);
safe_fname(fname));
}
return 0; return 0;
} }
if (errno == ENOENT) if (errno == ENOENT)
...@@ -82,10 +83,8 @@ int delete_file(char *fname, int flags) ...@@ -82,10 +83,8 @@ int delete_file(char *fname, int flags)
if (dry_run && zap_dir) if (dry_run && zap_dir)
errno = ENOTEMPTY; errno = ENOTEMPTY;
else if (do_rmdir(fname) == 0) { else if (do_rmdir(fname) == 0) {
if (verbose && !(flags & DEL_TERSE)) { if ((verbose || log_format) && !(flags & DEL_TERSE))
rprintf(FINFO, "deleting %s/\n", log_delete(fname, mode);
safe_fname(fname));
}
return 0; return 0;
} }
if (errno == ENOENT) if (errno == ENOENT)
...@@ -104,8 +103,8 @@ int delete_file(char *fname, int flags) ...@@ -104,8 +103,8 @@ int delete_file(char *fname, int flags)
} }
if (!(flags & DEL_TERSE)) { if (!(flags & DEL_TERSE)) {
if (verbose) if (verbose || log_format)
rprintf(FINFO, "deleting %s/\n", safe_fname(fname)); log_delete(fname, mode);
flags |= DEL_TERSE; flags |= DEL_TERSE;
} }
...@@ -118,16 +117,9 @@ int delete_file(char *fname, int flags) ...@@ -118,16 +117,9 @@ int delete_file(char *fname, int flags)
if (do_lstat(buf, &st) < 0) if (do_lstat(buf, &st) < 0)
continue; continue;
if (S_ISDIR(st.st_mode)) if (verbose || log_format)
flags |= DEL_DIR; log_delete(buf, st.st_mode);
else if (delete_file(buf, st.st_mode, flags) != 0) {
flags &= ~DEL_DIR;
if (verbose) {
rprintf(FINFO, "deleting %s%s\n", safe_fname(buf),
flags & DEL_DIR ? "/" : "");
}
if (delete_file(buf, flags) != 0) {
closedir(d); closedir(d);
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment