chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tmpfiles: port to unquote_many_words()
[elogind.git]
/
src
/
tmpfiles
/
tmpfiles.c
diff --git
a/src/tmpfiles/tmpfiles.c
b/src/tmpfiles/tmpfiles.c
index 652fe5f229ca653993f95cf89aa504dca0b947bf..10c5a63dbf4d7734db6121e0fa42c1b58db28af6 100644
(file)
--- a/
src/tmpfiles/tmpfiles.c
+++ b/
src/tmpfiles/tmpfiles.c
@@
-1506,23
+1506,25
@@
static int parse_line(const char *fname, unsigned line, const char *buffer) {
_cleanup_(item_free_contents) Item i = {};
ItemArray *existing;
Hashmap *h;
_cleanup_(item_free_contents) Item i = {};
ItemArray *existing;
Hashmap *h;
- int r,
c = -1,
pos;
+ int r, pos;
bool force = false, boot = false;
assert(fname);
assert(line >= 1);
assert(buffer);
bool force = false, boot = false;
assert(fname);
assert(line >= 1);
assert(buffer);
- r = sscanf(buffer,
- "%ms %ms %ms %ms %ms %ms %n",
+ r = unquote_many_words(&buffer,
&action,
&path,
&mode,
&user,
&group,
&age,
&action,
&path,
&mode,
&user,
&group,
&age,
- &c);
- if (r < 2) {
+ &i.argument,
+ NULL);
+ if (r < 0)
+ return log_error_errno(r, "[%s:%u] Failed to parse line: %m", fname, line);
+ else if (r < 2) {
log_error("[%s:%u] Syntax error.", fname, line);
return -EIO;
}
log_error("[%s:%u] Syntax error.", fname, line);
return -EIO;
}
@@
-1559,15
+1561,6
@@
static int parse_line(const char *fname, unsigned line, const char *buffer) {
return r;
}
return r;
}
- if (c >= 0) {
- c += strspn(buffer+c, WHITESPACE);
- if (buffer[c] != 0 && (buffer[c] != '-' || buffer[c+1] != 0)) {
- i.argument = unquote(buffer+c, "\"");
- if (!i.argument)
- return log_oom();
- }
- }
-
switch (i.type) {
case CREATE_FILE:
switch (i.type) {
case CREATE_FILE: