Changed rprintf() calls that included strerror() to use rsyserr().
[rsync/rsync.git] / generator.c
index de5e2bb..4a6d82e 100644 (file)
@@ -43,6 +43,14 @@ extern int protocol_version;
 extern int always_checksum;
 extern char *compare_dest;
 extern int link_dest;
+extern int whole_file;
+extern int local_server;
+extern int read_batch;
+extern int write_batch;
+extern int list_only;
+extern int only_existing;
+extern int orig_umask;
+extern int safe_symlinks;
 
 
 /* choose whether to skip a particular file */
@@ -53,7 +61,7 @@ static int skip_file(char *fname, struct file_struct *file, STRUCT_STAT *st)
        }
        if (link_dest) {
                if (preserve_perms
-                   && (st->st_mode & ~_S_IFMT) != (file->mode & ~_S_IFMT))
+                   && (st->st_mode & CHMOD_BITS) != (file->mode & CHMOD_BITS))
                        return 0;
 
                if (am_root && preserve_uid && st->st_uid != file->uid)
@@ -204,13 +212,9 @@ static void sum_sizes_sqroot(struct sum_struct *sum, uint64 len)
  * Whew. */
 static BOOL disable_deltas_p(void)
 {
-       extern int whole_file;
-       extern int local_server;
-       extern int write_batch;
-
        if (whole_file > 0)
                return True;
-       if (whole_file == 0 || write_batch)
+       if (whole_file == 0 || write_batch || read_batch)
                return False;
        return local_server;
 }
@@ -270,10 +274,6 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
        int statret;
        char *fnamecmp;
        char fnamecmpbuf[MAXPATHLEN];
-       extern char *compare_dest;
-       extern int list_only;
-       extern int only_existing;
-       extern int orig_umask;
 
        if (list_only)
                return;
@@ -295,7 +295,8 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
                /* if the file exists already and we aren't perserving
                 * permissions then act as though the remote end sent
                 * us the file permissions we already have */
-               file->mode = (file->mode & _S_IFMT) | (st.st_mode & ~_S_IFMT);
+               file->mode = (file->mode & ~CHMOD_BITS)
+                          | (st.st_mode & CHMOD_BITS);
        }
 
        if (S_ISDIR(file->mode)) {
@@ -334,7 +335,6 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
 #if SUPPORT_LINKS
                char lnk[MAXPATHLEN];
                int l;
-               extern int safe_symlinks;
 
                if (safe_symlinks && unsafe_symlink(file->u.link, fname)) {
                        if (verbose) {
@@ -351,7 +351,8 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
                                 * right place -- no further action
                                 * required. */
                                if (strcmp(lnk,file->u.link) == 0) {
-                                       set_perms(fname,file,&st,1);
+                                       set_perms(fname, file, &st,
+                                                 PERMS_REPORT);
                                        return;
                                }
                        }
@@ -377,7 +378,7 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
        if (am_root && preserve_devices && IS_DEVICE(file->mode)) {
                if (statret != 0 ||
                    st.st_mode != file->mode ||
-                   (DEV64_T)st.st_rdev != file->u.rdev) {
+                   st.st_rdev != file->u.rdev) {
                        delete_file(fname);
                        if (verbose > 2)
                                rprintf(FINFO,"mknod(%s,0%o,0x%x)\n",
@@ -391,7 +392,7 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
                                        rprintf(FINFO,"%s\n",fname);
                        }
                } else {
-                       set_perms(fname,file,&st,1);
+                       set_perms(fname, file, &st, PERMS_REPORT);
                }
                return;
        }
@@ -473,7 +474,7 @@ void recv_generator(char *fname, struct file_struct *file, int i, int f_out)
 
        if (skip_file(fname, file, &st)) {
                if (fnamecmp == fname)
-                       set_perms(fname,file,&st,1);
+                       set_perms(fname, file, &st, PERMS_REPORT);
                return;
        }