chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
systemctl: fail in the case that no unit files were found
[elogind.git]
/
src
/
shared
/
strv.c
diff --git
a/src/shared/strv.c
b/src/shared/strv.c
index 0ac66b927c167d166a4918c7c85fbca5f2cc7780..6448f3170fc837ac6ef7035fb8506bc9c430ab52 100644
(file)
--- a/
src/shared/strv.c
+++ b/
src/shared/strv.c
@@
-231,7
+231,7
@@
char **strv_split(const char *s, const char *separator) {
return r;
}
return r;
}
-
char **strv_split_quoted(
const char *s) {
+
int strv_split_quoted(char ***t,
const char *s) {
const char *word, *state;
size_t l;
unsigned n, i;
const char *word, *state;
size_t l;
unsigned n, i;
@@
-242,26
+242,27
@@
char **strv_split_quoted(const char *s) {
n = 0;
FOREACH_WORD_QUOTED(word, l, s, state)
n++;
n = 0;
FOREACH_WORD_QUOTED(word, l, s, state)
n++;
- if (
*state
)
+ if (
!isempty(state)
)
/* bad syntax */
/* bad syntax */
- return
NUL
L;
+ return
-EINVA
L;
r = new(char*, n+1);
if (!r)
r = new(char*, n+1);
if (!r)
- return
NULL
;
+ return
-ENOMEM
;
i = 0;
FOREACH_WORD_QUOTED(word, l, s, state) {
r[i] = cunescape_length(word, l);
if (!r[i]) {
strv_free(r);
i = 0;
FOREACH_WORD_QUOTED(word, l, s, state) {
r[i] = cunescape_length(word, l);
if (!r[i]) {
strv_free(r);
- return
NULL
;
+ return
-ENOMEM
;
}
i++;
}
r[i] = NULL;
}
i++;
}
r[i] = NULL;
- return r;
+ *t = r;
+ return 0;
}
char **strv_split_newlines(const char *s) {
}
char **strv_split_newlines(const char *s) {