diff --git a/7.4.197 b/7.4.197 new file mode 100644 index 0000000..80783eb --- /dev/null +++ b/7.4.197 @@ -0,0 +1,1052 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.197 +Fcc: outbox +From: Bram Moolenaar +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 +! # 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 +! # 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 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, + # Sandor Kopanyi, + # +! # 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, + # Sandor Kopanyi, + # +! # 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 ///