1
0
forked from aniani/vim

updated for version 7.2a-013

This commit is contained in:
Bram Moolenaar
2008-07-04 09:44:11 +00:00
parent 47b46d7c47
commit 05bb95391f
7 changed files with 136 additions and 77 deletions

View File

@@ -1262,16 +1262,19 @@ vim_strsave_escaped_ext(string, esc_chars, cc, bsl)
* Escape "string" for use as a shell argument with system().
* This uses single quotes, except when we know we need to use double qoutes
* (MS-DOS and MS-Windows without 'shellslash' set).
* Also replace "%", "#" and things like "<cfile>" when "do_special" is TRUE.
* Returns the result in allocated memory, NULL if we have run out.
*/
char_u *
vim_strsave_shellescape(string)
vim_strsave_shellescape(string, do_special)
char_u *string;
int do_special;
{
unsigned length;
char_u *p;
char_u *d;
char_u *escaped_string;
int l;
/* First count the number of extra bytes required. */
length = (unsigned)STRLEN(string) + 3; /* two quotes and a trailing NUL */
@@ -1287,6 +1290,11 @@ vim_strsave_shellescape(string)
# endif
if (*p == '\'')
length += 3; /* ' => '\'' */
if (do_special && find_cmdline_var(p, &l) >= 0)
{
++length; /* insert backslash */
p += l - 1;
}
}
/* Allocate memory for the result and fill it. */
@@ -1320,13 +1328,19 @@ vim_strsave_shellescape(string)
# endif
if (*p == '\'')
{
*d++='\'';
*d++='\\';
*d++='\'';
*d++='\'';
*d++ = '\'';
*d++ = '\\';
*d++ = '\'';
*d++ = '\'';
++p;
continue;
}
if (do_special && find_cmdline_var(p, &l) >= 0)
{
*d++ = '\\'; /* insert backslash */
while (--l >= 0) /* copy the var */
*d++ = *p++;
}
MB_COPY_CHAR(p, d);
}
@@ -2776,7 +2790,7 @@ get_special_key_code(name)
return 0;
}
#ifdef FEAT_CMDL_COMPL
#if defined(FEAT_CMDL_COMPL) || defined(PROTO)
char_u *
get_key_name(i)
int i;
@@ -2787,7 +2801,7 @@ get_key_name(i)
}
#endif
#ifdef FEAT_MOUSE
#if defined(FEAT_MOUSE) || defined(PROTO)
/*
* Look up the given mouse code to return the relevant information in the other
* arguments. Return which button is down or was released.