[vim] - patchlevel 025

Karsten Hopp karsten at fedoraproject.org
Wed Oct 13 16:10:45 UTC 2010


commit 1ce4c45008716438a3fbfcc1fc092ad974e7a8be
Author: Karsten Hopp <karsten at redhat.com>
Date:   Wed Oct 13 18:10:18 2010 +0200

    - patchlevel 025

 7.3.025 |  136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 136 insertions(+), 0 deletions(-)
---
diff --git a/7.3.025 b/7.3.025
new file mode 100644
index 0000000..0fb3bee
--- /dev/null
+++ b/7.3.025
@@ -0,0 +1,136 @@
+To: vim-dev at vim.org
+Subject: Patch 7.3.025
+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.3.025
+Problem:    ":mksession" does not square brackets escape file name properly.
+Solution:   Improve escapging of file names. (partly by Peter Odding)
+Files:	    src/ex_docmd.c
+
+
+*** ../vim-7.3.024/src/ex_docmd.c	2010-09-21 16:56:29.000000000 +0200
+--- src/ex_docmd.c	2010-10-13 17:39:17.000000000 +0200
+***************
+*** 10708,10714 ****
+   * Write a file name to the session file.
+   * Takes care of the "slash" option in 'sessionoptions' and escapes special
+   * characters.
+!  * Returns FAIL if writing fails.
+   */
+      static int
+  ses_put_fname(fd, name, flagp)
+--- 10708,10714 ----
+   * Write a file name to the session file.
+   * Takes care of the "slash" option in 'sessionoptions' and escapes special
+   * characters.
+!  * Returns FAIL if writing fails or out of memory.
+   */
+      static int
+  ses_put_fname(fd, name, flagp)
+***************
+*** 10717,10765 ****
+      unsigned	*flagp;
+  {
+      char_u	*sname;
+      int		retval = OK;
+-     int		c;
+  
+      sname = home_replace_save(NULL, name);
+!     if (sname != NULL)
+! 	name = sname;
+!     while (*name != NUL)
+!     {
+! #ifdef FEAT_MBYTE
+! 	{
+! 	    int l;
+  
+! 	    if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1)
+! 	    {
+! 		/* copy a multibyte char */
+! 		while (--l >= 0)
+! 		{
+! 		    if (putc(*name, fd) != *name)
+! 			retval = FAIL;
+! 		    ++name;
+! 		}
+! 		continue;
+! 	    }
+! 	}
+! #endif
+! 	c = *name++;
+! 	if (c == '\\' && (*flagp & SSOP_SLASH))
+! 	    /* change a backslash to a forward slash */
+! 	    c = '/';
+! 	else if ((vim_strchr(escape_chars, c) != NULL
+! #ifdef BACKSLASH_IN_FILENAME
+! 		    && c != '\\'
+! #endif
+! 		 ) || c == '#' || c == '%')
+! 	{
+! 	    /* escape a special character with a backslash */
+! 	    if (putc('\\', fd) != '\\')
+! 		retval = FAIL;
+! 	}
+! 	if (putc(c, fd) != c)
+! 	    retval = FAIL;
+      }
+      vim_free(sname);
+      return retval;
+  }
+  
+--- 10717,10748 ----
+      unsigned	*flagp;
+  {
+      char_u	*sname;
++     char_u	*p;
+      int		retval = OK;
+  
+      sname = home_replace_save(NULL, name);
+!     if (sname == NULL)
+! 	return FAIL;
+  
+!     if (*flagp & SSOP_SLASH)
+!     {
+! 	/* change all backslashes to forward slashes */
+! 	for (p = sname; *p != NUL; mb_ptr_adv(p))
+! 	    if (*p == '\\')
+! 		*p = '/';
+      }
++ 
++     /* escapse special characters */
++     p = vim_strsave_fnameescape(sname, FALSE);
+      vim_free(sname);
++     if (p == NULL)
++ 	return FAIL;
++ 
++     /* write the result */
++     if (fputs((char *)p, fd) < 0)
++ 	retval = FAIL;
++ 
++     vim_free(p);
+      return retval;
+  }
+  
+*** ../vim-7.3.024/src/version.c	2010-10-13 16:44:17.000000000 +0200
+--- src/version.c	2010-10-13 17:49:15.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     25,
+  /**/
+
+-- 
+"Time flies like an arrow".  So I put an arrow on my desk, now
+awaiting one of these time flies showing up.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list