+ k = 0;
+ FOREACH_WORD_QUOTED(w, l, rvalue, state) {
+ if (strncmp(w, ";", l) == 0)
+ break;
+
+ k++;
+ }
+
+ if (!(n = new(char*, k + !honour_argv0)))
+ return -ENOMEM;
+
+ k = 0;
+ FOREACH_WORD_QUOTED(w, l, rvalue, state) {
+ if (strncmp(w, ";", l) == 0)
+ break;
+
+ if (honour_argv0 && w == rvalue) {
+ assert(!path);
+ if (!(path = cunescape_length(w, l)))
+ goto fail;
+ } else {
+ if (!(n[k++] = cunescape_length(w, l)))
+ goto fail;
+ }
+ }
+
+ n[k] = NULL;
+
+ if (!n[0]) {
+ log_error("[%s:%u] Invalid command line, ignoring: %s", filename, line, rvalue);
+ strv_free(n);
+ return 0;
+ }
+
+ if (!path)
+ if (!(path = strdup(n[0])))
+ goto fail;