X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flocale%2Flocaled.c;h=e160c046a47924b9ad89425a342c454f4a1b6933;hb=ef42202ac8ed27e7ff1fc90ef8bc2590046dff25;hp=6b1a793d3b44f2aab179f49978985ca8a755aa6b;hpb=4d1a69043862ed979642f5688097160355d4cc81;p=elogind.git diff --git a/src/locale/localed.c b/src/locale/localed.c index 6b1a793d3..e160c046a 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -32,6 +32,9 @@ #include "polkit.h" #include "def.h" #include "env-util.h" +#include "fileio.h" +#include "fileio-label.h" +#include "label.h" #define INTERFACE \ " \n" \ @@ -115,21 +118,7 @@ static const char * const names[_PROP_MAX] = { [PROP_LC_IDENTIFICATION] = "LC_IDENTIFICATION" }; -static char *data[_PROP_MAX] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; +static char *data[_PROP_MAX] = {}; typedef struct State { char *x11_layout, *x11_model, *x11_variant, *x11_options; @@ -352,7 +341,7 @@ static int write_data_locale(void) { int r, p; char **l = NULL; - r = load_env_file("/etc/locale.conf", &l); + r = load_env_file("/etc/locale.conf", NULL, &l); if (r < 0 && r != -ENOENT) return r; @@ -390,7 +379,7 @@ static int write_data_locale(void) { return 0; } - r = write_env_file("/etc/locale.conf", l); + r = write_env_file_label("/etc/locale.conf", l); strv_free(l); return r; @@ -491,7 +480,7 @@ static int write_data_vconsole(void) { int r; char **l = NULL; - r = load_env_file("/etc/vconsole.conf", &l); + r = load_env_file("/etc/vconsole.conf", NULL, &l); if (r < 0 && r != -ENOENT) return r; @@ -546,7 +535,7 @@ static int write_data_vconsole(void) { return 0; } - r = write_env_file("/etc/vconsole.conf", l); + r = write_env_file_label("/etc/vconsole.conf", l); strv_free(l); return r; @@ -854,7 +843,7 @@ static int convert_x11_to_vconsole(DBusConnection *connection) { * layout stripped off. */ if (x > 0 && strlen(a[1]) == x && - strncmp(state.x11_layout, a[1], x) == 0) + strneq(state.x11_layout, a[1], x)) matching = 5; else { size_t w; @@ -1008,7 +997,7 @@ static DBusHandlerResult locale_message_handler( dbus_bool_t interactive; DBusMessageIter iter; bool modified = false; - bool passed[_PROP_MAX]; + bool passed[_PROP_MAX] = {}; int p; if (!dbus_message_iter_init(message, &iter)) @@ -1030,8 +1019,6 @@ static DBusHandlerResult locale_message_handler( dbus_message_iter_get_basic(&iter, &interactive); - zero(passed); - /* Check whether a variable changed and if so valid */ STRV_FOREACH(i, l) { bool valid = false; @@ -1274,7 +1261,7 @@ static DBusHandlerResult locale_message_handler( if (!(reply = dbus_message_new_method_return(message))) goto oom; - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); @@ -1364,7 +1351,7 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); - + label_init("/etc"); umask(0022); if (argc == 2 && streq(argv[1], "--introspect")) {