X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/b3bf9b9df95137a3a43248be9599d919b04877af..5250c3bc20b0855f477b6b91457a745c105b3ac2:/log.c diff --git a/log.c b/log.c index 551cb066..a6873750 100644 --- a/log.c +++ b/log.c @@ -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':