mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-02 09:47:03 +03:00
locale: assume locale is for LANG= when variable name is not specified
Closes #6070.
This commit is contained in:
parent
df4fd2c757
commit
4156e767f6
@ -121,11 +121,12 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>set-locale LOCALE…</command></term>
|
||||
<term><command>set-locale LOCALE</command></term>
|
||||
<term><command>set-locale VARIABLE=LOCALE…</command></term>
|
||||
|
||||
<listitem><para>Set the system locale. This takes one or more
|
||||
assignments such as "LANG=de_DE.utf8",
|
||||
"LC_MESSAGES=en_GB.utf8", and so on. See
|
||||
<listitem><para>Set the system locale. This takes one locale such as <literal>en_US.UTF-8</literal>, or takes one or more
|
||||
locale assignments such as <literal>LANG=de_DE.utf8</literal>, <literal>LC_MESSAGES=en_GB.utf8</literal>, and so on. If
|
||||
one locale without variable name is provided, then <literal>LANG=</literal> locale variable will be set. See
|
||||
<citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
for details on the available settings and their meanings. Use
|
||||
<command>list-locales</command> for a list of available
|
||||
|
@ -284,6 +284,18 @@ static int method_set_locale(sd_bus_message *m, void *userdata, sd_bus_error *er
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* If single locale without variable name is provided, then we assume it is LANG=. */
|
||||
if (strv_length(l) == 1 && !strchr(*l, '=')) {
|
||||
if (!locale_is_valid(*l))
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid Locale data.");
|
||||
|
||||
new_locale[VARIABLE_LANG] = strdup(*l);
|
||||
if (!new_locale[VARIABLE_LANG])
|
||||
return -ENOMEM;
|
||||
|
||||
l = strv_free(l);
|
||||
}
|
||||
|
||||
/* Check whether a variable is valid */
|
||||
STRV_FOREACH(i, l) {
|
||||
bool valid = false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user