Decided that I like remove-source-files better than remove-sender-files.
[rsync/rsync.git] / hlink.c
diff --git a/hlink.c b/hlink.c
index 0f74950..cd0941f 100644 (file)
--- a/hlink.c
+++ b/hlink.c
@@ -1,30 +1,34 @@
 /*
-   Copyright (C) Andrew Tridgell 1996
-   Copyright (C) Paul Mackerras 1996
-   Copyright (C) 2002 by Martin Pool <mbp@samba.org>
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * Routines to support hard-linking.
+ *
+ * Copyright (C) 1996 Andrew Tridgell
+ * Copyright (C) 1996 Paul Mackerras
+ * Copyright (C) 2002 Martin Pool <mbp@samba.org>
+ * Copyright (C) 2004, 2005, 2006 Wayne Davison
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
 
 #include "rsync.h"
 
-extern int dry_run;
 extern int verbose;
+extern int do_xfers;
 extern int link_dest;
 extern int make_backups;
-extern int log_format_has_i;
+extern int remove_source_files;
+extern int stdout_format_has_i;
 extern char *basis_dir[];
 extern struct file_list *the_file_list;
 
@@ -181,7 +185,7 @@ int hard_link_check(struct file_struct *file, int ndx, char *fname,
                head = hlink_list[file->F_HLINDEX];
        if (ndx != head) {
                struct file_struct *head_file = FPTR(head);
-               if (!log_format_has_i && verbose > 1) {
+               if (!stdout_format_has_i && verbose > 1) {
                        rprintf(FINFO, "\"%s\" is a hard link\n",
                                f_name(file, NULL));
                }
@@ -206,7 +210,7 @@ int hard_link_check(struct file_struct *file, int ndx, char *fname,
                                                        continue;
                                                statret = 1;
                                                st = &st3;
-                                               if (verbose < 2 || !log_format_has_i)
+                                               if (verbose < 2 || !stdout_format_has_i)
                                                        itemizing = code = 0;
                                                break;
                                        }
@@ -220,6 +224,11 @@ int hard_link_check(struct file_struct *file, int ndx, char *fname,
                        }
                        maybe_hard_link(file, ndx, fname, statret, st,
                                        toname, &st2, itemizing, code);
+                       if (remove_source_files == 1 && do_xfers) {
+                               char numbuf[4];
+                               SIVAL(numbuf, 0, ndx);
+                               send_msg(MSG_SUCCESS, numbuf, 4);
+                       }
                        file->F_HLINDEX = FINISHED_LINK;
                } else
                        file->F_HLINDEX = SKIPPED_LINK;
@@ -285,6 +294,11 @@ void hard_link_cluster(struct file_struct *file, int master, int itemizing,
                statret = link_stat(hlink2, &st2, 0);
                maybe_hard_link(file, ndx, hlink2, statret, &st2,
                                hlink1, &st1, itemizing, code);
+               if (remove_source_files == 1 && do_xfers) {
+                       char numbuf[4];
+                       SIVAL(numbuf, 0, ndx);
+                       send_msg(MSG_SUCCESS, numbuf, 4);
+               }
                file->F_HLINDEX = FINISHED_LINK;
        } while (!(file->flags & FLAG_HLINK_EOL));
 #endif