From: Wayne Davison Date: Sun, 19 Jan 2014 20:23:39 +0000 (-0800) Subject: Add IS_MISSING_FILE(statbuf) macro. X-Git-Tag: v3.1.1pre1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31825a94b3bd531bbe6cfc1203708ecec9484364;p=thirdparty%2Frsync.git Add IS_MISSING_FILE(statbuf) macro. --- diff --git a/flist.c b/flist.c index bf8d124b..a3467776 100644 --- a/flist.c +++ b/flist.c @@ -1156,7 +1156,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, if (sanitize_paths) sanitize_path(thisname, thisname, "", 0, SP_DEFAULT); - if (stp && (S_ISDIR(stp->st_mode) || stp->st_mode == 0)) { + if (stp && (S_ISDIR(stp->st_mode) || IS_MISSING_FILE(*stp))) { /* This is needed to handle a "symlink/." with a --relative * dir, or a request to delete a specific file. */ st = *stp; @@ -1200,7 +1200,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, full_fname(thisname)); } return NULL; - } else if (st.st_mode == 0) { + } else if (IS_MISSING_FILE(st)) { io_error |= IOERR_GENERAL; rprintf(FINFO, "skipping file with bogus (zero) st_mode: %s\n", full_fname(thisname)); @@ -2290,7 +2290,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) } else fn = p; send_implied_dirs(f, flist, fbuf, fbuf, p, flags, - st.st_mode == 0 ? MISSING_NAME : name_type); + IS_MISSING_FILE(st) ? MISSING_NAME : name_type); if (fn == p) continue; } diff --git a/rsync.h b/rsync.h index fcb4c267..b2869d04 100644 --- a/rsync.h +++ b/rsync.h @@ -787,6 +787,8 @@ extern int xattrs_ndx; #define DIR_FIRST_CHILD(a) (a)[1] #define DIR_NEXT_SIBLING(a) (a)[2] +#define IS_MISSING_FILE(statbuf) ((statbuf).st_mode == 0) + /* * Start the flist array at FLIST_START entries and grow it * by doubling until FLIST_LINEAR then grow by FLIST_LINEAR