summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/os_vms.txt55
-rw-r--r--src/INSTALLvms.txt46
-rw-r--r--src/Make_vms.mms60
-rw-r--r--src/crypt.c2
-rw-r--r--src/gui.h10
-rw-r--r--src/macros.h4
-rw-r--r--src/map.c2
-rw-r--r--src/optionstr.c6
-rw-r--r--src/os_vms_conf.h37
-rw-r--r--src/proto/crypt.pro2
-rw-r--r--src/term.c2
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h9
-rw-r--r--src/xdiff/xmacros.h2
14 files changed, 178 insertions, 61 deletions
diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt
index 54eb63cad1..3c5d51707f 100644
--- a/runtime/doc/os_vms.txt
+++ b/runtime/doc/os_vms.txt
@@ -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
diff --git a/src/INSTALLvms.txt b/src/INSTALLvms.txt
index c235151165..97406ab535 100644
--- a/src/INSTALLvms.txt
+++ b/src/INSTALLvms.txt
@@ -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
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index 8dd5454e15..4c206018fc 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -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
diff --git a/src/crypt.c b/src/crypt.c
index d5d216b35f..09e9011964 100644
--- a/src/crypt.c
+++ b/src/crypt.c
@@ -1308,7 +1308,7 @@ crypt_sodium_init(void)
return sodium_init();
}
- uint32_t
+ UINT32_T
crypt_sodium_randombytes_random(void)
{
return randombytes_random();
diff --git a/src/gui.h b/src/gui.h
index 7bcbfa3538..0a1d274140 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -12,15 +12,9 @@
#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"
diff --git a/src/macros.h b/src/macros.h
index cc2d11fdd1..caacd3ae7a 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -278,6 +278,10 @@
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); }
diff --git a/src/map.c b/src/map.c
index 98785e722c..b7bb46c047 100644
--- 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;
diff --git a/src/optionstr.c b/src/optionstr.c
index d8e22c0378..ad1dc81a84 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -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;
diff --git a/src/os_vms_conf.h b/src/os_vms_conf.h
index 7de117c704..c1e1ea11b0 100644
--- a/src/os_vms_conf.h
+++ b/src/os_vms_conf.h
@@ -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
@@ -138,8 +142,11 @@
#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
@@ -148,27 +155,39 @@
#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
@@ -202,7 +221,7 @@
#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
diff --git a/src/proto/crypt.pro b/src/proto/crypt.pro
index e3ef693c72..f710800dbc 100644
--- a/src/proto/crypt.pro
+++ b/src/proto/crypt.pro
@@ -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 : */
diff --git a/src/term.c b/src/term.c
index b414e42d4b..0fdb33e6d7 100644
--- a/src/term.c
+++ b/src/term.c
@@ -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)
{
diff --git a/src/version.c b/src/version.c
index 86505b1328..dc39b5ca21 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2153,
+/**/
2152,
/**/
2151,
diff --git a/src/vim.h b/src/vim.h
index 7d0d128ae2..2d5ae99cb4 100644
--- 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>
diff --git a/src/xdiff/xmacros.h b/src/xdiff/xmacros.h
index f58cf08e73..028ca6e417 100644
--- a/src/xdiff/xmacros.h
+++ b/src/xdiff/xmacros.h
@@ -24,7 +24,7 @@
#define XMACROS_H
-#ifdef __hpux
+#if defined(__hpux) || defined(VMS)
# ifndef SIZE_MAX
# define SIZE_MAX ((size_t)(-1))
# endif