To: [email protected]
Subject: Patch 5.7a.006 (extra)
Fcc: outbox
From: Bram Moolenaar <[email protected]>
------------

Patch 5.7a.006 (extra)
Problem:    VMS: Various problems, also with the VAXC compiler.
Solution:   In many places use the Unix code for VMS too.
           Added time, date and compiler version to version message.
           (Zoltan Arpadffy)
Files:      src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h,
           src/main.c, src/message.c, src/misc1.c, src/os_vms.c,
           src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h,
           src/proto/os_vms.pro, src/proto/version.pro, src/term.c,
           src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c


*** ../vim-5.7a.5/src/ex_cmds.c Tue Jun 20 16:02:33 2000
--- src/ex_cmds.c       Tue Jun 20 15:55:51 2000
***************
*** 1295,1303 ****
     char_u        *tempname = NULL;   /* name of temp viminfo file */
     struct stat           st_new;             /* mch_stat() of potential new file */
     char_u        *wp;
 #ifdef UNIX
     int                   shortname = FALSE;  /* use 8.3 file name */
-     mode_t        umask_save;
     struct stat           st_old;             /* mch_stat() of existing viminfo file */
 #endif

--- 1295,1305 ----
     char_u        *tempname = NULL;   /* name of temp viminfo file */
     struct stat           st_new;             /* mch_stat() of potential new file */
     char_u        *wp;
+ #if defined(UNIX) || defined(VMS)
+      mode_t       umask_save;
+ #endif
 #ifdef UNIX
     int                   shortname = FALSE;  /* use 8.3 file name */
     struct stat           st_old;             /* mch_stat() of existing viminfo file */
 #endif

***************
*** 1315,1321 ****
           /* if it does exist, but we can't read it, don't try writing */
           if (mch_stat((char *)file, &st_new) == 0)
               goto end;
! #ifdef UNIX
           /*
            * For Unix we create the .viminfo non-accessible for others,
            * because it may contain text from non-accessible documents.
--- 1317,1323 ----
           /* if it does exist, but we can't read it, don't try writing */
           if (mch_stat((char *)file, &st_new) == 0)
               goto end;
! #if defined(UNIX) || defined(VMS)
           /*
            * For Unix we create the .viminfo non-accessible for others,
            * because it may contain text from non-accessible documents.
***************
*** 1323,1329 ****
           umask_save = umask(077);
 #endif
           fp_out = mch_fopen((char *)file, WRITEBIN);
! #ifdef UNIX
           (void)umask(umask_save);
 #endif
       }
--- 1325,1331 ----
           umask_save = umask(077);
 #endif
           fp_out = mch_fopen((char *)file, WRITEBIN);
! #if defined(UNIX) || defined(VMS)
           (void)umask(umask_save);
 #endif
       }
***************
*** 1525,1531 ****
--- 1527,1537 ----
       {
 #ifdef VIMINFO_FILE2
           /* don't use $HOME when not defined (turned into "c:/"!). */
+ # ifdef VMS
+           if (mch_getenv((char_u *)"SYS$LOGIN") == NULL)
+ # else
           if (mch_getenv((char_u *)"HOME") == NULL)
+ # endif
           {
               /* don't use $VIM when not available. */
               expand_env((char_u *)"$VIM", NameBuff, MAXPATHL);
*** ../vim-5.7a.5/src/ex_docmd.c        Wed Jun  7 13:53:53 2000
--- src/ex_docmd.c      Tue Jun 20 11:18:24 2000
***************
*** 121,127 ****
 static void   do_sleep __ARGS((EXARG *eap));
 static void   do_exmap __ARGS((EXARG *eap, int isabbrev));
 static void   do_winsize __ARGS((char_u *arg));
! #if defined(USE_GUI) || defined(UNIX)
 static void   do_winpos __ARGS((char_u *arg));
 #endif
 static void   do_exops __ARGS((EXARG *eap));
--- 121,127 ----
 static void   do_sleep __ARGS((EXARG *eap));
 static void   do_exmap __ARGS((EXARG *eap, int isabbrev));
 static void   do_winsize __ARGS((char_u *arg));
! #if defined(USE_GUI) || defined(UNIX) || defined(VMS)
 static void   do_winpos __ARGS((char_u *arg));
 #endif
 static void   do_exops __ARGS((EXARG *eap));
***************
*** 1962,1968 ****
               do_winsize(ea.arg);
               break;

! #if defined(USE_GUI) || defined(UNIX)
       case CMD_winpos:
               do_winpos(ea.arg);
               break;
--- 1962,1968 ----
               do_winsize(ea.arg);
               break;

! #if defined(USE_GUI) || defined(UNIX) || defined(VMS)
       case CMD_winpos:
               do_winpos(ea.arg);
               break;
***************
*** 6421,6427 ****
     char_u        *tofree;

     new_dir = eap->arg;
! #ifndef UNIX
     /* for non-UNIX ":cd" means: print current directory */
     if (*new_dir == NUL)
       do_pwd();
--- 6421,6427 ----
     char_u        *tofree;

     new_dir = eap->arg;
! #if !defined(UNIX) && !defined(VMS)
     /* for non-UNIX ":cd" means: print current directory */
     if (*new_dir == NUL)
       do_pwd();
***************
*** 6446,6457 ****
       else
           prev_dir = NULL;

! #ifdef UNIX
       /* for UNIX ":cd" means: go to home directory */
       if (*new_dir == NUL)
       {
           /* use NameBuff for home directory name */
           expand_env((char_u *)"$HOME", NameBuff, MAXPATHL);
           new_dir = NameBuff;
       }
 #endif
--- 6446,6467 ----
       else
           prev_dir = NULL;

! #if defined(UNIX) || defined(VMS)
       /* for UNIX ":cd" means: go to home directory */
       if (*new_dir == NUL)
       {
           /* use NameBuff for home directory name */
+ # ifdef VMS
+           char_u      *p;
+
+           p = mch_getenv((char_u *)"SYS$LOGIN");
+           if (p == NULL || *p == NUL) /* empty is the same as not set */
+               NameBuff[0] = NUL;
+           else
+               STRNCPY(NameBuff, p, MAXPATHL);
+ # else
           expand_env((char_u *)"$HOME", NameBuff, MAXPATHL);
+ # endif
           new_dir = NameBuff;
       }
 #endif
***************
*** 6545,6551 ****
     set_winsize(w, h, TRUE);
 }

! #if defined(USE_GUI) || defined(UNIX)
 /*
  * ":winpos" command.
  */
--- 6555,6561 ----
     set_winsize(w, h, TRUE);
 }

! #if defined(USE_GUI) || defined(UNIX) || defined(VMS)
 /*
  * ":winpos" command.
  */
*** ../vim-5.7a.5/src/globals.h Mon Dec 27 12:58:44 1999
--- src/globals.h       Tue Jun 20 21:28:04 2000
***************
*** 139,145 ****
 EXTERN int    quit_more INIT(= FALSE);    /* 'q' hit at "--more--" msg */
 EXTERN int    more_back INIT(= 0);        /* 'b' or 'u' at "--more--" msg */
 EXTERN int    more_back_used INIT(= FALSE); /* using more_back */
! #if defined(UNIX) || defined(__EMX__)
 EXTERN int    newline_on_exit INIT(= FALSE);  /* did msg in altern. screen */
 EXTERN int    intr_char INIT(= 0);        /* extra interrupt character */
 #endif
--- 139,145 ----
 EXTERN int    quit_more INIT(= FALSE);    /* 'q' hit at "--more--" msg */
 EXTERN int    more_back INIT(= 0);        /* 'b' or 'u' at "--more--" msg */
 EXTERN int    more_back_used INIT(= FALSE); /* using more_back */
! #if defined(UNIX) || defined(__EMX__) || defined(VMS)
 EXTERN int    newline_on_exit INIT(= FALSE);  /* did msg in altern. screen */
 EXTERN int    intr_char INIT(= 0);        /* extra interrupt character */
 #endif
***************
*** 623,629 ****
--- 623,633 ----
 /* these are in version.c */
 extern char *Version;
 extern char *mediumVersion;
+ #if defined(HAVE_DATE_TIME) && defined(VMS) && defined(VAXC)
+ extern char longVersion[];
+ #else
 extern char *longVersion;
+ #endif

 /*
  * Some file names for Unix are stored in pathdef.c, to make their value
***************
*** 635,640 ****
--- 639,647 ----
 extern char_u *default_vimruntime_dir;
 extern char_u *all_cflags;
 extern char_u *all_lflags;
+ # ifdef VMS
+ extern char_u *compiler_version;
+ # endif
 extern char_u *compiled_user;
 extern char_u *compiled_sys;
 #endif
*** ../vim-5.7a.5/src/gui_vms_conf.h    Wed Jun  7 17:03:43 2000
--- src/gui_vms_conf.h  Mon Jun 19 09:57:06 2000
***************
*** 65,70 ****
--- 65,73 ----
 /* Define to `int' if <sys/types.h> doesn't define.  */
 /* #undef gid_t */

+ /* Define to `long' if <sys/types.h> doesn't define.  */
+ /* #undef ino_t */
+
 /* Define if you can safely include both <sys/time.h> and <time.h>.  */
 #define TIME_WITH_SYS_TIME 1

***************
*** 77,82 ****
--- 80,88 ----
 /* Define as the command at the end of signal handlers ("" or "return 0;").  */
 #define SIGRETURN return

+ /* Define if struct sigcontext is present */
+ #define HAVE_SIGCONTEXT 1
+
 /* Define if touuper/tolower only work on lower/upercase characters */
 /* #undef BROKEN_TOUPPER */

***************
*** 113,118 ****
--- 119,130 ----
 /* Define if you have the rename() function. */
 #define HAVE_RENAME 1

+ /* Define if you have the qsort() function. */
+ #define HAVE_QSORT 1
+
+ /* Define if you have the strftime() function.  */
+ #define HAVE_STRFTIME 1
+
 /* Define if you have the fsync() function. */
 #define HAVE_FSYNC 1

***************
*** 167,173 ****
--- 179,189 ----
 /*#define HAVE_TERMCAP_H 1*/

 /* Define if you have the <fcntl.h> header file.  */
+ #ifdef        VAXC
+ #undef HAVE_FCNTL_H
+ #else
 #define HAVE_FCNTL_H 1
+ #endif

 /* Define if you have the <sgtty.h> header file.  */
 /* #undef HAVE_SGTTY_H */
***************
*** 219,221 ****
--- 235,253 ----

 /* Define if you have the <pwd.h> header file. */
 /*#define HAVE_PWD_H 1*/
+
+ /* Define if you have the <Xm/Xm.h> header file (only used by configure). */
+ /* #undef HAVE_XM_XM_H */
+
+ /* Define if strings.h cannot be included when string.h already is */
+ /* #undef NO_STRINGS_WITH_STRING_H */
+
+ /* Define if you want to include fontset support. */
+ #define USE_FONTSET 1
+
+ /* Define if your libc doesn't work POSIX.2 locale function correctly */
+ #define BROKEN_LOCALE 1
+
+ /* Define if your X has own locale library */
+ /* #undef X_LOCALE */
+
*** ../vim-5.7a.5/src/main.c    Tue May  9 20:57:12 2000
--- src/main.c  Tue Jun 20 20:38:10 2000
***************
*** 328,333 ****
--- 328,337 ----
     gui_prepare(&argc, argv); /* Prepare for possibly starting GUI sometime */
 #endif

+ #if defined(HAVE_DATE_TIME) && defined(VMS) && defined(VAXC)
+     make_version();
+ #endif
+
     /*
      * Allocate space for the generic buffers (needed for set_init_1() and
      * EMSG2()).
***************
*** 1019,1030 ****
        */
       if (p_exrc)
       {
! #ifdef UNIX
           {
               struct stat s;

               /* if ".vimrc" file is not owned by user, set 'secure' mode */
!               if (mch_stat(VIMRC_FILE, &s) || s.st_uid != getuid())
                   secure = p_secure;
           }
 #else
--- 1023,1041 ----
        */
       if (p_exrc)
       {
! #if defined(UNIX) || defined(VMS)
           {
               struct stat s;

               /* if ".vimrc" file is not owned by user, set 'secure' mode */
!
!               if (mch_stat(VIMRC_FILE, &s) || s.st_uid !=
! # ifdef UNIX
!                               getuid()
! # else         /* VMS */
!                               ((getgid() << 16) | getuid())
! # endif
!                   )
                   secure = p_secure;
           }
 #else
***************
*** 1051,1061 ****

           if (i == FAIL)
           {
! #ifdef UNIX
               struct stat s;

               /* if ".exrc" is not owned by user set 'secure' mode */
!               if (mch_stat(EXRC_FILE, &s) || s.st_uid != getuid())
                   secure = p_secure;
               else
                   secure = 0;
--- 1062,1078 ----

           if (i == FAIL)
           {
! #if defined(UNIX) || defined(VMS)
               struct stat s;

               /* if ".exrc" is not owned by user set 'secure' mode */
!               if (mch_stat(EXRC_FILE, &s) || s.st_uid !=
! # ifdef UNIX
!                               getuid()
! # else         /* VMS */
!                               ((getgid() << 16) | getuid())
! # endif
!                   )
                   secure = p_secure;
               else
                   secure = 0;
*** ../vim-5.7a.5/src/message.c Tue Jun  6 12:45:32 2000
--- src/message.c       Tue Jun 20 11:54:36 2000
***************
*** 657,663 ****
     /*
      * When switching screens, we need to output an extra newline on exit.
      */
! #ifdef UNIX
     if (swapping_screen() && !termcap_active)
       newline_on_exit = TRUE;
 #endif
--- 657,663 ----
     /*
      * When switching screens, we need to output an extra newline on exit.
      */
! #if defined(UNIX) || defined(VMS)
     if (swapping_screen() && !termcap_active)
       newline_on_exit = TRUE;
 #endif
*** ../vim-5.7a.5/src/misc1.c   Sun Jun 18 15:33:52 2000
--- src/misc1.c Tue Jun 20 21:30:53 2000
***************
*** 2232,2238 ****
--- 2232,2243 ----
 {
     char_u  *var;

+ #ifdef VMS
+     var = mch_getenv((char_u *)"SYS$LOGIN");
+ #else
     var = mch_getenv((char_u *)"HOME");
+ #endif
+
     if (var != NULL && *var == NUL)   /* empty is same as not set */
       var = NULL;
 #if defined(OS2) || defined(MSDOS) || defined(MSWIN)
***************
*** 2331,2341 ****
           }
           else                                        /* user directory */
           {
! #ifndef UNIX
!               /* cannot expand user's home directory, so don't try */
!               var = NULL;
!               tail = (char_u *)"";    /* for gcc */
! #else
               /*
                * Copy ~user to dst[], so we can put a NUL after it.
                */
--- 2336,2342 ----
           }
           else                                        /* user directory */
           {
! #if defined(UNIX) || (defined(VMS) && defined(USER_HOME))
               /*
                * Copy ~user to dst[], so we can put a NUL after it.
                */
***************
*** 2348,2361 ****
                       && !vim_ispathsep(*tail))
                   *var++ = *tail++;
               *var = NUL;
!
               /*
                * If the system supports getpwnam(), use it.
                * Otherwise, or if getpwnam() fails, the shell is used to
                * expand ~user.  This is slower and may fail if the shell
                * does not support ~user (old versions of /bin/sh).
                */
! # if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
               {
                   struct passwd *pw;

--- 2349,2362 ----
                       && !vim_ispathsep(*tail))
                   *var++ = *tail++;
               *var = NUL;
! # ifdef UNIX
               /*
                * If the system supports getpwnam(), use it.
                * Otherwise, or if getpwnam() fails, the shell is used to
                * expand ~user.  This is slower and may fail if the shell
                * does not support ~user (old versions of /bin/sh).
                */
! #  if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
               {
                   struct passwd *pw;

***************
*** 2366,2379 ****
                       var = NULL;
               }
               if (var == NULL)
! # endif
               {
                   expand_context = EXPAND_FILES;
                   var = ExpandOne(dst, NULL, WILD_ADD_SLASH|WILD_SILENT,
                                                           WILD_EXPAND_FREE);
                   mustfree = TRUE;
               }
! #endif /* UNIX */
           }

           if (var != NULL && *var != NUL &&
--- 2367,2416 ----
                       var = NULL;
               }
               if (var == NULL)
! #  endif
               {
                   expand_context = EXPAND_FILES;
                   var = ExpandOne(dst, NULL, WILD_ADD_SLASH|WILD_SILENT,
                                                           WILD_EXPAND_FREE);
                   mustfree = TRUE;
               }
!
! # else        /* !UNIX, thus VMS */
!               /*
!                * USER_HOME is a comma-separated list of
!                * directories to search for the user account in.
!                */
!               {
!                   char_u      test[MAXPATHL], paths[MAXPATHL];
!                   char_u      *path, *next_path, *ptr;
!                   struct stat st;
!
!                   STRCPY(paths, USER_HOME);
!                   next_path = paths;
!                   while (*next_path)
!                   {
!                       for (path = next_path; *next_path && *next_path != ',';
!                               next_path++);
!                       if (*next_path)
!                           *next_path++ = NUL;
!                       STRCPY(test, path);
!                       STRCAT(test, "/");
!                       STRCAT(test, dst + 1);
!                       if (mch_stat(test, &st) == 0)
!                       {
!                           var = alloc(STRLEN(test) + 1);
!                           STRCPY(var, test);
!                           mustfree = TRUE;
!                           break;
!                       }
!                   }
!               }
! # endif /* UNIX */
! #else
!               /* cannot expand user's home directory, so don't try */
!               var = NULL;
!               tail = (char_u *)"";    /* for gcc */
! #endif /* UNIX || VMS */
           }

           if (var != NULL && *var != NUL &&
***************
*** 2699,2705 ****
--- 2736,2748 ----
      */
     if (homedir != NULL)
       dirlen = STRLEN(homedir);
+
+ #ifdef VMS
+     homedir_env = mch_getenv((char_u *)"SYS$LOGIN");
+ #else
     homedir_env = mch_getenv((char_u *)"HOME");
+ #endif
+
     if (homedir_env != NULL && *homedir_env == NUL)
       homedir_env = NULL;
     if (homedir_env != NULL)
*** ../vim-5.7a.5/src/os_vms.c  Wed Jun  7 13:08:19 2000
--- src/os_vms.c        Tue Jun 20 12:08:46 2000
***************
*** 95,104 ****
 static int    get_x11_title __ARGS((int));
 static int    get_x11_icon __ARGS((int));
 static char_u *oldtitle = NULL;
! static int      did_set_title = FALSE;
 static char_u *fixedtitle = (char_u *)"Thanks for flying Vim";
 static char_u *oldicon = NULL;
! static int      did_set_icon = FALSE;
 #endif

 static void   may_core_dump __ARGS((void));
--- 95,104 ----
 static int    get_x11_title __ARGS((int));
 static int    get_x11_icon __ARGS((int));
 static char_u *oldtitle = NULL;
! static int    did_set_title = FALSE;
 static char_u *fixedtitle = (char_u *)"Thanks for flying Vim";
 static char_u *oldicon = NULL;
! static int    did_set_icon = FALSE;
 #endif

 static void   may_core_dump __ARGS((void));
***************
*** 118,124 ****
 static int    do_resize = FALSE;
 static char_u *extra_shell_arg = NULL;
 static int    show_shell_mess = TRUE;
! static int      deadly_signal = 0;    /* The signal we caught */
 static TT_MODE        orgmode;

 static void   ass_tty(void);
--- 118,124 ----
 static int    do_resize = FALSE;
 static char_u *extra_shell_arg = NULL;
 static int    show_shell_mess = TRUE;
! static int    deadly_signal = 0;      /* The signal we caught */
 static TT_MODE        orgmode;

 static void   ass_tty(void);
***************
*** 380,386 ****
    static RETSIGTYPE
 deathtrap SIGDEFARG(sigarg)
 {
!     static int      entered = 0;
 #ifdef SIGHASARG
     int     i;

--- 380,386 ----
    static RETSIGTYPE
 deathtrap SIGDEFARG(sigarg)
 {
!     static int            entered = 0;
 #ifdef SIGHASARG
     int     i;

***************
*** 589,595 ****
--- 589,599 ----
     for (i = 0; signal_info[i].sig != -1; i++)
       if (signal_info[i].deadly)
           signal(signal_info[i].sig, func_deadly);
+ #ifdef SIG_ERR
       else if (func_other != SIG_ERR)
+ #else
+       else if (func_other != BADSIG)
+ #endif
           signal(signal_info[i].sig, func_other);
 }

***************
*** 1070,1077 ****
--- 1074,1085 ----
     /* presumably compiled with /decc */
     strcpy((char *)s, (char *)sys_hostname);
 #else
+ # ifdef VAXC
     /* presumably compiled with /standard=vaxc */
+     vaxc$gethostname((char *)s, len);
+ # else
     gethostname((char *)s, len);
+ # endif
 #endif
 }

***************
*** 1259,1265 ****
     void
 mch_windexit(int r)
 {
-     settmode(TMODE_COOK);
     exiting = TRUE;

 #ifdef USE_GUI
--- 1267,1272 ----
***************
*** 1271,1276 ****
--- 1278,1292 ----
 #endif
       stoptermcap();

+       /*
+        * A newline is only required after a message in the alternate screen.
+        * This is set to TRUE by wait_return().
+        */
+       if (newline_on_exit || (msg_didout && !swapping_screen()))
+           out_char('\n');
+       else
+           msg_clr_eos();  /* clear the rest of the display */
+
       /* Cursor may have been switched off without calling starttermcap()
        * when doing "vim -u vimrc" and vimrc contains ":q". */
       if (full_screen)
***************
*** 1279,1284 ****
--- 1295,1301 ----
     vms_flushbuf();
     ml_close_all(TRUE);                       /* remove all memfiles */
     may_core_dump();
+     settmode(TMODE_COOK);
 #ifdef USE_GUI
     if (gui.in_use)
       gui_exit(r);
***************
*** 1503,1519 ****
 mch_setmouse(int on)
 {
     static int        ison = FALSE;

     if (on == ison)           /* return quickly if nothing to do */
       return;
!     if (vim_is_xterm(term_str(KS_NAME)))
     {
!       if (on)
!           OUT_STR_NF((char_u *)"\033[?1000h"); /* xterm: enable mouse events */
!       else
!           OUT_STR_NF((char_u *)"\033[?1000l"); /* xterm: disable mouse events */
!     }
     ison = on;
 }

 /*
--- 1520,1551 ----
 mch_setmouse(int on)
 {
     static int        ison = FALSE;
+     int               xterm_mouse_vers;

     if (on == ison)           /* return quickly if nothing to do */
       return;
!
!     xterm_mouse_vers = use_xterm_mouse();
!     if (xterm_mouse_vers > 0)
     {
!       if (on) /* enable mouse events, use mouse tracking if available */
!         out_str_nf((char_u *)
!                 (xterm_mouse_vers > 1 ? "\033[?1002h" : "\033[?1000h"));
!       else    /* disable mouse events, could probably always send the same */
!         out_str_nf((char_u *)
!                 (xterm_mouse_vers > 1 ? "\033[?1002l" : "\033[?1000l"));
!       ison = on;
!     }
! #if defined(DEC_MOUSE)
!     else if (use_dec_mouse())
!     {
!       if (on) /* enable mouse events */
!         out_str_nf((char_u *) "\033[1;2'z\033[1;3'{");
!       else    /* disable mouse events */
!         out_str_nf((char_u *) "\033['z");
     ison = on;
+     }
+ #endif /* DEC_MOUSE */
 }

 /*
***************
*** 1571,1577 ****
     return 0;
 }

! #endif

 /*
  * set screen mode, always fails.
--- 1603,1624 ----
     return 0;
 }

! #if defined(DEC_MOUSE)
! /*
!  * Return non-zero when using a DEC mouse, according to 'ttymouse'.
!  */
!     int
! use_dec_mouse()
! {
!     if (STRNICMP(p_ttym, "dec", 3) == 0)
!     {
!       return 1;
!     }
!     return 0;
! }
! #endif /* DEC_MOUSE */
!
! #endif /* USE_MOUSE */

 /*
  * set screen mode, always fails.
***************
*** 1708,1725 ****
     static int
 WaitForChar(long msec)
 {
!     if (vim_is_input_buf_empty())
     {
       if (RealWaitForChar(0, msec))
       {
           add_to_input_buf((char_u *)ibuf, 1);
           return 1;
       }
       else
           return 0;
     }
-     else
-       return 1;
 }

 /*
--- 1755,1781 ----
     static int
 WaitForChar(long msec)
 {
!     if (!vim_is_input_buf_empty())    /* something in inbuf[] */
!       return 1;
!
! #if defined(DEC_MOUSE)
!     /* May need to query the mouse position. */
!     if (WantQueryMouse)
     {
+       WantQueryMouse = 0;
+       mch_write((char_u *)"\033[1'|", 5);
+     }
+ #endif
+
       if (RealWaitForChar(0, msec))
       {
           add_to_input_buf((char_u *)ibuf, 1);
           return 1;
       }
       else
+     {
           return 0;
     }
 }

 /*
*** ../vim-5.7a.5/src/os_vms.h  Fri May  5 16:54:28 2000
--- src/os_vms.h        Tue Jun 20 12:11:25 2000
***************
*** 8,15 ****

 #include <stdio.h>
 #include <ctype.h>
! #include <sys/types.h>
! #include <sys/stat.h>

 #ifdef HAVE_STDLIB_H
 # include <stdlib.h>
--- 8,21 ----

 #include <stdio.h>
 #include <ctype.h>
!
! #ifdef VAXC
! # include <types.h>
! # include <stat.h>
! #else
! # include <sys/types.h>
! # include <sys/stat.h>
! #endif

 #ifdef HAVE_STDLIB_H
 # include <stdlib.h>
***************
*** 156,172 ****
 # define W_OK 2                       /* for systems that don't have W_OK in unistd.h */
 #endif

 /*
  * System definitions
  */

! /* Open VMS is case insensitive */
! #define CASE_INSENSITIVE_FILENAME
!
! /* Use binary fileio */
! #define BINARY_FILE_IO

! /* #define USE_TMPNAM */              /* use tmpnam() instead of mktemp() */

 /*
  * system-dependent filenames
--- 162,182 ----
 # define W_OK 2                       /* for systems that don't have W_OK in unistd.h */
 #endif

+ #ifndef R_OK
+ # define R_OK 4                       /* for systems that don't have R_OK in unistd.h */
+ #endif
+
+
 /*
  * System definitions
  */

! #define CASE_INSENSITIVE_FILENAME     /* Open VMS is case insensitive */
! #define SPACE_IN_FILENAME                     /* There is space between user and passwd */
! #define FNAME_ILLEGAL "|*#?%"         /* Illegal characters in a file name */
! #define BINARY_FILE_IO                                /* Use binary fileio */

! /* #define USE_TMPNAM */                      /* use tmpnam() instead of mktemp() */

 /*
  * system-dependent filenames
***************
*** 176,193 ****
 # define USR_EXRC_FILE        "sys$login:.exrc"
 #endif

 #ifndef USR_VIMRC_FILE
 # define USR_VIMRC_FILE       "sys$login:.vimrc"
 #endif

! #ifndef SYS_VIMRC_FILE
! # define SYS_VIMRC_FILE       "$VIM/vimrc"
 #endif

 #ifdef USE_GUI
 # ifndef USR_GVIMRC_FILE
 #  define USR_GVIMRC_FILE     "sys$login:.gvimrc"
 # endif
 #endif

 #ifdef USE_GUI
--- 186,214 ----
 # define USR_EXRC_FILE        "sys$login:.exrc"
 #endif

+ #ifndef USR_EXRC_FILE2
+ # define USR_EXRC_FILE2  "sys$login:_exrc"
+ #endif
+
 #ifndef USR_VIMRC_FILE
 # define USR_VIMRC_FILE       "sys$login:.vimrc"
 #endif

! #ifndef USR_VIMRC_FILE2
! # define USR_VIMRC_FILE2 "sys$login:_vimrc"
 #endif

 #ifdef USE_GUI
 # ifndef USR_GVIMRC_FILE
 #  define USR_GVIMRC_FILE     "sys$login:.gvimrc"
 # endif
+ # ifndef USR_GVIMRC_FILE2
+ #  define USR_GVIMRC_FILE2   "sys$login:_gvimrc"
+ # endif
+ #endif
+
+ #ifndef SYS_VIMRC_FILE
+ # define SYS_VIMRC_FILE "$VIM/vimrc"
 #endif

 #ifdef USE_GUI
***************
*** 231,246 ****

 #ifdef VIMINFO
 # ifndef VIMINFO_FILE
! #  define VIMINFO_FILE        "sys$login:.viminfo"
 # endif
 #endif /* VIMINFO */

 #ifndef DEF_BDIR
! # define DEF_BDIR             "./,tmp:,sys$login:"    /* default for 'backupdir' */
 #endif

 #ifndef DEF_DIR
! # define DEF_DIR              "./,tmp:,sys$login:"    /* default for 'directory' */
 #endif

 #define TEMPNAME              "tmp:v?XXXXXX.txt"
--- 252,279 ----

 #ifdef VIMINFO
 # ifndef VIMINFO_FILE
! #  define VIMINFO_FILE                "sys$login:.viminfo"
! # endif
! # ifndef VIMINFO_FILE2
! #  define VIMINFO_FILE2               "sys$login:_viminfo"
 # endif
 #endif /* VIMINFO */

+ /*
+ * This should contain a comma-separated list of all the user account base
+ * directories on your system.  For instance, if accounts are found in
+ * USER:[000000] and USER2:[000000], define USER_HOME as follows:
+ */
+ #ifndef USER_HOME
+ # define USER_HOME    "/user,/user2"
+ #endif
+
 #ifndef DEF_BDIR
! # define DEF_BDIR             "./,sys$login:,tmp:"    /* default for 'backupdir' */
 #endif

 #ifndef DEF_DIR
! # define DEF_DIR              "./,sys$login:,tmp:"    /* default for 'directory' */
 #endif

 #define TEMPNAME              "tmp:v?XXXXXX.txt"
***************
*** 249,256 ****
 #define CMDBUFFSIZE   1024    /* size of the command processing buffer */
 #define MAXPATHL      1024    /* VMS has long paths and plenty of memory */

! #define CHECK_INODE                /* used when checking if a swap file already
!                                                           exists for a file */

 #ifndef MAXMEM
 # define MAXMEM                       512                     /* use up to 512Kbyte for buffer */
--- 282,289 ----
 #define CMDBUFFSIZE   1024    /* size of the command processing buffer */
 #define MAXPATHL      1024    /* VMS has long paths and plenty of memory */

! #define CHECK_INODE                   /* used when checking if a swap file already
!                                                          exists for a file */

 #ifndef MAXMEM
 # define MAXMEM                       512                     /* use up to 512Kbyte for buffer */
***************
*** 282,288 ****
 #define mch_rename(src, dst) rename(src, dst)
 #define mch_chdir(s) chdir(vms_fixfilename(s))

! /* modifications by C Campbell */
! typedef     struct dsc$descriptor   DESC;
 #define ERRORFILE   "errors.err"
 #define MAKEEF        "tmp:vim##.err"     /* user must assign tmp: */
--- 315,320 ----
 #define mch_rename(src, dst) rename(src, dst)
 #define mch_chdir(s) chdir(vms_fixfilename(s))

! typedef struct dsc$descriptor   DESC;
 #define ERRORFILE   "errors.err"
 #define MAKEEF        "tmp:vim##.err"     /* user must assign tmp: */
*** ../vim-5.7a.5/src/os_vms.mms        Fri May  5 18:22:34 2000
--- src/os_vms.mms      Tue Jun 20 12:15:50 2000
***************
*** 2,9 ****
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <[email protected]>
! # Last change:  2000 May 5
! #
 # This has been tested on VMS 6.2 to 7.1 on DEC Alpha and VAX.
 # The following will be built:
 #     vim.exe:        standard
--- 2,9 ----
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <[email protected]>
! # Last change:  2000 Apr 7
! #
 # This has been tested on VMS 6.2 to 7.1 on DEC Alpha and VAX.
 # The following will be built:
 #     vim.exe:        standard
***************
*** 22,34 ****
 ######################################################################
 # Configuration section.
 ######################################################################
!
 # Comment out if you want just the character terminal mode only.
 GUI = YES

 ######################################################################
 # Comment out if you want the compiler version with :ver command.
! # NOTE: This part can make some complications if you're using some
 # predefined symbols/flags for your compiler. If does, just leave behind
 # the comment varialbe CCVER.
 ######################################################################
--- 22,41 ----
 ######################################################################
 # Configuration section.
 ######################################################################
! # GUI or terminal mode executable.
 # Comment out if you want just the character terminal mode only.
+ ######################################################################
 GUI = YES

+ #####################################################################
+ # Compiler selection.
+ # Comment out if you use the VAXC compiler
+ ######################################################################
+ DECC = YES
+
 ######################################################################
 # Comment out if you want the compiler version with :ver command.
! # NOTE: This part can make some complications if you're using some
 # predefined symbols/flags for your compiler. If does, just leave behind
 # the comment varialbe CCVER.
 ######################################################################
***************
*** 55,73 ****
 # VIM_SNIFF  = YES
 # VIM_PYTHON = YES

 .IFDEF GUI
 ######################################################################
 # X/Motif executable  (also works in terminal mode )
 ######################################################################
! DEFS     = "HAVE_CONFIG_H","USE_GUI_MOTIF"
 LIBS   = ,OS_VMS.OPT/OPT
 CONFIG_H = gui_vms_conf.h
 GUI_SRC  = gui.c gui_motif.c gui_x11.c
 GUI_OBJ  = gui.obj gui_motif.obj gui_x11.obj
 GUI_INC  = gui.h

- # These may need to be defined if things are not in standard locations:
-
 # GUI_INC_DIR = decw$include:
 # GUI_LIB_DIR = sys$library:
 # X_LIB_DIR   =
--- 62,85 ----
 # VIM_SNIFF  = YES
 # VIM_PYTHON = YES

+ ######################################################################
+ # Library and include files configuration section.
+ #
+ # Normally you need not to change anything below.
+ # These may need to be defined if things are not in standard locations
+ ######################################################################
+
 .IFDEF GUI
 ######################################################################
 # X/Motif executable  (also works in terminal mode )
 ######################################################################
! DEFS   = "HAVE_CONFIG_H","USE_GUI_MOTIF"
 LIBS   = ,OS_VMS.OPT/OPT
 CONFIG_H = gui_vms_conf.h
 GUI_SRC  = gui.c gui_motif.c gui_x11.c
 GUI_OBJ  = gui.obj gui_motif.obj gui_x11.obj
 GUI_INC  = gui.h

 # GUI_INC_DIR = decw$include:
 # GUI_LIB_DIR = sys$library:
 # X_LIB_DIR   =
***************
*** 78,84 ****
 ######################################################################
 # Character terminal only executable
 ######################################################################
! DEFS     = "HAVE_CONFIG_H"
 LIBS   =
 CONFIG_H = os_vms_conf.h
 .ENDIF
--- 90,96 ----
 ######################################################################
 # Character terminal only executable
 ######################################################################
! DEFS   = "HAVE_CONFIG_H"
 LIBS   =
 CONFIG_H = os_vms_conf.h
 .ENDIF
***************
*** 90,101 ****
 PERL_DEF = ,"HAVE_PERL_INTERP"
 PERL_SRC = if_perlsfio.c if_perl.xs
 PERL_OBJ = if_perlsfio.obj if_perl.obj
! PERL_LIB =
 .ENDIF

 .IFDEF VIM_PYTHON
 ######################################################################
! # Python related setup.
 ######################################################################
 PYTHON_DEF = ,"HAVE_PYTHON"
 PYTHON_SRC = if_python.c
--- 102,113 ----
 PERL_DEF = ,"HAVE_PERL_INTERP"
 PERL_SRC = if_perlsfio.c if_perl.xs
 PERL_OBJ = if_perlsfio.obj if_perl.obj
! PERL_LIB =
 .ENDIF

 .IFDEF VIM_PYTHON
 ######################################################################
! # Python related setup.
 ######################################################################
 PYTHON_DEF = ,"HAVE_PYTHON"
 PYTHON_SRC = if_python.c
***************
*** 105,111 ****

 .IFDEF VIM_TCL
 ######################################################################
! # TCL related setup.
 ######################################################################
 TCL_DEF = ,"HAVE_TCL"
 TCL_SRC = if_tcl.c
--- 117,123 ----

 .IFDEF VIM_TCL
 ######################################################################
! # TCL related setup.
 ######################################################################
 TCL_DEF = ,"HAVE_TCL"
 TCL_SRC = if_tcl.c
***************
*** 115,126 ****

 .IFDEF VIM_SNIFF
 ######################################################################
! # SNIFF related setup.
 ######################################################################
 SNIFF_DEF = ,"USE_SNIFF"
 SNIFF_SRC = if_sniff.c
 SNIFF_OBJ = if_sniff.obj
! SNIFF_LIB =
 .ENDIF

 ######################################################################
--- 127,138 ----

 .IFDEF VIM_SNIFF
 ######################################################################
! # SNIFF related setup.
 ######################################################################
 SNIFF_DEF = ,"USE_SNIFF"
 SNIFF_SRC = if_sniff.c
 SNIFF_OBJ = if_sniff.obj
! SNIFF_LIB =
 .ENDIF

 ######################################################################
***************
*** 130,157 ****
 ######################################################################

 CC      = cc
 CC_DEF        = $(CC)/decc
 LD_DEF        = link

 .IFDEF DEBUG
 TARGET  = dvim.exe
! CFLAGS        = /debug/noopt/prefix=all/include=[.proto]
 LDFLAGS       = /debug
 .ELSE
 TARGET  = vim.exe
! CFLAGS        = /opt/prefix=all/include=[.proto]
 LDFLAGS       =
 .ENDIF

!
! ### These go into pathdef.c
 VIMLOC  = ""
 VIMRUN  = ""
 VIMUSER = "''f$extract(f$locate(",",f$user())+1,f$length(f$user())-f$locate(",",f$user())-2,f$user())'"
 VIMHOST = "''f$extract(0,f$length(f$trnlnm("sys$node"))-2,f$trnlnm("sys$node"))' (''f$trnlnm("ucx$inet_host")'.''f$trnlnm("ucx$inet_domain")')"
!
! ###
! ### GRAPHICAL USER INTERFACE (GUI).

 .SUFFIXES : .obj .c .pro .xs

--- 142,178 ----
 ######################################################################

 CC      = cc
+
+ .IFDEF DECC
 CC_DEF        = $(CC)/decc
+ PREFIX  = /prefix=all
+ .ELSE
+ CC_DEF  = $(CC)
+ PREFIX  =
+ CCVER   =
+ .ENDIF
+
 LD_DEF        = link

 .IFDEF DEBUG
 TARGET  = dvim.exe
! CFLAGS        = /debug/noopt$(PREFIX)/include=[.proto]
 LDFLAGS       = /debug
 .ELSE
 TARGET  = vim.exe
! CFLAGS        = /opt$(PREFIX)/include=[.proto]
 LDFLAGS       =
 .ENDIF

! ########################################################################
! # These go into pathdef.c
! ########################################################################
 VIMLOC  = ""
 VIMRUN  = ""
 VIMUSER = "''f$extract(f$locate(",",f$user())+1,f$length(f$user())-f$locate(",",f$user())-2,f$user())'"
 VIMHOST = "''f$extract(0,f$length(f$trnlnm("sys$node"))-2,f$trnlnm("sys$node"))' (''f$trnlnm("ucx$inet_host")'.''f$trnlnm("ucx$inet_domain")')"
!
! ########################################################################

 .SUFFIXES : .obj .c .pro .xs

***************
*** 218,252 ****
       $(CC_DEF) $(ALL_CFLAGS) $<


! .IFDEF CCVER
! #########################################################################
! # This part can make come complications if you're using some predefined
! # symbols/flags for your compiler. If does, just comment out _CCVER_ variable
! ##########################################################################
!
! pathdef.c : $(CONFIG_H)
!       -@ define sys$output cc_ver.tmp
!       -@ $(CC)/version
!       -@ deass sys$output
!       -@ open/read file cc_ver.tmp
!       -@ read file CC_VERSION
!       -@ close file
!       -@ del cc_ver.tmp.*
!       -@ write sys$output "creating pathdef.c (CCVER = YES)"
!       -@ open/write pd pathdef.c
!       -@ write pd "/* pathdef.c -- DO NOT EDIT! */"
!       -@ write pd "/* This file is automatically created by os_vms.mms"
!       -@ write pd " * Change the file os_vms.mms only. */"
!       -@ write pd "#include ""vim.h"""
!       -@ write pd "char_u *default_vim_dir = (char_u *)"$(VIMLOC)";"
!       -@ write pd "char_u *default_vimruntime_dir = (char_u *)"$(VIMRUN)";"
!       -@ write pd "char_u *all_cflags = (char_u *)""$(CC_DEF) /incl=[] $(ALL_CFLAGS)\nCompiler: ''CC_VERSION'"";"
!       -@ write pd "char_u *all_lflags = (char_u *)""$(LD_DEF) $(LDFLAGS) /exe=$(TARGET) $+ $(ALL_LIBS)"";"
!       -@ write pd "char_u *compiled_user = (char_u *) "$(VIMUSER)";"
!       -@ write pd "char_u *compiled_sys = (char_u *) "$(VIMHOST)";"
!       -@ close pd
! .ELSE
! pathdef.c : $(CONFIG_H)
       -@ write sys$output "creating pathdef.c"
       -@ open/write pd pathdef.c
       -@ write pd "/* pathdef.c -- DO NOT EDIT! */"
--- 239,245 ----
       $(CC_DEF) $(ALL_CFLAGS) $<


! pathdef.c : check_ccver $(CONFIG_H)
       -@ write sys$output "creating pathdef.c"
       -@ open/write pd pathdef.c
       -@ write pd "/* pathdef.c -- DO NOT EDIT! */"
***************
*** 256,266 ****
       -@ write pd "char_u *default_vim_dir = (char_u *)"$(VIMLOC)";"
       -@ write pd "char_u *default_vimruntime_dir = (char_u *)"$(VIMRUN)";"
       -@ write pd "char_u *all_cflags = (char_u *)""$(CC_DEF) /incl=[] $(ALL_CFLAGS)"";"
!       -@ write pd "char_u *all_lflags = (char_u *)""$(LD_DEF) $(LDFLAGS) /exe=$(TARGET) $+ $(ALL_LIBS)"";"
       -@ write pd "char_u *compiled_user = (char_u *) "$(VIMUSER)";"
       -@ write pd "char_u *compiled_sys = (char_u *) "$(VIMHOST)";"
       -@ close pd
- .ENDIF

 os_vms.mms :
       @ write sys$output "The name of the makefile MUST be <OS_VMS.MMS> !!!!"
--- 249,259 ----
       -@ write pd "char_u *default_vim_dir = (char_u *)"$(VIMLOC)";"
       -@ write pd "char_u *default_vimruntime_dir = (char_u *)"$(VIMRUN)";"
       -@ write pd "char_u *all_cflags = (char_u *)""$(CC_DEF) /incl=[] $(ALL_CFLAGS)"";"
!       -@ write pd "char_u *all_lflags = (char_u *)""$(LD_DEF) $(LDFLAGS) /exe=$(TARGET) *.obj $(ALL_LIBS)"";"
!       -@ write pd "char_u *compiler_version = (char_u *) ""''CC_VER'"";"
       -@ write pd "char_u *compiled_user = (char_u *) "$(VIMUSER)";"
       -@ write pd "char_u *compiled_sys = (char_u *) "$(VIMHOST)";"
       -@ close pd

 os_vms.mms :
       @ write sys$output "The name of the makefile MUST be <OS_VMS.MMS> !!!!"
***************
*** 369,375 ****
 if_perlsfio.obj : if_perlsfio.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
       term.h macros.h regexp.h structs.h gui.h globals.h farsi.h option.h ex_cmds.h proto.h
       $(CC_DEF) $(ALL_CFLAGS) $<
! if_python.obj : if_python.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
       term.h macros.h regexp.h structs.h gui.h globals.h farsi.h option.h ex_cmds.h proto.h
       $(CC_DEF) $(ALL_CFLAGS) $<
 if_tcl.obj : if_tcl.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h term.h \
--- 362,368 ----
 if_perlsfio.obj : if_perlsfio.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
       term.h macros.h regexp.h structs.h gui.h globals.h farsi.h option.h ex_cmds.h proto.h
       $(CC_DEF) $(ALL_CFLAGS) $<
! if_python.obj : if_python.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h \
       term.h macros.h regexp.h structs.h gui.h globals.h farsi.h option.h ex_cmds.h proto.h
       $(CC_DEF) $(ALL_CFLAGS) $<
 if_tcl.obj : if_tcl.c vim.h config.h feature.h os_unix.h osdef.h ascii.h keymap.h term.h \
***************
*** 437,439 ****
--- 430,450 ----
 mms_vim.obj : os_vms_mms.c
       $(CC_DEF) $(CFLAGS) os_vms_mms.c
       copy os_vms_mms.obj mms_vim.obj
+
+ .IFDEF CCVER
+ #########################################################################
+ # This part can make come complications if you're using some predefined
+ # symbols/flags for your compiler. If does, just comment out CCVER variable
+ ##########################################################################
+ check_ccver :
+       -@ define sys$output cc_ver.tmp
+       -@ $(CC)/version
+       -@ deass sys$output
+       -@ open/read file cc_ver.tmp
+       -@ read file CC_VER
+       -@ close file
+       -@ del cc_ver.tmp.*
+ .ELSE
+ check_ccver :
+       -@ !
+ .ENDIF
*** ../vim-5.7a.5/src/os_vms_conf.h     Wed Jun  7 13:02:34 2000
--- src/os_vms_conf.h   Tue Jun 20 12:17:06 2000
***************
*** 44,49 ****
--- 44,52 ----
 #define USEMEMMOVE 1
 /* #undef USEMEMCPY */

+ /* Define when "man -s 2" is to be used */
+ /* #undef USEMAN_S */
+
 /* Define to empty if the keyword does not work.  */
 /* #undef const */

***************
*** 65,70 ****
--- 68,76 ----
 /* Define to `int' if <sys/types.h> doesn't define.  */
 /* #undef gid_t */

+ /* Define to `long' if <sys/types.h> doesn't define.  */
+ /* #undef ino_t */
+
 /* Define if you can safely include both <sys/time.h> and <time.h>.  */
 #define TIME_WITH_SYS_TIME 1

***************
*** 77,82 ****
--- 83,91 ----
 /* Define as the command at the end of signal handlers ("" or "return 0;").  */
 #define SIGRETURN return

+ /* Define if struct sigcontext is present */
+ #define HAVE_SIGCONTEXT 1
+
 /* Define if touuper/tolower only work on lower/upercase characters */
 /* #undef BROKEN_TOUPPER */

***************
*** 104,109 ****
--- 113,121 ----
 /* Define if you have the memset() function.  */
 #define HAVE_MEMSET 1

+ /* Define if you have the memcmp() function.  */
+ #define HAVE_MEMCMP 1
+
 /* Define if you have the strerror() function.  */
 #define HAVE_STRERROR 1

***************
*** 131,136 ****
--- 143,172 ----
 /* Define if you have the getpwnam() function. */
 #define HAVE_GETPWNAM 1

+ /* Define if you have the nanosleep() function.  */
+ /* #undef HAVE_NANOSLEEP */
+
+ /* Define if you have the opendir() function. */
+ /* #undef HAVE_OPENDIR */
+
+ /* Define if you have the qsort() function. */
+ #define HAVE_QSORT 1
+
+ /* Define if you have the select() function.  */
+ #define HAVE_SELECT 1
+
+ /* Define if you have the setpgid() function.  */
+ /* #undef HAVE_SETPGID */
+
+ /* Define if you have the setsid() function.  */
+ /* #undef HAVE_SETSID */
+
+ /* Define if you have the sigset() function.  */
+ /* #undef HAVE_SIGSET */
+
+ /* Define if you have the strcasecmp() function.  */
+ /* #undef HAVE_STRCASECMP */
+
 #undef        HAVE_DIRENT_H
 #undef        HAVE_SYS_NDIR_H
 #undef        HAVE_SYS_DIR_H
***************
*** 147,158 ****
 #undef        HAVE_SYS_SELECT_H
 #undef        HAVE_SYS_UTSNAME_H
 #undef        HAVE_TERMCAP_H
! #define       HAVE_FCNTL_H            1
 #undef        HAVE_SGTTY_H
 #undef        HAVE_SYS_IOCTL_H
 #define       HAVE_SYS_TIME_H         1
 #undef        HAVE_TERMIO_H
- #define       HAVE_UNISTD_H           1
 #undef        HAVE_STROPTS_H
 #define       HAVE_ERRNO_H            1
 #undef        HAVE_STRINGS_H
--- 183,199 ----
 #undef        HAVE_SYS_SELECT_H
 #undef        HAVE_SYS_UTSNAME_H
 #undef        HAVE_TERMCAP_H
! #ifdef  VAXC
! #undef HAVE_FCNTL_H
! #undef HAVE_UNISTD_H
! #else
! #define HAVE_FCNTL_H          1
! #define HAVE_UNISTD_H         1
! #endif
 #undef        HAVE_SGTTY_H
 #undef        HAVE_SYS_IOCTL_H
 #define       HAVE_SYS_TIME_H         1
 #undef        HAVE_TERMIO_H
 #undef        HAVE_STROPTS_H
 #define       HAVE_ERRNO_H            1
 #undef        HAVE_STRINGS_H
*** ../vim-5.7a.5/src/proto/os_vms.pro  Sat Jun 10 11:56:12 2000
--- src/proto/os_vms.pro        Tue Jun 20 12:18:33 2000
***************
*** 35,40 ****
--- 35,41 ----
 void mch_setmouse __ARGS((int on));
 void check_mouse_termcode __ARGS((void));
 int use_xterm_mouse __ARGS((void));
+ int use_dec_mouse __ARGS((void));
 int mch_screenmode __ARGS((char_u *arg));
 int mch_get_winsize __ARGS((void));
 void mch_set_winsize __ARGS((void));
*** ../vim-5.7a.5/src/proto/version.pro Sat Jun 10 11:55:47 2000
--- src/proto/version.pro       Tue Jun 20 20:42:48 2000
***************
*** 1,4 ****
--- 1,5 ----
 /* version.c */
+ void make_version __ARGS((void));
 int highest_patch __ARGS((void));
 void do_version __ARGS((char_u *arg));
 void list_version __ARGS((void));
*** ../vim-5.7a.5/src/term.c    Wed Jun  7 14:45:03 2000
--- src/term.c  Tue Jun 20 12:22:20 2000
***************
*** 2884,2896 ****
        */
       if (tmode != TMODE_COOK || cur_tmode != TMODE_COOK)
       {
           out_flush();
           mch_settmode(tmode);    /* machine specific function */
           cur_tmode = tmode;
 #ifdef USE_MOUSE
!           if (tmode != TMODE_RAW)
!               mch_setmouse(FALSE);            /* switch mouse off */
!           else
               setmouse();                     /* may switch mouse on */
 #endif
           out_flush();
--- 2884,2898 ----
        */
       if (tmode != TMODE_COOK || cur_tmode != TMODE_COOK)
       {
+ #ifdef USE_MOUSE
+           if (tmode != TMODE_RAW)
+               mch_setmouse(FALSE);            /* switch mouse off */
+ #endif
           out_flush();
           mch_settmode(tmode);    /* machine specific function */
           cur_tmode = tmode;
 #ifdef USE_MOUSE
!           if (tmode == TMODE_RAW)
               setmouse();                     /* may switch mouse on */
 #endif
           out_flush();
*** ../vim-5.7a.5/src/version.c Tue Jun 20 16:04:00 2000
--- src/version.c       Tue Jun 20 21:20:17 2000
***************
*** 23,30 ****

 char  *Version = VIM_VERSION_SHORT;
 char  *mediumVersion = VIM_VERSION_MEDIUM;
! #ifdef HAVE_DATE_TIME
 char  *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
 #else
 char  *longVersion = VIM_VERSION_LONG;
 #endif
--- 23,49 ----

 char  *Version = VIM_VERSION_SHORT;
 char  *mediumVersion = VIM_VERSION_MEDIUM;
!
! #if defined(HAVE_DATE_TIME) || defined(PROTO)
! # if (defined(VMS) && defined(VAXC)) || defined(PROTO)
! char  longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
!                                                     + sizeof(__TIME__) + 3];
!     void
! make_version()
! {
!     /*
!      * Construct the long version string.  Necessary because
!      * VAX C can't catenate strings in the preprocessor.
!      */
!     strcpy(longVersion, VIM_VERSION_LONG_DATE);
!     strcat(longVersion, __DATE__);
!     strcat(longVersion, " ");
!     strcat(longVersion, __TIME__);
!     strcat(longVersion, ")");
! }
! # else
 char  *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
+ # endif
 #else
 char  *longVersion = VIM_VERSION_LONG;
 #endif
***************
*** 420,421 ****
--- 439,442 ----
 {   /* Add new patch number below this line */
+ /**/
+     6,
 /**/
***************
*** 502,507 ****
--- 523,531 ----
 #ifdef RISCOS
     MSG_PUTS("\nRISC OS version");
 #endif
+ #ifdef VMS
+     MSG_PUTS("\nOpenVMS version");
+ #endif

     /* Print the list of patch numbers if there is at least one. */
     /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */
***************
*** 532,545 ****
     }

 #if defined(UNIX) || defined(VMS)
!     MSG_PUTS("\nCompiled by ");
!     MSG_PUTS(compiled_user);
!     MSG_PUTS("@");
!     MSG_PUTS(compiled_sys);
!     MSG_PUTS(", with (+) or without (-):\n");
! #else
!     MSG_PUTS("\nCompiled with (+) or without (-):\n");
 #endif

     /* print all the features */
     for (i = 0; features[i] != NULL; ++i)
--- 556,575 ----
     }

 #if defined(UNIX) || defined(VMS)
!     if (*compiled_user != NUL)
!     {
!       MSG_PUTS("\nCompiled by ");
!       MSG_PUTS(compiled_user);
!       if (*compiled_sys != NUL)
!       {
!           MSG_PUTS("@");
!           MSG_PUTS(compiled_sys);
!       }
!       MSG_PUTS(", with (+) or without (-):\n");
!     }
!     else
 #endif
+       MSG_PUTS("\nCompiled with (+) or without (-):\n");

     /* print all the features */
     for (i = 0; features[i] != NULL; ++i)
***************
*** 623,628 ****
--- 653,666 ----
     version_msg("Compilation: ");
     version_msg((char *)all_cflags);
     msg_putchar('\n');
+ #ifdef VMS
+     if (*compiler_version != NUL)
+     {
+       version_msg("Compiler: ");
+       version_msg((char *)compiler_version);
+       msg_putchar('\n');
+     }
+ #endif
     version_msg("Linking: ");
     version_msg((char *)all_lflags);
 #endif
*** ../vim-5.7a.5/src/xxd/os_vms.mms    Fri Jun 11 21:48:12 1999
--- src/xxd/os_vms.mms  Tue Jun 20 12:29:30 2000
***************
*** 1,20 ****
! # The most simplistic Makefile for VMS
! CC    = cc/decc
! LD    = link
! CFLAGS        = /opt/prefix=all
! LDFLAGS       =
! LIBS  =

 SOURCES       = xxd.c
! OBJ = xxd.obj

! xxd.exe : $(OBJ)
!       $(LD) $(LDFLAGS) /exe=xxd.exe $+

! xxd.obj : xxd.c
!       $(CC) $(CFLAGS) $<

- # Clean
 clean :
       del *.obj;*
       del *.exe;*
--- 1,69 ----
! # VMS MM[KS] makefile for XXD
! # tested with MMK and MMS as well.
! #
! # Maintained by Zoltan Arpadffy <[email protected]>
! #
! # Edit the lines in the Configuration section below to select.
! #
! # To build: use the following command line:
! #
! #     mms/descrip=os_vms.mms
! #       or if you use mmk
! #     mmk/descrip=os_vms.mms
! #
!
! ######################################################################
! # Configuration section.
! ######################################################################
! # Compiler selection.
! # Comment out if you use the VAXC compiler
! ######################################################################
! # DECC = YES
!
! #####################################################################
! # Uncomment if want a debug version. Resulting executable is DVIM.EXE
! ######################################################################
! # DEBUG = YES
!
! ######################################################################
! # End of configuration section.
! #
! # Please, do not change anything below without programming experience.
! ######################################################################
!
! CC      = cc
!
! .IFDEF DECC
! CC_DEF  = $(CC)/decc
! PREFIX  = /prefix=all
! .ELSE
! CC_DEF  = $(CC)
! PREFIX  =
! .ENDIF
!
! LD_DEF  = link
!
! .IFDEF DEBUG
! TARGET  = dxxd.exe
! CFLAGS  = /debug/noopt$(PREFIX)/cross_reference/include=[]
! LDFLAGS = /debug
! .ELSE
! TARGET  = xxd.exe
! CFLAGS  = /opt$(PREFIX)/include=[]
! LDFLAGS =
! .ENDIF
!
! .SUFFIXES : .obj .c

 SOURCES       = xxd.c
! OBJ     = xxd.obj

! .obj.c :
!       $(CC_DEF) $(CFLAGS) $<

! $(TARGET) : $(OBJ)
!       $(LD_DEF) $(LDFLAGS) /exe=$(TARGET) $+

 clean :
       del *.obj;*
       del *.exe;*
*** ../vim-5.7a.5/src/xxd/xxd.c Tue Jun  6 22:46:29 2000
--- src/xxd/xxd.c       Tue Jun 20 21:39:25 2000
***************
*** 47,52 ****
--- 47,54 ----
  * 26.09.98 Fixed: 'xxd -i infile outfile' did not truncate outfile.
  * 27.10.98 Fixed: -g option parser required blank.
  *          option -b added: 01000101 binary output in normal format.
+  * 16.05.00 Added VAXC changes by Stephen P. Wall
+  * 16.05.00 Improved MMS file and merege for VMS by Zoltan Arpadffy
  *
  * (c) 1990-1998 by Juergen Weigert ([email protected])
  *
***************
*** 55,61 ****
  * lose money and don't ask me.
  */
 #include <stdio.h>
! #include <fcntl.h>
 #ifdef __TSC__
 # define MSDOS
 #endif
--- 57,67 ----
  * lose money and don't ask me.
  */
 #include <stdio.h>
! #ifdef VAXC
! # include <file.h>
! #else
! # include <fcntl.h>
! #endif
 #ifdef __TSC__
 # define MSDOS
 #endif
***************
*** 135,145 ****
 # define BIN_ASSIGN(fp, yes) setmode(fileno(fp), (yes) ? O_BINARY : O_TEXT)
 # define PATH_SEP '\\'
 #else
! # define BIN_READ(dummy)  "r"
! # define BIN_WRITE(dummy) "w"
! # define BIN_CREAT(dummy) O_CREAT
! # define BIN_ASSIGN(fp, dummy) fp
! # define PATH_SEP '/'
 #endif

 /* open has only to arguments on the Mac */
--- 141,160 ----
 # define BIN_ASSIGN(fp, yes) setmode(fileno(fp), (yes) ? O_BINARY : O_TEXT)
 # define PATH_SEP '\\'
 #else
! # ifdef VMS
! #  define BIN_READ(dummy)  "r"
! #  define BIN_WRITE(dummy) "w"
! #  define BIN_CREAT(dummy) O_CREAT
! #  define BIN_ASSIGN(fp, dummy) fp
! #  define PATH_SEP ']'
! #  define FILE_SEP '.'
! # else
! #  define BIN_READ(dummy)  "r"
! #  define BIN_WRITE(dummy) "w"
! #  define BIN_CREAT(dummy) O_CREAT
! #  define BIN_ASSIGN(fp, dummy) fp
! #  define PATH_SEP '/'
! # endif
 #endif

 /* open has only to arguments on the Mac */
***************
*** 416,421 ****
--- 431,444 ----
   for (pp = pname; *pp; )
     if (*pp++ == PATH_SEP)
       pname = pp;
+ #ifdef FILE_SEP
+   for (pp = pname; *pp; pp++)
+     if (*pp == FILE_SEP)
+       {
+       *pp = '\0';
+       break;
+       }
+ #endif

   while (argc >= 2)
     {

--
hundred-and-one symptoms of being an internet addict:
70. ISDN lines are added to your house on a hourly basis

/-/-- Bram Moolenaar --- [email protected] --- http://www.moolenaar.net --\-\
\-\-- Vim: http://www.vim.org ---- ICCF Holland: http://www.vim.org/iccf --/-/