strescape.h revision 146e7e3fabdd843d50680cdb6e4f7829890f5fcf
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#ifndef STRESCAPE_H
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#define STRESCAPE_H
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen
839c67ba93b58e394daa435f7b99587eec97cefbTimo Sirainen#define IS_ESCAPED_CHAR(c) ((c) == '"' || (c) == '\\' || (c) == '\'')
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen
839c67ba93b58e394daa435f7b99587eec97cefbTimo Sirainen/* escape all '\', '"' and "'" characters */
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainenconst char *str_escape(const char *str);
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen/* remove all '\' characters, append to given string */
c0435c854a0e7246373b9752d163095cc4fbe985Timo Sirainenvoid str_append_unescaped(string_t *dest, const void *src, size_t src_size);
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen/* remove all '\' characters */
4d3e576109a91270c04821f8d727cd1afec8c801Timo Sirainenchar *str_unescape(char *str);
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen
146e7e3fabdd843d50680cdb6e4f7829890f5fcfTimo Sirainen/* For Dovecot's internal protocols: Escape \001, \t and \n characters
146e7e3fabdd843d50680cdb6e4f7829890f5fcfTimo Sirainen using \001. */
146e7e3fabdd843d50680cdb6e4f7829890f5fcfTimo Sirainenconst char *str_tabescape(const char *str);
146e7e3fabdd843d50680cdb6e4f7829890f5fcfTimo Sirainenvoid str_tabescape_write(string_t *dest, const char *src);
146e7e3fabdd843d50680cdb6e4f7829890f5fcfTimo Sirainen
4a6f9ed8e5412508dcba1eabb58a3680ad5e9b68Timo Sirainen#endif