- Improved option_error() to make sure that the user sees the error in
[rsync/rsync.git] / options.c
index 26dfd76..780a2b5 100644 (file)
--- a/options.c
+++ b/options.c
@@ -23,7 +23,7 @@
 
 extern int sanitize_paths;
 extern char curr_dir[MAXPATHLEN];
-extern struct exclude_struct **exclude_list;
+extern struct exclude_list_struct exclude_list;
 
 int make_backups = 0;
 
@@ -183,7 +183,7 @@ static void print_rsync_version(enum logcode f)
        rprintf(f, "              %sIPv6, %d-bit system inums, %d-bit internal inums\n",
                ipv6,
                (int) (sizeof dumstat->st_ino * 8),
-               (int) (sizeof (INO64_T) * 8));
+               (int) (sizeof (uint64) * 8));
 #ifdef MAINTAINER_MODE
        rprintf(f, "              panic action: \"%s\"\n",
                get_panic_action());
@@ -290,11 +290,11 @@ void usage(enum logcode F)
   rprintf(F,"     --bwlimit=KBPS          limit I/O bandwidth, KBytes per second\n");
   rprintf(F,"     --write-batch=PREFIX    write batch fileset starting with PREFIX\n");
   rprintf(F,"     --read-batch=PREFIX     read batch fileset starting with PREFIX\n");
-  rprintf(F," -h, --help                  show this help screen\n");
 #ifdef INET6
-  rprintf(F," -4                          prefer IPv4\n");
-  rprintf(F," -6                          prefer IPv6\n");
+  rprintf(F," -4  --ipv4                  prefer IPv4\n");
+  rprintf(F," -6  --ipv6                  prefer IPv6\n");
 #endif
+  rprintf(F," -h, --help                  show this help screen\n");
 
   rprintf(F,"\n");
 
@@ -312,8 +312,8 @@ static struct poptOption long_options[] = {
   /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
   {"version",          0,  POPT_ARG_NONE,   0,              OPT_VERSION, 0, 0},
   {"suffix",           0,  POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-  {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path,       0, 0, 0 },
-  {"password-file",    0,  POPT_ARG_STRING, &password_file,    0, 0, 0 },
+  {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
+  {"password-file",    0,  POPT_ARG_STRING, &password_file, 0, 0, 0 },
   {"ignore-times",    'I', POPT_ARG_NONE,   &ignore_times, 0, 0, 0 },
   {"size-only",        0,  POPT_ARG_NONE,   &size_only, 0, 0, 0 },
   {"modify-window",    0,  POPT_ARG_INT,    &modify_window, OPT_MODIFY_WINDOW, 0, 0 },
@@ -387,14 +387,14 @@ static struct poptOption long_options[] = {
   {"no-implied-dirs",  0,  POPT_ARG_VAL,    &implied_dirs, 0, 0, 0 },
   {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
 #ifdef INET6
-  {0,                '4', POPT_ARG_VAL,    &default_af_hint, AF_INET, 0, 0 },
-  {0,                '6', POPT_ARG_VAL,    &default_af_hint, AF_INET6, 0, 0 },
+  {"ipv4",            '4', POPT_ARG_VAL,    &default_af_hint, AF_INET, 0, 0 },
+  {"ipv6",            '6', POPT_ARG_VAL,    &default_af_hint, AF_INET6, 0, 0 },
 #endif
   {0,0,0,0, 0, 0, 0}
 };
 
 
-static char err_buf[100];
+static char err_buf[200];
 
 
 /**
@@ -404,15 +404,17 @@ static char err_buf[100];
  **/
 void option_error(void)
 {
-       if (err_buf[0]) {
-               rprintf(FLOG, "%s", err_buf);
-               rprintf(FERROR, RSYNC_NAME ": %s", err_buf);
-       } else {
-               rprintf (FERROR, "Error parsing options: "
-                        "option may be supported on client but not on server?\n");
-               rprintf (FERROR, RSYNC_NAME ": Error parsing options: "
-                        "option may be supported on client but not on server?\n");
+       int save_daemon = am_daemon;
+
+       if (!err_buf[0]) {
+               strcpy(err_buf, "Error parsing options: "
+                   "option may be supported on client but not on server?\n");
        }
+
+       rwrite(FLOG, err_buf, strlen(err_buf));
+       am_daemon = 0;
+       rprintf(FERROR, RSYNC_NAME ": %s", err_buf);
+       am_daemon = save_daemon;
 }
 
 
@@ -510,13 +512,12 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        break;
 
                case OPT_EXCLUDE:
-                       add_exclude(&exclude_list, poptGetOptArg(pc),
-                                   ADD_EXCLUDE);
+                       add_exclude(&exclude_list, poptGetOptArg(pc), 0);
                        break;
 
                case OPT_INCLUDE:
                        add_exclude(&exclude_list, poptGetOptArg(pc),
-                                   ADD_INCLUDE);
+                                   XFLG_DEF_INCLUDE);
                        break;
 
                case OPT_EXCLUDE_FROM:
@@ -524,7 +525,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        if (sanitize_paths)
                                arg = alloc_sanitize_path(arg, curr_dir);
                        add_exclude_file(&exclude_list, arg,
-                                        MISSING_FATAL, ADD_EXCLUDE);
+                                        XFLG_FATAL_ERRORS);
                        break;
 
                case OPT_INCLUDE_FROM:
@@ -532,7 +533,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        if (sanitize_paths)
                                arg = alloc_sanitize_path(arg, curr_dir);
                        add_exclude_file(&exclude_list, arg,
-                                        MISSING_FATAL, ADD_INCLUDE);
+                                        XFLG_FATAL_ERRORS | XFLG_DEF_INCLUDE);
                        break;
 
                case 'h':
@@ -581,7 +582,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        snprintf(err_buf, sizeof err_buf,
                                 "hard links are not supported on this %s\n",
                                 am_server ? "server" : "client");
-                       rprintf(FERROR, "ERROR: %s", err_buf);
                        return 0;
 #endif
 
@@ -614,7 +614,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                snprintf(err_buf, sizeof err_buf,
                         "symlinks are not supported on this %s\n",
                         am_server ? "server" : "client");
-               rprintf(FERROR, "ERROR: %s", err_buf);
                return 0;
        }
 #endif
@@ -624,7 +623,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                snprintf(err_buf, sizeof err_buf,
                         "hard links are not supported on this %s\n",
                         am_server ? "server" : "client");
-               rprintf(FERROR, "ERROR: %s", err_buf);
                return 0;
        }
 #endif