diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-10-13 03:13:23 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-10-13 03:13:23 +0200 |
commit | 560d8f23811162542c1748f711ea6dce269d2720 (patch) | |
tree | 30bd7488e08ad02714066b8cb617378805537511 | |
parent | 2cccbca4fdf1cc6b46da105f6588a6bbdcbbb4df (diff) |
systemctl: warn if user enables unit with no installation instructions
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | src/systemctl.c | 33 |
2 files changed, 21 insertions, 14 deletions
@@ -36,8 +36,6 @@ * if a service fails too often, make the service enter failed mode, and the socket, too. -* systemctl enable - warn about empty [Install] section - * bash completion a la gdbus * systemctl list-jobs - show dependencies diff --git a/src/systemctl.c b/src/systemctl.c index a4a76558bd..671745b7d0 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -3227,6 +3227,7 @@ typedef struct { static Hashmap *will_install = NULL, *have_installed = NULL; static Set *remove_symlinks_to = NULL; +static unsigned n_symlinks = 0; static void install_info_free(InstallInfo *i) { assert(i); @@ -3759,6 +3760,9 @@ static int install_info_apply(const char *verb, LookupPaths *paths, InstallInfo return r; } + n_symlinks += strv_length(i->aliases); + n_symlinks += strv_length(i->wanted_by); + fclose(f); if ((r = install_info_symlink_alias(verb, i, config_path)) != 0) @@ -3859,19 +3863,24 @@ static int enable_unit(DBusConnection *bus, char **args, unsigned n) { if (streq(verb, "is-enabled")) r = r > 0 ? 0 : -ENOENT; - else if (bus && - /* Don't try to reload anything if the user asked us to not do this */ - !arg_no_reload && - /* Don't try to reload anything when updating a unit globally */ - !arg_global && - /* Don't try to reload anything if we are called for system changes but the system wasn't booted with systemd */ - (arg_session || sd_booted() > 0) && - /* Don't try to reload anything if we are running in a chroot environment */ - (arg_session || running_in_chroot() <= 0) ) { - int q; + else { + if (n_symlinks <= 0) + log_warning("Unit files contain no applicable installation information. Ignoring."); + + if (bus && + /* Don't try to reload anything if the user asked us to not do this */ + !arg_no_reload && + /* Don't try to reload anything when updating a unit globally */ + !arg_global && + /* Don't try to reload anything if we are called for system changes but the system wasn't booted with systemd */ + (arg_session || sd_booted() > 0) && + /* Don't try to reload anything if we are running in a chroot environment */ + (arg_session || running_in_chroot() <= 0) ) { + int q; - if ((q = daemon_reload(bus, args, n)) < 0) - r = q; + if ((q = daemon_reload(bus, args, n)) < 0) + r = q; + } } finish: |