My version of Matt's improvements related to missing source args:
[rsync/rsync.git] / rsync.c
diff --git a/rsync.c b/rsync.c
index 30f5a07..8fad348 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 1996 Andrew Tridgell
  * Copyright (C) 1996 Paul Mackerras
- * 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
@@ -221,16 +221,19 @@ void send_protected_args(int fd, char *args[])
        if (verbose > 1)
                print_child_argv("protected args:", args + i + 1);
        do {
+               if (!args[i][0])
+                       write_buf(fd, ".", 2);
 #ifdef ICONV_OPTION
-               if (convert) {
+               else if (convert) {
                        INIT_XBUF_STRLEN(inbuf, args[i]);
                        iconvbufs(ic_send, &inbuf, &outbuf,
                                  ICB_EXPAND_OUT | ICB_INCLUDE_BAD | ICB_INCLUDE_INCOMPLETE);
                        outbuf.buf[outbuf.len] = '\0';
                        write_buf(fd, outbuf.buf, outbuf.len + 1);
                        outbuf.len = 0;
-               } else
+               }
 #endif
+               else
                        write_buf(fd, args[i], strlen(args[i]) + 1);
        } while (args[++i]);
        write_byte(fd, 0);