chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prep v228: Apply more cosmetic changes found in upstream.
[elogind.git]
/
src
/
shared
/
conf-parser.c
diff --git
a/src/shared/conf-parser.c
b/src/shared/conf-parser.c
index 9416662125cdcdc6235f51407837629cfa764759..579cf843b4925e8b6757316d4ccbdb224bf292cd 100644
(file)
--- a/
src/shared/conf-parser.c
+++ b/
src/shared/conf-parser.c
@@
-19,21
+19,29
@@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <string.h>
-#include <stdio.h>
#include <errno.h>
#include <errno.h>
+#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
+#include <string.h>
#include "sd-messages.h"
#include "sd-messages.h"
+
+#include "alloc-util.h"
#include "conf-files.h"
#include "conf-files.h"
-#include "
util
.h"
-#include "
macro
.h"
-#include "
strv
.h"
+#include "
conf-parser
.h"
+#include "
fd-util
.h"
+#include "
fs-util
.h"
#include "log.h"
#include "log.h"
-#include "utf8.h"
+#include "macro.h"
+#include "parse-util.h"
#include "path-util.h"
#include "path-util.h"
+#include "process-util.h"
#include "signal-util.h"
#include "signal-util.h"
-#include "conf-parser.h"
+#include "string-util.h"
+#include "strv.h"
+#include "syslog-util.h"
+#include "utf8.h"
+#include "util.h"
int config_item_table_lookup(
const void *table,
int config_item_table_lookup(
const void *table,
@@
-700,9
+708,6
@@
int config_parse_strv(const char *unit,
void *userdata) {
char ***sv = data;
void *userdata) {
char ***sv = data;
- const char *word, *state;
- size_t l;
- int r;
assert(filename);
assert(lvalue);
assert(filename);
assert(lvalue);
@@
-725,25
+730,28
@@
int config_parse_strv(const char *unit,
return 0;
}
return 0;
}
- FOREACH_WORD_QUOTED(word, l, rvalue, state) {
- char *n;
-
- n = strndup(word, l);
- if (!n)
+ for (;;) {
+ char *word = NULL;
+ int r;
+ r = extract_first_word(&rvalue, &word, WHITESPACE, EXTRACT_QUOTES);
+ if (r == 0)
+ break;
+ if (r == -ENOMEM)
return log_oom();
return log_oom();
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, r, "Invalid syntax, ignoring: %s", rvalue);
+ break;
+ }
- if (!utf8_is_valid(
n
)) {
+ if (!utf8_is_valid(
word
)) {
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
log_syntax_invalid_utf8(unit, LOG_ERR, filename, line, rvalue);
- free(
n
);
+ free(
word
);
continue;
}
continue;
}
-
- r = strv_consume(sv, n);
+ r = strv_consume(sv, word);
if (r < 0)
return log_oom();
}
if (r < 0)
return log_oom();
}
- if (!isempty(state))
- log_syntax(unit, LOG_ERR, filename, line, 0, "Trailing garbage, ignoring.");
return 0;
}
return 0;
}