X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=dss.c;h=5e2ef46f71251c6a157f2f9df02900c8e534a3a9;hb=2d10a72798da5489363088dfbe02ccbc5942cfcd;hp=6f0d759db4a71084f04967f7f32aa65ea68dd394;hpb=6c63f45a9068107cfd80aa181134574dd9373c0b;p=dss.git diff --git a/dss.c b/dss.c index 6f0d759..5e2ef46 100644 --- a/dss.c +++ b/dss.c @@ -1055,9 +1055,15 @@ static int handle_sigchld(void) static int change_to_dest_dir(void) { + int ret; const char *dd = OPT_STRING_VAL(DSS, DEST_DIR); + DSS_INFO_LOG(("changing cwd to %s\n", dd)); - return dss_chdir(dd); + if (chdir(dd) >= 0) + return 1; + ret = -ERRNO_TO_DSS_ERROR(errno); + DSS_ERROR_LOG(("could not change cwd to %s\n", dd)); + return ret; } static int check_config(const struct lls_command *cmd) @@ -1511,11 +1517,20 @@ static void lock_dss_or_die(void) static int com_run(void) { int ret, fd = -1; + char *config_file; + pid_t pid; if (OPT_GIVEN(DSS, DRY_RUN)) { DSS_ERROR_LOG(("dry run not supported by this command\n")); return -E_SYNTAX; } + config_file = get_config_file_name(); + ret = get_dss_pid(config_file, &pid); + free(config_file); + if (ret >= 0) { + DSS_ERROR_LOG(("pid %d\n", (int)pid)); + return -E_ALREADY_RUNNING; + } if (OPT_GIVEN(RUN, DAEMON)) { fd = daemon_init(); daemonized = true;