Changed most instances of "remote_version" to "protocol_version", and
[rsync/rsync.git] / options.c
index 945dddd..52fc8c7 100644 (file)
--- a/options.c
+++ b/options.c
@@ -294,15 +294,10 @@ void usage(enum logcode F)
   rprintf(F,"See http://rsync.samba.org/ for updates, bug reports, and answers\n");
 }
 
-enum {OPT_VERSION = 1000, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
-      OPT_EXCLUDE_FROM, OPT_DELETE, OPT_DELETE_EXCLUDED, OPT_NUMERIC_IDS,
-      OPT_RSYNC_PATH, OPT_FORCE, OPT_TIMEOUT, OPT_DAEMON, OPT_CONFIG, OPT_PORT,
-      OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_STATS, OPT_PARTIAL, OPT_PROGRESS,
-      OPT_COPY_UNSAFE_LINKS, OPT_SAFE_LINKS, OPT_COMPARE_DEST, OPT_LINK_DEST,
-      OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
-      OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR,
-      OPT_IGNORE_ERRORS, OPT_BWLIMIT,
-      OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_IGNORE_EXISTING};
+enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+      OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED, OPT_LINK_DEST,
+      OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
+      OPT_READ_BATCH, OPT_WRITE_BATCH};
 
 static struct poptOption long_options[] = {
   /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
@@ -633,6 +628,11 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
        if (!backup_suffix)
                backup_suffix = backup_dir? "" : BACKUP_SUFFIX;
        backup_suffix_len = strlen(backup_suffix);
+       if (strchr(backup_suffix, '/') != NULL) {
+               rprintf(FERROR, "--suffix cannot contain slashes: %s\n",
+                       backup_suffix);
+               exit_cleanup(RERR_SYNTAX);
+       }
        if (backup_dir)
                backup_dir_len = strlen(backup_dir);
        else if (!backup_suffix_len) {
@@ -641,6 +641,9 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                exit_cleanup(RERR_SYNTAX);
        }
 
+       if (do_progress && !verbose)
+               verbose = 1;
+
        *argv = poptGetArgs(pc);
        if (*argv)
                *argc = count_args(*argv);
@@ -821,8 +824,12 @@ void server_options(char **args,int *argc)
 
        /* Only send --suffix if it specifies a non-default value. */
        if (strcmp(backup_suffix, backup_dir? "" : BACKUP_SUFFIX) != 0) {
-               args[ac++] = "--suffix";
-               args[ac++] = backup_suffix;
+               char *s = malloc(9+backup_suffix_len+1);
+               if (!s)
+                       out_of_memory("server_options");
+               /* We use the following syntax to avoid weirdness with '~'. */
+               sprintf(s, "--suffix=%s", backup_suffix);
+               args[ac++] = s;
        }
 
        if (delete_mode && !delete_excluded)