X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1a0de6c68bd7c95aef56a754c8ed3e3062a5e57c..ca6c93f817b453bcd8622cf66465851c15142a30:/main.c diff --git a/main.c b/main.c index b40c693e..2d1b35ed 100644 --- a/main.c +++ b/main.c @@ -63,29 +63,29 @@ static void report(int f) } if (do_stats) { - printf("\nNumber of files: %d\n", stats.num_files); - printf("Number of files transferred: %d\n", + rprintf(FINFO,"\nNumber of files: %d\n", stats.num_files); + rprintf(FINFO,"Number of files transferred: %d\n", stats.num_transferred_files); - printf("Total file size: %.0f bytes\n", + rprintf(FINFO,"Total file size: %.0f bytes\n", (double)stats.total_size); - printf("Total transferred file size: %.0f bytes\n", + rprintf(FINFO,"Total transferred file size: %.0f bytes\n", (double)stats.total_transferred_size); - printf("Literal data: %.0f bytes\n", + rprintf(FINFO,"Literal data: %.0f bytes\n", (double)stats.literal_data); - printf("Matched data: %.0f bytes\n", + rprintf(FINFO,"Matched data: %.0f bytes\n", (double)stats.matched_data); - printf("File list size: %d\n", stats.flist_size); - printf("Total bytes written: %.0f\n", + rprintf(FINFO,"File list size: %d\n", stats.flist_size); + rprintf(FINFO,"Total bytes written: %.0f\n", (double)stats.total_written); - printf("Total bytes read: %.0f\n\n", + rprintf(FINFO,"Total bytes read: %.0f\n\n", (double)stats.total_read); } - printf("wrote %.0f bytes read %.0f bytes %.2f bytes/sec\n", + rprintf(FINFO,"wrote %.0f bytes read %.0f bytes %.2f bytes/sec\n", (double)stats.total_written, (double)stats.total_read, (stats.total_written+stats.total_read)/(0.5 + (t-starttime))); - printf("total size is %.0f speedup is %.2f\n", + rprintf(FINFO,"total size is %.0f speedup is %.2f\n", (double)stats.total_size, (1.0*stats.total_size)/(stats.total_written+stats.total_read)); @@ -432,6 +432,20 @@ int client_run(int f_in, int f_out, int pid, int argc, char *argv[]) return status | status2; } +static char *find_colon(char *s) +{ + char *p, *p2; + + p = strchr(s,':'); + if (!p) return NULL; + + /* now check to see if there is a / in the string before the : - if there is then + discard the colon on the assumption that the : is part of a filename */ + p2 = strchr(s,'/'); + if (p2 && p2 < p) return NULL; + + return p; +} static int start_client(int argc, char *argv[]) { @@ -445,7 +459,7 @@ static int start_client(int argc, char *argv[]) extern int am_sender; extern char *shell_cmd; - p = strchr(argv[0],':'); + p = find_colon(argv[0]); if (p) { if (p[1] == ':') { @@ -467,7 +481,7 @@ static int start_client(int argc, char *argv[]) } else { am_sender = 1; - p = strchr(argv[argc-1],':'); + p = find_colon(argv[argc-1]); if (!p) { local_server = 1; } else if (p[1] == ':') {