Unsnarl missing_below/dry_run logic.
[rsync/rsync.git] / options.c
index 82597bf..ac34a5c 100644 (file)
--- a/options.c
+++ b/options.c
@@ -25,6 +25,7 @@
 #include "zlib/zlib.h"
 
 extern int module_id;
+extern int local_server;
 extern int sanitize_paths;
 extern int daemon_over_rsh;
 extern unsigned int module_dirlen;
@@ -889,7 +890,7 @@ static void create_refuse_error(int which)
  *
  * @retval 0 on error, with err_buf containing an explanation
  **/
-int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
+int parse_arguments(int *argc_p, const char ***argv_p)
 {
        static poptContext pc;
        char *ref = lp_refuse_options(module_id);
@@ -901,8 +902,10 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
                set_refuse_options(ref);
        if (am_daemon) {
                set_refuse_options("log-file*");
+#ifdef ICONV_OPTION
                if (!*lp_charset(module_id))
                        set_refuse_options("iconv");
+#endif
        }
 
 #ifdef ICONV_OPTION
@@ -1092,8 +1095,7 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
                        break;
 
                case 'q':
-                       if (frommain)
-                               quiet++;
+                       quiet++;
                        break;
 
                case 'x':
@@ -1290,12 +1292,8 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain)
        }
 #endif
 
-       if (protect_args == 1) {
-               if (!frommain)
-                       protect_args = 0;
-               else if (am_server)
-                       return 1;
-       }
+       if (protect_args == 1 && am_server)
+               return 1;
 
 #ifndef SUPPORT_LINKS
        if (preserve_links && !am_sender) {
@@ -1833,7 +1831,7 @@ void server_options(char **args, int *argc_p)
        }
 #endif
 
-       if (protect_args) /* initial args break here */
+       if (protect_args && !local_server) /* unprotected args stop here */
                args[ac++] = NULL;
 
        if (list_only > 1)