[systemd-devel] [PATCH] systemctl: mangle unit name in is-enabled

Lukáš Nykrýn lnykryn at redhat.com
Thu Mar 7 07:18:07 PST 2013


Čt 7. březen 2013, 16:13:17 CET, Lennart Poettering napsal:
> On Thu, 07.03.13 16:09, Lukas Nykryn (lnykryn at redhat.com) wrote:
>
> Hmm, don't we need the same for the other unit file verbs such as
> enable/disable/mask/unmask, too?
>
>> ---
>>   src/systemctl/systemctl.c | 19 +++++++++++++++++--
>>   1 file changed, 17 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
>> index 99286cf..72e9c55 100644
>> --- a/src/systemctl/systemctl.c
>> +++ b/src/systemctl/systemctl.c
>> @@ -3982,6 +3982,7 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
>>           DBusMessage _cleanup_dbus_message_unref_ *reply = NULL;
>>           bool enabled;
>>           char **name;
>> +        char *n;
>>
>>           dbus_error_init(&error);
>>
>> @@ -3996,7 +3997,14 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
>>                   STRV_FOREACH(name, args+1) {
>>                           UnitFileState state;
>>
>> -                        state = unit_file_get_state(arg_scope, arg_root, *name);
>> +                        n = unit_name_mangle(*name);
>> +                        if (!n)
>> +                                return log_oom();
>> +
>> +                        state = unit_file_get_state(arg_scope, arg_root, n);
>> +
>> +                        free(n);
>> +
>>                           if (state < 0)
>>                                   return state;
>>
>> @@ -4013,6 +4021,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
>>                   STRV_FOREACH(name, args+1) {
>>                           const char *s;
>>
>> +                        n = unit_name_mangle(*name);
>> +                        if (!n)
>> +                                return log_oom();
>> +
>>                           r = bus_method_call_with_reply (
>>                                           bus,
>>                                           "org.freedesktop.systemd1",
>> @@ -4021,8 +4033,11 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
>>                                           "GetUnitFileState",
>>                                           &reply,
>>                                           NULL,
>> -                                        DBUS_TYPE_STRING, name,
>> +                                        DBUS_TYPE_STRING, &n,
>>                                           DBUS_TYPE_INVALID);
>> +
>> +                        free(n);
>> +
>>                           if (r)
>>                                   return r;
>>
>
>
> Lennart
>

I think that these already work.

Lukas


More information about the systemd-devel mailing list