X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Finstall.c;h=f56c0728b932e768357c7ce51ea859529f92ffe8;hp=c3dbe8b195d62b48a0ab754bf47d0752ec698573;hb=2f02ce4005075ac76742ed6a2189cc2e5fc6a192;hpb=5b6319dceedd81f3f1ce7eb70ea5defaef43bcec diff --git a/src/install.c b/src/install.c index c3dbe8b19..f56c0728b 100644 --- a/src/install.c +++ b/src/install.c @@ -59,12 +59,13 @@ Hashmap *will_install = NULL, *have_installed = NULL; static int help(void) { - printf("%s [options]\n\n" + printf("%s [OPTIONS...] {COMMAND} ...\n\n" + "Install init system units.\n\n" " -h --help Show this help\n" " --force Override existing links\n" " --system Install into system\n" " --session Install into session\n" - " --global Install into all sessions\n" + " --global Install into all sessions\n\n" "Commands:\n" " enable [NAME...] Enable one or more units\n" " disable [NAME...] Disable one or more units\n" @@ -131,7 +132,7 @@ static int parse_argv(int argc, char *argv[]) { } if (optind >= argc) { - log_error("Missing verb."); + help(); return -EINVAL; } @@ -142,7 +143,7 @@ static int parse_argv(int argc, char *argv[]) { else if (streq(argv[optind], "test")) arg_action = ACTION_TEST; else { - log_error("Unknown verb %s", argv[optind]); + log_error("Unknown verb %s.", argv[optind]); return -EINVAL; } @@ -180,9 +181,6 @@ static bool unit_name_valid(const char *name) { /* This is a minimal version of unit_name_valid() from * unit-name.c */ - if (strchr(name, '/')) - return false; - if (!*name) return false; @@ -385,6 +383,9 @@ static int install_info_symlink_alias(InstallInfo *i, const char *config_path) { if ((r = create_symlink(i->path, alias_path)) != 0) goto finish; + + if (arg_action == ACTION_DISABLE) + rmdir_parents(alias_path, config_path); } r = 0; @@ -421,15 +422,8 @@ static int install_info_symlink_wants(InstallInfo *i, const char *config_path) { if ((r = create_symlink(i->path, alias_path)) != 0) goto finish; - if (arg_action == ACTION_DISABLE) { - char *t; - - /* Try to remove .wants dir if we don't need it anymore */ - if (asprintf(&t, "%s/%s.wants", config_path, *s) >= 0) { - rmdir(t); - free(t); - } - } + if (arg_action == ACTION_DISABLE) + rmdir_parents(alias_path, config_path); } r = 0; @@ -532,8 +526,6 @@ int main(int argc, char *argv[]) { zero(paths); - log_set_target(LOG_TARGET_CONSOLE); - log_set_max_level(LOG_INFO); log_parse_environment(); if ((r = parse_argv(argc, argv)) < 0) @@ -543,7 +535,7 @@ int main(int argc, char *argv[]) { goto finish; } - if ((r = lookup_paths_init(&paths, arg_where == WHERE_SYSTEM ? MANAGER_INIT : MANAGER_SESSION)) < 0) { + if ((r = lookup_paths_init(&paths, arg_where == WHERE_SYSTEM ? MANAGER_SYSTEM : MANAGER_SESSION)) < 0) { log_error("Failed to determine lookup paths: %s", strerror(-r)); goto finish; }