chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
everywhere: remove configurability of sysv runlevel to target mapping
[elogind.git]
/
src
/
sysctl
/
sysctl.c
diff --git
a/src/sysctl/sysctl.c
b/src/sysctl/sysctl.c
index 809e59b71fdb6acd8a184e2f52a5fca7d2c092ce..275a5b74aee4669c22cf8a4eebff42b83fb1f4a7 100644
(file)
--- a/
src/sysctl/sysctl.c
+++ b/
src/sysctl/sysctl.c
@@
-38,15
+38,7
@@
static char **arg_prefixes = NULL;
static char **arg_prefixes = NULL;
-static const char conf_file_dirs[] =
- "/etc/sysctl.d\0"
- "/run/sysctl.d\0"
- "/usr/local/lib/sysctl.d\0"
- "/usr/lib/sysctl.d\0"
-#ifdef HAVE_SPLIT_USR
- "/lib/sysctl.d\0"
-#endif
- ;
+static const char conf_file_dirs[] = CONF_DIRS_NULSTR("sysctl");
static char* normalize_sysctl(char *s) {
char *n;
static char* normalize_sysctl(char *s) {
char *n;
@@
-86,22
+78,6
@@
static int apply_sysctl(const char *property, const char *value) {
n = stpcpy(p, "/proc/sys/");
strcpy(n, property);
n = stpcpy(p, "/proc/sys/");
strcpy(n, property);
- if (!strv_isempty(arg_prefixes)) {
- char **i;
- bool good = false;
-
- STRV_FOREACH(i, arg_prefixes)
- if (path_startswith(p, *i)) {
- good = true;
- break;
- }
-
- if (!good) {
- log_debug("Skipping %s", p);
- return 0;
- }
- }
-
k = write_string_file(p, value);
if (k < 0) {
log_full(k == -ENOENT ? LOG_DEBUG : LOG_WARNING,
k = write_string_file(p, value);
if (k < 0) {
log_full(k == -ENOENT ? LOG_DEBUG : LOG_WARNING,
@@
-142,8
+118,7
@@
static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
if (ignore_enoent && r == -ENOENT)
return 0;
if (ignore_enoent && r == -ENOENT)
return 0;
- log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r));
- return r;
+ return log_error_errno(r, "Failed to open file '%s', ignoring: %m", path);
}
log_debug("parse: %s", path);
}
log_debug("parse: %s", path);
@@
-156,7
+131,7
@@
static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
if (feof(f))
break;
if (feof(f))
break;
- log_error
(
"Failed to read file '%s', ignoring: %m", path);
+ log_error
_errno(errno,
"Failed to read file '%s', ignoring: %m", path);
return -errno;
}
return -errno;
}
@@
-182,6
+157,20
@@
static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
p = normalize_sysctl(strstrip(p));
value = strstrip(value);
p = normalize_sysctl(strstrip(p));
value = strstrip(value);
+ if (!strv_isempty(arg_prefixes)) {
+ char **i, *t;
+ STRV_FOREACH(i, arg_prefixes) {
+ t = path_startswith(*i, "/proc/sys/");
+ if (t == NULL)
+ t = *i;
+ if (path_startswith(p, t))
+ goto found;
+ }
+ /* not found */
+ continue;
+ }
+
+found:
existing = hashmap_get2(sysctl_options, p, &v);
if (existing) {
if (streq(value, existing))
existing = hashmap_get2(sysctl_options, p, &v);
if (existing) {
if (streq(value, existing))
@@
-204,7
+193,7
@@
static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
k = hashmap_put(sysctl_options, property, new_value);
if (k < 0) {
k = hashmap_put(sysctl_options, property, new_value);
if (k < 0) {
- log_error
("Failed to add sysctl variable %s to hashmap: %s", property, strerror(-k)
);
+ log_error
_errno(k, "Failed to add sysctl variable %s to hashmap: %m", property
);
free(property);
free(new_value);
return k;
free(property);
free(new_value);
return k;
@@
-322,7
+311,7
@@
int main(int argc, char *argv[]) {
r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
if (r < 0) {
r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
if (r < 0) {
- log_error
("Failed to enumerate sysctl.d files: %s", strerror(-r)
);
+ log_error
_errno(r, "Failed to enumerate sysctl.d files: %m"
);
goto finish;
}
goto finish;
}