- {"hard-links", 'H', POPT_ARG_NONE, &preserve_hard_links, 0, 0, 0 },
-@@ -881,6 +884,12 @@ void server_options(char **args,int *arg
+ {"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
+@@ -997,6 +1003,36 @@ int parse_arguments(int *argc, const cha
+ basis_dir[basis_dir_cnt++] = (char *)arg;
+ break;
+
++ case OPT_STOP_AT:
++ arg = poptGetOptArg(pc);
++ if ((stop_at_utime = parse_time(arg)) == (time_t)-1) {
++ snprintf(err_buf, sizeof err_buf,
++ "invalid --stop-at format: %s\n",
++ arg);
++ rprintf(FERROR, "ERROR: %s", err_buf);
++ return 0;
++ }
++ if (stop_at_utime < time(NULL)) {
++ snprintf(err_buf, sizeof err_buf,
++ "--stop-at time is in the past: %s\n",
++ arg);
++ rprintf(FERROR, "ERROR: %s", err_buf);
++ return 0;
++ }
++ break;
++
++ case OPT_TIME_LIMIT:
++ arg = poptGetOptArg(pc);
++ if ((stop_at_utime = atol(arg) * 60) <= 0) {
++ snprintf(err_buf, sizeof err_buf,
++ "invalid --time-limit value: %s\n",
++ arg);
++ rprintf(FERROR, "ERROR: %s", err_buf);
++ return 0;
++ }
++ stop_at_utime += time(NULL);
++ break;
++
+ default:
+ /* A large opt value means that set_refuse_options()
+ * turned this option off. */
+@@ -1523,6 +1559,15 @@ void server_options(char **args,int *arg
+ args[ac++] = arg;
+ }