Changed the commands used to "make gen" without any stoppage.
[rsync/rsync.git] / log.c
diff --git a/log.c b/log.c
index 3d4af77..a687375 100644 (file)
--- a/log.c
+++ b/log.c
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 1998-2001 Andrew Tridgell <tridge@samba.org>
  * Copyright (C) 2000-2001 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003-2008 Wayne Davison
+ * Copyright (C) 2003-2009 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
@@ -60,6 +60,7 @@ extern char curr_dir[MAXPATHLEN];
 extern char *full_module_path;
 extern unsigned int module_dirlen;
 extern char sender_file_sum[MAX_DIGEST_LEN];
+extern const char undetermined_hostname[];
 
 static int log_initialised;
 static int logfile_was_closed;
@@ -492,21 +493,36 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
        buf[total] = '\0';
 
        for (p = buf; (p = strchr(p, '%')) != NULL; ) {
+               int humanize = 0;
                s = p++;
                c = fmt + 1;
+               while (*p == '\'') {
+                       humanize++;
+                       p++;
+               }
                if (*p == '-')
                        *c++ = *p++;
                while (isDigit(p) && c - fmt < (int)(sizeof fmt) - 8)
                        *c++ = *p++;
+               while (*p == '\'') {
+                       humanize++;
+                       p++;
+               }
                if (!*p)
                        break;
                *c = '\0';
                n = NULL;
 
+               /* Note for %h and %a: it doesn't matter what fd we pass to
+                * client_{name,addr} because rsync_module will already have
+                * forced the answer to be cached (assuming, of course, for %h
+                * that lp_reverse_lookup(module_id) is true). */
                switch (*p) {
                case 'h':
-                       if (am_daemon)
-                               n = client_name(0);
+                       if (am_daemon) {
+                               n = lp_reverse_lookup(module_id)
+                                 ? client_name(0) : undetermined_hostname;
+                       }
                        break;
                case 'a':
                        if (am_daemon)
@@ -515,7 +531,7 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
                case 'l':
                        strlcat(fmt, "s", sizeof fmt);
                        snprintf(buf2, sizeof buf2, fmt,
-                                comma_num(F_LENGTH(file)));
+                                do_big_num(F_LENGTH(file), humanize, NULL));
                        n = buf2;
                        break;
                case 'U':
@@ -632,7 +648,8 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
                                        initial_stats->total_read;
                        }
                        strlcat(fmt, "s", sizeof fmt);
-                       snprintf(buf2, sizeof buf2, fmt, comma_num(b));
+                       snprintf(buf2, sizeof buf2, fmt,
+                                do_big_num(b, humanize, NULL));
                        n = buf2;
                        break;
                case 'c':
@@ -644,7 +661,8 @@ static void log_formatted(enum logcode code, const char *format, const char *op,
                                        initial_stats->total_read;
                        }
                        strlcat(fmt, "s", sizeof fmt);
-                       snprintf(buf2, sizeof buf2, fmt, comma_num(b));
+                       snprintf(buf2, sizeof buf2, fmt,
+                                do_big_num(b, humanize, NULL));
                        n = buf2;
                        break;
                case 'C':