]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.2153: no support to build on OpenVMS v9.0.2153
authorZoltan Arpadffy <zoltan.arpadffy@gmail.com>
Tue, 5 Dec 2023 15:04:23 +0000 (16:04 +0100)
committerChristian Brabandt <cb@256bit.org>
Tue, 5 Dec 2023 15:04:23 +0000 (16:04 +0100)
Problem:  no support to build on OpenVMS
Solution: Add OpenVMS X86_64 platform port

closes: #13623

Co-authored-by: errael <errael@raelity.com>
Co-authored-by: K.Takata <kentkt@csc.jp>
Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
14 files changed:
runtime/doc/os_vms.txt
src/INSTALLvms.txt
src/Make_vms.mms
src/crypt.c
src/gui.h
src/macros.h
src/map.c
src/optionstr.c
src/os_vms_conf.h
src/proto/crypt.pro
src/term.c
src/version.c
src/vim.h
src/xdiff/xmacros.h

index 54eb63cad1808f742d132157ed4e3bb0261b1ef5..3c5d51707f7582f407a4ffde69fc81f44f4350ee 100644 (file)
@@ -44,14 +44,16 @@ You can download precompiled executables from:
 
 To use the precompiled binary version, you need one of these archives:
 
-  vim-XX-exe-ia64-gui.zip       IA64 GUI/Motif executables
-  vim-XX-exe-ia64-gtk.zip       IA64 GUI/GTK executables
-  vim-XX-exe-ia64-term.zip      IA64 console executables
+  vim-XX-exe-x86-gui.zip       X86_64 GUI/Motif executables
+  vim-XX-exe-x86-term.zip      X86_64 console executables
+  vim-XX-exe-ia64-gui.zip      IA64 GUI/Motif executables
+  vim-XX-exe-ia64-gtk.zip      IA64 GUI/GTK executables
+  vim-XX-exe-ia64-term.zip     IA64 console executables
   vim-XX-exe-axp-gui.zip       Alpha GUI/Motif executables
   vim-XX-exe-axp-gtk.zip       Alpha GUI/GTK executables
-  vim-XX-exe-axp-term.zip       Alpha console executables
+  vim-XX-exe-axp-term.zip      Alpha console executables
   vim-XX-exe-vax-gui.zip       VAX GUI executables
-  vim-XX-exe-vax-term.zip       VAX console executables
+  vim-XX-exe-vax-term.zip      VAX console executables
 
 and of course (optional)
   vim-XX-runtime.zip           runtime files
@@ -59,7 +61,7 @@ and of course (optional)
 The binary archives contain: vim.exe, ctags.exe, xxd.exe files.
 
 For GTK executables you will need GTKLIB that is available for
-Alpha and IA64 platform.
+Alpha and IA64 platforms.
 
 ==============================================================================
 
@@ -71,9 +73,9 @@ See the file [.SRC]INSTALLVMS.TXT.
 
 4. Problems                                            *vms-problems*
 
-The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
-platforms with the DEC C compiler. It should work without major problems.
-If your system does not have some include libraries you can tune up in
+The code has been tested under Open VMS 6.2 - 9.2 on Alpha, VAX, IA64 and
+X86_64 platforms with the DEC C compiler. It should work without major problems.
+If your system does not have some include libraries you can tune in the
 OS_VMS_CONF.H file.
 
 If you decided to build Vim with +perl, +python, etc. options, first you need
@@ -88,8 +90,7 @@ VAX C compiler is not fully ANSI C compatible in pre-processor directives
 semantics, therefore you have to use a converter program that will do the lion
 part of the job.  For detailed instructions read file INSTALLvms.txt
 
-MMS_VIM.EXE is built together with VIM.EXE, but for XXD.EXE you should
-change to a subdirectory and build it separately.
+To build XXD.EXE, you should change to the subdirectory and build it separately.
 
 CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
 specific source might contain CTAGS source files as described above.
@@ -206,6 +207,7 @@ Example LOGIN.COM: >
        $ define/nolog VIM DKA0:[UTIL.VIM81]
        $ vi*m :== mcr VIM:VIM.EXE
        $ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
+       $ set term/inq/ins ! inquire the terminal capabilities
        $ set disp/create/node=192.168.10.202/trans=tcpip
 
 Note: This set-up should be enough, if you are working on a standalone server or
@@ -443,7 +445,12 @@ Terminal entry not found in termcap
     builtin_dumb
 defaulting to 'vt320'
 ---
-The solution is to define the default terminal name: >
+
+Try to force to inquire the terminal capabilities with: >
+
+       $ set term/inquire
+
+If the inquire did not help, the solutions is to define the default terminal name: >
 
        $ ! unknown terminal name.  Let us use vt320 or ansi instead.
        $ ! Note: it's case sensitive
@@ -758,7 +765,18 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
 
 9. VMS related changes                                 *vms-changes*
 
-Version 8.2
+Version 9.0 (2023 Nov 27)
+- Vim is ported to the X86_64 architecture
+       - IMPORTANT: because of the getline function name used in stucts like in ex_cmds.h
+       on X86_64 the CRTL_VER is kept under 80500000 level. The proper solution would be
+       to rename the getline function to something else in the struct (and in all places
+       it is used) - and avoiding to use POSIX functions in structs, but this change would
+       impact on all other operating systems. (added the the VMS TODO list)
+       Read more about at https://forum.vmssoftware.com/viewtopic.php?f=38&t=8914&p=20049
+- os_vms_conf.h includes have been reviewed for all architectures
+- added support for the MODIFIED_BY define
+
+Version 8.2 (2020 Feb 6)
 - make all changes needed for clean compile build of v8.2 on VMS on all platforms
 - fix the call mkdir bug (vicente_polo@yahoo.es)
 - test on VSI OpenVMS Alpha and Itanium platforms
@@ -767,17 +785,18 @@ Version 8.2
 - XPM v3.4.11 libraries for IA64, AXP and VAX are added
 - start integrating the new test scripts
 
-Version 8.1
+Version 8.1 (2019 Jan 9)
 - make necessary changes to build v8.1 on VMS
+- GTK1.2.10 on VAX
 
-Version 8.0
+Version 8.0 (2016 Nov 21)
 - solve the 100% cpu usage issue while waiting for a keystroke
 - correct the VMS warnings and errors around handling the INFINITY (used in json.c)
 - minor VMS port related changes
 - correct the make_vms.mms file for 8.0
 - fix [.TESTDIR]make_vms.mms for 8.0
 
-Version 7.4
+Version 7.4 (2013 Aug 10)
 - 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
@@ -793,7 +812,7 @@ Version 7.4
 - minor compiler warnings fixed
 - CTAGS 5.8 +regex included
 
-Version 7.3
+Version 7.3 (2010 Aug 15)
 - CTAGS 5.8 included
 - VMS compile warnings fixed - floating-point overflow warning corrected on VAX
 - filepath completion corrected - too many chars were escaped in filename
@@ -956,7 +975,7 @@ Version 4.5 (1996 Dec 16)
 10. Authors                                            *vms-authors*
 
 OpenVMS documentation and executables are maintained by:
-Zoltan Arpadffy <arpadffy@polarhome.com>
+Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
 OpenVMS Vim page: http://www.polarhome.com/vim/
 
 This document uses parts and remarks from earlier authors and contributors
index c23515116520ef2c014a9e7aac650d4b2033f030..97406ab535b83f35d7ceea1d6b87ba197e033a44 100644 (file)
@@ -1,7 +1,7 @@
 INSTALLvms.txt - Installation of Vim on OpenVMS
 
-Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-Last change:  2008 Jan 06
+Maintainer:   Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
+Last change:  2023 Nov 29
 
 This file contains instructions for compiling Vim on Openvms.
 If you already have an executable version of Vim, you don't need this.
@@ -40,6 +40,9 @@ Contents:
 
      where X.X is the version number.
 
+You may want to clone the latest source code from https://github/vim/vim
+Or the last tested on OpenVMS from http://polarhome.com/vim/files/source/vms/
+
 1.2. Expand the three archives.
 
 1.3. Apply patches if they exist.  (Patch files are found in the ftp
@@ -81,7 +84,7 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
                          NORMAL  - A default selection of features enabled
                                    (OpenVMS default)
                          HUGE    - All possible features enabled.
-                         Uncommented - will default to NORMAL
+                         Uncommented - will default to HUGE
        Default         : MODEL = NORMAL
 
        Parameter name  : GUI
@@ -117,7 +120,7 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
        Default         : CCVER = YES
 
        Parameter name  : DEBUG
-       Description     : Building a debug version
+       Description     : Building a debug version (DVIM.EXE)
        Options:        : YES - debug version will be built
                          Uncommented - building normal executable
        Default         : Uncommented
@@ -163,6 +166,36 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
                          Uncommented - build without support.
        Default         : Uncommented
 
+       Parameter name  : VIM_RUBY
+       Description     : Add Ruby support
+       Options:        : YES - Build with support
+                         Uncommented - build without support.
+       Default         : Uncommented
+
+       Parameter name  : VIM_LUA
+       Description     : Add Lua support
+       Options:        : YES - Build with support
+                         Uncommented - build without support.
+       Default         : Uncommented     
+
+       Parameter name  : VIM_MZSCHEME
+       Description     : Add support for FEATURE_MZSCHEM
+       Options:        : YES - Build with support
+                         Uncommented - build without FEATURE_MZSCHEM.
+       Default         : Uncommented
+
+       Parameter name  : VIM_ICONV
+       Description     : Build with using the ICONV library 
+       Options:        : YES - Build with support
+                         Uncommented - build without support.
+       Default         : Uncommented     
+
+       Parameter name  : MODIFIED_BY
+       Description     : Add note if you modified the code
+       Options:        : YES - Build with adding the MODIFIED_BY define
+                         Uncommented - build without the define
+       Default         : Uncommented
+
      You can edit the *_INC and *_LIB qualifiers, but it is really
      not recommended for beginners.
 
@@ -184,6 +217,11 @@ from CVS mirror ftp://ftp.polarhome.com/pub/cvs/SOURCE/
 
        mms /descrip=Make_vms.mms clean
 
+     The build will stop if any error or warning is encontered. In some cases
+     the warnings can be ignored. Use:
+
+     mms /descrip=Make_vms.mms /ignore=warning
+
 4. Compilation VAXC
 
 4.1. VAXC compiler is not fully ANSI C compatible in pre-processor directives
index 8dd5454e15e762dcce39763e26896981f718a573..4c206018fc0534ef55c0863f0cc8fdc84f86b43b 100644 (file)
@@ -2,9 +2,9 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2021 Dec 20
+# Last change:  2023 Nov 27
 #
-# This script has been tested on VMS 6.2 to 8.4 on DEC Alpha, VAX and IA64
+# This script has been tested on VMS 6.2 to 9.2 on VAX, ALPHA, IA64 and X86_64
 # with MMS and MMK
 #
 # The following could be built:
@@ -81,7 +81,11 @@ CCVER = YES
 # VIM_MZSCHEME = YES
 
 # Use ICONV
-# VIM_ICONV  = YES
+# VIM_ICONV = YES
+
+# If you modified the source code and plan to distribute the build
+# please, let the users know that.
+# MODIFIED_BY = "name surname <your@email.com>"
 
 ######################################################################
 # Directory, library and include files configuration section.
@@ -104,12 +108,14 @@ PREFIX    =
 OPTIMIZE= /noopt
 CCVER  =
 .ENDIF
-.ELSE               # AXP and IA64 with DECC
+.ELSE               # AXP, IA64, X86 with DECC
 CC_DEF  = cc
 PREFIX  = /prefix=all/name=(upper,short)
 OPTIMIZE= /opt
+.IFDEF MMSX86_64 # This is needed because of getline function name used in stucts like ex_cmds.h  
+ARCH_DEF= ,__CRTL_VER_OVERRIDE=80400000
+.ENDIF
 .ENDIF
-
 
 LD_DEF  = link
 C_INC   = [.proto]
@@ -162,9 +168,9 @@ GTK = ""
 # please note: directory should end with . in order to /trans=conc work
 # This value for GTK_DIR is an example.
 GTK_DIR  = DKA0:[WORK.GTK1210.]
-DEFS     = "HAVE_CONFIG_H","FEAT_GUI_GTK"
+DEFS     = ,"HAVE_CONFIG_H","FEAT_GUI_GTK"
 LIBS     = ,OS_VMS_GTK.OPT/OPT
-GUI_FLAG = /float=ieee/ieee=denorm
+GUI_FLAG = /float=ieee/ieee=denorm/WARNINGS=(DISABLE=MACROREDEF)
 GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_gtk_x11.c gui_beval.c pty.c
 GUI_OBJ  = gui.obj gui_gtk.obj gui_gtk_f.obj gui_gtk_x11.obj gui_beval.obj pty.obj
 GUI_INC  = ,"/gtk_root/gtk","/gtk_root/glib"
@@ -174,15 +180,15 @@ GUI_INC_VER= ,\""/gtk_root/gtk\"",\""/gtk_root/glib\""
 .ELSE
 MOTIF   = YES
 .IFDEF XPM
-DEFS     = "HAVE_CONFIG_H","FEAT_GUI_MOTIF","HAVE_XPM"
+DEFS     = ,"HAVE_CONFIG_H","FEAT_GUI_MOTIF","HAVE_XPM"
 XPM_INC  = ,[.xpm.include]
 XPM_LIB  = ,OS_VMS_XPM.OPT/OPT
 .ELSE
-DEFS     = "HAVE_CONFIG_H","FEAT_GUI_MOTIF"
+DEFS     = ,"HAVE_CONFIG_H","FEAT_GUI_MOTIF"
 XPM_INC  =
 .ENDIF
 LIBS     = ,OS_VMS_MOTIF.OPT/OPT
-GUI_FLAG =
+GUI_FLAG = /WARNINGS=(DISABLE=MACROREDEF)
 GUI_SRC  = gui.c gui_motif.c gui_x11.c gui_beval.c gui_xmdlg.c gui_xmebw.c
 GUI_OBJ  = gui.obj gui_motif.obj gui_x11.obj gui_beval.obj gui_xmdlg.obj gui_xmebw.obj
 GUI_INC  =
@@ -195,7 +201,7 @@ GUI_INC_DIR = ,decw$include:
 
 .ELSE
 # Character terminal only executable
-DEFS    = "HAVE_CONFIG_H"
+DEFS    = ,"HAVE_CONFIG_H"
 LIBS    =
 .ENDIF
 
@@ -269,12 +275,18 @@ XDIFF_SRC = xdiffi.c,xemit.c,xprepare.c,xutils.c,xhistogram.c,xpatience.c
 XDIFF_OBJ = xdiffi.obj,xemit.obj,xprepare.obj,xutils.obj,xhistogram.obj,xpatience.obj
 XDIFF_INC = ,[.xdiff]
 
+.IFDEF MODIFIED_BY 
+DEF_MODIFIED = YES
+.ELSE
+DEF_MODIFIED = NO
+.ENDIF
+
 ######################################################################
 # End of configuration section.
 # Please, do not change anything below without programming experience.
 ######################################################################
 
-MODEL_DEF = "FEAT_$(MODEL)",
+MODEL_DEF = "FEAT_$(MODEL)"
 
 # These go into pathdef.c
 VIMUSER = "''F$EDIT(F$GETJPI(" ","USERNAME"),"TRIM")'"
@@ -284,7 +296,7 @@ VIMHOST = "''F$TRNLNM("SYS$NODE")'''F$TRNLNM("UCX$INET_HOST")'.''F$TRNLNM("UCX$I
 
 ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
- $(ICONV_DEF)) -
+ $(ICONV_DEF)$(ARCH_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
  /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC) -
  $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
@@ -295,7 +307,7 @@ ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
 # Otherwise should not be any other difference.
 ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
- $(ICONV_DEF)) -
+ $(ICONV_DEF)$(ARCH_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
  /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC) -
  $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
@@ -314,6 +326,7 @@ SRC = \
        buffer.c \
        bufwrite.c \
        change.c \
+       channel.c \
        charset.c \
        cindent.c \
        clientserver.c \
@@ -354,6 +367,7 @@ SRC = \
        if_xcmdsrv.c \
        indent.c \
        insexpand.c \
+       job.c \
        json.c \
        list.c \
        locale.c \
@@ -381,6 +395,7 @@ SRC = \
        popupmenu.c \
        popupwin.c \
        profiler.c \
+       pty.c \
        quickfix.c \
        regexp.c \
        register.c \
@@ -390,6 +405,7 @@ SRC = \
        session.c \
        sha256.c \
        sign.c \
+       sound.c \
        spell.c \
        spellfile.c \
        spellsuggest.c \
@@ -397,6 +413,7 @@ SRC = \
        syntax.c \
        tag.c \
        term.c \
+       terminal.c \
        termlib.c \
        testing.c \
        textformat.c \
@@ -439,6 +456,7 @@ OBJ = \
        buffer.obj \
        bufwrite.obj \
        change.obj \
+       channel.obj \
        charset.obj \
        cindent.obj \
        clientserver.obj \
@@ -480,6 +498,7 @@ OBJ = \
        if_xcmdsrv.obj \
        indent.obj \
        insexpand.obj \
+       job.obj \
        json.obj \
        list.obj \
        locale.obj \
@@ -507,6 +526,7 @@ OBJ = \
        popupmenu.obj \
        popupwin.obj \
        profiler.obj \
+       pty.obj \
        quickfix.obj \
        regexp.obj \
        register.obj \
@@ -516,6 +536,7 @@ OBJ = \
        session.obj \
        sha256.obj \
        sign.obj \
+       sound.obj \
        spell.obj \
        spellfile.obj \
        spellsuggest.obj \
@@ -523,6 +544,7 @@ OBJ = \
        syntax.obj \
        tag.obj \
        term.obj \
+       terminal.obj \
        termlib.obj \
        testing.obj \
        textformat.obj \
@@ -560,6 +582,11 @@ all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env r
 
 [.auto]config.h : $(CONFIG_H)
        copy/nolog $(CONFIG_H) [.auto]config.h
+       -@ open/append ac [.auto]config.h
+        -@ hash[0,8]=35
+       -@ quotes[0,8]=34
+        -@ if ""$(DEF_MODIFIED)"" .EQS. "YES" then write ac ''hash',"define MODIFIED_BY ",''quotes',$(MODIFIED_BY),''quotes'
+       -@ close ac
 
 mmk_compat :
        -@ open/write pd pathdef.c
@@ -772,6 +799,7 @@ charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
+channel.obj : channel.c vim.h [.auto]config.h feature.h
 cindent.obj : cindent.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@@ -921,6 +949,7 @@ if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
  errors.h globals.h if_mzsch.h
 indent.obj : indent.c vim.h [.auto]config.h feature.h os_unix.h
 insexpand.obj : insexpand.c vim.h [.auto]config.h feature.h os_unix.h
+job.obj : job.c vim.h [.auto]config.h feature.h os_unix.h
 json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
@@ -1015,6 +1044,7 @@ popupwin.obj : popupwin.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  errors.h globals.h
+pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h
 profiler.obj : profiler.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@@ -1055,6 +1085,7 @@ sign.obj : sign.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
  errors.h globals.h
+sound.obj : sound.c vim.h [.auto]config.h feature.h 
 spell.obj : spell.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@@ -1081,6 +1112,7 @@ tag.obj : tag.c vim.h [.auto]config.h feature.h os_unix.h   \
 term.obj : term.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
+terminal.obj : terminal.c vim.h [.auto]config.h feature.h os_unix.h
 termlib.obj : termlib.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h termdefs.h macros.h structs.h regexp.h gui.h beval.h \
  [.proto]gui_beval.pro option.h ex_cmds.h proto.h errors.h globals.h
index d5d216b35f0e7e119b04d37df4fdaf44fedb4f03..09e90119641171089c73de06087968e02e2894df 100644 (file)
@@ -1308,7 +1308,7 @@ crypt_sodium_init(void)
     return sodium_init();
 }
 
-    uint32_t
+    UINT32_T
 crypt_sodium_randombytes_random(void)
 {
     return randombytes_random();
index 7bcbfa3538a9d50e7a9f390063e9f39c48fa35b1..0a1d274140ed9c931ae538a087f0e8e6afd2aeca 100644 (file)
--- a/src/gui.h
+++ b/src/gui.h
 #endif
 
 #ifdef FEAT_GUI_GTK
-# ifdef VMS // undef MIN and MAX because Intrinsic.h redefines them anyway
-#  ifdef MAX
-#   undef MAX
-#  endif
-#  ifdef MIN
-#   undef MIN
-#  endif
+# ifdef VMS
 #  include "gui_gtk_vms.h"
-# endif // VMS
+# endif
 # include <X11/Intrinsic.h>
 # pragma GCC diagnostic push
 # pragma GCC diagnostic ignored "-Wstrict-prototypes"
index cc2d11fdd162a86253674cfcb9ceb33377f08bf6..caacd3ae7a5c4d0c0ee576fa87c0359ccf37fa7f 100644 (file)
      static inline int isnan(double x)
        { return x != x; }
 #   endif
+#   if defined(VMS) && defined(X86_64)
+     static inline int isinf(double x)
+        { return !isnan(x) && !finite(x); }
+#   endif
 #   ifndef HAVE_ISINF
      static inline int isinf(double x)
        { return !isnan(x) && isnan(x - x); }
index 98785e722ce535066136951bcb07aceb964b9d40..b7bb46c047f3d9a5c13b54af2d548bf4b5b646c1 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -3114,7 +3114,7 @@ did_set_langmap(optset_T *args UNUSED)
                    {
                        if (p[0] != ',')
                        {
-                           snprintf(args->os_errbuf, args->os_errbuflen,
+                           vim_snprintf(args->os_errbuf, args->os_errbuflen,
                                    _(e_langmap_extra_characters_after_semicolon_str),
                                    p);
                            return args->os_errbuf;
index d8e22c03781d9b77d235bf0095e8222322934903..ad1dc81a844e20ab53d629d83424c032a880dae8 100644 (file)
@@ -233,7 +233,7 @@ illegal_char(char *errbuf, size_t errbuflen, int c)
 {
     if (errbuf == NULL)
        return "";
-    snprintf((char *)errbuf, errbuflen, _(e_illegal_character_str),
+    vim_snprintf((char *)errbuf, errbuflen, _(e_illegal_character_str),
                    (char *)transchar(c));
     return errbuf;
 }
@@ -1541,7 +1541,7 @@ did_set_complete(optset_T *args)
            {
                if (args->os_errbuf != NULL)
                {
-                   snprintf((char *)args->os_errbuf, args->os_errbuflen,
+                   vim_snprintf((char *)args->os_errbuf, args->os_errbuflen,
                            _(e_illegal_character_after_chr), *--s);
                    return args->os_errbuf;
                }
@@ -4069,7 +4069,7 @@ did_set_viminfo(optset_T *args)
            {
                if (args->os_errbuf != NULL)
                {
-                   snprintf(args->os_errbuf, args->os_errbuflen,
+                   vim_snprintf(args->os_errbuf, args->os_errbuflen,
                            _(e_missing_number_after_angle_str_angle),
                            transchar_byte(*(s - 1)));
                    errmsg = args->os_errbuf;
index 7de117c704327dfe88c02efacee915f094820603..c1e1ea11b087792774dbce24dbc5fb08a9e337af 100644 (file)
@@ -1,7 +1,14 @@
 /*
  * os_vms_conf.h.  Replaces auto/config.h for VMS
+ *
  */
 
+#if defined(__VMS) || defined(__vms)
+#if !defined(VMS)
+#define VMS
+#endif
+#endif
+
 #define CASE_INSENSITIVE_FILENAME   // Open VMS is case insensitive
 #define SPACE_IN_FILENAME          // There could be space between user and passwd
 #define FNAME_ILLEGAL "|*#?%"       // Illegal characters in a file name
@@ -25,9 +32,6 @@
 // Define when __DATE__ " " __TIME__ can be used
 #define HAVE_DATE_TIME
 
-// Defined to the size of an int
-#define VIM_SIZEOF_INT  4
-
 // #undef USEBCOPY
 #define USEMEMMOVE
 // #undef USEMEMCPY
 #undef  HAVE_LSTAT
 #undef  HAVE_STDINT_H
 
+// Default features
+#define FEAT_IPV6
+
 // Hardware specific
-#ifdef  VAX
+#if defined(__VAX) || defined(VAX)
 #undef  HAVE_GETTIMEOFDAY
 #undef  HAVE_USLEEP
 #undef  HAVE_STRCASECMP
 #undef  HAVE_ISNAN
 #undef  HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
+#define VIM_SIZEOF_INT  4
 #define VIM_SIZEOF_LONG 4
 #define LONG_LONG_MIN  (-2147483647-1)
 #define LONG_LONG_MAX  (2147483647)
 #define ULONG_LONG_MAX (4294967295U)
-#else // AXP and IA64
+
+#else // ALPHA, IA64, X86_64
 #define HAVE_GETTIMEOFDAY
 #define HAVE_USLEEP
 #define HAVE_STRCASECMP
 #define HAVE_STRINGS_H
 #define HAVE_SIGSETJMP
 #define HAVE_ISNAN
-#define HAVE_XOS_R_H
-#define HAVE_NO_LONG_LONG
+#undef  HAVE_XOS_R_H
+#undef  HAVE_NO_LONG_LONG
+#define VIM_SIZEOF_INT  4
 #define VIM_SIZEOF_LONG 8
 #define LONG_LONG_MIN  (-9223372036854775807-1)
 #define LONG_LONG_MAX  (9223372036854775807)
 #define ULONG_LONG_MAX (18446744073709551615U)
+
+#if defined(__x86_64) || defined(__x86_64__)
+#if !defined(X86_64)
+#define X86_64
+#endif
+#define HAVE_ISNAN
+#define HAVE_ISINF
+#define HAVE_XOS_R_H
+#endif
 #endif
 
 // Compiler specific
-#ifdef  VAXC
+#if defined(VAXC) || defined(__VAXC)
 #undef  HAVE_SELECT
 #undef  HAVE_FCNTL_H
 #undef  HAVE_UNISTD_H
 #define XUSE_MTSAFE_API
 #define HAVE_X11
 #define WANT_X11
-#ifdef HAVE_XPM
+#ifdef  HAVE_XPM
 #define HAVE_X11_XPM_H
 #endif
 #define USE_FONTSET
index e3ef693c723fd98b79896c62662a305087ad7b03..f710800dbce2a0d7de64841994d1bc0f11c98088 100644 (file)
@@ -30,5 +30,5 @@ void crypt_sodium_lock_key(char_u *key);
 int crypt_sodium_munlock(void *const addr, const size_t len);
 void crypt_sodium_randombytes_buf(void *const buf, const size_t size);
 int crypt_sodium_init(void);
-uint32_t crypt_sodium_randombytes_random(void);
+UINT32_T crypt_sodium_randombytes_random(void);
 /* vim: set ft=c : */
index b414e42d4b6a32d508922de12e03c5d0cfb75495..0fdb33e6d7c89ed0fa14c5106349dda032394472 100644 (file)
@@ -2983,7 +2983,7 @@ term_delete_lines(int line_count)
     OUT_STR(tgoto((char *)T_CDL, 0, line_count));
 }
 
-#if defined(UNIX) || defined(PROTO)
+#if defined(UNIX) || defined(VMS) || defined(PROTO)
     void
 term_enable_mouse(int enable)
 {
index 86505b1328935d50cc697c14b83ef2dc9917a444..dc39b5ca219b09962606b8f2656195780dfdc647 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2153,
 /**/
     2152,
 /**/
index 7d0d128ae27fa70c55c80f4e87ff62f40ca8687b..2d5ae99cb46d648a8c15c367ef06ac2c6f807ee9 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -439,7 +439,12 @@ typedef unsigned int u8char_T;     // int is 32 bits or more
  * The vimlong_T has sizeof(vimlong_T) >= 2 * sizeof(int).
  * One use is simple handling of overflow in int calculations.
  */
+#if defined(VMS) && defined(VAX)
+// unsupported compiler
+typedef long      vimlong_T;
+#else
 typedef long long vimlong_T;
+#endif
 
 #ifndef UNIX               // For Unix this is included in os_unix.h
 # include <stdio.h>
@@ -499,6 +504,10 @@ typedef long long vimlong_T;
 # include <wctype.h>
 #endif
 #include <stdarg.h>
+// older compilers do not define va_copy
+#ifndef va_copy
+# define va_copy(dst, src)     ((dst) = (src))
+#endif
 
 // for offsetof()
 #include <stddef.h>
index f58cf08e739a88262bd8c90bbed86c543c2439d1..028ca6e417a9f85ed731770207dceb6c1bce66a2 100644 (file)
@@ -24,7 +24,7 @@
 #define XMACROS_H
 
 
-#ifdef __hpux
+#if defined(__hpux) || defined(VMS)
 # ifndef SIZE_MAX
 #  define SIZE_MAX ((size_t)(-1))
 # endif