X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/93465f51bcc2484a1bdf0f94ed3b812fa5c39576..b3bf9b9df95137a3a43248be9599d919b04877af:/log.c diff --git a/log.c b/log.c index d50523b8..551cb066 100644 --- a/log.c +++ b/log.c @@ -3,7 +3,7 @@ * * Copyright (C) 1998-2001 Andrew Tridgell * Copyright (C) 2000-2001 Martin Pool - * 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 @@ -20,7 +20,8 @@ */ #include "rsync.h" -#include "ifuncs.h" +#include "itypes.h" +#include "inums.h" extern int dry_run; extern int am_daemon; @@ -56,7 +57,7 @@ extern iconv_t ic_chck; extern iconv_t ic_recv; #endif extern char curr_dir[MAXPATHLEN]; -extern char *module_dir; +extern char *full_module_path; extern unsigned int module_dirlen; extern char sender_file_sum[MAX_DIGEST_LEN]; @@ -88,7 +89,7 @@ struct { { RERR_SIGNAL , "received SIGINT, SIGTERM, or SIGHUP" }, { RERR_WAITCHILD , "waitpid() failed" }, { RERR_MALLOC , "error allocating core memory buffers" }, - { RERR_PARTIAL , "some files could not be transferred" }, + { RERR_PARTIAL , "some files/attrs were not transferred (see previous errors)" }, { RERR_VANISHED , "some files vanished before they could be transferred" }, { RERR_TIMEOUT , "timeout in data send/receive" }, { RERR_CONTIMEOUT , "timeout waiting for daemon connection" }, @@ -246,7 +247,7 @@ static void filtered_fwrite(FILE *f, const char *buf, int len, int use_isprint) void rwrite(enum logcode code, const char *buf, int len, int is_utf8) { int trailing_CR_or_NL; - FILE *f = NULL; + FILE *f = msgs2stderr ? stderr : stdout; #ifdef ICONV_OPTION iconv_t ic = is_utf8 && ic_recv != (iconv_t)-1 ? ic_recv : ic_chck; #else @@ -258,18 +259,22 @@ void rwrite(enum logcode code, const char *buf, int len, int is_utf8) if (len < 0) exit_cleanup(RERR_MESSAGEIO); - if (msgs2stderr > 0 && code != FLOG) + if (msgs2stderr && code != FLOG) goto output_msg; if (am_server && msg_fd_out >= 0) { assert(!is_utf8); - /* Pass the message to our sibling. */ + /* Pass the message to our sibling in native charset. */ send_msg((enum msgcode)code, buf, len, 0); return; } if (code == FERROR_SOCKET) /* This gets simplified for a non-sibling. */ code = FERROR; + else if (code == FERROR_UTF8) { + is_utf8 = 1; + code = FERROR; + } if (code == FCLIENT) code = FINFO; @@ -310,7 +315,7 @@ void rwrite(enum logcode code, const char *buf, int len, int is_utf8) /* TODO: can we send the error to the user somehow? */ return; } - msgs2stderr = -1; + f = stderr; } output_msg: @@ -324,7 +329,6 @@ output_msg: break; case FINFO: case FCLIENT: - f = msgs2stderr ? stderr : stdout; break; default: exit_cleanup(RERR_MESSAGEIO); @@ -351,7 +355,7 @@ output_msg: int ierrno; INIT_CONST_XBUF(outbuf, convbuf); - INIT_XBUF(inbuf, (char*)buf, len, -1); + INIT_XBUF(inbuf, (char*)buf, len, (size_t)-1); while (inbuf.len) { iconvbufs(ic, &inbuf, &outbuf, 0); @@ -449,7 +453,7 @@ void rsyserr(enum logcode code, int errcode, const char *format, ...) void rflush(enum logcode code) { - FILE *f = NULL; + FILE *f; if (am_daemon || code == FLOG) return; @@ -511,7 +515,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, - big_num(F_LENGTH(file), 0)); + comma_num(F_LENGTH(file))); n = buf2; break; case 'U': @@ -614,7 +618,7 @@ static void log_formatted(enum logcode code, const char *format, const char *op, n = timestring(time(NULL)); break; case 'P': - n = module_dir; + n = full_module_path; break; case 'u': n = auth_user; @@ -628,7 +632,7 @@ 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, big_num(b, 0)); + snprintf(buf2, sizeof buf2, fmt, comma_num(b)); n = buf2; break; case 'c': @@ -640,7 +644,7 @@ 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, big_num(b, 0)); + snprintf(buf2, sizeof buf2, fmt, comma_num(b)); n = buf2; break; case 'C': @@ -851,9 +855,9 @@ void log_exit(int code, const char *file, int line) { if (code == 0) { 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)); + comma_num(stats.total_written), + comma_num(stats.total_read), + comma_num(stats.total_size)); } else if (am_server != 2) { const char *name;