]> granicus.if.org Git - vim/commitdiff
patch 8.2.2294: VMS: a few remaining problems v8.2.2294
authorBram Moolenaar <Bram@vim.org>
Mon, 4 Jan 2021 09:47:26 +0000 (10:47 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 4 Jan 2021 09:47:26 +0000 (10:47 +0100)
Problem:    VMS: a few remaining problems.
Solution:   Add VMS specific changes. Add Lua support. (Zoltan Arpadffy)

src/Make_vms.mms
src/fileio.c
src/gui_xmebw.c
src/macros.h
src/os_unix.h
src/os_vms.c
src/os_vms_conf.h
src/version.c
src/vim9execute.c

index 70a87cfe2b122d604ed443b5d31e0fd0fcffcacb..36312363607fa1f5a4c5b6d7cd25c0ee211ccf04 100644 (file)
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2020 Dec 30
+# Last change:  2021 Jan 04
 #
 # This script has been tested on VMS 6.2 to 8.4 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -38,18 +38,18 @@ MODEL = HUGE
 # GUI or terminal mode executable.
 # Comment out if you want just the character terminal mode only.
 # GUI with Motif
-GUI = YES
+GUI = YES
 
 # GUI with GTK
 # If you have GTK installed you might want to enable this option.
 # NOTE: you will need to properly define GTK_DIR below
-# NOTE: since Vim 7.3 GTK 2+ is used that is not ported to VMS, 
-#       therefore this option should not be used  
+# NOTE: since Vim 7.3 GTK 2+ is used that is not ported to VMS,
+#       therefore this option should not be used
 # GTK = YES
 
 # GUI/Motif with XPM
 # If you have XPM installed you might want to build Motif version with toolbar
-XPM = YES
+XPM = YES
 
 # Comment out if you want the compiler version with :ver command.
 # NOTE: This part can make some complications if you're using some
@@ -59,7 +59,7 @@ CCVER = YES
 
 # Uncomment if want a debug version. Resulting executable is DVIM.EXE
 # Development purpose only! Normally, it should not be defined. !!!
-# DEBUG = YES 
+# DEBUG = YES
 
 # Languages support for Perl, Python, TCL etc.
 # If you don't need it really, leave them behind the comment.
@@ -68,6 +68,7 @@ CCVER = YES
 # VIM_PERL   = YES
 # VIM_PYTHON = YES
 # VIM_RUBY   = YES
+# VIM_LUA    = YES
 
 # X Input Method.  For entering special languages like chinese and
 # Japanese.
@@ -180,7 +181,7 @@ XPM_INC  = ,[.xpm.include]
 XPM_LIB  = ,OS_VMS_XPM.OPT/OPT
 .ELSE
 DEFS     = "HAVE_CONFIG_H","FEAT_GUI_MOTIF"
-XPM_INC  = 
+XPM_INC  =
 .ENDIF
 LIBS     = ,OS_VMS_MOTIF.OPT/OPT
 GUI_FLAG =
@@ -237,6 +238,15 @@ RUBY_LIB = ,OS_VMS_RUBY.OPT/OPT
 RUBY_INC =
 .ENDIF
 
+.IFDEF VIM_LUA
+# LUA related setup.
+LUA_DEF = ,"FEAT_LUA"
+LUA_SRC = if_lua.c
+LUA_OBJ = if_lua.obj
+LUA_LIB = ,OS_VMS_LUA.OPT/OPT
+LUA_INC = ,LUA$ROOT:[INCLUDE]
+.ENDIF
+
 .IFDEF VIM_XIM
 # XIM related setup.
 .IFDEF GUI
@@ -247,7 +257,7 @@ XIM_DEF = ,"FEAT_XIM"
 .IFDEF VIM_MZSCHEME
 # MZSCHEME related setup
 MZSCH_DEF = ,"FEAT_MZSCHEME"
-MZSCH_SRC = if_mzsch.c 
+MZSCH_SRC = if_mzsch.c
 MZSCH_OBJ = if_mzsch.obj
 .ENDIF
 
@@ -258,7 +268,7 @@ ICONV_DEF = ,"USE_ICONV"
 
 # XDIFF related setup.
 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_OBJ = xdiffi.obj,xemit.obj,xprepare.obj,xutils.obj,xhistogram.obj,xpatience.obj
 XDIFF_INC = ,[.xdiff]
 
 ######################################################################
@@ -275,7 +285,7 @@ VIMHOST = "''F$TRNLNM("SYS$NODE")'''F$TRNLNM("UCX$INET_HOST")'.''F$TRNLNM("UCX$I
 .SUFFIXES : .obj .c
 
 ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
- $(TCL_DEF)$(RUBY_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
+ $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) -
  $(ICONV_DEF)) -
  $(CFLAGS)$(GUI_FLAG) -
  /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC) -
@@ -286,14 +296,14 @@ ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
 # 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)$(RUBY_DEF)$(XIM_DEF)$(TAG_DEF)$(MZSCH_DEF) - 
+ $(TCL_DEF)$(RUBY_DEF)$(LUA_DEF)$(XIM_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)$(XDIFF_INC)$(XPM_INC))
 
 ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) $(XPM_LIB)\
-          $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB)
+          $(PERL_LIB) $(PYTHON_LIB) $(TCL_LIB) $(RUBY_LIB) $(LUA_LIB)
 
 SRC = \
        arabic.c \
@@ -408,6 +418,7 @@ SRC = \
        $(PYTHON_SRC) \
        $(TCL_SRC) \
        $(RUBY_SRC) \
+       $(LUA_SRC) \
        $(MZSCH_SRC) \
        $(XDIFF_SRC)
 
@@ -525,11 +536,12 @@ OBJ = \
        $(PYTHON_OBJ) \
        $(TCL_OBJ) \
        $(RUBY_OBJ) \
+       $(LUA_OBJ) \
        $(MZSCH_OBJ) \
        $(XDIFF_OBJ)
 
 # Default target is making the executable
-all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env ruby_env $(TARGET)
+all : [.auto]config.h mmk_compat motif_env gtk_env perl_env python_env tcl_env ruby_env lua_env $(TARGET)
        ! $@
 
 [.auto]config.h : $(CONFIG_H)
@@ -611,7 +623,7 @@ motif_env :
 .ENDIF
 .IFDEF MMSIA64
        -@ write opt_file "[.xpm.vms.ia64]libxpm.olb/lib"
-.ENDIF 
+.ENDIF
        -@ close opt_file
 .ELSE
        -@ write sys$output "using DECW/Motif environment."
@@ -709,11 +721,24 @@ ruby_env :
        -@ !
 .ENDIF
 
+.IFDEF VIM_LUA
+lua_env :
+       -@ write sys$output "using LUA environment:"
+       -@ write sys$output "    include path: ""$(LUA_INC)"""
+       -@ write sys$output "creating OS_VMS_LUA.OPT file."
+       -@ open/write opt_file OS_VMS_LUA.OPT
+       -@ write opt_file "LUA$ROOT:[LIB]LUA$SHR.EXE /share"
+       -@ close opt_file
+.ELSE
+lua_env :
+       -@ !
+.ENDIF
+
 arabic.obj : arabic.c vim.h
 arglist.obj : arglist.c vim.h [.auto]config.h feature.h os_unix.h
 autocmd.obj : autocmd.c vim.h [.auto]config.h feature.h os_unix.h
 blowfish.obj : blowfish.c vim.h [.auto]config.h feature.h os_unix.h
-blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h    
+blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h
 buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
@@ -873,7 +898,7 @@ if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.auto]config.h feature.h os_unix.h \
 if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
- errors.h globals.h if_mzsch.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
 json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
@@ -1167,6 +1192,8 @@ if_ruby.obj : if_ruby.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.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 version.h
+if_lua.obj : if_lua.c vim.h [.auto]config.h feature.h os_unix.h \
+ errors.h globals.h version.h
 beval.obj : beval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h option.h ex_cmds.h proto.h \
@@ -1186,4 +1213,4 @@ xemit.obj : [.xdiff]xemit.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h o
 xprepare.obj : [.xdiff]xprepare.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
 xutils.obj : [.xdiff]xutils.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
 xhistogram.obj : [.xdiff]xhistogram.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
-xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h       
+xpatience.obj : [.xdiff]xpatience.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
index b3b7100d641b3dce1926ff5ee2ee7643d7026752..1af0b4c59fdce821a6d45396a12f6da9e3cc2bbe 100644 (file)
 #if defined(__TANDEM)
 # include <limits.h>           // for SSIZE_MAX
 #endif
-#if defined(UNIX) && defined(FEAT_EVAL)
+#if (defined(UNIX) || defined(VMS)) && defined(FEAT_EVAL)
 # include <pwd.h>
 # include <grp.h>
 #endif
+#if defined(VMS) && defined(HAVE_XOS_R_H)
+# include <x11/xos_r.h>
+#endif
 
 // Is there any system that doesn't have access()?
 #define USE_MCH_ACCESS
@@ -338,7 +341,7 @@ readfile(
 
     if (!read_stdin && !read_buffer && !read_fifo)
     {
-#ifdef UNIX
+#if defined(UNIX) || defined(VMS)
        /*
         * On Unix it is possible to read a directory, so we have to
         * check for it before the mch_open().
@@ -4623,11 +4626,13 @@ create_readdirex_item(char_u *path, char_u *name)
            q = (char_u*)pw->pw_name;
        if (dict_add_string(item, "user", q) == FAIL)
            goto theend;
+#  if !defined(VMS) || (defined(VMS) && defined(HAVE_XOS_R_H))
        gr = getgrgid(st.st_gid);
        if (gr == NULL)
            q = (char_u*)"";
        else
            q = (char_u*)gr->gr_name;
+#  endif
        if (dict_add_string(item, "group", q) == FAIL)
            goto theend;
     }
index 6a01a7132402c9ab839e39077148a994097c4c83..2c66db121b444ccdbea438032d1649802af129d6 100644 (file)
     _XmDrawHighlight(a, b, c, d, e, f, g, h, LineSolid)
 #endif
 
+// Older VMS systems do not have xos_r.h and cannot haldle XtProcessLocking
+#if defined(VMS)
+# if defined(HAVE_XOS_R_H)
+#  define XTPROCESS_LOCK XtProcessLock()
+#  define XTPROCESS_UNLOCK XtProcessUnlock()
+# else
+#  define XTPROCESS_LOCK
+#  define XTPROCESS_UNLOCK
+# endif
+#else
+# define XTPROCESS_LOCK XtProcessLock()
+# define XTPROCESS_UNLOCK XtProcessUnlock()
+#endif
+
 /*
  * Motif internals we have to cheat around with.
  */
@@ -714,9 +728,9 @@ draw_label(XmEnhancedButtonWidget eb, XEvent *event, Region region)
     {
        XtExposeProc expose;
 
-       XtProcessLock();
+       XTPROCESS_LOCK;
        expose = xmLabelClassRec.core_class.expose;
-       XtProcessUnlock();
+       XTPROCESS_UNLOCK;
        (*expose)((Widget) eb, event, region);
     }
 
@@ -809,9 +823,9 @@ Enter(Widget wid,
        _XmPrimitiveEnter((Widget) eb, event, NULL, NULL);
        if (eb->pushbutton.armed == TRUE)
        {
-           XtProcessLock();
+           XTPROCESS_LOCK;
            expose = XtClass(eb)->core_class.expose;
-           XtProcessUnlock();
+           XTPROCESS_UNLOCK;
            (*expose) (wid, event, (Region) NULL);
        }
 
@@ -887,9 +901,9 @@ Leave(Widget wid,
        {
            XtExposeProc expose;
            eb->pushbutton.armed = FALSE;
-           XtProcessLock();
+           XTPROCESS_LOCK;
            expose = XtClass(eb)->core_class.expose;
-           XtProcessUnlock();
+           XTPROCESS_UNLOCK;
            (*expose) (wid, event, (Region)NULL);
            draw_unhighlight(eb);
            draw_pixmap(eb, event, NULL);
@@ -973,9 +987,9 @@ set_size(XmEnhancedButtonWidget newtb)
     // Invoke Label's Resize procedure.
     {
        XtWidgetProc resize;
-       XtProcessLock();
+       XTPROCESS_LOCK;
        resize = xmLabelClassRec.core_class.resize;
-       XtProcessUnlock();
+       XTPROCESS_UNLOCK;
 
        (* resize) ((Widget) newtb);
     }
@@ -988,9 +1002,9 @@ Initialize(Widget rq, Widget ebw, ArgList args UNUSED, Cardinal *n UNUSED)
     XmEnhancedButtonWidget  eb = (XmEnhancedButtonWidget)ebw;
     XtWidgetProc           resize;
 
-    XtProcessLock();
+    XTPROCESS_LOCK;
     resize = xmLabelClassRec.core_class.resize;
-    XtProcessUnlock();
+    XTPROCESS_UNLOCK;
 
     // Create a bitmap for stippling (Drawable resources are cheap).
     if (STIPPLE_BITMAP == None)
index 366413a917945c2f17e23e83125c728ca7603031..3db2456f3c877828e8c93de78898f386d4956888 100644 (file)
 # define mch_fstat(n, p)       fstat((n), (p))
 # undef HAVE_LSTAT             // VMS does not have lstat()
 # define mch_stat(n, p)                stat(vms_fixfilename(n), (p))
-# define mch_rmdir(n)          rmdir(vms_fixfilename(n))
 #else
 # ifndef MSWIN
 #   define mch_access(n, p)    access((n), (p))
index 46f4bba0122ba24c1c08ac4a5c1484917f35f4ab..83fe66d37ff4460c5d6e1778a3805d075c7b422c 100644 (file)
@@ -73,8 +73,9 @@
 // always use unlink() to remove files
 #ifndef PROTO
 # ifdef VMS
-#  define mch_remove(x) delete((char *)(x))
-#  define vim_mkdir(x, y) mkdir((char *)(x), y)
+#  define vim_mkdir(x, y) mkdir((char *)vms_fixfilename(x), y)
+#  define mch_rmdir(x)  delete((char *)vms_fixfilename(x))
+#  define mch_remove(x) delete((char *)vms_fixfilename(x))
 # else
 #  define vim_mkdir(x, y) mkdir((char *)(x), y)
 #  define mch_rmdir(x) rmdir((char *)(x))
index b8ad78898725b3e6c971ee95209ae974fe1caef6..6dc6ad41164908861a8df1a8e21c0dc2afc92fa0 100644 (file)
@@ -672,9 +672,18 @@ vms_fixfilename(void *instring)
     else if (strchr(instring,'"') == NULL)     // password in the path?
     {
        // Seems it is a regular file, let guess that it is pure Unix fspec
-       if (decc$to_vms(instring, vms_fspec_proc, 0, 0) <= 0)
-           // No... it must be mixed
+        if ( (strchr(instring,'[') == NULL) && (strchr(instring,'<') == NULL) &&
+            (strchr(instring,']') == NULL) && (strchr(instring,'>') == NULL) &&
+            (strchr(instring,':') == NULL) )
+       {
+           // It must be a truly unix fspec
+           decc$to_vms(instring, vms_fspec_proc, 0, 0);
+       }
+       else
+       {
+           // It is a mixed fspec
            vms_unix_mixed_filespec(instring, buf);
+       }
     }
     else
        // we have a password in the path
index deb7080607b0886293394619acd76adffd6e291c..df03b15047e1c9141dd461843e5959bb07fb8552 100644 (file)
 #undef  HAVE_FCHDIR
 #undef  HAVE_LSTAT
 #undef  HAVE_STDINT_H
-#undef  HAVE_XOS_R_H
 
 // Hardware specific
 #ifdef  VAX
 #undef  HAVE_STRINGS_H
 #undef  HAVE_SIGSETJMP
 #undef  HAVE_ISNAN
+#undef  HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
 #define VIM_SIZEOF_LONG 4
-#define LONG_LONG_MIN  (-2147483647-1)                                                                                                    
-#define LONG_LONG_MAX  (2147483647)                                                                                                     
+#define LONG_LONG_MIN  (-2147483647-1)
+#define LONG_LONG_MAX  (2147483647)
 #define ULONG_LONG_MAX (4294967295U)
-#undef  XTHREADS
 #else // AXP and IA64
 #define HAVE_GETTIMEOFDAY
 #define HAVE_USLEEP
 #define HAVE_STRINGS_H
 #define HAVE_SIGSETJMP
 #define HAVE_ISNAN
+#define HAVE_XOS_R_H
 #define HAVE_NO_LONG_LONG
 #define VIM_SIZEOF_LONG 8
-#define LONG_LONG_MIN  (-9223372036854775807-1)                                                                                                    
-#define LONG_LONG_MAX  (9223372036854775807)                                                                                                     
+#define LONG_LONG_MIN  (-9223372036854775807-1)
+#define LONG_LONG_MAX  (9223372036854775807)
 #define ULONG_LONG_MAX (18446744073709551615U)
-#define XTHREADS
 #endif
 
 // Compiler specific
index 258c7d90675df878bebfb0e4c5c6922400bb5627..db20152a312557109f3c52c75dd2fc41a7ba72a0 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2294,
 /**/
     2293,
 /**/
index 5cfc327e8e67861f63225b6fce0126b6542f466a..d0c2ebc706e1f793f6ac9ca0925bac436a5fd456 100644 (file)
@@ -3389,7 +3389,7 @@ ex_disassemble(exarg_T *eap)
                break;
            case ISN_EXECCONCAT:
                smsg("%4d EXECCONCAT %lld", current,
-                                             (long long)iptr->isn_arg.number);
+                                             (varnumber_T)iptr->isn_arg.number);
                break;
            case ISN_ECHO:
                {
@@ -3402,15 +3402,15 @@ ex_disassemble(exarg_T *eap)
                break;
            case ISN_EXECUTE:
                smsg("%4d EXECUTE %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
            case ISN_ECHOMSG:
                smsg("%4d ECHOMSG %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
            case ISN_ECHOERR:
                smsg("%4d ECHOERR %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
            case ISN_LOAD:
            case ISN_LOADOUTER:
@@ -3419,11 +3419,11 @@ ex_disassemble(exarg_T *eap)
 
                    if (iptr->isn_arg.number < 0)
                        smsg("%4d LOAD%s arg[%lld]", current, add,
-                               (long long)(iptr->isn_arg.number
+                               (varnumber_T)(iptr->isn_arg.number
                                                          + STACK_FRAME_SIZE));
                    else
                        smsg("%4d LOAD%s $%lld", current, add,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                }
                break;
            case ISN_LOADV:
@@ -3496,10 +3496,10 @@ ex_disassemble(exarg_T *eap)
 
                if (iptr->isn_arg.number < 0)
                    smsg("%4d STORE%s arg[%lld]", current, add,
-                        (long long)(iptr->isn_arg.number + STACK_FRAME_SIZE));
+                        (varnumber_T)(iptr->isn_arg.number + STACK_FRAME_SIZE));
                else
                    smsg("%4d STORE%s $%lld", current, add,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                }
                break;
            case ISN_STOREV:
@@ -3578,7 +3578,7 @@ ex_disassemble(exarg_T *eap)
            // constants
            case ISN_PUSHNR:
                smsg("%4d PUSHNR %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
            case ISN_PUSHBOOL:
            case ISN_PUSHSPEC:
@@ -3653,11 +3653,11 @@ ex_disassemble(exarg_T *eap)
                break;
            case ISN_NEWLIST:
                smsg("%4d NEWLIST size %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
            case ISN_NEWDICT:
                smsg("%4d NEWDICT size %lld", current,
-                                           (long long)(iptr->isn_arg.number));
+                                           (varnumber_T)(iptr->isn_arg.number));
                break;
 
            // function call
@@ -3924,10 +3924,10 @@ ex_disassemble(exarg_T *eap)
                                smsg("%4d 2BOOL (!!val)", current);
                            break;
            case ISN_2STRING: smsg("%4d 2STRING stack[%lld]", current,
-                                        (long long)(iptr->isn_arg.number));
+                                        (varnumber_T)(iptr->isn_arg.number));
                              break;
            case ISN_2STRING_ANY: smsg("%4d 2STRING_ANY stack[%lld]", current,
-                                        (long long)(iptr->isn_arg.number));
+                                        (varnumber_T)(iptr->isn_arg.number));
                              break;
            case ISN_RANGE: smsg("%4d RANGE %s", current, iptr->isn_arg.string);
                            break;