Mercurial > vim
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; }