Some of the debug messages that rsync outputs (when verbose >= 2) can
occur on both sides of the connection.  This makes it hard to know which
program is saying what.  Some debug messages deal with this by
outputting a "[PID]" string at the start of the message.  Unfortunately,
the startup message that tells us which pid is which is only output when
verbose >= 3, so there's a bit of a problem if we use this idiom for
messages such as "expanding file_list ..." and "excluding file ..."
(which get output at verbose >= 2 and can occur on both sides).

I'd like to propose a change that prefixes dual-sided messages with [s],
[r], or [g] for the sender, receiver, and generator, respectively.  This
makes them easier to read, and it works at any verbose level.  Here's a
patch.  Let me know what you think.

..wayne..
--- exclude.c   20 Jan 2004 04:53:59 -0000      1.58
+++ exclude.c   27 Jan 2004 07:36:35 -0000
@@ -27,6 +27,7 @@
 #include "rsync.h"
 
 extern int verbose;
+extern char *who_am_i;
 
 struct exclude_struct **exclude_list;
 struct exclude_struct **local_exclude_list;
@@ -102,7 +103,7 @@ void free_exclude_list(struct exclude_st
        struct exclude_struct **list = *listp;
 
        if (verbose > 2)
-               rprintf(FINFO,"clearing exclude list\n");
+               rprintf(FINFO, "[%c] clearing exclude list\n", *who_am_i);
 
        if (!list)
                return;
@@ -203,12 +204,14 @@ static void report_exclude_result(char c
         * then it is stripped out by make_exclude.  So as a special
         * case we add it back in here. */
 
-       if (verbose >= 2)
-               rprintf(FINFO, "%s %s %s because of pattern %s%s\n",
+       if (verbose >= 2) {
+               rprintf(FINFO, "[%c] %s %s %s because of pattern %s%s\n",
+                       *who_am_i,
                        ent->include ? "including" : "excluding",
                        name_is_dir ? "directory" : "file",
                        name, ent->pattern,
                        ent->directory ? "/" : "");
+       }
 }
 
 
@@ -250,7 +253,8 @@ void add_exclude(struct exclude_struct *
                out_of_memory("add_exclude");
 
        if (verbose > 2) {
-               rprintf(FINFO,"add_exclude(%s,%s)\n",pattern,
+               rprintf(FINFO, "[%c] add_exclude(%s,%s)\n",
+                       *who_am_i, pattern,
                        include ? "include" : "exclude");
        }
 
--- flist.c     27 Jan 2004 01:47:41 -0000      1.174
+++ flist.c     27 Jan 2004 07:36:30 -0000
@@ -46,6 +46,7 @@ extern int recurse;
 extern char curr_dir[MAXPATHLEN];
 extern char *files_from;
 extern int filesfrom_fd;
+extern char *who_am_i;
 
 extern int one_file_system;
 extern int make_backups;
@@ -342,7 +343,8 @@ static void flist_expand(struct file_lis
                }
 
                if (verbose >= 2) {
-                       rprintf(FINFO, "expand file_list to %.0f bytes, did%s move\n",
+                       rprintf(FINFO, "[%c] expand file_list to %.0f bytes, did%s 
move\n",
+                               *who_am_i,
                                (double)sizeof(flist->files[0])
                                * flist->malloced,
                                (new_ptr == flist->files) ? " not" : "");
@@ -781,8 +783,10 @@ struct file_struct *make_file(char *fnam
 
       skip_excludes:
 
-       if (verbose > 2)
-               rprintf(FINFO, "make_file(%s,*,%d)\n", fname, exclude_level);
+       if (verbose > 2) {
+               rprintf(FINFO, "[%c] make_file(%s,*,%d)\n",
+                       *who_am_i, fname, exclude_level);
+       }
 
        file = new(struct file_struct);
        if (!file)
@@ -1416,8 +1420,8 @@ static void clean_flist(struct file_list
                return;
 
        for (i = 0; i < flist->count; i++) {
-               rprintf(FINFO, "[%ld] i=%d %s %s mode=0%o len=%.0f\n",
-                       (long) getpid(), i,
+               rprintf(FINFO, "[%c] i=%d %s %s mode=0%o len=%.0f\n",
+                       *who_am_i, i,
                        NS(flist->files[i]->dirname),
                        NS(flist->files[i]->basename),
                        (int) flist->files[i]->mode,
--- main.c      27 Jan 2004 08:05:10 -0000      1.185
+++ main.c      27 Jan 2004 07:59:07 -0000
@@ -56,6 +56,8 @@ extern char *remote_filesfrom_file;
 extern char *rsync_path;
 extern char *shell_cmd;
 extern struct file_list *batch_flist;
+extern char *who_am_i;
+
 
 /* there's probably never more than at most 2 outstanding child processes,
  * but set it higher just in case.
@@ -198,7 +200,7 @@ static void show_malloc_stats(void)
                getpid(),
                am_server ? "server " : "",
                am_daemon ? "daemon " : "",
-               am_sender ? "sender" : "receiver");
+               who_am_i);
        rprintf(FINFO, "  arena:     %10d   (bytes from sbrk)\n", mi.arena);
        rprintf(FINFO, "  ordblks:   %10d   (chunks not in use)\n", mi.ordblks);
        rprintf(FINFO, "  smblks:    %10d\n", mi.smblks);
@@ -455,6 +457,8 @@ static int do_recv(int f_in,int f_out,st
                        msleep(20);
        }
 
+       who_am_i = "generator";
+
        close(error_pipe[1]);
        if (f_in != f_out) close(f_in);
 
@@ -754,6 +758,7 @@ static int start_client(int argc, char *
                        argc--;
                        argv++;
                } else {
+                       who_am_i = "sender";
                        am_sender = 1;
 
                        /* rsync:// destination uses rsync server over direct socket */
@@ -817,6 +822,7 @@ static int start_client(int argc, char *
                        argc--;
                }
        } else {
+               who_am_i = "sender";
                am_sender = 1;
                local_server = 1;
                shell_path = argv[argc-1];
--- options.c   23 Jan 2004 09:32:50 -0000      1.127
+++ options.c   27 Jan 2004 08:00:54 -0000
@@ -66,6 +66,7 @@ int read_only = 0;
 int module_id = -1;
 int am_server = 0;
 int am_sender = 0;
+char *who_am_i = "receiver";
 char *files_from = NULL;
 int filesfrom_fd = -1;
 char *remote_filesfrom_file = NULL;
@@ -554,6 +555,7 @@ int parse_arguments(int *argc, const cha
                                usage(FERROR);
                                exit_cleanup(RERR_SYNTAX);
                        }
+                       who_am_i = "sender";
                        am_sender = 1;
                        break;
 
-- 
To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to