- Added a new function, maybe_hard_link(), which now holds the code
[rsync/rsync.git] / generator.c
index b73e50a..3bb3749 100644 (file)
@@ -668,7 +668,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
        if (only_existing && statret == -1 && stat_errno == ENOENT) {
                /* we only want to update existing files */
                if (verbose > 1) {
-                       rprintf(FINFO, "not creating new file \"%s\"\n",
+                       rprintf(FINFO, "not creating new %s \"%s\"\n",
+                               S_ISDIR(file->mode) ? "directory" : "file",
                                safe_fname(fname));
                }
                return;
@@ -722,6 +723,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
 
        if (max_size && file->length > max_size) {
                if (verbose > 1) {
+                       if (the_file_list->count == 1)
+                               fname = f_name(file);
                        rprintf(FINFO, "%s is over max-size\n",
                                safe_fname(fname));
                }
@@ -732,6 +735,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
 #ifdef SUPPORT_LINKS
                if (safe_symlinks && unsafe_symlink(file->u.link, fname)) {
                        if (verbose) {
+                               if (the_file_list->count == 1)
+                                       fname = f_name(file);
                                rprintf(FINFO,
                                        "ignoring unsafe symlink %s -> \"%s\"\n",
                                        full_fname(fname),
@@ -824,10 +829,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                return;
        }
 
-       if (preserve_hard_links && hard_link_check(file, ndx, HL_CHECK_MASTER))
+       if (preserve_hard_links
+           && hard_link_check(file, ndx, fname, statret, &st,
+                              itemizing, code, HL_CHECK_MASTER))
                return;
 
        if (!S_ISREG(file->mode)) {
+               if (the_file_list->count == 1)
+                       fname = f_name(file);
                rprintf(FINFO, "skipping non-regular file \"%s\"\n",
                        safe_fname(fname));
                return;
@@ -907,11 +916,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                                  itemizing && verbose > 1,
                                                  code) == 0)
                                        return;
-                               if (verbose) {
-                                       rsyserr(FINFO, errno, "link %s => %s",
-                                               full_fname(fnamecmpbuf),
-                                               safe_fname(fname));
-                               }
                                match_level = 2;
                        }
 #endif
@@ -980,7 +984,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
        }
 
        if (statret != 0) {
-               if (preserve_hard_links && hard_link_check(file, ndx, HL_SKIP))
+               if (preserve_hard_links
+                   && hard_link_check(file, ndx, fname, statret, &st,
+                                      itemizing, code, HL_SKIP))
                        return;
                if (stat_errno == ENOENT)
                        goto notify_others;
@@ -1038,7 +1044,9 @@ prepare_to_open:
                        full_fname(fnamecmp));
            pretend_missing:
                /* pretend the file didn't exist */
-               if (preserve_hard_links && hard_link_check(file, ndx, HL_SKIP))
+               if (preserve_hard_links
+                   && hard_link_check(file, ndx, fname, statret, &st,
+                                      itemizing, code, HL_SKIP))
                        return;
                statret = real_ret = -1;
                goto notify_others;