X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=87ad317319315b07052f98bd3c0c719e7d3deca2;hb=fdbdf6ec29bda40763d7d3e7bb2a63e2f5d60c4c;hp=101d2dfcf89b13f66cec6a2bfea4edf3c1578df9;hpb=8085f163c50d998f3e30a6ddfc72c73d5dc57747;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index 101d2dfcf..87ad31731 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -128,6 +128,8 @@ bool streq_ptr(const char *a, const char *b) _pure_; #define newa(t, n) ((t*) alloca(sizeof(t)*(n))) +#define newa0(t, n) ((t*) alloca0(sizeof(t)*(n))) + #define newdup(t, p, n) ((t*) memdup_multiply(p, sizeof(t), (n))) #define malloc0(n) (calloc((n), 1)) @@ -246,9 +248,6 @@ const char* split(const char **state, size_t *l, const char *separator, bool quo #define FOREACH_WORD_QUOTED(word, length, s, state) \ _FOREACH_WORD(word, length, s, WHITESPACE, true, state) -#define FOREACH_WORD_SEPARATOR_QUOTED(word, length, s, separator, state) \ - _FOREACH_WORD(word, length, s, separator, true, state) - #define _FOREACH_WORD(word, length, s, separator, quoted, state) \ for ((state) = (s), (word) = split(&(state), &(length), (separator), (quoted)); (word); (word) = split(&(state), &(length), (separator), (quoted))) @@ -966,3 +965,8 @@ char *tempfn_random(const char *p); bool is_localhost(const char *hostname); int take_password_lock(const char *root); + +int is_symlink(const char *path); + +int unquote_first_word(const char **p, char **ret); +int unquote_many_words(const char **p, ...) _sentinel_;