| 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 |
| |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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)) |
| |
| |
| |
| |
| *** 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"); |
| |
| |
| |
| *** 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) |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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, |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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)); |
| |
| |
| |
| *** 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.*.* |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| |
| |
| --- 1,8 ---- |
| + $! test77a - help file creating checksum on VMS |
| + $! Created by Zoltan Arpadffy |
| + $ |
| + $ IF P1 .NES. "" |
| + $ THEN |
| + $ checksum 'P1' |
| + $ show symb CHECKSUM$CHECKSUM |
| + $ ENDIF |
| |
| |
| |
| |
| --- 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 |
| + |
| |
| |
| |
| |
| |
| + CHECKSUM$CHECKSUM = "844110470" |
| |
| |
| |
| *** 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 |
| { |
| |
| |
| |
| *** 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 /// |