summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.197
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches/7.4.197')
-rw-r--r--patches/source/vim/patches/7.4.1971052
1 files changed, 1052 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.197 b/patches/source/vim/patches/7.4.197
new file mode 100644
index 00000000..80783eb4
--- /dev/null
+++ b/patches/source/vim/patches/7.4.197
@@ -0,0 +1,1052 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.197
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.197
+Problem: Various problems on VMS.
+Solution: Fix several VMS problems. (Zoltan Arpadffy)
+Files: runtime/doc/os_vms.txt, src/Make_vms.mms, src/fileio.c,
+ src/os_unix.c, src/os_unix.h, src/os_vms.c, src/os_vms_conf.h,
+ src/proto/os_vms.pro, src/testdir/Make_vms.mms,
+ src/testdir/test72.in, src/testdir/test77a.com,
+ src/testdir/test77a.in, src/testdir/test77a.ok src/undo.c
+
+
+*** ../vim-7.4.196/runtime/doc/os_vms.txt 2013-08-10 13:24:59.000000000 +0200
+--- runtime/doc/os_vms.txt 2014-03-12 15:55:50.196741288 +0100
+***************
+*** 1,4 ****
+! *os_vms.txt* For Vim version 7.4. Last change: 2011 Aug 14
+
+
+ VIM REFERENCE MANUAL
+--- 1,4 ----
+! *os_vms.txt* For Vim version 7.4. Last change: 2014 Feb 24
+
+
+ VIM REFERENCE MANUAL
+***************
+*** 24,30 ****
+
+ 1. Getting started *vms-started*
+
+! Vim (Vi IMproved) is a vi-compatible text editor that runs on nearly every
+ operating system known to humanity. Now use Vim on OpenVMS too, in character
+ or X/Motif environment. It is fully featured and absolutely compatible with
+ Vim on other operating systems.
+--- 24,30 ----
+
+ 1. Getting started *vms-started*
+
+! Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every
+ operating system known to humanity. Now use Vim on OpenVMS too, in character
+ or X/Motif environment. It is fully featured and absolutely compatible with
+ Vim on other operating systems.
+***************
+*** 764,769 ****
+--- 764,785 ----
+
+ 9. VMS related changes *vms-changes*
+
++ Version 7.4
++ - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name"
++ add _un_ at the beginning to keep the extension
++ - correct swap file name wildcard handling
++ - handle iconv usage correctly
++ - do not optimize on vax - otherwise it hangs compiling crypto files
++ - fileio.c fix the comment
++ - correct RealWaitForChar
++ - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have
++ G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
++ - guard agains crashes that are caused by mixed filenames
++ - [TESTDIR]make_vms.mms changed to see the output files
++ - Improve tests, update known issues
++ - minor compiler warnings fixed
++ - CTAGS 5.8 +regex included
++
+ Version 7.3
+ - CTAGS 5.8 included
+ - VMS compile warnings fixed - floating-point overflow warning corrected on VAX
+*** ../vim-7.4.196/src/Make_vms.mms 2013-05-06 04:06:04.000000000 +0200
+--- src/Make_vms.mms 2014-03-12 15:55:50.196741288 +0100
+***************
+*** 2,8 ****
+ # Makefile for Vim on OpenVMS
+ #
+ # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
+! # Last change: 2008 Aug 16
+ #
+ # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
+ # with MMS and MMK
+--- 2,8 ----
+ # Makefile for Vim on OpenVMS
+ #
+ # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
+! # Last change: 2014 Feb 24
+ #
+ # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
+ # with MMS and MMK
+***************
+*** 21,29 ****
+ ######################################################################
+ # Configuration section.
+ ######################################################################
+- # VMS version
+- # Uncomment if you use VMS version 6.2 or older
+- # OLD_VMS = YES
+
+ # Compiler selection.
+ # Comment out if you use the VAXC compiler
+--- 21,26 ----
+***************
+*** 60,66 ****
+
+ # Uncomment if want a debug version. Resulting executable is DVIM.EXE
+ # Development purpose only! Normally, it should not be defined. !!!
+! # DEBUG = YES
+
+ # Languages support for Perl, Python, TCL etc.
+ # If you don't need it really, leave them behind the comment.
+--- 57,63 ----
+
+ # Uncomment if want a debug version. Resulting executable is DVIM.EXE
+ # Development purpose only! Normally, it should not be defined. !!!
+! # DEBUG = YES
+
+ # Languages support for Perl, Python, TCL etc.
+ # If you don't need it really, leave them behind the comment.
+***************
+*** 87,92 ****
+--- 84,92 ----
+ # Allow FEATURE_MZSCHEME
+ # VIM_MZSCHEME = YES
+
++ # Use ICONV
++ # VIM_ICONV = YES
++
+ ######################################################################
+ # Directory, library and include files configuration section.
+ # Normally you need not to change anything below. !
+***************
+*** 99,123 ****
+
+ .IFDEF MMSVAX
+ .IFDEF DECC # VAX with DECC
+! CC_DEF = cc # /decc # some system requires this switch but when it is not required /ver might fail
+ PREFIX = /prefix=all
+ .ELSE # VAX with VAXC
+ CC_DEF = cc
+ PREFIX =
+ CCVER =
+ .ENDIF
+! .ELSE # AXP wixh DECC
+ CC_DEF = cc
+ PREFIX = /prefix=all
+ .ENDIF
+
+ LD_DEF = link
+ C_INC = [.proto]
+
+- .IFDEF OLD_VMS
+- VMS_DEF = ,"OLD_VMS"
+- .ENDIF
+-
+ .IFDEF DEBUG
+ DEBUG_DEF = ,"DEBUG"
+ TARGET = dvim.exe
+--- 99,123 ----
+
+ .IFDEF MMSVAX
+ .IFDEF DECC # VAX with DECC
+! CC_DEF = cc # /decc # some versions require /decc switch but when it is not required /ver might fail
+ PREFIX = /prefix=all
++ OPTIMIZE= /noopt # do not optimize on VAX. The compiler has hard time with crypto functions
+ .ELSE # VAX with VAXC
+ CC_DEF = cc
+ PREFIX =
++ OPTIMIZE= /noopt
+ CCVER =
+ .ENDIF
+! .ELSE # AXP and IA64 with DECC
+ CC_DEF = cc
+ PREFIX = /prefix=all
++ OPTIMIZE= /opt
+ .ENDIF
+
++
+ LD_DEF = link
+ C_INC = [.proto]
+
+ .IFDEF DEBUG
+ DEBUG_DEF = ,"DEBUG"
+ TARGET = dvim.exe
+***************
+*** 125,131 ****
+ LDFLAGS = /debug
+ .ELSE
+ TARGET = vim.exe
+! CFLAGS = /opt$(PREFIX)
+ LDFLAGS =
+ .ENDIF
+
+--- 125,131 ----
+ LDFLAGS = /debug
+ .ELSE
+ TARGET = vim.exe
+! CFLAGS = $(OPTIMIZE)$(PREFIX)
+ LDFLAGS =
+ .ENDIF
+
+***************
+*** 274,279 ****
+--- 274,284 ----
+ MZSCH_OBJ = if_mzsch.obj
+ .ENDIF
+
++ .IFDEF VIM_ICONV
++ # ICONV related setup
++ ICONV_DEF = ,"USE_ICONV"
++ .ENDIF
++
+ ######################################################################
+ # End of configuration section.
+ # Please, do not change anything below without programming experience.
+***************
+*** 287,294 ****
+
+ .SUFFIXES : .obj .c
+
+! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
+! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) -
+ $(CFLAGS)$(GUI_FLAG) -
+ /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
+
+--- 292,299 ----
+
+ .SUFFIXES : .obj .c
+
+! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
+! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
+ $(CFLAGS)$(GUI_FLAG) -
+ /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
+
+***************
+*** 296,303 ****
+ # It is specially formated for correct display of unix like includes
+ # as $(GUI_INC) - replaced with $(GUI_INC_VER)
+ # Otherwise should not be any other difference.
+! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
+! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) -
+ $(CFLAGS)$(GUI_FLAG) -
+ /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
+
+--- 301,308 ----
+ # It is specially formated for correct display of unix like includes
+ # as $(GUI_INC) - replaced with $(GUI_INC_VER)
+ # Otherwise should not be any other difference.
+! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
+! $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
+ $(CFLAGS)$(GUI_FLAG) -
+ /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
+
+*** ../vim-7.4.196/src/fileio.c 2014-02-23 22:58:12.072764176 +0100
+--- src/fileio.c 2014-03-12 15:55:50.200741288 +0100
+***************
+*** 7559,7565 ****
+ p = (char_u *)tempnam("tmp:", (char *)itmp);
+ if (p != NULL)
+ {
+! /* VMS will use '.LOG' if we don't explicitly specify an extension,
+ * and VIM will then be unable to find the file later */
+ STRCPY(itmp, p);
+ STRCAT(itmp, ".txt");
+--- 7559,7565 ----
+ p = (char_u *)tempnam("tmp:", (char *)itmp);
+ if (p != NULL)
+ {
+! /* VMS will use '.LIS' if we don't explicitly specify an extension,
+ * and VIM will then be unable to find the file later */
+ STRCPY(itmp, p);
+ STRCAT(itmp, ".txt");
+*** ../vim-7.4.196/src/os_unix.c 2013-12-11 17:12:32.000000000 +0100
+--- src/os_unix.c 2014-03-12 16:25:11.144768271 +0100
+***************
+*** 2965,2971 ****
+--- 2965,2990 ----
+
+ if (stat((char *)name, &st))
+ return 0;
++ #ifdef VMS
++ /* Like on Unix system file can have executable rights but not necessarily
++ * be an executable, but on Unix is not a default for an ordianry file to
++ * have an executable flag - on VMS it is in most cases.
++ * Therefore, this check does not have any sense - let keep us to the
++ * conventions instead:
++ * *.COM and *.EXE files are the executables - the rest are not. This is
++ * not ideal but better then it was.
++ */
++ int vms_executable = 0;
++ if (S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0)
++ {
++ if (strstr(vms_tolower((char*)name),".exe") != NULL
++ || strstr(vms_tolower((char*)name),".com")!= NULL)
++ vms_executable = 1;
++ }
++ return vms_executable;
++ #else
+ return S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0;
++ #endif
+ }
+
+ /*
+***************
+*** 2983,2989 ****
+--- 3002,3010 ----
+ /* If it's an absolute or relative path don't need to use $PATH. */
+ if (mch_isFullName(name) || (name[0] == '.' && (name[1] == '/'
+ || (name[1] == '.' && name[2] == '/'))))
++ {
+ return executable_file(name);
++ }
+
+ p = (char_u *)getenv("PATH");
+ if (p == NULL || *p == NUL)
+*** ../vim-7.4.196/src/os_unix.h 2013-12-11 17:12:32.000000000 +0100
+--- src/os_unix.h 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 302,308 ****
+ # define USR_VIMRC_FILE2 "$HOME/vimfiles/vimrc"
+ # else
+ # ifdef VMS
+! # define USR_VIMRC_FILE2 "sys$login:vimfiles:vimrc"
+ # else
+ # define USR_VIMRC_FILE2 "~/.vim/vimrc"
+ # endif
+--- 302,308 ----
+ # define USR_VIMRC_FILE2 "$HOME/vimfiles/vimrc"
+ # else
+ # ifdef VMS
+! # define USR_VIMRC_FILE2 "sys$login:vimfiles/vimrc"
+ # else
+ # define USR_VIMRC_FILE2 "~/.vim/vimrc"
+ # endif
+***************
+*** 329,335 ****
+ # define USR_GVIMRC_FILE2 "$HOME/vimfiles/gvimrc"
+ # else
+ # ifdef VMS
+! # define USR_GVIMRC_FILE2 "sys$login:vimfiles:gvimrc"
+ # else
+ # define USR_GVIMRC_FILE2 "~/.vim/gvimrc"
+ # endif
+--- 329,335 ----
+ # define USR_GVIMRC_FILE2 "$HOME/vimfiles/gvimrc"
+ # else
+ # ifdef VMS
+! # define USR_GVIMRC_FILE2 "sys$login:vimfiles/gvimrc"
+ # else
+ # define USR_GVIMRC_FILE2 "~/.vim/gvimrc"
+ # endif
+*** ../vim-7.4.196/src/os_vms.c 2013-12-11 17:12:32.000000000 +0100
+--- src/os_vms.c 2014-03-12 16:26:17.544769288 +0100
+***************
+*** 296,301 ****
+--- 296,313 ----
+ }
+
+ /*
++ * Convert string to lowercase - most often filename
++ */
++ char *
++ vms_tolower( char *name )
++ {
++ int i,nlen = strlen(name);
++ for (i = 0; i < nlen; i++)
++ name[i] = TOLOWER_ASC(name[i]);
++ return name;
++ }
++
++ /*
+ * Convert VMS system() or lib$spawn() return code to Unix-like exit value.
+ */
+ int
+***************
+*** 361,373 ****
+ vms_wproc(char *name, int val)
+ {
+ int i;
+- int nlen;
+ static int vms_match_alloced = 0;
+
+! if (val != DECC$K_FILE) /* Directories and foreign non VMS files are not
+! counting */
+ return 1;
+
+ if (vms_match_num == 0) {
+ /* first time through, setup some things */
+ if (NULL == vms_fmatch) {
+--- 373,384 ----
+ vms_wproc(char *name, int val)
+ {
+ int i;
+ static int vms_match_alloced = 0;
+
+! if (val == DECC$K_FOREIGN ) /* foreign non VMS files are not counting */
+ return 1;
+
++ /* accept all DECC$K_FILE and DECC$K_DIRECTORY */
+ if (vms_match_num == 0) {
+ /* first time through, setup some things */
+ if (NULL == vms_fmatch) {
+***************
+*** 383,394 ****
+ }
+ }
+
+ vms_remove_version(name);
+!
+! /* convert filename to lowercase */
+! nlen = strlen(name);
+! for (i = 0; i < nlen; i++)
+! name[i] = TOLOWER_ASC(name[i]);
+
+ /* if name already exists, don't add it */
+ for (i = 0; i<vms_match_num; i++) {
+--- 394,402 ----
+ }
+ }
+
++ /* make matches look uniform */
+ vms_remove_version(name);
+! name=vms_tolower(name);
+
+ /* if name already exists, don't add it */
+ for (i = 0; i<vms_match_num; i++) {
+***************
+*** 428,433 ****
+--- 436,442 ----
+ {
+ int i, cnt = 0;
+ char_u buf[MAXPATHL];
++ char *result;
+ int dir;
+ int files_alloced, files_free;
+
+***************
+*** 449,456 ****
+ STRCPY(buf,pat[i]);
+
+ vms_match_num = 0; /* reset collection counter */
+! cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(buf)), vms_wproc, 1, 0);
+! /* allow wild, no dir */
+ if (cnt > 0)
+ cnt = vms_match_num;
+
+--- 458,470 ----
+ STRCPY(buf,pat[i]);
+
+ vms_match_num = 0; /* reset collection counter */
+! result = decc$translate_vms(vms_fixfilename(buf));
+! if ( (int) result == 0 || (int) result == -1 ) {
+! cnt = 0;
+! }
+! else {
+! cnt = decc$to_vms(result, vms_wproc, 1 /*allow wild*/ , (flags & EW_DIR ? 0:1 ) /*allow directory*/) ;
+! }
+ if (cnt > 0)
+ cnt = vms_match_num;
+
+***************
+*** 497,506 ****
+ mch_expandpath(garray_T *gap, char_u *path, int flags)
+ {
+ int i,cnt = 0;
+! vms_match_num = 0;
+
+! cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(path)), vms_wproc, 1, 0);
+! /* allow wild, no dir */
+ if (cnt > 0)
+ cnt = vms_match_num;
+ for (i = 0; i < cnt; i++)
+--- 511,528 ----
+ mch_expandpath(garray_T *gap, char_u *path, int flags)
+ {
+ int i,cnt = 0;
+! char *result;
+
+! vms_match_num = 0;
+! /* the result from the decc$translate_vms needs to be handled */
+! /* otherwise it might create ACCVIO error in decc$to_vms */
+! result = decc$translate_vms(vms_fixfilename(path));
+! if ( (int) result == 0 || (int) result == -1 ) {
+! cnt = 0;
+! }
+! else {
+! cnt = decc$to_vms(result, vms_wproc, 1 /*allow_wild*/, (flags & EW_DIR ? 0:1 ) /*allow directory*/);
+! }
+ if (cnt > 0)
+ cnt = vms_match_num;
+ for (i = 0; i < cnt; i++)
+***************
+*** 521,526 ****
+--- 543,549 ----
+ char *end_of_dir;
+ char ch;
+ int len;
++ char *out_str=out;
+
+ /* copy vms filename portion up to last colon
+ * (node and/or disk)
+***************
+*** 602,608 ****
+ *end_of_dir = ']';
+ }
+
+-
+ /*
+ * for decc$to_vms in vms_fixfilename
+ */
+--- 625,630 ----
+***************
+*** 710,735 ****
+ struct _generic_64 time_diff;
+ struct _generic_64 time_out;
+ unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
+! float sec = (float) msec / 1000;
+
+ /* make sure the iochan is set */
+ if (!iochan)
+ get_tty();
+
+! if (msec > 0) {
+ /* time-out specified; convert it to absolute time */
+
+ /* get current time (number of 100ns ticks since the VMS Epoch) */
+ status = sys$gettim(&time_curr);
+ if (status != SS$_NORMAL)
+ return 0; /* error */
+-
+ /* construct the delta time */
+! status = lib$cvtf_to_internal_time(
+ &convert_operation, &sec, &time_diff);
+ if (status != LIB$_NORMAL)
+ return 0; /* error */
+-
+ /* add them up */
+ status = lib$add_times(
+ &time_curr,
+--- 732,764 ----
+ struct _generic_64 time_diff;
+ struct _generic_64 time_out;
+ unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
+! float sec =(float) msec/1000;
+
+ /* make sure the iochan is set */
+ if (!iochan)
+ get_tty();
+
+! if (sec > 0) {
+ /* time-out specified; convert it to absolute time */
++ /* sec>0 requirement of lib$cvtf_to_internal_time()*/
+
+ /* get current time (number of 100ns ticks since the VMS Epoch) */
+ status = sys$gettim(&time_curr);
+ if (status != SS$_NORMAL)
+ return 0; /* error */
+ /* construct the delta time */
+! #if __G_FLOAT==0
+! # ifndef VAX
+! /* IEEE is default on IA64, but can be used on Alpha too - but not on VAX */
+! status = lib$cvts_to_internal_time(
+ &convert_operation, &sec, &time_diff);
++ # endif
++ #else /* default on Alpha and VAX */
++ status = lib$cvtf_to_internal_time(
++ &convert_operation, &sec, &time_diff);
++ #endif
+ if (status != LIB$_NORMAL)
+ return 0; /* error */
+ /* add them up */
+ status = lib$add_times(
+ &time_curr,
+*** ../vim-7.4.196/src/os_vms_conf.h 2014-02-23 22:52:33.372764715 +0100
+--- src/os_vms_conf.h 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 166,173 ****
+ #undef HAVE_SYS_TIME_H
+ #undef HAVE_LOCALE_H
+ #define BROKEN_LOCALE
+- #undef HAVE_ICONV_H
+- #undef HAVE_ICONV
+ #undef DYNAMIC_ICONV
+ #undef HAVE_STRFTIME
+ #else
+--- 166,171 ----
+***************
+*** 177,188 ****
+ #define HAVE_SYS_TIME_H
+ #define HAVE_LOCALE_H
+ #define BROKEN_LOCALE
+- #undef HAVE_ICONV_H
+- #undef HAVE_ICONV
+ #undef DYNAMIC_ICONV
+ #define HAVE_STRFTIME
+ #endif
+
+ /* GUI support defines */
+ #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK)
+ #define HAVE_X11
+--- 175,192 ----
+ #define HAVE_SYS_TIME_H
+ #define HAVE_LOCALE_H
+ #define BROKEN_LOCALE
+ #undef DYNAMIC_ICONV
+ #define HAVE_STRFTIME
+ #endif
+
++ #if defined(USE_ICONV)
++ #define HAVE_ICONV_H
++ #define HAVE_ICONV
++ #else
++ #undef HAVE_ICONV_H
++ #undef HAVE_ICONV
++ #endif
++
+ /* GUI support defines */
+ #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK)
+ #define HAVE_X11
+*** ../vim-7.4.196/src/proto/os_vms.pro 2013-08-10 13:37:40.000000000 +0200
+--- src/proto/os_vms.pro 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 7,12 ****
+--- 7,13 ----
+ int vms_sys __ARGS((char *cmd, char *out, char *inp));
+ int vms_sys_status __ARGS((int status));
+ int vms_read __ARGS((char *inbuf, size_t nbytes));
++ char *vms_tolower __ARGS((char *name));
+ int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+ int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+ void *vms_fixfilename __ARGS((void *instring));
+*** ../vim-7.4.196/src/testdir/Make_vms.mms 2014-02-23 23:38:58.812760280 +0100
+--- src/testdir/Make_vms.mms 2014-03-12 16:06:22.888750982 +0100
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2014 Feb 23
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2014 Mar 12
+ #
+ # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+ # Edit the lines in the Configuration section below to select.
+***************
+*** 41,56 ****
+ # They fail because VMS does not support file names.
+ # WANT_SPELL = YES
+
+! # Comment out if you want to run mzschema tests.
+ # It fails because VMS does not support this feature yet.
+ # WANT_MZSCH = YES
+
+ # Comment out if you have gzip on your system
+ # HAVE_GZIP = YES
+
+ # Comment out if you have GNU compatible diff on your system
+ # HAVE_GDIFF = YES
+
+ #######################################################################
+ # End of configuration section.
+ #
+--- 41,71 ----
+ # They fail because VMS does not support file names.
+ # WANT_SPELL = YES
+
+! # Comment out if you want to run mzschema tests.
+ # It fails because VMS does not support this feature yet.
+ # WANT_MZSCH = YES
+
++ # Comment out if you have ODS-5 file system
++ # HAVE_ODS5 = YES
++
+ # Comment out if you have gzip on your system
+ # HAVE_GZIP = YES
+
+ # Comment out if you have GNU compatible diff on your system
+ # HAVE_GDIFF = YES
+
++ # Comment out if you have GNU compatible cksum on your system
++ # HAVE_CKSUM = YES
++
++ # Comment out if you have ICONV support
++ # HAVE_ICONV = YES
++
++ # Comment out if you have LUA support
++ # HAVE_LUA = YES
++
++ # Comment out if you have PYTHON support
++ # HAVE_PYTHON = YES
++
+ #######################################################################
+ # End of configuration section.
+ #
+***************
+*** 63,99 ****
+
+ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
+ test6.out test7.out test8.out test9.out test10a.out\
+! test13.out test14.out test15.out test17.out \
+ test18.out test19.out test20.out test21.out test22.out \
+ test23.out test24.out test26.out \
+ test28.out test29.out test30.out test31.out test32.out \
+ test33.out test34.out test35.out test36.out test37.out \
+ test38.out test39.out test40.out test41.out test42.out \
+ test43.out test44.out test45.out test46.out \
+! test48.out test51.out test53.out test54.out test55.out \
+! test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77.out test78.out test79.out test80.out test81.out \
+! test82.out test83.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test97.out test98.out test99.out \
+! test100.out test101.out test102.out test103.out test104.out \
+ test105.out
+
+ # Known problems:
+! # Test 30: a problem around mac format - unknown reason
+ #
+! # Test 32: VMS is not case sensitive and all filenames are lowercase within Vim
+ # (this should be changed in order to preserve the original filename) - should
+ # be fixed. VMS allows just one dot in the filename
+ #
+! # Test 58 and 59: Failed/Hangs - VMS does not support spell files (file names
+ # with too many dots).
+ #
+! # Test 72: unknown reason
+! # Test 85: no Lua interface
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+--- 78,121 ----
+
+ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
+ test6.out test7.out test8.out test9.out test10a.out\
+! test13.out test14.out test15.out \
+ test18.out test19.out test20.out test21.out test22.out \
+ test23.out test24.out test26.out \
+ test28.out test29.out test30.out test31.out test32.out \
+ test33.out test34.out test35.out test36.out test37.out \
+ test38.out test39.out test40.out test41.out test42.out \
+ test43.out test44.out test45.out test46.out \
+! test48.out test49.out test51.out test53.out test54.out \
+! test55.out test56.out test57.out test60.out \
+ test61.out test62.out test63.out test64.out test65.out \
+ test66.out test67.out test68.out test69.out \
+ test71.out test72.out test74.out test75.out test76.out \
+! test77a.out test78.out test79.out test80.out test81.out \
+! test82.out test84.out test88.out test89.out \
+ test90.out test91.out test92.out test93.out test94.out \
+! test95.out test96.out test98.out test99.out \
+! test100.out test101.out test103.out test104.out \
+ test105.out
+
+ # Known problems:
+! # test17: ?
+! #
+! # test30: bug, most probably - a problem around mac format
+ #
+! # test32: VMS is not case sensitive and all filenames are lowercase within Vim
+ # (this should be changed in order to preserve the original filename) - should
+ # be fixed. VMS allows just one dot in the filename
+ #
+! # test58, test59: Failed/Hangs - VMS does not support spell files (file names
+ # with too many dots).
+ #
+! # test72: bug - Vim hangs at :rename (while rename works well otherwise)
+! # test78: bug - Vim dies at :recover Xtest
+! # test83: ?
+! # test85: no Lua interface
+! # test89: bug - findfile() does not work on VMS (just in the current directory)
+! # test97, test102: Just ODS-5 supports space and special chars in the filename.
+! # On ODS-2 tests fail.
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+***************
+*** 101,107 ****
+ .ENDIF
+
+ .IFDEF WANT_UNIX
+! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out test73.out
+ .ENDIF
+
+ .IFDEF WANT_WIN
+--- 123,129 ----
+ .ENDIF
+
+ .IFDEF WANT_UNIX
+! SCRIPT_UNIX = test10.out test12.out test17.out test25.out test27.out test49.out test73.out
+ .ENDIF
+
+ .IFDEF WANT_WIN
+***************
+*** 116,121 ****
+--- 138,147 ----
+ SCRIPT_MZSCH = test70.out
+ .ENDIF
+
++ .IFDEF HAVE_ODS5
++ SCRIPT_ODS5 = test97.out test102.out
++ .ENDIF
++
+ .IFDEF HAVE_GZIP
+ SCRIPT_GZIP = test11.out
+ .ENDIF
+***************
+*** 124,133 ****
+--- 150,177 ----
+ SCRIPT_GDIFF = test47.out
+ .ENDIF
+
++ .IFDEF HAVE_CKSUM
++ SCRIPT_CKSUM = test77.out
++ .ENDIF
++
++ .IFDEF HAVE_ICONV
++ SCRIPT_ICONV = test83.out
++ .ENDIF
++
++ .IFDEF HAVE_LUA
++ SCRIPT_LUA = test85.out
++ .ENDIF
++
++ .IFDEF HAVE_PYTHON
++ SCRIPT_PYTHON = test86.out test87.out
++ .ENDIF
++
+ .in.out :
+ -@ !clean up before doing the test
+ -@ if "''F$SEARCH("test.out.*")'" .NES. "" then delete/noconfirm/nolog test.out.*
+ -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then delete/noconfirm/nolog $*.out.*
++ -@ ! define TMP if not set - some tests use it
++ -@ if "''F$TRNLNM("TMP")'" .EQS. "" then define/nolog TMP []
+ -@ write sys$output " "
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output " "$*" "
+***************
+*** 140,148 ****
+ -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then differences /par $*.out $*.ok;
+ -@ !clean up after the test
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+
+! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) \
+! $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) nolog
+ -@ write sys$output " "
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output " All done"
+--- 184,193 ----
+ -@ if "''F$SEARCH("$*.out.*")'" .NES. "" then differences /par $*.out $*.ok;
+ -@ !clean up after the test
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
++ -@ if "''F$SEARCH("Xtest.*")'" .NES. "" then delete/noconfirm/nolog Xtest.*.*
+
+! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_ODS5) $(SCRIPT_GZIP) \
+! $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_CKSUM) $(SCRIPT_ICONV) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog
+ -@ write sys$output " "
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output " All done"
+***************
+*** 165,177 ****
+ -@ write sys$output " Test results:"
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output "MAKE_VMS.MMS options:"
+! -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" "
+! -@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" "
+! -@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" "
+! -@ write sys$output " WANT_SPELL= ""$(WANT_SPELL)"" "
+! -@ write sys$output " WANT_MZSCH= ""$(WANT_MZSCH)"" "
+! -@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" "
+! -@ write sys$output " HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
+ -@ write sys$output "Default vimrc file is VMS.VIM:"
+ -@ write sys$output "-----------------------------------------------"
+ -@ type VMS.VIM
+--- 210,227 ----
+ -@ write sys$output " Test results:"
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output "MAKE_VMS.MMS options:"
+! -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" "
+! -@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" "
+! -@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" "
+! -@ write sys$output " WANT_SPELL = ""$(WANT_SPELL)"" "
+! -@ write sys$output " WANT_MZSCH = ""$(WANT_MZSCH)"" "
+! -@ write sys$output " HAVE_ODS5 = ""$(HAVE_ODS5)"" "
+! -@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" "
+! -@ write sys$output " HAVE_GDIFF = ""$(HAVE_GDIFF)"" "
+! -@ write sys$output " HAVE_CKSUM = ""$(HAVE_CKSUM)"" "
+! -@ write sys$output " HAVE_ICONV = ""$(HAVE_ICONV)"" "
+! -@ write sys$output " HAVE_LUA = ""$(HAVE_LUA)"" "
+! -@ write sys$output " HAVE_PYTHON= ""$(HAVE_PYTHON)"" "
+ -@ write sys$output "Default vimrc file is VMS.VIM:"
+ -@ write sys$output "-----------------------------------------------"
+ -@ type VMS.VIM
+***************
+*** 181,186 ****
+--- 231,239 ----
+ -@ if "''F$SEARCH("test.log")'" .NES. "" then delete/noconfirm/nolog test.log.*
+ -@ if "''F$SEARCH("test.ok")'" .NES. "" then delete/noconfirm/nolog test.ok.*
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
++ -@ if "''F$SEARCH("Xtest*.*")'" .NES. "" then delete/noconfirm/nolog Xtest*.*.*
++ -@ if "''F$SEARCH("XX*.*")'" .NES. "" then delete/noconfirm/nolog XX*.*.*
++ -@ if "''F$SEARCH("_un_*.*")'" .NES. "" then delete/noconfirm/nolog _un_*.*.*
+ -@ if "''F$SEARCH("*.*_sw*")'" .NES. "" then delete/noconfirm/nolog *.*_sw*.*
+ -@ if "''F$SEARCH("*.failed")'" .NES. "" then delete/noconfirm/nolog *.failed.*
+ -@ if "''F$SEARCH("*.rej")'" .NES. "" then delete/noconfirm/nolog *.rej.*
+***************
+*** 188,193 ****
+ -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.*
+ -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.*
+ -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.*
+! -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.*
+ -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.*
+
+--- 241,246 ----
+ -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.*
+ -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.*
+ -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.*
+! -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.*
+ -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.*
+
+*** ../vim-7.4.196/src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100
+--- src/testdir/test72.in 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 105,111 ****
+ u:.w >>test.out
+ :"
+ :" Rename the undo file so that it gets cleaned up.
+! :call rename(".Xtestfile.un~", "Xtestundo")
+ :qa!
+ ENDTEST
+
+--- 105,115 ----
+ u:.w >>test.out
+ :"
+ :" Rename the undo file so that it gets cleaned up.
+! :if has("vms")
+! : call rename("_un_Xtestfile", "Xtestundo")
+! :else
+! : call rename(".Xtestfile.un~", "Xtestundo")
+! :endif
+ :qa!
+ ENDTEST
+
+*** ../vim-7.4.196/src/testdir/test77a.com 2014-03-12 16:49:10.740790329 +0100
+--- src/testdir/test77a.com 2014-03-12 16:40:04.316781957 +0100
+***************
+*** 0 ****
+--- 1,8 ----
++ $! test77a - help file creating checksum on VMS
++ $! Created by Zoltan Arpadffy
++ $
++ $ IF P1 .NES. ""
++ $ THEN
++ $ checksum 'P1'
++ $ show symb CHECKSUM$CHECKSUM
++ $ ENDIF
+*** ../vim-7.4.196/src/testdir/test77a.in 2014-03-12 16:49:10.748790329 +0100
+--- src/testdir/test77a.in 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 0 ****
+--- 1,31 ----
++ Inserts 2 million lines with consecutive integers starting from 1
++ (essentially, the output of GNU's seq 1 2000000), writes them to Xtest
++ and writes its cksum to test.out.
++
++ We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess
++ up the lines the checksum would differ.
++
++ cksum is part of POSIX and so should be available on most Unixes.
++ If it isn't available then the test will be skipped.
++
++ VMS does not have CKSUM but has a built in CHECKSUM - it should be used
++ STARTTEST
++ :so small.vim
++ :if !has("vms")
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set fileformat=unix undolevels=-1
++ ggdG
++ :let i = 1
++ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
++ ggdd
++ :w! Xtest.
++ :r !@test77a.com Xtest.
++ :s/\s/ /g
++ :set fileformat&
++ :.w! test.out
++ :qa!
++ ENDTEST
++
+*** ../vim-7.4.196/src/testdir/test77a.ok 2014-03-12 16:49:10.756790330 +0100
+--- src/testdir/test77a.ok 2014-03-12 15:55:50.204741288 +0100
+***************
+*** 0 ****
+--- 1 ----
++ CHECKSUM$CHECKSUM = "844110470"
+*** ../vim-7.4.196/src/undo.c 2014-01-23 18:12:44.695676751 +0100
+--- src/undo.c 2014-03-12 16:31:52.432774419 +0100
+***************
+*** 790,798 ****
+--- 790,809 ----
+ if (undo_file_name == NULL)
+ break;
+ p = gettail(undo_file_name);
++ #ifdef VMS
++ /* VMS can not handle more than one dot in the filenames
++ * use "dir/name" -> "dir/_un_name" - add _un_
++ * at the beginning to keep the extension */
++ mch_memmove(p + 4, p, STRLEN(p) + 1);
++ mch_memmove(p, "_un_", 4);
++
++ #else
++ /* Use same directory as the ffname,
++ * "dir/name" -> "dir/.name.un~" */
+ mch_memmove(p + 1, p, STRLEN(p) + 1);
+ *p = '.';
+ STRCAT(p, ".un~");
++ #endif
+ }
+ else
+ {
+*** ../vim-7.4.196/src/version.c 2014-03-12 15:50:18.472736205 +0100
+--- src/version.c 2014-03-12 15:54:26.712740008 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+ { /* Add new patch number below this line */
++ /**/
++ 197,
+ /**/
+
+--
+Violators can be fined, arrested or jailed for making ugly faces at a dog.
+ [real standing law in Oklahoma, United States of America]
+
+ /// Bram Moolenaar -- Bram@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 ///