X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/951e826b75c4a4e6bc066e248d7489fb6eba6fde..886df221c1ce1660a2b6cd274b13952b482fe5bf:/log.c diff --git a/log.c b/log.c index 4a4c404e..8f8f049f 100644 --- a/log.c +++ b/log.c @@ -31,8 +31,10 @@ extern int local_server; extern int quiet; extern int module_id; extern int msg_fd_out; +extern int checksum_len; extern int allow_8bit_chars; extern int protocol_version; +extern int always_checksum; extern int preserve_times; extern int uid_ndx; extern int gid_ndx; @@ -55,6 +57,7 @@ extern iconv_t ic_send, ic_recv; extern char curr_dir[]; extern char *module_dir; extern unsigned int module_dirlen; +extern char sender_file_sum[]; static int log_initialised; static int logfile_was_closed; @@ -499,9 +502,9 @@ static void log_formatted(enum logcode code, const char *format, const char *op, n = client_addr(0); break; case 'l': - strlcat(fmt, ".0f", sizeof fmt); + strlcat(fmt, "s", sizeof fmt); snprintf(buf2, sizeof buf2, fmt, - (double)F_LENGTH(file)); + big_num(F_LENGTH(file), 0)); n = buf2; break; case 'U': @@ -617,8 +620,8 @@ static void log_formatted(enum logcode code, const char *format, const char *op, b = stats.total_read - initial_stats->total_read; } - strlcat(fmt, ".0f", sizeof fmt); - snprintf(buf2, sizeof buf2, fmt, (double)b); + strlcat(fmt, "s", sizeof fmt); + snprintf(buf2, sizeof buf2, fmt, big_num(b, 0)); n = buf2; break; case 'c': @@ -629,8 +632,30 @@ static void log_formatted(enum logcode code, const char *format, const char *op, b = stats.total_read - initial_stats->total_read; } - strlcat(fmt, ".0f", sizeof fmt); - snprintf(buf2, sizeof buf2, fmt, (double)b); + strlcat(fmt, "s", sizeof fmt); + snprintf(buf2, sizeof buf2, fmt, big_num(b, 0)); + n = buf2; + break; + case 'C': + if (protocol_version >= 30 + && (iflags & ITEM_TRANSFER + || (always_checksum && S_ISREG(file->mode)))) { + int i, x1, x2; + const char *sum = iflags & ITEM_TRANSFER + ? sender_file_sum : F_SUM(file); + c = buf2 + checksum_len*2; + *c = '\0'; + for (i = checksum_len; --i >= 0; ) { + x1 = CVAL(sum, i); + x2 = x1 >> 4; + x1 &= 0xF; + *--c = x1 <= 9 ? x1 + '0' : x1 + 'a' - 10; + *--c = x2 <= 9 ? x2 + '0' : x2 + 'a' - 10; + } + } else { + memset(buf2, ' ', checksum_len*2); + buf2[checksum_len*2] = '\0'; + } n = buf2; break; case 'i': @@ -818,10 +843,10 @@ void log_delete(const char *fname, int mode) void log_exit(int code, const char *file, int line) { if (code == 0) { - rprintf(FLOG,"sent %.0f bytes received %.0f bytes total size %.0f\n", - (double)stats.total_written, - (double)stats.total_read, - (double)stats.total_size); + rprintf(FLOG,"sent %s bytes received %s bytes total size %s\n", + big_num(stats.total_written, 0), + big_num(stats.total_read, 0), + big_num(stats.total_size, 0)); } else if (am_server != 2) { const char *name;