changeset 1082:342d2b3a072a v7.0.208

updated for version 7.0-208
author vimboss
date Tue, 06 Mar 2007 19:22:53 +0000
parents 0e57be57fa49
children 1d12208efb37
files src/buffer.c src/memline.c src/os_unix.c src/version.c
diffstat 4 files changed, 28 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4145,13 +4145,11 @@ fix_fname(fname)
     /*
      * Force expanding the path always for Unix, because symbolic links may
      * mess up the full path name, even though it starts with a '/'.
-     * Also expand always for VMS, it may have alternate paths that need to be
-     * resolved.
      * Also expand when there is ".." in the file name, try to remove it,
      * because "c:/src/../README" is equal to "c:/README".
      * For MS-Windows also expand names like "longna~1" to "longname".
      */
-#if defined(UNIX) || defined(VMS)
+#ifdef UNIX
     return FullName_save(fname, TRUE);
 #else
     if (!vim_isAbsName(fname) || strstr((char *)fname, "..") != NULL
--- a/src/memline.c
+++ b/src/memline.c
@@ -3592,9 +3592,8 @@ makeswapname(fname, ffname, buf, dir_nam
 #else
 	    (buf->b_p_sn || buf->b_shortname),
 #endif
-#if defined(VMS) || defined(RISCOS)
-	    /* Avoid problems if fname has special chars, eg <Wimp$Scrap>.
-	     * For VMS always use full path for swapfile. */
+#ifdef RISCOS
+	    /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
 	    ffname,
 #else
 # ifdef HAVE_READLINK
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2214,49 +2214,22 @@ mch_FullName(fname, buf, len, force)
     int		len;
     int		force;		/* also expand when already absolute path */
 {
-#ifdef VMS
-    /*
-     * VMS does this in a completely different way.
-     *
-     * By default a file found in a complex path is written to the first
-     * directory in the path and not to the original directory.  This
-     * behaviour should be avoided for the existing files and we need to find
-     * the exact path of the edited file.
-     */
-    {
-	char_u	*fixed_fname = vms_fixfilename(fname);
-	int	fd = mch_open((char *)fixed_fname, O_RDONLY | O_EXTRA, 0);
-
-	if (fd > 0)
-	{
-	    char nbuf[MAXNAMLEN];
-
-	    /* File exists, use getname() to get the real name. */
-	    if (getname(fd, nbuf))
-		vim_strncpy(fixed_fname, (char_u *)nbuf, (size_t)(len - 1));
-	    close(fd);
-	}
-
-	if (STRLEN(fixed_fname) >= len)
-	    return FAIL;
-
-	STRCPY(buf, fixed_fname);
-    }
-
-#else /* not VMS */
-
     int		l;
-# ifdef OS2
+#ifdef OS2
     int		only_drive;	/* file name is only a drive letter */
-# endif
-# ifdef HAVE_FCHDIR
+#endif
+#ifdef HAVE_FCHDIR
     int		fd = -1;
     static int	dont_fchdir = FALSE;	/* TRUE when fchdir() doesn't work */
-# endif
+#endif
     char_u	olddir[MAXPATHL];
     char_u	*p;
     int		retval = OK;
 
+#ifdef VMS
+    fname = vms_fixfilename(fname);
+#endif
+
     /* expand it if forced or not an absolute path */
     if (force || !mch_isFullName(fname))
     {
@@ -2265,16 +2238,16 @@ mch_FullName(fname, buf, len, force)
 	 * and then do the getwd() (and get back to where we were).
 	 * This will get the correct path name with "../" things.
 	 */
-# ifdef OS2
+#ifdef OS2
 	only_drive = 0;
 	if (((p = vim_strrchr(fname, '/')) != NULL)
 		|| ((p = vim_strrchr(fname, '\\')) != NULL)
 		|| (((p = vim_strchr(fname,  ':')) != NULL) && ++only_drive))
-# else
+#else
 	if ((p = vim_strrchr(fname, '/')) != NULL)
-# endif
+#endif
 	{
-# ifdef HAVE_FCHDIR
+#ifdef HAVE_FCHDIR
 	    /*
 	     * Use fchdir() if possible, it's said to be faster and more
 	     * reliable.  But on SunOS 4 it might not work.  Check this by
@@ -2290,14 +2263,14 @@ mch_FullName(fname, buf, len, force)
 		    dont_fchdir = TRUE;	    /* don't try again */
 		}
 	    }
-# endif
+#endif
 
 	    /* Only change directory when we are sure we can return to where
 	     * we are now.  After doing "su" chdir(".") might not work. */
 	    if (
-# ifdef HAVE_FCHDIR
+#ifdef HAVE_FCHDIR
 		fd < 0 &&
-# endif
+#endif
 			(mch_dirname(olddir, MAXPATHL) == FAIL
 					   || mch_chdir((char *)olddir) != 0))
 	    {
@@ -2306,7 +2279,7 @@ mch_FullName(fname, buf, len, force)
 	    }
 	    else
 	    {
-# ifdef OS2
+#ifdef OS2
 		/*
 		 * compensate for case where ':' from "D:" was the only
 		 * path separator detected in the file name; the _next_
@@ -2314,7 +2287,7 @@ mch_FullName(fname, buf, len, force)
 		 */
 		if (only_drive)
 		    p++;
-# endif
+#endif
 		/* The directory is copied into buf[], to be able to remove
 		 * the file name without changing it (could be a string in
 		 * read-only memory) */
@@ -2329,14 +2302,14 @@ mch_FullName(fname, buf, len, force)
 			fname = p + 1;
 		    *buf = NUL;
 		}
-# ifdef OS2
+#ifdef OS2
 		if (only_drive)
 		{
 		    p--;
 		    if (retval != FAIL)
 			fname--;
 		}
-# endif
+#endif
 	    }
 	}
 	if (mch_dirname(buf, len) == FAIL)
@@ -2346,14 +2319,14 @@ mch_FullName(fname, buf, len, force)
 	}
 	if (p != NULL)
 	{
-# ifdef HAVE_FCHDIR
+#ifdef HAVE_FCHDIR
 	    if (fd >= 0)
 	    {
 		l = fchdir(fd);
 		close(fd);
 	    }
 	    else
-# endif
+#endif
 		l = mch_chdir((char *)olddir);
 	    if (l != 0)
 		EMSG(_(e_prev_dir));
@@ -2362,12 +2335,14 @@ mch_FullName(fname, buf, len, force)
 	l = STRLEN(buf);
 	if (l >= len)
 	    retval = FAIL;
+#ifndef VMS
 	else
 	{
 	    if (l > 0 && buf[l - 1] != '/' && *fname != NUL
 						   && STRCMP(fname, ".") != 0)
 		STRCAT(buf, "/");
 	}
+#endif
     }
 
     /* Catch file names which are too long. */
@@ -2378,8 +2353,6 @@ mch_FullName(fname, buf, len, force)
     if (STRCMP(fname, ".") != 0)
 	STRCAT(buf, fname);
 
-#endif /* VMS */
-
     return OK;
 }
 
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    208,
+/**/
     207,
 /**/
     206,