Made some more char pointers const.
[rsync/rsync.git] / generator.c
index d6bf4fd..47803c1 100644 (file)
@@ -496,7 +496,7 @@ static void do_delete_pass(void)
        for (j = 0; j < cur_flist->used; j++) {
                struct file_struct *file = cur_flist->sorted[j];
 
-               if (!(file->flags & FLAG_XFER_DIR))
+               if (!(file->flags & FLAG_CONTENT_DIR))
                        continue;
 
                f_name(file, fbuf);
@@ -515,7 +515,7 @@ static void do_delete_pass(void)
                rprintf(FINFO, "                    \r");
 }
 
-int unchanged_attrs(const char *fname, struct file_struct *file, statx *sxp)
+int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
 {
        if (preserve_perms && !BITS_EQUAL(sxp->st.st_mode, file->mode, CHMOD_BITS))
                return 0;
@@ -547,7 +547,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, statx *sxp)
 }
 
 void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statret,
-            statx *sxp, int32 iflags, uchar fnamecmp_type,
+            stat_x *sxp, int32 iflags, uchar fnamecmp_type,
             const char *xname)
 {
        if (statret >= 0) { /* A from-dest-dir statret can == 1! */
@@ -562,6 +562,11 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                  && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
                 || (keep_time && cmp_time(file->modtime, sxp->st.st_mtime) != 0))
                        iflags |= ITEM_REPORT_TIME;
+#if !defined HAVE_LCHMOD && !defined HAVE_SETATTRLIST
+               if (S_ISLNK(file->mode)) {
+                       ;
+               } else
+#endif
                if (!BITS_EQUAL(sxp->st.st_mode, file->mode, CHMOD_BITS))
                        iflags |= ITEM_REPORT_PERMS;
                if (uid_ndx && am_root && (uid_t)F_OWNER(file) != sxp->st.st_uid)
@@ -829,7 +834,7 @@ static int find_fuzzy(struct file_struct *file, struct file_list *dirlist)
  * handling the file, -1 if no dest-linking occurred, or a non-negative
  * value if we found an alternate basis file. */
 static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
-                        char *cmpbuf, statx *sxp, int itemizing,
+                        char *cmpbuf, stat_x *sxp, int itemizing,
                         enum logcode code)
 {
        int best_match = -1;
@@ -899,7 +904,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
 #ifdef SUPPORT_HARD_LINKS
          try_a_copy: /* Copy the file locally. */
 #endif
-               if (copy_file(cmpbuf, fname, file->mode, 0) < 0) {
+               if (!dry_run && copy_file(cmpbuf, fname, file->mode, 0) < 0) {
                        if (verbose) {
                                rsyserr(FINFO, errno, "copy_file %s => %s",
                                        full_fname(cmpbuf), fname);
@@ -934,7 +939,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
  * handling the file, or -1 if no dest-linking occurred, or a non-negative
  * value if we found an alternate basis file. */
 static int try_dests_non(struct file_struct *file, char *fname, int ndx,
-                        char *cmpbuf, statx *sxp, int itemizing,
+                        char *cmpbuf, stat_x *sxp, int itemizing,
                         enum logcode code)
 {
        char lnk[MAXPATHLEN];
@@ -1124,14 +1129,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
        static int need_fuzzy_dirlist = 0;
        struct file_struct *fuzzy_file = NULL;
        int fd = -1, f_copy = -1;
-       statx sx, real_sx;
+       stat_x sx, real_sx;
        STRUCT_STAT partial_st;
        struct file_struct *back_file = NULL;
        int statret, real_ret, stat_errno;
        char *fnamecmp, *partialptr, *backupptr = NULL;
        char fnamecmpbuf[MAXPATHLEN];
        uchar fnamecmp_type;
-       int implied_dirs_are_missing = relative_paths && !implied_dirs && !inc_recurse;
+       int implied_dirs_are_missing = relative_paths && !implied_dirs && protocol_version < 30;
        int del_opts = delete_mode || force_delete ? DEL_RECURSE : 0;
 
        if (verbose > 2)
@@ -1139,7 +1144,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
 
        if (list_only) {
                if (S_ISDIR(file->mode)
-                && ((!implied_dirs && !(file->flags & FLAG_XFER_DIR))
+                && ((!implied_dirs && file->flags & FLAG_IMPLIED_DIR)
                  || (inc_recurse && ndx != cur_flist->ndx_start - 1)))
                        return;
                list_file_entry(file);
@@ -1248,10 +1253,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
        }
 
        if (S_ISDIR(file->mode)) {
-               if (!implied_dirs && !(file->flags & FLAG_XFER_DIR))
+               if (!implied_dirs && file->flags & FLAG_IMPLIED_DIR)
                        goto cleanup;
                if (inc_recurse && ndx != cur_flist->ndx_start - 1) {
-                       /* In inc_recurse mode we want ot make sure any missing
+                       /* In inc_recurse mode we want to make sure any missing
                         * directories get created while we're still processing
                         * the parent dir (which allows us to touch the parent
                         * dir's mtime right away).  We will handle the dir in
@@ -1345,7 +1350,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        }
                }
                else if (delete_during && f_out != -1 && !phase && dry_run < 2
-                   && (file->flags & FLAG_XFER_DIR))
+                   && (file->flags & FLAG_CONTENT_DIR))
                        delete_in_dir(fname, file, &real_sx.st.st_dev);
                goto cleanup;
        }
@@ -1832,7 +1837,7 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
        for (i = start; i <= end; i++, counter++) {
                file = flist->files[i];
                if (!S_ISDIR(file->mode)
-                || (relative_paths && !implied_dirs && !(file->flags & FLAG_XFER_DIR)))
+                || (!implied_dirs && file->flags & FLAG_IMPLIED_DIR))
                        continue;
                if (verbose > 3) {
                        fname = f_name(file, NULL);
@@ -1868,6 +1873,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
                file = flist->files[ndx - flist->ndx_start];
                assert(file->flags & FLAG_HLINKED);
                finish_hard_link(file, f_name(file, fbuf), ndx, NULL, itemizing, code, -1);
+               flist->in_progress--;
        }
 #endif
 
@@ -2002,7 +2008,7 @@ void generate_files(int f_out, const char *local_name)
                        ndx = cur_flist->ndx_start - 1;
                        recv_generator(fbuf, fp, ndx, itemizing, code, f_out);
                        if (delete_during && dry_run < 2) {
-                               if (BITS_SETnUNSET(fp->flags, FLAG_XFER_DIR, FLAG_MISSING_DIR)) {
+                               if (BITS_SETnUNSET(fp->flags, FLAG_CONTENT_DIR, FLAG_MISSING_DIR)) {
                                        dev_t dirdev;
                                        if (one_file_system) {
                                                uint32 *devp = F_DIR_DEV_P(fp);