X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/f863b76300e26c36bc0cfd6d2e51d1b26588c95e..2dc7b8bd0e8d4a2d91334b9bb458df146b1700e8:/log.c diff --git a/log.c b/log.c index 9d18770d..f7ccc00b 100644 --- a/log.c +++ b/log.c @@ -37,7 +37,6 @@ extern int msg_fd_out; extern int allow_8bit_chars; extern int protocol_version; extern int preserve_times; -extern int in_exit_cleanup; extern int stdout_format_has_i; extern int stdout_format_has_o_or_i; extern int logfile_format_has_i; @@ -91,14 +90,6 @@ struct { { 0, NULL } }; -#define EXIT_OR_RETURN(err) \ - do { \ - if (in_exit_cleanup) \ - return; \ - exit_cleanup(err); \ - } while (0) - - /* * Map from rsync error code to name, or return NULL. */ @@ -223,20 +214,20 @@ static void filtered_fwrite(FILE *f, const char *buf, int len, int use_isprint) for (s = buf; s < end; s++) { if ((s < end - 4 && *s == '\\' && s[1] == '#' - && isdigit(*(uchar*)(s+2)) - && isdigit(*(uchar*)(s+3)) - && isdigit(*(uchar*)(s+4))) + && isDigit(s + 2) + && isDigit(s + 3) + && isDigit(s + 4)) || (*s != '\t' - && ((use_isprint && !isprint(*(uchar*)s)) + && ((use_isprint && !isPrint(s)) || *(uchar*)s < ' '))) { if (s != buf && fwrite(buf, s - buf, 1, f) != 1) - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); fprintf(f, "\\#%03o", *(uchar*)s); buf = s + 1; } } if (buf != end && fwrite(buf, end - buf, 1, f) != 1) - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); } /* this is the underlying (unformatted) rsync debugging function. Call @@ -248,7 +239,7 @@ void rwrite(enum logcode code, char *buf, int len) FILE *f = NULL; if (len < 0) - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); if (am_server && msg_fd_out >= 0) { /* Pass the message to our sibling. */ @@ -302,7 +293,7 @@ void rwrite(enum logcode code, char *buf, int len) f = am_server ? stderr : stdout; break; default: - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); } trailing_CR_or_NL = len && (buf[len-1] == '\n' || buf[len-1] == '\r') @@ -394,7 +385,7 @@ void rsyserr(enum logcode code, int errcode, const char *format, ...) char buf[BIGPATHBUFLEN]; size_t len; - strcpy(buf, RSYNC_NAME ": "); + strlcpy(buf, RSYNC_NAME ": ", sizeof buf); len = (sizeof RSYNC_NAME ": ") - 1; va_start(ap, format); @@ -406,7 +397,7 @@ void rsyserr(enum logcode code, int errcode, const char *format, ...) ": %s (%d)\n", strerror(errcode), errcode); } if (len >= sizeof buf) - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); rwrite(code, buf, len); } @@ -444,7 +435,7 @@ static void log_formatted(enum logcode code, char *format, char *op, total = strlcpy(buf, format, sizeof buf); if (total > MAXPATHLEN) { rprintf(FERROR, "log-format string is WAY too long!\n"); - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); } buf[total++] = '\n'; buf[total] = '\0'; @@ -454,7 +445,7 @@ static void log_formatted(enum logcode code, char *format, char *op, n = fmt + 1; if (*p == '-') *n++ = *p++; - while (isdigit(*(uchar*)p) && n - fmt < (int)(sizeof fmt) - 8) + while (isDigit(p) && n - fmt < (int)(sizeof fmt) - 8) *n++ = *p++; if (!*p) break; @@ -544,15 +535,15 @@ static void log_formatted(enum logcode code, char *format, char *op, case 'L': if (hlink && *hlink) { n = hlink; - strcpy(buf2, " => "); + strlcpy(buf2, " => ", sizeof buf2); } else if (S_ISLNK(file->mode) && file->u.link) { n = file->u.link; - strcpy(buf2, " -> "); + strlcpy(buf2, " -> ", sizeof buf2); } else { n = ""; if (!fmt[1]) break; - strcpy(buf2, " "); + strlcpy(buf2, " ", sizeof buf2); } strlcat(fmt, "s", sizeof fmt); snprintf(buf2 + 4, sizeof buf2 - 4, fmt, n); @@ -655,7 +646,7 @@ static void log_formatted(enum logcode code, char *format, char *op, rprintf(FERROR, "buffer overflow expanding %%%c -- exiting\n", p[0]); - EXIT_OR_RETURN(RERR_MESSAGEIO); + exit_cleanup(RERR_MESSAGEIO); } /* Shuffle the rest of the string along to make space for n */ @@ -686,7 +677,7 @@ int log_format_has(const char *format, char esc) for (p = format; (p = strchr(p, '%')) != NULL; ) { if (*++p == '-') p++; - while (isdigit(*(uchar*)p)) + while (isDigit(p)) p++; if (!*p) break;