The --progress output now leaves the cursor at the end of the line
[rsync/rsync.git] / log.c
diff --git a/log.c b/log.c
index 975ebaf..9100f5d 100644 (file)
--- a/log.c
+++ b/log.c
@@ -321,7 +321,7 @@ void rwrite(enum logcode code, const char *buf, int len, int is_utf8)
                exit_cleanup(RERR_MESSAGEIO);
        }
 
-       if (progress_is_active && !am_server) {
+       if (progress_is_active) {
                fputc('\n', f);
                progress_is_active = 0;
        }
@@ -329,6 +329,12 @@ void rwrite(enum logcode code, const char *buf, int len, int is_utf8)
        trailing_CR_or_NL = len && (buf[len-1] == '\n' || buf[len-1] == '\r')
                          ? buf[--len] : 0;
 
+       if (len && buf[0] == '\r') {
+               fputc('\r', f);
+               buf++;
+               len--;
+       }
+
 #ifdef ICONV_CONST
        if (ic != (iconv_t)-1) {
                xbuf outbuf, inbuf;