chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mount-setup: try mounting 'efivarfs' only if the system bootet with EFI
[elogind.git]
/
src
/
core
/
load-fragment.c
diff --git
a/src/core/load-fragment.c
b/src/core/load-fragment.c
index bbd82b9d2472d4cda178d530fbb49506da80cad4..580304417876d0af9ed3881cde6c2507b687ddd8 100644
(file)
--- a/
src/core/load-fragment.c
+++ b/
src/core/load-fragment.c
@@
-42,6
+42,7
@@
#include "securebits.h"
#include "missing.h"
#include "unit-name.h"
#include "securebits.h"
#include "missing.h"
#include "unit-name.h"
+#include "unit-printf.h"
#include "bus-errors.h"
#include "utf8.h"
#include "path-util.h"
#include "bus-errors.h"
#include "utf8.h"
#include "path-util.h"
@@
-185,7
+186,7
@@
int config_parse_unit_path_printf(
k = unit_full_printf(u, rvalue);
if (!k)
k = unit_full_printf(u, rvalue);
if (!k)
- return
-ENOMEM
;
+ return
log_oom()
;
r = config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata);
free(k);
r = config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata);
free(k);
@@
-325,10
+326,12
@@
int config_parse_socket_bind(
s = SOCKET(data);
s = SOCKET(data);
- if ((b = socket_address_bind_ipv6_only_from_string(rvalue)) < 0) {
+ b = socket_address_bind_ipv6_only_from_string(rvalue);
+ if (b < 0) {
int r;
int r;
- if ((r = parse_boolean(rvalue)) < 0) {
+ r = parse_boolean(rvalue);
+ if (r < 0) {
log_error("[%s:%u] Failed to parse bind IPv6 only value, ignoring: %s", filename, line, rvalue);
return 0;
}
log_error("[%s:%u] Failed to parse bind IPv6 only value, ignoring: %s", filename, line, rvalue);
return 0;
}
@@
-613,7
+616,8
@@
int config_parse_exec_io_class(
assert(rvalue);
assert(data);
assert(rvalue);
assert(data);
- if ((x = ioprio_class_from_string(rvalue)) < 0) {
+ x = ioprio_class_from_string(rvalue);
+ if (x < 0) {
log_error("[%s:%u] Failed to parse IO scheduling class, ignoring: %s", filename, line, rvalue);
return 0;
}
log_error("[%s:%u] Failed to parse IO scheduling class, ignoring: %s", filename, line, rvalue);
return 0;
}
@@
-672,7
+676,8
@@
int config_parse_exec_cpu_sched_policy(
assert(rvalue);
assert(data);
assert(rvalue);
assert(data);
- if ((x = sched_policy_from_string(rvalue)) < 0) {
+ x = sched_policy_from_string(rvalue);
+ if (x < 0) {
log_error("[%s:%u] Failed to parse CPU scheduling policy, ignoring: %s", filename, line, rvalue);
return 0;
}
log_error("[%s:%u] Failed to parse CPU scheduling policy, ignoring: %s", filename, line, rvalue);
return 0;
}
@@
-1192,32
+1197,36
@@
int config_parse_path_spec(
Path *p = data;
PathSpec *s;
PathType b;
Path *p = data;
PathSpec *s;
PathType b;
+ char *k;
assert(filename);
assert(lvalue);
assert(rvalue);
assert(data);
assert(filename);
assert(lvalue);
assert(rvalue);
assert(data);
- if ((b = path_type_from_string(lvalue)) < 0) {
+ b = path_type_from_string(lvalue);
+ if (b < 0) {
log_error("[%s:%u] Failed to parse path type, ignoring: %s", filename, line, lvalue);
return 0;
}
log_error("[%s:%u] Failed to parse path type, ignoring: %s", filename, line, lvalue);
return 0;
}
- if (!path_is_absolute(rvalue)) {
- log_error("[%s:%u] Path is not absolute, ignoring: %s", filename, line, rvalue);
+ k = unit_full_printf(UNIT(p), rvalue);
+ if (!k)
+ return log_oom();
+
+ if (!path_is_absolute(k)) {
+ log_error("[%s:%u] Path is not absolute, ignoring: %s", filename, line, k);
+ free(k);
return 0;
}
return 0;
}
- if (!(s = new0(PathSpec, 1)))
- return -ENOMEM;
-
- if (!(s->path = strdup(rvalue))) {
- free(s);
- return -ENOMEM;
+ s = new0(PathSpec, 1);
+ if (!s) {
+ free(k);
+ return log_oom();
}
}
- path_kill_slashes(s->path);
-
+ s->path = path_kill_slashes(k);
s->type = b;
s->inotify_fd = -1;
s->type = b;
s->inotify_fd = -1;
@@
-1376,10
+1385,16
@@
int config_parse_service_timeout(
r = config_parse_usec(filename, line, section, lvalue, ltype, rvalue, data, userdata);
r = config_parse_usec(filename, line, section, lvalue, ltype, rvalue, data, userdata);
- if (!r)
- s->timeout_defined = true;
+ if (r)
+ return r;
+
+ if (streq(lvalue, "TimeoutSec")) {
+ s->start_timeout_defined = true;
+ s->timeout_stop_usec = s->timeout_start_usec;
+ } else if (streq(lvalue, "TimeoutStartSec"))
+ s->start_timeout_defined = true;
- return
r
;
+ return
0
;
}
int config_parse_unit_env_file(
}
int config_parse_unit_env_file(
@@
-1439,11
+1454,11
@@
int config_parse_ip_tos(
assert(rvalue);
assert(data);
assert(rvalue);
assert(data);
- if ((x = ip_tos_from_string(rvalue)) < 0)
-
if (safe_atoi(rvalue, &x)
< 0) {
-
log_error("[%s:%u] Failed to parse IP TOS value, ignoring: %s", filename, line, rvalue);
-
return 0;
-
}
+ x = ip_tos_from_string(rvalue);
+
if (x
< 0) {
+ log_error("[%s:%u] Failed to parse IP TOS value, ignoring: %s", filename, line, rvalue);
+ return 0;
+ }
*ip_tos = x;
return 0;
*ip_tos = x;
return 0;
@@
-1463,6
+1478,7
@@
int config_parse_unit_condition_path(
Unit *u = data;
bool trigger, negate;
Condition *c;
Unit *u = data;
bool trigger, negate;
Condition *c;
+ _cleanup_free_ char *p = NULL;
assert(filename);
assert(lvalue);
assert(filename);
assert(lvalue);
@@
-1477,12
+1493,16
@@
int config_parse_unit_condition_path(
if (negate)
rvalue++;
if (negate)
rvalue++;
- if (!path_is_absolute(rvalue)) {
- log_error("[%s:%u] Path in condition not absolute, ignoring: %s", filename, line, rvalue);
+ p = unit_full_printf(u, rvalue);
+ if (!p)
+ return -ENOMEM;
+
+ if (!path_is_absolute(p)) {
+ log_error("[%s:%u] Path in condition not absolute, ignoring: %s", filename, line, p);
return 0;
}
return 0;
}
- c = condition_new(cond,
rvalue
, trigger, negate);
+ c = condition_new(cond,
p
, trigger, negate);
if (!c)
return -ENOMEM;
if (!c)
return -ENOMEM;
@@
-1504,21
+1524,29
@@
int config_parse_unit_condition_string(
Unit *u = data;
bool trigger, negate;
Condition *c;
Unit *u = data;
bool trigger, negate;
Condition *c;
+ _cleanup_free_ char *s = NULL;
assert(filename);
assert(lvalue);
assert(rvalue);
assert(data);
assert(filename);
assert(lvalue);
assert(rvalue);
assert(data);
- if ((trigger = rvalue[0] == '|'))
+ trigger = rvalue[0] == '|';
+ if (trigger)
rvalue++;
rvalue++;
- if ((negate = rvalue[0] == '!'))
+ negate = rvalue[0] == '!';
+ if (negate)
rvalue++;
rvalue++;
- if (!(c = condition_new(cond, rvalue, trigger, negate)))
+ s = unit_full_printf(u, rvalue);
+ if (!s)
return -ENOMEM;
return -ENOMEM;
+ c = condition_new(cond, s, trigger, negate);
+ if (!c)
+ return log_oom();
+
LIST_PREPEND(Condition, conditions, u->conditions, c);
return 0;
}
LIST_PREPEND(Condition, conditions, u->conditions, c);
return 0;
}
@@
-2022,7
+2050,7
@@
int config_parse_syscall_filter(
ExecContext *c = data;
Unit *u = userdata;
ExecContext *c = data;
Unit *u = userdata;
- bool invert;
+ bool invert
= false
;
char *w;
size_t l;
char *state;
char *w;
size_t l;
char *state;