Merge pull request #1700 from ssahani/word

Port to extract_first_word
This commit is contained in:
Lennart Poettering
2015-10-28 19:32:35 +01:00
3 changed files with 31 additions and 24 deletions
+12 -8
View File
@@ -1255,6 +1255,7 @@ static int parse_argv(int argc, char *argv[]) {
};
int c, r;
const char *p;
bool type_a, type_b;
assert(argc >= 0);
@@ -1415,18 +1416,21 @@ static int parse_argv(int argc, char *argv[]) {
case ARG_GNUTLS_LOG: {
#ifdef HAVE_GNUTLS
const char *word, *state;
size_t size;
p = optarg;
for (;;) {
_cleanup_free_ char *word = NULL;
FOREACH_WORD_SEPARATOR(word, size, optarg, ",", state) {
char *cat;
r = extract_first_word(&p, &word, ",", 0);
if (r < 0)
return log_error_errno(r, "Failed to parse --gnutls-log= argument: %m");
cat = strndup(word, size);
if (!cat)
if (r == 0)
break;
if (strv_push(&arg_gnutls_log, word) < 0)
return log_oom();
if (strv_consume(&arg_gnutls_log, cat) < 0)
return log_oom();
word = NULL;
}
break;
#else
+9 -7
View File
@@ -387,6 +387,7 @@ static int parse_argv(int argc, char *argv[]) {
};
int c, r;
const char *p;
uint64_t plus = 0, minus = 0;
bool mask_all_settings = false, mask_no_settings = false;
@@ -524,15 +525,16 @@ static int parse_argv(int argc, char *argv[]) {
case ARG_CAPABILITY:
case ARG_DROP_CAPABILITY: {
const char *state, *word;
size_t length;
p = optarg;
for(;;) {
_cleanup_free_ char *t = NULL;
FOREACH_WORD_SEPARATOR(word, length, optarg, ",", state) {
_cleanup_free_ char *t;
r = extract_first_word(&p, &t, ",", 0);
if (r < 0)
return log_error_errno(r, "Failed to parse capability %s.", t);
t = strndup(word, length);
if (!t)
return log_oom();
if (r == 0)
break;
if (streq(t, "all")) {
if (c == ARG_CAPABILITY)
+10 -9
View File
@@ -929,8 +929,6 @@ static int config_parse_also(
void *data,
void *userdata) {
size_t l;
const char *word, *state;
InstallContext *c = data;
UnitFileInstallInfo *i = userdata;
@@ -938,13 +936,18 @@ static int config_parse_also(
assert(lvalue);
assert(rvalue);
FOREACH_WORD_QUOTED(word, l, rvalue, state) {
_cleanup_free_ char *n;
for(;;) {
_cleanup_free_ char *n = NULL;
int r;
n = strndup(word, l);
if (!n)
return -ENOMEM;
r = extract_first_word(&rvalue, &n, NULL, 0);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse config %s, ignoring.", rvalue);
return 0;
}
if (r == 0)
break;
r = install_info_add(c, n, NULL);
if (r < 0)
@@ -954,8 +957,6 @@ static int config_parse_also(
if (r < 0)
return r;
}
if (!isempty(state))
log_syntax(unit, LOG_ERR, filename, line, 0, "Trailing garbage, ignoring.");
return 0;
}