4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering This file is part of systemd.
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering Copyright 2010 Lennart Poettering
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering systemd is free software; you can redistribute it and/or modify it
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering under the terms of the GNU Lesser General Public License as published by
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering (at your option) any later version.
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering systemd is distributed in the hope that it will be useful, but
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering Lesser General Public License for more details.
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering You should have received a copy of the GNU Lesser General Public License
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering/* What characters are special in the shell? */
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering/* must be escaped outside and inside double-quotes */
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering/* can be escaped or double-quoted */
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poettering#define SHELL_NEED_QUOTES SHELL_NEED_ESCAPE GLOB_CHARS "'()<>|&;"
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringchar *cescape(const char *s);
a5ef363808b100856783784654de9b6bf2110173Lennart Poetteringchar *cescape_length(const char *s, size_t n);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringint cunescape(const char *s, UnescapeFlags flags, char **ret);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringint cunescape_length(const char *s, size_t length, UnescapeFlags flags, char **ret);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringint cunescape_length_with_prefix(const char *s, size_t length, const char *prefix, UnescapeFlags flags, char **ret);
c932fb71cc90461b88ecdffe47c071d001d78fb4Shawn Landdenint cunescape_one(const char *p, size_t length, char32_t *ret, bool *eight_bit);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringchar *xescape(const char *s, const char *bad);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringchar *shell_escape(const char *s, const char *bad);
4f5dd3943bef8a04be7e3b838b822bb9a7ad6cb3Lennart Poetteringchar *shell_maybe_quote(const char *s);