John E. Malmberg convinced me to standardize on #ifs for defined
[rsync/rsync.git] / hlink.c
diff --git a/hlink.c b/hlink.c
index 110e6ed..350c5de 100644 (file)
--- a/hlink.c
+++ b/hlink.c
@@ -24,7 +24,7 @@ extern int dry_run;
 extern int verbose;
 extern int make_backups;
 
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
 static int hlink_compare(struct file_struct **file1, struct file_struct **file2)
 {
        struct file_struct *f1 = *file1;
@@ -36,7 +36,7 @@ static int hlink_compare(struct file_struct **file1, struct file_struct **file2)
        if (f1->F_INODE != f2->F_INODE)
                return (int) (f1->F_INODE > f2->F_INODE ? 1 : -1);
 
-       return file_compare(file1, file2);
+       return f_name_cmp(f1, f2);
 }
 
 static struct file_struct **hlink_list;
@@ -104,7 +104,7 @@ static void link_idev_data(struct file_list *flist)
 
 void init_hard_links(struct file_list *flist)
 {
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
        int i;
 
        if (flist->count < 2)
@@ -135,31 +135,33 @@ void init_hard_links(struct file_list *flist)
 
 int hard_link_check(struct file_struct *file, int skip)
 {
-       if (!file->link_u.links)
+#ifdef SUPPORT_HARD_LINKS
+       if (!hlink_list || !file->link_u.links)
                return 0;
        if (skip && !(file->flags & FLAG_HLINK_EOL))
                hlink_list[file->F_HLINDEX] = file->F_NEXT;
        if (hlink_list[file->F_HLINDEX] != file) {
                if (verbose > 1) {
                        rprintf(FINFO, "\"%s\" is a hard link\n",
-                           f_name(file));
+                               safe_fname(f_name(file)));
                }
                return 1;
        }
+#endif
        return 0;
 }
 
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
 static void hard_link_one(char *hlink1, char *hlink2)
 {
        if (do_link(hlink1, hlink2)) {
                if (verbose) {
-                       rprintf(FINFO, "link %s => %s failed: %s\n",
-                           hlink2, hlink1, strerror(errno));
+                       rsyserr(FINFO, errno, "link %s => %s failed",
+                               full_fname(hlink2), safe_fname(hlink1));
                }
        }
        else if (verbose)
-               rprintf(FINFO, "%s => %s\n", hlink2, hlink1);
+               rprintf(FINFO, "%s => %s\n", safe_fname(hlink2), safe_fname(hlink1));
 }
 #endif
 
@@ -171,7 +173,7 @@ static void hard_link_one(char *hlink1, char *hlink2)
  **/
 void do_hard_links(void)
 {
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
        struct file_struct *file, *first;
        char hlink1[MAXPATHLEN];
        char *hlink2;
@@ -183,11 +185,11 @@ void do_hard_links(void)
 
        for (i = 0; i < hlink_count; i++) {
                first = file = hlink_list[i];
-               if (link_stat(f_name_to(first, hlink1), &st1) != 0)
+               if (link_stat(f_name_to(first, hlink1), &st1, 0) < 0)
                        continue;
                while ((file = file->F_NEXT) != first) {
                        hlink2 = f_name(file);
-                       if (link_stat(hlink2, &st2) == 0) {
+                       if (link_stat(hlink2, &st2, 0) == 0) {
                                if (st2.st_dev == st1.st_dev
                                    && st2.st_ino == st1.st_ino)
                                        continue;
@@ -196,10 +198,9 @@ void do_hard_links(void)
                                                continue;
                                } else if (robust_unlink(hlink2)) {
                                        if (verbose > 0) {
-                                               rprintf(FINFO,
-                                                   "unlink %s failed: %s\n",
-                                                   full_fname(hlink2), 
-                                                   strerror(errno));
+                                               rsyserr(FINFO, errno,
+                                                       "unlink %s failed",
+                                                       full_fname(hlink2));
                                        }
                                        continue;
                                }