]> granicus.if.org Git - vim/commitdiff
updated for version 7.0181
authorBram Moolenaar <Bram@vim.org>
Sat, 14 Jan 2006 21:18:42 +0000 (21:18 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 14 Jan 2006 21:18:42 +0000 (21:18 +0000)
src/Makefile
src/fileio.c
src/os_unix.c
src/po/Makefile

index 5236e9df25380a02d6fd1f780c9da90fb477e3b2..da6137cbbaf4b556c9e90a6c1162e803f93a2795 100644 (file)
@@ -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
index c5c926299835044de642aba8fa4eaded6f5f8947..2236bbc1a2b7d79d0dd62ce7734af31ba6d0f7ab 100644 (file)
@@ -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
index 73693b632fdfa6a7f88c0b6a75bb42994e62e7e1..faf2847a638aec9590a68ee1855b8f8ed86b9dd1 100644 (file)
@@ -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;
index a06488870bc9ea41983ed17b0a1b2f9518cb8245..185bc2a023664bd75c12899163233fd46e190403 100644 (file)
@@ -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.