From 7e6d1d1c47196bf1bb5254f5c9014e25bdaf9833 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 6 Dec 2022 18:13:41 +0200 Subject: [PATCH] ; Fix last change in etags.c. --- lib-src/etags.c | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/lib-src/etags.c b/lib-src/etags.c index ba0092cc637..9091257a203 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -401,7 +401,9 @@ static void invalidate_nodes (fdesc *, node **); static void put_entries (node *); static void cleanup_tags_file (char const * const, char const * const); +#if !defined (MSDOS) && !defined (DOS_NT) static char *escape_shell_arg_string (char *); +#endif static void do_move_file (const char *, const char *); static char *concat (const char *, const char *, const char *); static char *skip_spaces (char *); @@ -1714,15 +1716,22 @@ process_file_name (char *file, language *lang) else { #if MSDOS || defined (DOS_NT) - int buf_len = strlen (compr->command) + strlen (" \"\" > \"\"") + strlen (real_name) + strlen (tmp_name) + 1; - char *cmd = xmalloc (buf_len); - snprintf (cmd, buf_len, "%s \"%s\" > \"%s\"", compr->command, real_name, tmp_name); + int buf_len = + strlen (compr->command) + + strlen (" \"\" > \"\"") + strlen (real_name) + + strlen (tmp_name) + 1; + char *cmd = xmalloc (buf_len); + snprintf (cmd, buf_len, "%s \"%s\" > \"%s\"", + compr->command, real_name, tmp_name); #else - char *new_real_name = escape_shell_arg_string (real_name); - char *new_tmp_name = escape_shell_arg_string (tmp_name); - int buf_len = strlen (compr->command) + strlen (" > ") + strlen (new_real_name) + strlen (new_tmp_name) + 1; - char *cmd = xmalloc (buf_len); - snprintf (cmd, buf_len, "%s %s > %s", compr->command, new_real_name, new_tmp_name); + char *new_real_name = escape_shell_arg_string (real_name); + char *new_tmp_name = escape_shell_arg_string (tmp_name); + int buf_len = + strlen (compr->command) + strlen (" > ") + strlen (new_real_name) + + strlen (new_tmp_name) + 1; + char *cmd = xmalloc (buf_len); + snprintf (cmd, buf_len, "%s %s > %s", + compr->command, new_real_name, new_tmp_name); #endif inf = (system (cmd) == -1 ? NULL @@ -7711,6 +7720,7 @@ etags_mktmp (void) return templt; } +#if !defined (MSDOS) && !defined (DOS_NT) /* * Adds single quotes around a string, if found single quotes, escaped it. * Return a newly-allocated string. @@ -7723,14 +7733,14 @@ static char * escape_shell_arg_string (char *str) { char *p = str; - int need_space = 2; /* ' at begin and end */ + int need_space = 2; /* ' at begin and end */ while (*p != '\0') { if (*p == '\'') - need_space += 4; /* ' to '\'', length is 4 */ + need_space += 4; /* ' to '\'', length is 4 */ else - need_space++; + need_space++; p++; } @@ -7739,18 +7749,18 @@ escape_shell_arg_string (char *str) new_str[0] = '\''; new_str[need_space-1] = '\''; - int i = 1; /* skip first byte */ + int i = 1; /* skip first byte */ p = str; while (*p != '\0') { new_str[i] = *p; if (*p == '\'') - { - new_str[i+1] = '\\'; - new_str[i+2] = '\''; - new_str[i+3] = '\''; - i += 3; - } + { + new_str[i+1] = '\\'; + new_str[i+2] = '\''; + new_str[i+3] = '\''; + i += 3; + } i++; p++; @@ -7759,6 +7769,7 @@ escape_shell_arg_string (char *str) new_str[need_space] = '\0'; return new_str; } +#endif static void do_move_file(const char *src_file, const char *dst_file) -- 2.39.2