summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2014-01-19 12:23:39 -0800
committerWayne Davison <wayned@samba.org>2014-01-19 12:23:39 -0800
commit31825a94b3bd531bbe6cfc1203708ecec9484364 (patch)
treeceece07d24cde767fda477eb87cce4e1165edeab
parent5dcef7c6dd2c50cc5a96dc86efcab737fd2b7433 (diff)
downloadrsync-31825a94b3bd531bbe6cfc1203708ecec9484364.tar.gz
Add IS_MISSING_FILE(statbuf) macro.
-rw-r--r--flist.c6
-rw-r--r--rsync.h2
2 files changed, 5 insertions, 3 deletions
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