summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2006-01-14 21:18:42 +0000
committervimboss <devnull@localhost>2006-01-14 21:18:42 +0000
commit1e865c7d8e3adac8bd17ac4b1e8a2f0c8c2b6d49 (patch)
tree6f92423a4f0066887447e71c760b8d58850d2da9
parentd6ce2e32b6f33c6bd4fcc995df4eb2e351ee698b (diff)
downloadvim-1e865c7d8e3adac8bd17ac4b1e8a2f0c8c2b6d49.tar.gz
updated for version 7.0181
-rw-r--r--src/Makefile12
-rw-r--r--src/fileio.c11
-rw-r--r--src/os_unix.c60
-rw-r--r--src/po/Makefile7
4 files changed, 46 insertions, 44 deletions
diff --git a/src/Makefile b/src/Makefile
index 5236e9df..da6137cb 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1602,7 +1602,6 @@ xxd/xxd$(EXEEXT): xxd/xxd.c
# Generate the converted .mo files separately, it's no problem if this fails.
languages:
@if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \
- $(MAKE) language-check; \
cd $(PODIR); \
CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix); \
fi
@@ -1610,11 +1609,6 @@ languages:
cd $(PODIR); CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix) converted; \
fi
-# Separate target to check the po files for valitidy, because it depends on
-# ./vim.
-language-check: $(VIMTARGET)
- cd $(PODIR); $(MAKE) check VIM=../$(VIMTARGET)
-
# Update the *.po files for changes in the sources. Only run manually.
update-po:
cd $(PODIR); CC="$(CC)" $(MAKE) prefix=$(DESTDIR)$(prefix) update-po
@@ -1706,9 +1700,15 @@ types.vim: $(TAGS_SRC) $(TAGS_INCL)
test check:
$(MAKE) -f Makefile $(VIMTARGET)
cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG)
+ @if test -n "$(MAKEMO)" -a -f $(PODIR)/Makefile; then \
+ cd $(PODIR); $(MAKE) -f Makefile check VIM=../$(VIMTARGET); \
+ fi
testclean:
cd testdir; $(MAKE) -f Makefile clean
+ if test -d $(PODIR); then \
+ cd $(PODIR); $(MAKE) checkclean; \
+ fi
#
# Avoid overwriting an existing executable, somebody might be running it and
diff --git a/src/fileio.c b/src/fileio.c
index c5c92629..2236bbc1 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -6158,7 +6158,8 @@ buf_check_timestamp(buf, focus)
{
retval = 1;
- /* set b_mtime to stop further warnings */
+ /* set b_mtime to stop further warnings (e.g., when executing
+ * FileChangedShell autocmd) */
if (stat_res < 0)
{
buf->b_mtime = 0;
@@ -6341,7 +6342,7 @@ buf_check_timestamp(buf, focus)
if (reload)
/* Reload the buffer. */
- buf_reload(buf);
+ buf_reload(buf, orig_mode);
#ifdef FEAT_GUI
/* restore this in case an autocommand has set it; it would break
@@ -6355,16 +6356,18 @@ buf_check_timestamp(buf, focus)
/*
* Reload a buffer that is already loaded.
* Used when the file was changed outside of Vim.
+ * "orig_mode" is buf->b_orig_mode before the need for reloading was detected.
+ * buf->b_orig_mode may have been reset already.
*/
void
-buf_reload(buf)
+buf_reload(buf, orig_mode)
buf_T *buf;
+ int orig_mode;
{
exarg_T ea;
pos_T old_cursor;
linenr_T old_topline;
int old_ro = buf->b_p_ro;
- int orig_mode = buf->b_orig_mode;
buf_T *savebuf;
int saved = OK;
#ifdef FEAT_AUTOCMD
diff --git a/src/os_unix.c b/src/os_unix.c
index 73693b63..faf2847a 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -4852,6 +4852,8 @@ mch_expandpath(gap, path, flags)
# define SEEK_END 2
#endif
+#define SHELL_SPECIAL (char_u *)"\t \"&';<>[\\]|"
+
/* ARGSUSED */
int
mch_expand_wildcards(num_pat, pat, num_file, file, flags)
@@ -5048,22 +5050,12 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
len += STRLEN(pat[i]) + 3; /* add space and two quotes */
#else
++len; /* add space */
- for (j = 0; pat[i][j] != NUL; )
- if (vim_strchr((char_u *)" ';&<>", pat[i][j]) != NULL)
- {
- len += 2; /* add two quotes */
- while (pat[i][j] != NUL
- && vim_strchr((char_u *)" ';&<>", pat[i][j]) != NULL)
- {
- ++len;
- ++j;
- }
- }
- else
- {
- ++len;
- ++j;
- }
+ for (j = 0; pat[i][j] != NUL; ++j)
+ {
+ if (vim_strchr(SHELL_SPECIAL, pat[i][j]) != NULL)
+ ++len; /* may add a backslash */
+ ++len;
+ }
#endif
}
command = alloc(len);
@@ -5084,9 +5076,11 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
*/
if (shell_style == STYLE_BT)
{
- STRCPY(command, pat[0] + 1); /* exclude first backtick */
+ /* change `command; command& ` to (command; command ) */
+ STRCPY(command, "(");
+ STRCAT(command, pat[0] + 1); /* exclude first backtick */
p = command + STRLEN(command) - 1;
- *p = ' '; /* remove last backtick */
+ *p-- = ')'; /* remove last backtick */
while (p > command && vim_iswhite(*p))
--p;
if (*p == '&') /* remove trailing '&' */
@@ -5114,8 +5108,8 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
for (i = 0; i < num_pat; ++i)
{
/* When using system() always add extra quotes, because the shell
- * is started twice. Otherwise only put quotes around spaces and
- * single quotes. */
+ * is started twice. Otherwise put a backslash before special
+ * characters, except insice ``. */
#ifdef USE_SYSTEM
STRCAT(command, " \"");
STRCAT(command, pat[i]);
@@ -5125,30 +5119,32 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
p = command + STRLEN(command);
*p++ = ' ';
- for (j = 0; pat[i][j] != NUL; )
+ for (j = 0; pat[i][j] != NUL; ++j)
{
if (pat[i][j] == '`')
{
intick = !intick;
- *p++ = pat[i][j++];
+ *p++ = pat[i][j];
}
- else if (!intick && vim_strchr((char_u *)" ';&<>",
- pat[i][j]) != NULL)
+ else if (pat[i][j] == '\\' && pat[i][j + 1] != NUL)
{
- /* Put quotes around special characters, but not when
- * inside ``. */
- *p++ = '"';
- while (pat[i][j] != NUL && vim_strchr((char_u *)" ';&<>",
+ /* Remove a backslash, take char literally. */
+ *p++ = pat[i][++j];
+ }
+ else if (!intick && vim_strchr(SHELL_SPECIAL,
pat[i][j]) != NULL)
- *p++ = pat[i][j++];
- *p++ = '"';
+ {
+ /* Put a backslash before a special character, but not
+ * when inside ``. */
+ *p++ = '\\';
+ *p++ = pat[i][j];
}
else
{
/* For a backslash also copy the next character, don't
* want to put quotes around it. */
- if ((*p++ = pat[i][j++]) == '\\' && pat[i][j] != NUL)
- *p++ = pat[i][j++];
+ if ((*p++ = pat[i][j]) == '\\' && pat[i][j + 1] != NUL)
+ *p++ = pat[i][++j];
}
}
*p = NUL;
diff --git a/src/po/Makefile b/src/po/Makefile
index a0648887..185bc2a0 100644
--- a/src/po/Makefile
+++ b/src/po/Makefile
@@ -202,11 +202,14 @@ prefixcheck:
exit 1; \
fi
-clean:
- rm -f core core.* *.old.po *.mo *.ck *.pot sjiscorr
+clean: checkclean
+ rm -f core core.* *.old.po *.mo *.pot sjiscorr
distclean: clean
+checkclean:
+ rm -f *.ck
+
#
# NOTE: If you get an error for gvimext.cpp not found, you need to unpack the
# extra archive.