* foo\,bar -> foo,bar
* foo\ bar -> foo bar
* Don't unescape \, * and others that are also special in a
- * regexp. */
+ * regexp.
+ * An escaped { must be unescaped since we use magic not
+ * verymagic.
+ */
if (*++p == '?'
#ifdef BACKSLASH_IN_FILENAME
&& no_bslash
)
reg_pat[i++] = '?';
else
- if (*p == ',' || *p == '%' || *p == '#' || *p == ' ')
+ if (*p == ',' || *p == '%' || *p == '#'
+ || *p == ' ' || *p == '{')
reg_pat[i++] = *p;
else
{
}
#endif
+static int has_env_var __ARGS((char_u *p));
+
+/*
+ * Return TRUE if "p" contains what looks like an environment variable.
+ * Allowing for escaping.
+ */
+ static int
+has_env_var(p)
+ char_u *p;
+{
+ for ( ; *p; mb_ptr_adv(p))
+ {
+ if (*p == '\\' && p[1] != NUL)
+ ++p;
+ else if (vim_strchr((char_u *)
+#if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+ "$%"
+#else
+ "$"
+#endif
+ , *p) != NULL)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+#ifdef SPECIAL_WILDCHAR
+static int has_special_wildchar __ARGS((char_u *p));
+
+/*
+ * Return TRUE if "p" contains a special wildcard character.
+ * Allowing for escaping.
+ */
+ static int
+has_special_wildchar(p)
+ char_u *p;
+{
+ for ( ; *p; mb_ptr_adv(p))
+ {
+ if (*p == '\\' && p[1] != NUL)
+ ++p;
+ else if (vim_strchr((char_u *)SPECIAL_WILDCHAR, *p) != NULL)
+ return TRUE;
+ }
+ return FALSE;
+}
+#endif
+
/*
* Generic wildcard expansion code.
*
*/
for (i = 0; i < num_pat; i++)
{
- if (vim_strpbrk(pat[i], (char_u *)SPECIAL_WILDCHAR) != NULL
+ if (has_special_wildchar(pat[i])
# ifdef VIM_BACKTICK
&& !(vim_backtick(pat[i]) && pat[i][1] == '=')
# endif
/*
* First expand environment variables, "~/" and "~user/".
*/
- if (vim_strchr(p, '$') != NULL || *p == '~')
+ if (has_env_var(p) || *p == '~')
{
p = expand_env_save_opt(p, TRUE);
if (p == NULL)
* variable, use the shell to do that. Discard previously
* found file names and start all over again.
*/
- else if (vim_strchr(p, '$') != NULL || *p == '~')
+ else if (has_env_var(p) || *p == '~')
{
vim_free(p);
ga_clear_strings(&ga);
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
- test94.out test95.out test96.out
+ test94.out test95.out test96.out test97.out
.SUFFIXES: .in .out
test94.out: test94.in
test95.out: test95.in
test96.out: test96.in
+test97.out: test97.in
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
- test94.out test95.out test96.out
+ test94.out test95.out test96.out test97.out
SCRIPTS32 = test50.out test70.out
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
- test94.out test95.out test96.out
+ test94.out test95.out test96.out test97.out
SCRIPTS32 = test50.out test70.out
test76.out test77.out test78.out test79.out test80.out \
test81.out test82.out test83.out test84.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
- test94.out test95.out test96.out
+ test94.out test95.out test96.out test97.out
.SUFFIXES: .in .out
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
-# Last change: 2013 Jul 01
+# Last change: 2013 Jul 03
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
test77.out test78.out test79.out test80.out test81.out \
test82.out test83.out test84.out test88.out test89.out \
test90.out test91.out test92.out test93.out test94.out \
- test95.out test96.out
+ test95.out test96.out test97.out
# Known problems:
# Test 30: a problem around mac format - unknown reason
test79.out test80.out test81.out test82.out test83.out \
test84.out test85.out test86.out test87.out test88.out \
test89.out test90.out test91.out test92.out test93.out \
- test94.out test95.out test96.out
+ test94.out test95.out test96.out test97.out
SCRIPTS_GUI = test16.out
--- /dev/null
+Test whether glob()/globpath() return correct results with certain escaped
+characters.
+
+STARTTEST
+:so small.vim
+:set shell=doesnotexist
+:e test.out
+:put =glob('Xxx\{')
+:put =glob('Xxx\$')
+:w! Xxx{
+:w! Xxx\$
+:put =glob('Xxx\{')
+:put =glob('Xxx\$')
+:w
+:qa!
+ENDTEST
+
--- /dev/null
+
+
+
+Xxx{
+Xxx$
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1295,
/**/
1294,
/**/