Fixed an off-by-one comparison against MAX_BASIS_DIRS.
[rsync/rsync.git] / options.c
index edf7214..6f13503 100644 (file)
--- a/options.c
+++ b/options.c
@@ -130,8 +130,10 @@ char *rsync_path = RSYNC_PATH;
 char *backup_dir = NULL;
 char backup_dir_buf[MAXPATHLEN];
 int rsync_port = 0;
+int compare_dest = 0;
 int copy_dest = 0;
 int link_dest = 0;
+int basis_dir_cnt = 0;
 
 int verbose = 0;
 int quiet = 0;
@@ -143,8 +145,6 @@ char *batch_name = NULL;
 
 static int daemon_opt;   /* sets am_daemon after option error-reporting */
 static int modify_window_set;
-static int compare_dest = 0;
-static int basis_dir_cnt = 0;
 static char *dest_option = NULL;
 static char *max_size_arg;
 
@@ -738,7 +738,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        compare_dest = 1;
                        dest_option = "--compare-dest";
                set_dest_dir:
-                       if (basis_dir_cnt >= MAX_BASIS_DIRS-1) {
+                       if (basis_dir_cnt >= MAX_BASIS_DIRS) {
                                snprintf(err_buf, sizeof err_buf,
                                        "ERROR: at most %d %s args may be specified\n",
                                        MAX_BASIS_DIRS, dest_option);
@@ -952,18 +952,18 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        return 0;
                }
                keep_partial = 0;
-#else
-               snprintf(err_buf, sizeof err_buf,
-                        "--inplace is not supported on this %s\n",
-                        am_server ? "server" : "client");
-               return 0;
-#endif
                if (dest_option) {
                        snprintf(err_buf, sizeof err_buf,
                                 "--inplace does not yet work with %s\n",
                                 dest_option);
                        return 0;
                }
+#else
+               snprintf(err_buf, sizeof err_buf,
+                        "--inplace is not supported on this %s\n",
+                        am_server ? "server" : "client");
+               return 0;
+#endif
        } else {
                if (keep_partial && !partial_dir)
                        partial_dir = getenv("RSYNC_PARTIAL_DIR");