From: Ian Zimmerman Date: Sat, 15 Dec 2018 22:45:26 +0000 (-0800) Subject: Move escape_path to the library X-Git-Tag: 2019-10-25~436 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0472ce50a8757697db5be47cd9aa8eec83a4fd52;p=neomutt Move escape_path to the library Also, make its source argument const --- diff --git a/compress.c b/compress.c index 9e13bbc91..438a679d0 100644 --- a/compress.c +++ b/compress.c @@ -251,47 +251,6 @@ static void free_compress_info(struct Mailbox *m) FREE(&m->compress_info); } -/** - * escape_path - Escapes single quotes in a path for a command string - * @param src the path to escape - * @retval ptr The escaped string - */ -static char *escape_path(char *src) -{ - static char dest[HUGE_STRING]; - char *destp = dest; - int destsize = 0; - - if (!src) - return NULL; - - while (*src && (destsize < sizeof(dest) - 1)) - { - if (*src != '\'') - { - *destp++ = *src++; - destsize++; - } - else - { - /* convert ' into '\'' */ - if (destsize + 4 < sizeof(dest)) - { - *destp++ = *src++; - *destp++ = '\\'; - *destp++ = '\''; - *destp++ = '\''; - destsize += 4; - } - else - break; - } - } - *destp = '\0'; - - return dest; -} - /** * compress_format_str - Expand the filenames in a command string - Implements ::format_t * @@ -314,11 +273,11 @@ static const char *compress_format_str(char *buf, size_t buflen, size_t col, int { case 'f': /* Compressed file */ - snprintf(buf, buflen, "%s", NONULL(escape_path(m->realpath))); + snprintf(buf, buflen, "%s", NONULL(mutt_path_escape(m->realpath))); break; case 't': /* Plaintext, temporary file */ - snprintf(buf, buflen, "%s", NONULL(escape_path(m->path))); + snprintf(buf, buflen, "%s", NONULL(mutt_path_escape(m->path))); break; } return src; diff --git a/mutt/path.c b/mutt/path.c index 9f9371fdd..e0d7e2c26 100644 --- a/mutt/path.c +++ b/mutt/path.c @@ -526,3 +526,44 @@ bool mutt_path_abbr_folder(char *buf, size_t buflen, const char *folder) memmove(buf + 1, buf + flen + 1, rlen + 1); return true; } + +/** + * mutt_escape_path - Escapes single quotes in a path for a command string + * @param src the path to escape + * @retval ptr The escaped string + */ +char *mutt_path_escape(const char *src) +{ + static char dest[HUGE_STRING]; + char *destp = dest; + int destsize = 0; + + if (!src) + return NULL; + + while (*src && (destsize < sizeof(dest) - 1)) + { + if (*src != '\'') + { + *destp++ = *src++; + destsize++; + } + else + { + /* convert ' into '\'' */ + if (destsize + 4 < sizeof(dest)) + { + *destp++ = *src++; + *destp++ = '\\'; + *destp++ = '\''; + *destp++ = '\''; + destsize += 4; + } + else + break; + } + } + *destp = '\0'; + + return dest; +} diff --git a/mutt/path.h b/mutt/path.h index 36c7cf6f5..3319a8695 100644 --- a/mutt/path.h +++ b/mutt/path.h @@ -32,6 +32,7 @@ bool mutt_path_canon(char *buf, size_t buflen, const char *homedir); char * mutt_path_concat(char *d, const char *dir, const char *fname, size_t l); char * mutt_path_concatn(char *dst, size_t dstlen, const char *dir, size_t dirlen, const char *fname, size_t fnamelen); char * mutt_path_dirname(const char *path); +char * mutt_path_escape(const char *src); bool mutt_path_parent(char *buf, size_t buflen); bool mutt_path_pretty(char *buf, size_t buflen, const char *homedir); size_t mutt_path_realpath(char *buf);