r365 - in trunk/vim/debian: . patches

Stefano Zacchiroli zack at costa.debian.org
Mon Oct 17 11:06:36 UTC 2005


Author: zack
Date: 2005-10-17 11:06:35 +0000 (Mon, 17 Oct 2005)
New Revision: 365

Added:
   trunk/vim/debian/patches/304_memline.c.diff
Modified:
   trunk/vim/debian/changelog
Log:
added patch for swap file locking behaviour wrt symlinks


Modified: trunk/vim/debian/changelog
===================================================================
--- trunk/vim/debian/changelog	2005-10-17 09:36:20 UTC (rev 364)
+++ trunk/vim/debian/changelog	2005-10-17 11:06:35 UTC (rev 365)
@@ -8,6 +8,8 @@
     tarballs.
   * Added patch 303_option.c.diff, which fixes 'system()' behaviour
     when $SHELL is empty. (closes: #219386)
+  * Added patch 304_memline.c.diff, which fixes swap file locking wrt
+    symlinks. (closes: #329826)
 
  -- Debian VIM Maintainers <pkg-vim-maintainers at lists.alioth.debian.org>  Mon, 17 Oct 2005 11:23:04 +0200
 

Added: trunk/vim/debian/patches/304_memline.c.diff
===================================================================
--- trunk/vim/debian/patches/304_memline.c.diff	2005-10-17 09:36:20 UTC (rev 364)
+++ trunk/vim/debian/patches/304_memline.c.diff	2005-10-17 11:06:35 UTC (rev 365)
@@ -0,0 +1,59 @@
+diff -urN vim64/src/memline.c vim64.new/src/memline.c
+--- vim64/src/memline.c	2005-02-17 11:02:53.000000000 +0100
++++ vim64.new/src/memline.c	2005-10-17 12:04:36.000000000 +0200
+@@ -3251,6 +3251,25 @@
+     }
+ }
+ 
++    void
++resolvesymlink(fname, buf, bufsiz)
++    char_u	*fname, *buf;
++    size_t	bufsiz;
++{
++    char_u	tmp[PATH_MAX];
++
++    if (fname == NULL)
++	return;
++    if (readlink((char *) fname, (char *) buf, bufsiz) == -1)
++	STRCPY(buf, fname); /* not a symlink: return fname unmodified */
++    else
++    {	/* symlink: recursively expand */
++	STRCPY(tmp, buf);
++	while (readlink((char *) tmp, (char *) buf, bufsiz) != -1)
++	    STRCPY(tmp, buf);
++    }
++}
++
+ /*
+  * make swap file name out of the file name and a directory name
+  */
+@@ -3260,6 +3279,8 @@
+     char_u	*dir_name;
+ {
+     char_u	*r, *s;
++    char_u	fname[PATH_MAX];
++    char_u	*fname_p = NULL;
+ 
+ #if defined(UNIX) || defined(WIN3264)  /* Need _very_ long file names */
+     s = dir_name + STRLEN(dir_name);
+@@ -3275,6 +3296,11 @@
+     }
+ #endif
+ 
++    if (buf->b_fname != NULL)
++    {
++	fname_p = fname;
++	resolvesymlink(buf->b_fname, fname, PATH_MAX);
++    }
+     r = buf_modname(
+ #ifdef SHORT_FNAME
+ 	    TRUE,
+@@ -3285,7 +3311,7 @@
+ 	    /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
+ 	    buf->b_ffname,
+ #else
+-	    buf->b_fname,
++	    fname_p,
+ #endif
+ 	    (char_u *)
+ #if defined(VMS) || defined(RISCOS)




More information about the pkg-vim-maintainers mailing list