X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/90ba34e27c74c9fd8a8a00a360132caf20877fc2..19b27a485e833e08160ef0bae8f604c6f60e5ef8:/log.c diff --git a/log.c b/log.c index a826b185..e67477b7 100644 --- a/log.c +++ b/log.c @@ -31,6 +31,7 @@ static char *logfname; static FILE *logfile; static int log_error_fd = -1; +int log_got_error=0; struct { int code; @@ -39,7 +40,7 @@ struct { { RERR_SYNTAX , "syntax or usage error" }, { RERR_PROTOCOL , "protocol incompatibility" }, { RERR_FILESELECT , "errors selecting input/output files, dirs" }, - { RERR_UNSUPPORTED , "requested action not supported" }, + { RERR_UNSUPPORTED, "requested action not supported" }, { RERR_SOCKETIO , "error in socket IO" }, { RERR_FILEIO , "error in file IO" }, { RERR_STREAMIO , "error in rsync protocol data stream" }, @@ -48,7 +49,12 @@ struct { { RERR_SIGNAL , "received SIGUSR1 or SIGINT" }, { RERR_WAITCHILD , "some error returned by waitpid()" }, { RERR_MALLOC , "error allocating core memory buffers" }, + { RERR_PARTIAL , "partial transfer" }, { RERR_TIMEOUT , "timeout in data send/receive" }, + { RERR_CMD_FAILED , "remote shell failed" }, + { RERR_CMD_KILLED , "remote shell killed" }, + { RERR_CMD_RUN, "remote command could not be run" }, + { RERR_CMD_NOTFOUND, "remote command not found" }, { 0, NULL } }; @@ -107,6 +113,8 @@ void err_list_push(void) while (err_list_head) { struct err_list *el = err_list_head; int n = write(log_error_fd, el->buf+el->written, el->len - el->written); + /* don't check for an error if the best way of handling the error is + to ignore it */ if (n == -1) break; if (n > 0) { el->written += n; @@ -250,6 +258,7 @@ void rwrite(enum logcode code, char *buf, int len) } if (code == FERROR) { + log_got_error = 1; f = stderr; } @@ -502,7 +511,7 @@ void log_exit(int code, const char *file, int line) if (!name) name = "unexplained error"; - rprintf(FLOG,"transfer interrupted: %s (code %d) at %s(%d)\n", + rprintf(FERROR,"transfer error: %s (code %d) at %s(%d)\n", name, code, file, line); } }