chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Modernization
[elogind.git]
/
src
/
locale
/
localed.c
diff --git
a/src/locale/localed.c
b/src/locale/localed.c
index bb2a3a2e5422cea56ac865052f836c80b1de11c4..3cac634a4c6f83dd21dffed9741afeae44e08b48 100644
(file)
--- a/
src/locale/localed.c
+++ b/
src/locale/localed.c
@@
-31,6
+31,10
@@
#include "dbus-common.h"
#include "polkit.h"
#include "def.h"
#include "dbus-common.h"
#include "polkit.h"
#include "def.h"
+#include "env-util.h"
+#include "fileio.h"
+#include "fileio-label.h"
+#include "label.h"
#define INTERFACE \
" <interface name=\"org.freedesktop.locale1\">\n" \
#define INTERFACE \
" <interface name=\"org.freedesktop.locale1\">\n" \
@@
-114,21
+118,7
@@
static const char * const names[_PROP_MAX] = {
[PROP_LC_IDENTIFICATION] = "LC_IDENTIFICATION"
};
[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;
typedef struct State {
char *x11_layout, *x11_model, *x11_variant, *x11_options;
@@
-351,7
+341,7
@@
static int write_data_locale(void) {
int r, p;
char **l = NULL;
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;
if (r < 0 && r != -ENOENT)
return r;
@@
-389,7
+379,7
@@
static int write_data_locale(void) {
return 0;
}
return 0;
}
- r = write_env_file("/etc/locale.conf", l);
+ r = write_env_file
_label
("/etc/locale.conf", l);
strv_free(l);
return r;
strv_free(l);
return r;
@@
-490,7
+480,7
@@
static int write_data_vconsole(void) {
int r;
char **l = NULL;
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;
if (r < 0 && r != -ENOENT)
return r;
@@
-545,7
+535,7
@@
static int write_data_vconsole(void) {
return 0;
}
return 0;
}
- r = write_env_file("/etc/vconsole.conf", l);
+ r = write_env_file
_label
("/etc/vconsole.conf", l);
strv_free(l);
return r;
strv_free(l);
return r;
@@
-815,7
+805,7
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
free_data_x11();
} else {
free_data_x11();
} else {
- FILE *f;
+
_cleanup_fclose_
FILE *f;
unsigned n = 0;
unsigned best_matching = 0;
char *new_keymap = NULL;
unsigned n = 0;
unsigned best_matching = 0;
char *new_keymap = NULL;
@@
-825,16
+815,13
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
return -errno;
for (;;) {
return -errno;
for (;;) {
-
char **a
;
+
_cleanup_strv_free_ char **a = NULL
;
unsigned matching = 0;
int r;
r = read_next_mapping(f, &n, &a);
unsigned matching = 0;
int r;
r = read_next_mapping(f, &n, &a);
- if (r < 0) {
- fclose(f);
+ if (r < 0)
return r;
return r;
- }
-
if (r == 0)
break;
if (r == 0)
break;
@@
-853,7
+840,7
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
* layout stripped off. */
if (x > 0 &&
strlen(a[1]) == x &&
* layout stripped off. */
if (x > 0 &&
strlen(a[1]) == x &&
- strn
cmp(state.x11_layout, a[1], x) == 0
)
+ strn
eq(state.x11_layout, a[1], x)
)
matching = 5;
else {
size_t w;
matching = 5;
else {
size_t w;
@@
-889,19
+876,11
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
free(new_keymap);
new_keymap = strdup(a[0]);
free(new_keymap);
new_keymap = strdup(a[0]);
-
- if (!new_keymap) {
- strv_free(a);
- fclose(f);
+ if (!new_keymap)
return -ENOMEM;
return -ENOMEM;
- }
}
}
-
- strv_free(a);
}
}
- fclose(f);
-
if (!streq_ptr(state.vc_keymap, new_keymap)) {
free(state.vc_keymap);
state.vc_keymap = new_keymap;
if (!streq_ptr(state.vc_keymap, new_keymap)) {
free(state.vc_keymap);
state.vc_keymap = new_keymap;
@@
-916,7
+895,8
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
if (modified) {
dbus_bool_t b;
if (modified) {
dbus_bool_t b;
- DBusMessage *changed;
+
+ _cleanup_dbus_message_unref_ DBusMessage *changed = NULL;
int r;
r = write_data_vconsole();
int r;
r = write_data_vconsole();
@@
-928,13
+908,10
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
"org.freedesktop.locale1",
"VConsoleKeymap\0"
"VConsoleKeymapToggle\0");
"org.freedesktop.locale1",
"VConsoleKeymap\0"
"VConsoleKeymapToggle\0");
-
if (!changed)
return -ENOMEM;
b = dbus_connection_send(connection, changed, NULL);
if (!changed)
return -ENOMEM;
b = dbus_connection_send(connection, changed, NULL);
- dbus_message_unref(changed);
-
if (!b)
return -ENOMEM;
if (!b)
return -ENOMEM;
@@
-945,31
+922,26
@@
static int convert_x11_to_vconsole(DBusConnection *connection) {
}
static int append_locale(DBusMessageIter *i, const char *property, void *userdata) {
}
static int append_locale(DBusMessageIter *i, const char *property, void *userdata) {
- int
r, c = 0
, p;
-
char **l
;
+ int
c
, p;
+
_cleanup_strv_free_ char **l = NULL
;
l = new0(char*, _PROP_MAX+1);
if (!l)
return -ENOMEM;
l = new0(char*, _PROP_MAX+1);
if (!l)
return -ENOMEM;
- for (p = 0; p < _PROP_MAX; p++) {
+ for (p = 0
, c = 0
; p < _PROP_MAX; p++) {
char *t;
if (isempty(data[p]))
continue;
char *t;
if (isempty(data[p]))
continue;
- if (asprintf(&t, "%s=%s", names[p], data[p]) < 0) {
- strv_free(l);
+ if (asprintf(&t, "%s=%s", names[p], data[p]) < 0)
return -ENOMEM;
return -ENOMEM;
- }
l[c++] = t;
}
l[c++] = t;
}
- r = bus_property_append_strv(i, property, (void*) l);
- strv_free(l);
-
- return r;
+ return bus_property_append_strv(i, property, (void*) l);
}
static const BusProperty bus_locale_properties[] = {
}
static const BusProperty bus_locale_properties[] = {
@@
-1007,7
+979,7
@@
static DBusHandlerResult locale_message_handler(
dbus_bool_t interactive;
DBusMessageIter iter;
bool modified = false;
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))
int p;
if (!dbus_message_iter_init(message, &iter))
@@
-1029,8
+1001,6
@@
static DBusHandlerResult locale_message_handler(
dbus_message_iter_get_basic(&iter, &interactive);
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;
/* Check whether a variable changed and if so valid */
STRV_FOREACH(i, l) {
bool valid = false;
@@
-1273,7
+1243,7
@@
static DBusHandlerResult locale_message_handler(
if (!(reply = dbus_message_new_method_return(message)))
goto oom;
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);
goto oom;
dbus_message_unref(reply);
@@
-1363,7
+1333,7
@@
int main(int argc, char *argv[]) {
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
-
+ label_init("/etc");
umask(0022);
if (argc == 2 && streq(argv[1], "--introspect")) {
umask(0022);
if (argc == 2 && streq(argv[1], "--introspect")) {