[vim] - patchlevel 066

Karsten Hopp karsten at fedoraproject.org
Tue Dec 17 10:36:14 UTC 2013


commit 7c26051122ca3db4c371cfd42fb975447d4671a8
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Dec 17 11:34:23 2013 +0100

    - patchlevel 066

 7.4.066 |  354 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 354 insertions(+), 0 deletions(-)
---
diff --git a/7.4.066 b/7.4.066
new file mode 100644
index 0000000..edab092
--- /dev/null
+++ b/7.4.066
@@ -0,0 +1,354 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.4.066
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.066
+Problem:    MS-Windows: When there is a colon in the file name (sub-stream
+            feature) the swap file name is wrong.
+Solution:   Change the colon to "%". (Yasuhiro Matsumoto)
+Files:      src/fileio.c, src/memline.c, src/misc1.c, src/proto/misc1.pro
+
+
+*** ../vim-7.4.065/src/memline.c	2013-05-06 04:01:02.000000000 +0200
+--- src/memline.c	2013-11-04 02:52:44.000000000 +0100
+***************
+*** 4014,4019 ****
+--- 4014,4026 ----
+      else
+  	retval = concat_fnames(dname, tail, TRUE);
+  
++ #ifdef WIN3264
++     if (retval != NULL)
++ 	for (t = gettail(retval); *t != NUL; mb_ptr_adv(t))
++ 	    if (*t == ':')
++ 		*t = '%';
++ #endif
++ 
+      return retval;
+  }
+  
+***************
+*** 4137,4148 ****
+  #ifndef SHORT_FNAME
+      int		r;
+  #endif
+  
+  #if !defined(SHORT_FNAME) \
+! 		     && ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE))
+  # define CREATE_DUMMY_FILE
+      FILE	*dummyfd = NULL;
+  
+      /*
+       * If we start editing a new file, e.g. "test.doc", which resides on an
+       * MSDOS compatible filesystem, it is possible that the file
+--- 4144,4172 ----
+  #ifndef SHORT_FNAME
+      int		r;
+  #endif
++     char_u	*buf_fname = buf->b_fname;
+  
+  #if !defined(SHORT_FNAME) \
+! 		&& ((!defined(UNIX) && !defined(OS2)) || defined(ARCHIE))
+  # define CREATE_DUMMY_FILE
+      FILE	*dummyfd = NULL;
+  
++ # ifdef WIN3264
++     if (buf_fname != NULL && !mch_isFullName(buf_fname)
++ 				       && vim_strchr(gettail(buf_fname), ':'))
++     {
++ 	char_u *t;
++ 
++ 	buf_fname = vim_strsave(buf_fname);
++ 	if (buf_fname == NULL)
++ 	    buf_fname = buf->b_fname;
++ 	else
++ 	    for (t = gettail(buf_fname); *t != NUL; mb_ptr_adv(t))
++ 		if (*t == ':')
++ 		    *t = '%';
++     }
++ # endif
++ 
+      /*
+       * If we start editing a new file, e.g. "test.doc", which resides on an
+       * MSDOS compatible filesystem, it is possible that the file
+***************
+*** 4150,4158 ****
+       * this problem we temporarily create "test.doc".  Don't do this when the
+       * check below for a 8.3 file name is used.
+       */
+!     if (!(buf->b_p_sn || buf->b_shortname) && buf->b_fname != NULL
+! 					     && mch_getperm(buf->b_fname) < 0)
+! 	dummyfd = mch_fopen((char *)buf->b_fname, "w");
+  #endif
+  
+      /*
+--- 4174,4182 ----
+       * this problem we temporarily create "test.doc".  Don't do this when the
+       * check below for a 8.3 file name is used.
+       */
+!     if (!(buf->b_p_sn || buf->b_shortname) && buf_fname != NULL
+! 					     && mch_getperm(buf_fname) < 0)
+! 	dummyfd = mch_fopen((char *)buf_fname, "w");
+  #endif
+  
+      /*
+***************
+*** 4171,4177 ****
+      if (dir_name == NULL)	    /* out of memory */
+  	fname = NULL;
+      else
+! 	fname = makeswapname(buf->b_fname, buf->b_ffname, buf, dir_name);
+  
+      for (;;)
+      {
+--- 4195,4201 ----
+      if (dir_name == NULL)	    /* out of memory */
+  	fname = NULL;
+      else
+! 	fname = makeswapname(buf_fname, buf->b_ffname, buf, dir_name);
+  
+      for (;;)
+      {
+***************
+*** 4204,4210 ****
+  	     * It either contains two dots, is longer than 8 chars, or starts
+  	     * with a dot.
+  	     */
+! 	    tail = gettail(buf->b_fname);
+  	    if (       vim_strchr(tail, '.') != NULL
+  		    || STRLEN(tail) > (size_t)8
+  		    || *gettail(fname) == '.')
+--- 4228,4234 ----
+  	     * It either contains two dots, is longer than 8 chars, or starts
+  	     * with a dot.
+  	     */
+! 	    tail = gettail(buf_fname);
+  	    if (       vim_strchr(tail, '.') != NULL
+  		    || STRLEN(tail) > (size_t)8
+  		    || *gettail(fname) == '.')
+***************
+*** 4273,4279 ****
+  		    {
+  			buf->b_shortname = TRUE;
+  			vim_free(fname);
+! 			fname = makeswapname(buf->b_fname, buf->b_ffname,
+  							       buf, dir_name);
+  			continue;	/* try again with b_shortname set */
+  		    }
+--- 4297,4303 ----
+  		    {
+  			buf->b_shortname = TRUE;
+  			vim_free(fname);
+! 			fname = makeswapname(buf_fname, buf->b_ffname,
+  							       buf, dir_name);
+  			continue;	/* try again with b_shortname set */
+  		    }
+***************
+*** 4344,4350 ****
+  		{
+  		    buf->b_shortname = TRUE;
+  		    vim_free(fname);
+! 		    fname = makeswapname(buf->b_fname, buf->b_ffname,
+  							       buf, dir_name);
+  		    continue;	    /* try again with '.' replaced with '_' */
+  		}
+--- 4368,4374 ----
+  		{
+  		    buf->b_shortname = TRUE;
+  		    vim_free(fname);
+! 		    fname = makeswapname(buf_fname, buf->b_ffname,
+  							       buf, dir_name);
+  		    continue;	    /* try again with '.' replaced with '_' */
+  		}
+***************
+*** 4356,4362 ****
+  	     * viewing a help file or when the path of the file is different
+  	     * (happens when all .swp files are in one directory).
+  	     */
+! 	    if (!recoverymode && buf->b_fname != NULL
+  				&& !buf->b_help && !(buf->b_flags & BF_DUMMY))
+  	    {
+  		int		fd;
+--- 4380,4386 ----
+  	     * viewing a help file or when the path of the file is different
+  	     * (happens when all .swp files are in one directory).
+  	     */
+! 	    if (!recoverymode && buf_fname != NULL
+  				&& !buf->b_help && !(buf->b_flags & BF_DUMMY))
+  	    {
+  		int		fd;
+***************
+*** 4433,4439 ****
+  		    {
+  			fclose(dummyfd);
+  			dummyfd = NULL;
+! 			mch_remove(buf->b_fname);
+  			did_use_dummy = TRUE;
+  		    }
+  #endif
+--- 4457,4463 ----
+  		    {
+  			fclose(dummyfd);
+  			dummyfd = NULL;
+! 			mch_remove(buf_fname);
+  			did_use_dummy = TRUE;
+  		    }
+  #endif
+***************
+*** 4448,4454 ****
+  		     * user anyway.
+  		     */
+  		    if (swap_exists_action != SEA_NONE
+! 			    && has_autocmd(EVENT_SWAPEXISTS, buf->b_fname, buf))
+  			choice = do_swapexists(buf, fname);
+  
+  		    if (choice == 0)
+--- 4472,4478 ----
+  		     * user anyway.
+  		     */
+  		    if (swap_exists_action != SEA_NONE
+! 			    && has_autocmd(EVENT_SWAPEXISTS, buf_fname, buf))
+  			choice = do_swapexists(buf, fname);
+  
+  		    if (choice == 0)
+***************
+*** 4549,4555 ****
+  #ifdef CREATE_DUMMY_FILE
+  		    /* Going to try another name, need the dummy file again. */
+  		    if (did_use_dummy)
+! 			dummyfd = mch_fopen((char *)buf->b_fname, "w");
+  #endif
+  		}
+  	    }
+--- 4573,4579 ----
+  #ifdef CREATE_DUMMY_FILE
+  		    /* Going to try another name, need the dummy file again. */
+  		    if (did_use_dummy)
+! 			dummyfd = mch_fopen((char *)buf_fname, "w");
+  #endif
+  		}
+  	    }
+***************
+*** 4581,4589 ****
+      if (dummyfd != NULL)	/* file has been created temporarily */
+      {
+  	fclose(dummyfd);
+! 	mch_remove(buf->b_fname);
+      }
+  #endif
+      return fname;
+  }
+  
+--- 4605,4617 ----
+      if (dummyfd != NULL)	/* file has been created temporarily */
+      {
+  	fclose(dummyfd);
+! 	mch_remove(buf_fname);
+      }
+  #endif
++ #ifdef WIN3264
++     if (buf_fname != buf->b_fname)
++ 	vim_free(buf_fname);
++ #endif
+      return fname;
+  }
+  
+*** ../vim-7.4.065/src/misc1.c	2013-10-06 17:46:48.000000000 +0200
+--- src/misc1.c	2013-11-04 02:44:28.000000000 +0100
+***************
+*** 4808,4816 ****
+  
+      if (fname == NULL)
+  	return (char_u *)"";
+!     for (p1 = p2 = fname; *p2; )	/* find last part of path */
+      {
+! 	if (vim_ispathsep(*p2))
+  	    p1 = p2 + 1;
+  	mb_ptr_adv(p2);
+      }
+--- 4808,4816 ----
+  
+      if (fname == NULL)
+  	return (char_u *)"";
+!     for (p1 = p2 = get_past_head(fname); *p2; )	/* find last part of path */
+      {
+! 	if (vim_ispathsep_nocolon(*p2))
+  	    p1 = p2 + 1;
+  	mb_ptr_adv(p2);
+      }
+***************
+*** 4929,4935 ****
+  }
+  
+  /*
+!  * return TRUE if 'c' is a path separator.
+   */
+      int
+  vim_ispathsep(c)
+--- 4929,4936 ----
+  }
+  
+  /*
+!  * Return TRUE if 'c' is a path separator.
+!  * Note that for MS-Windows this includes the colon.
+   */
+      int
+  vim_ispathsep(c)
+***************
+*** 4952,4957 ****
+--- 4953,4972 ----
+  #endif
+  }
+  
++ /*
++  * Like vim_ispathsep(c), but exclude the colon for MS-Windows.
++  */
++     int
++ vim_ispathsep_nocolon(c)
++     int c;
++ {
++     return vim_ispathsep(c)
++ #ifdef BACKSLASH_IN_FILENAME
++ 	&& c != ':'
++ #endif
++ 	;
++ }
++ 
+  #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+  /*
+   * return TRUE if 'c' is a path list separator.
+*** ../vim-7.4.065/src/proto/misc1.pro	2013-08-10 13:37:20.000000000 +0200
+--- src/proto/misc1.pro	2013-11-04 02:44:30.000000000 +0100
+***************
+*** 69,74 ****
+--- 69,75 ----
+  char_u *getnextcomp __ARGS((char_u *fname));
+  char_u *get_past_head __ARGS((char_u *path));
+  int vim_ispathsep __ARGS((int c));
++ int vim_ispathsep_nocolon __ARGS((int c));
+  int vim_ispathlistsep __ARGS((int c));
+  void shorten_dir __ARGS((char_u *str));
+  int dir_of_file_exists __ARGS((char_u *fname));
+*** ../vim-7.4.065/src/version.c	2013-11-04 02:00:55.000000000 +0100
+--- src/version.c	2013-11-04 02:50:35.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     66,
+  /**/
+
+-- 
+Females are strictly forbidden to appear unshaven in public.
+		[real standing law in New Mexico, United States of America]
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list