X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4875d6b64dd0ed8d451746cc0cc609cff36192bd..c786a7aec545259f857212a2376ee4c274d2e3b6:/rsync.c diff --git a/rsync.c b/rsync.c index 89fe6f3e..4c34deb4 100644 --- a/rsync.c +++ b/rsync.c @@ -24,6 +24,7 @@ extern int verbose; extern int dry_run; +extern int itemize_changes; extern int preserve_times; extern int omit_dir_times; extern int am_root; @@ -33,11 +34,13 @@ extern int am_generator; extern int preserve_uid; extern int preserve_gid; extern int force_delete; +extern int inplace; extern int recurse; extern int keep_dirlinks; extern int make_backups; +extern struct stats stats; extern char *backup_dir; -extern int inplace; +extern char *log_format; /* @@ -54,7 +57,7 @@ void free_sums(struct sum_struct *s) * delete a file or directory. If force_delete is set then delete * recursively */ -int delete_file(char *fname, int flags) +int delete_file(char *fname, int mode, int flags) { DIR *d; struct dirent *di; @@ -62,12 +65,10 @@ int delete_file(char *fname, int flags) STRUCT_STAT st; int zap_dir; - if (!(flags & DEL_DIR)) { + if (!S_ISDIR(mode)) { if (robust_unlink(fname) == 0) { - if (verbose && !(flags & DEL_TERSE)) { - rprintf(FINFO, "deleting %s\n", - safe_fname(fname)); - } + if ((verbose || log_format) && !(flags & DEL_TERSE)) + log_delete(fname, mode); return 0; } if (errno == ENOENT) @@ -82,10 +83,8 @@ int delete_file(char *fname, int flags) if (dry_run && zap_dir) errno = ENOTEMPTY; else if (do_rmdir(fname) == 0) { - if (verbose && !(flags & DEL_TERSE)) { - rprintf(FINFO, "deleting %s/\n", - safe_fname(fname)); - } + if ((verbose || log_format) && !(flags & DEL_TERSE)) + log_delete(fname, mode); return 0; } if (errno == ENOENT) @@ -104,8 +103,8 @@ int delete_file(char *fname, int flags) } if (!(flags & DEL_TERSE)) { - if (verbose) - rprintf(FINFO, "deleting %s/\n", safe_fname(fname)); + if (verbose || log_format) + log_delete(fname, mode); flags |= DEL_TERSE; } @@ -118,16 +117,9 @@ int delete_file(char *fname, int flags) if (do_lstat(buf, &st) < 0) continue; - if (S_ISDIR(st.st_mode)) - flags |= DEL_DIR; - else - flags &= ~DEL_DIR; - - if (verbose) { - rprintf(FINFO, "deleting %s%s\n", safe_fname(buf), - flags & DEL_DIR ? "/" : ""); - } - if (delete_file(buf, flags) != 0) { + if (verbose || log_format) + log_delete(buf, st.st_mode); + if (delete_file(buf, st.st_mode, flags) != 0) { closedir(d); return -1; } @@ -185,7 +177,7 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st, change_uid = am_root && preserve_uid && st->st_uid != file->uid; change_gid = preserve_gid && file->gid != GID_NONE && st->st_gid != file->gid; -#if !HAVE_LCHOWN && !CHOWN_MODIFIES_SYMLINK +#if !defined HAVE_LCHOWN && !defined CHOWN_MODIFIES_SYMLINK if (S_ISLNK(st->st_mode)) ; else @@ -225,7 +217,7 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st, updated = 1; } -#if HAVE_CHMOD +#ifdef HAVE_CHMOD if (!S_ISLNK(st->st_mode)) { if ((st->st_mode & CHMOD_BITS) != (file->mode & CHMOD_BITS)) { updated = 1;