diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-08-16 21:32:03 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-08-16 21:32:03 +0200 |
commit | 0038aed166da0ae991f13cf512b84ac8f77d22ae (patch) | |
tree | e949a1977a563e44763d6000c1467ef4726705cf /src/basic/util.h | |
parent | d1584b9f5b8ba7857ee8f287c87a78da74ec30fe (diff) | |
parent | 2eadf91ca15a982adf71b86e6ee035ac368e74bc (diff) |
Merge pull request #908 from richardmaw-codethink/nspawn-path-escapes-v3
Allow arbitrary file paths to be passed to nspawn (v3)
Diffstat (limited to 'src/basic/util.h')
-rw-r--r-- | src/basic/util.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/basic/util.h b/src/basic/util.h index 426b7f7d16..098f9edcc1 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -854,15 +854,17 @@ int is_symlink(const char *path); int is_dir(const char *path, bool follow); int is_device_node(const char *path); -typedef enum UnquoteFlags { - UNQUOTE_RELAX = 1, - UNQUOTE_CUNESCAPE = 2, - UNQUOTE_CUNESCAPE_RELAX = 4, -} UnquoteFlags; - -int unquote_first_word(const char **p, char **ret, UnquoteFlags flags); -int unquote_first_word_and_warn(const char **p, char **ret, UnquoteFlags flags, const char *unit, const char *filename, unsigned line, const char *rvalue); -int unquote_many_words(const char **p, UnquoteFlags flags, ...) _sentinel_; +typedef enum ExtractFlags { + EXTRACT_RELAX = 1, + EXTRACT_CUNESCAPE = 2, + EXTRACT_CUNESCAPE_RELAX = 4, + EXTRACT_QUOTES = 8, + EXTRACT_DONT_COALESCE_SEPARATORS = 16, +} ExtractFlags; + +int extract_first_word(const char **p, char **ret, const char *separators, ExtractFlags flags); +int extract_first_word_and_warn(const char **p, char **ret, const char *separators, ExtractFlags flags, const char *unit, const char *filename, unsigned line, const char *rvalue); +int extract_many_words(const char **p, const char *separators, ExtractFlags flags, ...) _sentinel_; static inline void free_and_replace(char **s, char *v) { free(*s); @@ -917,6 +919,7 @@ void cmsg_close_all(struct msghdr *mh); int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char *newpath); +char *shell_escape(const char *s, const char *bad); char *shell_maybe_quote(const char *s); int parse_mode(const char *s, mode_t *ret); |