]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: give a nicer error message on invalid aliases
authorJacek Migacz <jmigacz@redhat.com>
Sun, 18 Sep 2022 13:41:38 +0000 (15:41 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 25 Oct 2022 16:18:57 +0000 (18:18 +0200)
src/core/dbus-manager.c

index 633873da27b8a3b855946f45c05899075b46a03e..919aa58cdee2d21b2fb4123ad739611c32f65907 100644 (file)
@@ -2176,6 +2176,16 @@ static int install_error(
                                               "File %s is under the systemd unit hierarchy already.", changes[i].path);
                         goto found;
 
+                case -EBADSLT:
+                        r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
+                                              "Invalid specifier in %s.", changes[i].path);
+                        goto found;
+
+                case -EIDRM:
+                        r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
+                                              "Destination unit %s is a non-template unit.", changes[i].path);
+                        goto found;
+
                 case -EUCLEAN:
                         r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
                                               "\"%s\" is not a valid unit name.",
@@ -2188,11 +2198,26 @@ static int install_error(
                                               changes[i].path);
                         goto found;
 
+                case -EXDEV:
+                        if (changes[i].source)
+                                r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
+                                                      "Cannot alias %s as %s.",
+                                                      changes[i].source, changes[i].path);
+                        else
+                                r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
+                                                      "Invalid unit reference %s.", changes[i].path);
+                        goto found;
+
                 case -ENOENT:
                         r = sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT,
                                               "Unit file %s does not exist.", changes[i].path);
                         goto found;
 
+                case -EUNATCH:
+                        r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
+                                              "Cannot resolve specifiers in %s.", changes[i].path);
+                        goto found;
+
                 default:
                         assert(changes[i].type < 0); /* other errors */
                         r = sd_bus_error_set_errnof(error, changes[i].type, "File %s: %m", changes[i].path);