home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.4 / 7.4.197 < prev    next >
Encoding:
Internet Message Format  |  2014-03-11  |  34.1 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.4.197
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.4.197
  11. Problem:    Various problems on VMS.
  12. Solution:   Fix several VMS problems. (Zoltan Arpadffy)
  13. Files:        runtime/doc/os_vms.txt, src/Make_vms.mms, src/fileio.c,
  14.         src/os_unix.c, src/os_unix.h, src/os_vms.c, src/os_vms_conf.h,
  15.         src/proto/os_vms.pro, src/testdir/Make_vms.mms,
  16.         src/testdir/test72.in, src/testdir/test77a.com,
  17.         src/testdir/test77a.in, src/testdir/test77a.ok src/undo.c
  18.  
  19.  
  20. *** ../vim-7.4.196/runtime/doc/os_vms.txt    2013-08-10 13:24:59.000000000 +0200
  21. --- runtime/doc/os_vms.txt    2014-03-12 15:55:50.196741288 +0100
  22. ***************
  23. *** 1,4 ****
  24. ! *os_vms.txt*    For Vim version 7.4.  Last change: 2011 Aug 14
  25.   
  26.   
  27.             VIM REFERENCE MANUAL
  28. --- 1,4 ----
  29. ! *os_vms.txt*    For Vim version 7.4.  Last change: 2014 Feb 24
  30.   
  31.   
  32.             VIM REFERENCE MANUAL
  33. ***************
  34. *** 24,30 ****
  35.   
  36.   1. Getting started                    *vms-started*
  37.   
  38. ! Vim (Vi IMproved) is a vi-compatible text editor that runs on nearly every
  39.   operating system known to humanity.  Now use Vim on OpenVMS too, in character
  40.   or X/Motif environment.  It is fully featured and absolutely compatible with
  41.   Vim on other operating systems.
  42. --- 24,30 ----
  43.   
  44.   1. Getting started                    *vms-started*
  45.   
  46. ! Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every
  47.   operating system known to humanity.  Now use Vim on OpenVMS too, in character
  48.   or X/Motif environment.  It is fully featured and absolutely compatible with
  49.   Vim on other operating systems.
  50. ***************
  51. *** 764,769 ****
  52. --- 764,785 ----
  53.   
  54.   9. VMS related changes                    *vms-changes*
  55.   
  56. + Version 7.4 
  57. + - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name" 
  58. +   add _un_ at the beginning to keep the extension
  59. + - correct swap file name wildcard handling
  60. + - handle iconv usage correctly
  61. + - do not optimize on vax - otherwise it hangs compiling crypto files
  62. + - fileio.c fix the comment
  63. + - correct RealWaitForChar 
  64. + - after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have
  65. +   G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
  66. + - guard agains crashes that are caused by mixed filenames
  67. + - [TESTDIR]make_vms.mms changed to see the output files
  68. + - Improve tests, update known issues
  69. + - minor compiler warnings fixed
  70. + - CTAGS 5.8 +regex included
  71.   Version 7.3
  72.   - CTAGS 5.8 included
  73.   - VMS compile warnings fixed - floating-point overflow warning corrected on VAX
  74. *** ../vim-7.4.196/src/Make_vms.mms    2013-05-06 04:06:04.000000000 +0200
  75. --- src/Make_vms.mms    2014-03-12 15:55:50.196741288 +0100
  76. ***************
  77. *** 2,8 ****
  78.   # Makefile for Vim on OpenVMS
  79.   #
  80.   # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
  81. ! # Last change:  2008 Aug 16
  82.   #
  83.   # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  84.   # with MMS and MMK
  85. --- 2,8 ----
  86.   # Makefile for Vim on OpenVMS
  87.   #
  88.   # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
  89. ! # Last change:  2014 Feb 24
  90.   #
  91.   # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  92.   # with MMS and MMK
  93. ***************
  94. *** 21,29 ****
  95.   ######################################################################
  96.   # Configuration section.
  97.   ######################################################################
  98. - # VMS version
  99. - # Uncomment if you use VMS version 6.2 or older
  100. - # OLD_VMS = YES
  101.   
  102.   # Compiler selection.
  103.   # Comment out if you use the VAXC compiler
  104. --- 21,26 ----
  105. ***************
  106. *** 60,66 ****
  107.   
  108.   # Uncomment if want a debug version. Resulting executable is DVIM.EXE
  109.   # Development purpose only! Normally, it should not be defined. !!!
  110. ! # DEBUG = YES
  111.   
  112.   # Languages support for Perl, Python, TCL etc.
  113.   # If you don't need it really, leave them behind the comment.
  114. --- 57,63 ----
  115.   
  116.   # Uncomment if want a debug version. Resulting executable is DVIM.EXE
  117.   # Development purpose only! Normally, it should not be defined. !!!
  118. ! # DEBUG = YES 
  119.   
  120.   # Languages support for Perl, Python, TCL etc.
  121.   # If you don't need it really, leave them behind the comment.
  122. ***************
  123. *** 87,92 ****
  124. --- 84,92 ----
  125.   # Allow FEATURE_MZSCHEME
  126.   # VIM_MZSCHEME = YES
  127.   
  128. + # Use ICONV
  129. + # VIM_ICONV  = YES
  130.   ######################################################################
  131.   # Directory, library and include files configuration section.
  132.   # Normally you need not to change anything below. !
  133. ***************
  134. *** 99,123 ****
  135.   
  136.   .IFDEF MMSVAX
  137.   .IFDEF DECC         # VAX with DECC
  138. ! CC_DEF  = cc # /decc # some system requires this switch but when it is not required /ver might fail
  139.   PREFIX  = /prefix=all
  140.   .ELSE             # VAX with VAXC
  141.   CC_DEF    = cc
  142.   PREFIX    =
  143.   CCVER    =
  144.   .ENDIF
  145. ! .ELSE             # AXP wixh DECC
  146.   CC_DEF  = cc
  147.   PREFIX  = /prefix=all
  148.   .ENDIF
  149.   
  150.   LD_DEF  = link
  151.   C_INC   = [.proto]
  152.   
  153. - .IFDEF OLD_VMS
  154. - VMS_DEF = ,"OLD_VMS"
  155. - .ENDIF
  156.   .IFDEF DEBUG
  157.   DEBUG_DEF = ,"DEBUG"
  158.   TARGET    = dvim.exe
  159. --- 99,123 ----
  160.   
  161.   .IFDEF MMSVAX
  162.   .IFDEF DECC         # VAX with DECC
  163. ! CC_DEF  = cc # /decc # some versions require /decc switch but when it is not required /ver might fail
  164.   PREFIX  = /prefix=all
  165. + OPTIMIZE= /noopt     # do not optimize on VAX. The compiler has hard time with crypto functions
  166.   .ELSE             # VAX with VAXC
  167.   CC_DEF    = cc
  168.   PREFIX    =
  169. + OPTIMIZE= /noopt
  170.   CCVER    =
  171.   .ENDIF
  172. ! .ELSE             # AXP and IA64 with DECC
  173.   CC_DEF  = cc
  174.   PREFIX  = /prefix=all
  175. + OPTIMIZE= /opt
  176.   .ENDIF
  177.   
  178.   LD_DEF  = link
  179.   C_INC   = [.proto]
  180.   
  181.   .IFDEF DEBUG
  182.   DEBUG_DEF = ,"DEBUG"
  183.   TARGET    = dvim.exe
  184. ***************
  185. *** 125,131 ****
  186.   LDFLAGS   = /debug
  187.   .ELSE
  188.   TARGET    = vim.exe
  189. ! CFLAGS    = /opt$(PREFIX)
  190.   LDFLAGS   =
  191.   .ENDIF
  192.   
  193. --- 125,131 ----
  194.   LDFLAGS   = /debug
  195.   .ELSE
  196.   TARGET    = vim.exe
  197. ! CFLAGS    = $(OPTIMIZE)$(PREFIX)
  198.   LDFLAGS   =
  199.   .ENDIF
  200.   
  201. ***************
  202. *** 274,279 ****
  203. --- 274,284 ----
  204.   MZSCH_OBJ = if_mzsch.obj
  205.   .ENDIF
  206.   
  207. + .IFDEF VIM_ICONV
  208. + # ICONV related setup
  209. + ICONV_DEF = ,"USE_ICONV"
  210. + .ENDIF
  211.   ######################################################################
  212.   # End of configuration section.
  213.   # Please, do not change anything below without programming experience.
  214. ***************
  215. *** 287,294 ****
  216.   
  217.   .SUFFIXES : .obj .c
  218.   
  219. ! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  220. !  $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) -
  221.    $(CFLAGS)$(GUI_FLAG) -
  222.    /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
  223.   
  224. --- 292,299 ----
  225.   
  226.   .SUFFIXES : .obj .c
  227.   
  228. ! ALL_CFLAGS = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  229. !  $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
  230.    $(CFLAGS)$(GUI_FLAG) -
  231.    /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
  232.   
  233. ***************
  234. *** 296,303 ****
  235.   # It is specially formated for correct display of unix like includes
  236.   # as $(GUI_INC) - replaced with $(GUI_INC_VER)
  237.   # Otherwise should not be any other difference.
  238. ! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(VMS_DEF)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  239. !  $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)) -
  240.    $(CFLAGS)$(GUI_FLAG) -
  241.    /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
  242.   
  243. --- 301,308 ----
  244.   # It is specially formated for correct display of unix like includes
  245.   # as $(GUI_INC) - replaced with $(GUI_INC_VER)
  246.   # Otherwise should not be any other difference.
  247. ! ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
  248. !  $(TCL_DEF)$(SNIFF_DEF)$(RUBY_DEF)$(XIM_DEF)$(HANGULIN_DEF)$(TAG_DEF)$(MZSCH_DEF)$(ICONV_DEF)) -
  249.    $(CFLAGS)$(GUI_FLAG) -
  250.    /include=($(C_INC)$(GUI_INC_DIR)$(GUI_INC_VER)$(PERL_INC)$(PYTHON_INC)$(TCL_INC))
  251.   
  252. *** ../vim-7.4.196/src/fileio.c    2014-02-23 22:58:12.072764176 +0100
  253. --- src/fileio.c    2014-03-12 15:55:50.200741288 +0100
  254. ***************
  255. *** 7559,7565 ****
  256.       p = (char_u *)tempnam("tmp:", (char *)itmp);
  257.       if (p != NULL)
  258.       {
  259. !     /* VMS will use '.LOG' if we don't explicitly specify an extension,
  260.        * and VIM will then be unable to find the file later */
  261.       STRCPY(itmp, p);
  262.       STRCAT(itmp, ".txt");
  263. --- 7559,7565 ----
  264.       p = (char_u *)tempnam("tmp:", (char *)itmp);
  265.       if (p != NULL)
  266.       {
  267. !     /* VMS will use '.LIS' if we don't explicitly specify an extension,
  268.        * and VIM will then be unable to find the file later */
  269.       STRCPY(itmp, p);
  270.       STRCAT(itmp, ".txt");
  271. *** ../vim-7.4.196/src/os_unix.c    2013-12-11 17:12:32.000000000 +0100
  272. --- src/os_unix.c    2014-03-12 16:25:11.144768271 +0100
  273. ***************
  274. *** 2965,2971 ****
  275. --- 2965,2990 ----
  276.   
  277.       if (stat((char *)name, &st))
  278.       return 0;
  279. + #ifdef VMS
  280. +     /* Like on Unix system file can have executable rights but not necessarily
  281. +      * be an executable, but on Unix is not a default for an ordianry file to
  282. +      * have an executable flag - on VMS it is in most cases.
  283. +      * Therefore, this check does not have any sense - let keep us to the
  284. +      * conventions instead:
  285. +      * *.COM and *.EXE files are the executables - the rest are not. This is
  286. +      * not ideal but better then it was.
  287. +      */
  288. +     int vms_executable = 0;
  289. +     if (S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0)
  290. +     {
  291. +     if (strstr(vms_tolower((char*)name),".exe") != NULL
  292. +         || strstr(vms_tolower((char*)name),".com")!= NULL)
  293. +         vms_executable = 1;
  294. +     }
  295. +     return vms_executable;
  296. + #else
  297.       return S_ISREG(st.st_mode) && mch_access((char *)name, X_OK) == 0;
  298. + #endif
  299.   }
  300.   
  301.   /*
  302. ***************
  303. *** 2983,2989 ****
  304. --- 3002,3010 ----
  305.       /* If it's an absolute or relative path don't need to use $PATH. */
  306.       if (mch_isFullName(name) || (name[0] == '.' && (name[1] == '/'
  307.                         || (name[1] == '.' && name[2] == '/'))))
  308. +     {
  309.       return executable_file(name);
  310. +     }
  311.   
  312.       p = (char_u *)getenv("PATH");
  313.       if (p == NULL || *p == NUL)
  314. *** ../vim-7.4.196/src/os_unix.h    2013-12-11 17:12:32.000000000 +0100
  315. --- src/os_unix.h    2014-03-12 15:55:50.204741288 +0100
  316. ***************
  317. *** 302,308 ****
  318.   #  define USR_VIMRC_FILE2    "$HOME/vimfiles/vimrc"
  319.   # else
  320.   #  ifdef VMS
  321. ! #   define USR_VIMRC_FILE2    "sys$login:vimfiles:vimrc"
  322.   #  else
  323.   #    define USR_VIMRC_FILE2    "~/.vim/vimrc"
  324.   #  endif
  325. --- 302,308 ----
  326.   #  define USR_VIMRC_FILE2    "$HOME/vimfiles/vimrc"
  327.   # else
  328.   #  ifdef VMS
  329. ! #   define USR_VIMRC_FILE2    "sys$login:vimfiles/vimrc"
  330.   #  else
  331.   #    define USR_VIMRC_FILE2    "~/.vim/vimrc"
  332.   #  endif
  333. ***************
  334. *** 329,335 ****
  335.   #  define USR_GVIMRC_FILE2    "$HOME/vimfiles/gvimrc"
  336.   # else
  337.   #  ifdef VMS
  338. ! #   define USR_GVIMRC_FILE2    "sys$login:vimfiles:gvimrc"
  339.   #  else
  340.   #   define USR_GVIMRC_FILE2    "~/.vim/gvimrc"
  341.   #  endif
  342. --- 329,335 ----
  343.   #  define USR_GVIMRC_FILE2    "$HOME/vimfiles/gvimrc"
  344.   # else
  345.   #  ifdef VMS
  346. ! #   define USR_GVIMRC_FILE2    "sys$login:vimfiles/gvimrc"
  347.   #  else
  348.   #   define USR_GVIMRC_FILE2    "~/.vim/gvimrc"
  349.   #  endif
  350. *** ../vim-7.4.196/src/os_vms.c    2013-12-11 17:12:32.000000000 +0100
  351. --- src/os_vms.c    2014-03-12 16:26:17.544769288 +0100
  352. ***************
  353. *** 296,301 ****
  354. --- 296,313 ----
  355.   }
  356.   
  357.   /*
  358. +  * Convert string to lowercase - most often filename
  359. +  */
  360. +     char *
  361. + vms_tolower( char *name )
  362. + {
  363. +     int i,nlen = strlen(name);
  364. +     for (i = 0; i < nlen; i++)
  365. +     name[i] = TOLOWER_ASC(name[i]);
  366. +     return name;
  367. + }
  368. + /*
  369.    * Convert VMS system() or lib$spawn() return code to Unix-like exit value.
  370.    */
  371.       int
  372. ***************
  373. *** 361,373 ****
  374.   vms_wproc(char *name, int val)
  375.   {
  376.       int i;
  377. -     int nlen;
  378.       static int vms_match_alloced = 0;
  379.   
  380. !     if (val != DECC$K_FILE) /* Directories and foreign non VMS files are not
  381. !                    counting  */
  382.       return 1;
  383.   
  384.       if (vms_match_num == 0) {
  385.       /* first time through, setup some things */
  386.       if (NULL == vms_fmatch) {
  387. --- 373,384 ----
  388.   vms_wproc(char *name, int val)
  389.   {
  390.       int i;
  391.       static int vms_match_alloced = 0;
  392.   
  393. !     if (val == DECC$K_FOREIGN ) /* foreign non VMS files are not counting */
  394.       return 1;
  395.   
  396. +     /* accept all DECC$K_FILE and DECC$K_DIRECTORY */
  397.       if (vms_match_num == 0) {
  398.       /* first time through, setup some things */
  399.       if (NULL == vms_fmatch) {
  400. ***************
  401. *** 383,394 ****
  402.       }
  403.       }
  404.   
  405.       vms_remove_version(name);
  406. !     /* convert filename to lowercase */
  407. !     nlen = strlen(name);
  408. !     for (i = 0; i < nlen; i++)
  409. !     name[i] = TOLOWER_ASC(name[i]);
  410.   
  411.       /* if name already exists, don't add it */
  412.       for (i = 0; i<vms_match_num; i++) {
  413. --- 394,402 ----
  414.       }
  415.       }
  416.   
  417. +     /* make matches look uniform */
  418.       vms_remove_version(name);
  419. !     name=vms_tolower(name);
  420.   
  421.       /* if name already exists, don't add it */
  422.       for (i = 0; i<vms_match_num; i++) {
  423. ***************
  424. *** 428,433 ****
  425. --- 436,442 ----
  426.   {
  427.       int        i, cnt = 0;
  428.       char_u    buf[MAXPATHL];
  429. +     char       *result;
  430.       int        dir;
  431.       int files_alloced, files_free;
  432.   
  433. ***************
  434. *** 449,456 ****
  435.           STRCPY(buf,pat[i]);
  436.   
  437.       vms_match_num = 0; /* reset collection counter */
  438. !     cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(buf)), vms_wproc, 1, 0);
  439. !                               /* allow wild, no dir */
  440.       if (cnt > 0)
  441.           cnt = vms_match_num;
  442.   
  443. --- 458,470 ----
  444.           STRCPY(buf,pat[i]);
  445.   
  446.       vms_match_num = 0; /* reset collection counter */
  447. !     result = decc$translate_vms(vms_fixfilename(buf));
  448. !     if ( (int) result == 0 || (int) result == -1  ) {
  449. !         cnt = 0;
  450. !     }
  451. !         else {
  452. !         cnt = decc$to_vms(result, vms_wproc, 1 /*allow wild*/ , (flags & EW_DIR ? 0:1 ) /*allow directory*/) ;
  453. !     }
  454.       if (cnt > 0)
  455.           cnt = vms_match_num;
  456.   
  457. ***************
  458. *** 497,506 ****
  459.   mch_expandpath(garray_T *gap, char_u *path, int flags)
  460.   {
  461.       int        i,cnt = 0;
  462. !     vms_match_num = 0;
  463.   
  464. !     cnt = decc$to_vms(decc$translate_vms(vms_fixfilename(path)), vms_wproc, 1, 0);
  465. !                               /* allow wild, no dir */
  466.       if (cnt > 0)
  467.       cnt = vms_match_num;
  468.       for (i = 0; i < cnt; i++)
  469. --- 511,528 ----
  470.   mch_expandpath(garray_T *gap, char_u *path, int flags)
  471.   {
  472.       int        i,cnt = 0;
  473. !     char       *result;
  474.   
  475. !     vms_match_num = 0;
  476. !     /* the result from the decc$translate_vms needs to be handled */
  477. !     /* otherwise it might create ACCVIO error in decc$to_vms      */
  478. !     result = decc$translate_vms(vms_fixfilename(path));
  479. !     if ( (int) result == 0 || (int) result == -1  ) {
  480. !         cnt = 0;
  481. !     }
  482. !     else {
  483. !         cnt = decc$to_vms(result, vms_wproc, 1 /*allow_wild*/, (flags & EW_DIR ? 0:1 ) /*allow directory*/);
  484. !     }
  485.       if (cnt > 0)
  486.       cnt = vms_match_num;
  487.       for (i = 0; i < cnt; i++)
  488. ***************
  489. *** 521,526 ****
  490. --- 543,549 ----
  491.       char *end_of_dir;
  492.       char ch;
  493.       int len;
  494. +     char *out_str=out;
  495.   
  496.       /* copy vms filename portion up to last colon
  497.        * (node and/or disk)
  498. ***************
  499. *** 602,608 ****
  500.       *end_of_dir = ']';
  501.   }
  502.   
  503.   /*
  504.    * for decc$to_vms in vms_fixfilename
  505.    */
  506. --- 625,630 ----
  507. ***************
  508. *** 710,735 ****
  509.       struct _generic_64 time_diff;
  510.       struct _generic_64 time_out;
  511.       unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
  512. !     float sec = (float) msec / 1000;
  513.   
  514.       /* make sure the iochan is set */
  515.       if (!iochan)
  516.       get_tty();
  517.   
  518. !     if (msec > 0) {
  519.           /* time-out specified; convert it to absolute time */
  520.   
  521.           /* get current time (number of 100ns ticks since the VMS Epoch) */
  522.           status = sys$gettim(&time_curr);
  523.           if (status != SS$_NORMAL)
  524.               return 0; /* error */
  525.           /* construct the delta time */
  526. !         status = lib$cvtf_to_internal_time(
  527.                   &convert_operation, &sec, &time_diff);
  528.           if (status != LIB$_NORMAL)
  529.               return 0; /* error */
  530.           /* add them up */
  531.           status = lib$add_times(
  532.                   &time_curr,
  533. --- 732,764 ----
  534.       struct _generic_64 time_diff;
  535.       struct _generic_64 time_out;
  536.       unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
  537. !     float sec =(float) msec/1000;
  538.   
  539.       /* make sure the iochan is set */
  540.       if (!iochan)
  541.       get_tty();
  542.   
  543. !     if (sec > 0) {
  544.           /* time-out specified; convert it to absolute time */
  545. +     /* sec>0 requirement of lib$cvtf_to_internal_time()*/
  546.   
  547.           /* get current time (number of 100ns ticks since the VMS Epoch) */
  548.           status = sys$gettim(&time_curr);
  549.           if (status != SS$_NORMAL)
  550.               return 0; /* error */
  551.           /* construct the delta time */
  552. ! #if __G_FLOAT==0
  553. ! # ifndef VAX
  554. !     /* IEEE is default on IA64, but can be used on Alpha too - but not on VAX */
  555. !         status = lib$cvts_to_internal_time(
  556.                   &convert_operation, &sec, &time_diff);
  557. + # endif
  558. + #else   /* default on Alpha and VAX  */
  559. +         status = lib$cvtf_to_internal_time(
  560. +         &convert_operation, &sec, &time_diff);
  561. + #endif
  562.           if (status != LIB$_NORMAL)
  563.               return 0; /* error */
  564.           /* add them up */
  565.           status = lib$add_times(
  566.                   &time_curr,
  567. *** ../vim-7.4.196/src/os_vms_conf.h    2014-02-23 22:52:33.372764715 +0100
  568. --- src/os_vms_conf.h    2014-03-12 15:55:50.204741288 +0100
  569. ***************
  570. *** 166,173 ****
  571.   #undef  HAVE_SYS_TIME_H
  572.   #undef  HAVE_LOCALE_H
  573.   #define BROKEN_LOCALE
  574. - #undef  HAVE_ICONV_H
  575. - #undef  HAVE_ICONV
  576.   #undef  DYNAMIC_ICONV
  577.   #undef    HAVE_STRFTIME
  578.   #else
  579. --- 166,171 ----
  580. ***************
  581. *** 177,188 ****
  582.   #define HAVE_SYS_TIME_H
  583.   #define HAVE_LOCALE_H
  584.   #define BROKEN_LOCALE
  585. - #undef  HAVE_ICONV_H
  586. - #undef  HAVE_ICONV
  587.   #undef  DYNAMIC_ICONV
  588.   #define    HAVE_STRFTIME
  589.   #endif
  590.   
  591.   /* GUI support defines */
  592.   #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK)
  593.   #define HAVE_X11
  594. --- 175,192 ----
  595.   #define HAVE_SYS_TIME_H
  596.   #define HAVE_LOCALE_H
  597.   #define BROKEN_LOCALE
  598.   #undef  DYNAMIC_ICONV
  599.   #define    HAVE_STRFTIME
  600.   #endif
  601.   
  602. + #if defined(USE_ICONV)
  603. + #define HAVE_ICONV_H
  604. + #define HAVE_ICONV
  605. + #else
  606. + #undef HAVE_ICONV_H
  607. + #undef HAVE_ICONV
  608. + #endif
  609.   /* GUI support defines */
  610.   #if defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_GTK)
  611.   #define HAVE_X11
  612. *** ../vim-7.4.196/src/proto/os_vms.pro    2013-08-10 13:37:40.000000000 +0200
  613. --- src/proto/os_vms.pro    2014-03-12 15:55:50.204741288 +0100
  614. ***************
  615. *** 7,12 ****
  616. --- 7,13 ----
  617.   int vms_sys __ARGS((char *cmd, char *out, char *inp));
  618.   int vms_sys_status __ARGS((int status));
  619.   int vms_read __ARGS((char *inbuf, size_t nbytes));
  620. + char *vms_tolower __ARGS((char *name));
  621.   int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
  622.   int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
  623.   void *vms_fixfilename __ARGS((void *instring));
  624. *** ../vim-7.4.196/src/testdir/Make_vms.mms    2014-02-23 23:38:58.812760280 +0100
  625. --- src/testdir/Make_vms.mms    2014-03-12 16:06:22.888750982 +0100
  626. ***************
  627. *** 4,10 ****
  628.   # Authors:    Zoltan Arpadffy, <arpadffy@polarhome.com>
  629.   #        Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
  630.   #
  631. ! # Last change:  2014 Feb 23
  632.   #
  633.   # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  634.   # Edit the lines in the Configuration section below to select.
  635. --- 4,10 ----
  636.   # Authors:    Zoltan Arpadffy, <arpadffy@polarhome.com>
  637.   #        Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
  638.   #
  639. ! # Last change:  2014 Mar 12
  640.   #
  641.   # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  642.   # Edit the lines in the Configuration section below to select.
  643. ***************
  644. *** 41,56 ****
  645.   # They fail because VMS does not support file names.
  646.   # WANT_SPELL = YES
  647.   
  648. ! # Comment out if you want to run mzschema  tests.
  649.   # It fails because VMS does not support this feature yet.
  650.   # WANT_MZSCH = YES
  651.   
  652.   # Comment out if you have gzip on your system
  653.   # HAVE_GZIP = YES
  654.   
  655.   # Comment out if you have GNU compatible diff on your system
  656.   # HAVE_GDIFF = YES
  657.   
  658.   #######################################################################
  659.   # End of configuration section.
  660.   #
  661. --- 41,71 ----
  662.   # They fail because VMS does not support file names.
  663.   # WANT_SPELL = YES
  664.   
  665. ! # Comment out if you want to run mzschema tests.
  666.   # It fails because VMS does not support this feature yet.
  667.   # WANT_MZSCH = YES
  668.   
  669. + # Comment out if you have ODS-5 file system                                                                                                                 
  670. + # HAVE_ODS5 = YES
  671.   # Comment out if you have gzip on your system
  672.   # HAVE_GZIP = YES
  673.   
  674.   # Comment out if you have GNU compatible diff on your system
  675.   # HAVE_GDIFF = YES
  676.   
  677. + # Comment out if you have GNU compatible cksum on your system                                                                                                  
  678. + # HAVE_CKSUM = YES
  679. + # Comment out if you have ICONV support                                                                                                  
  680. + # HAVE_ICONV = YES
  681. + # Comment out if you have LUA support
  682. + # HAVE_LUA = YES
  683. + # Comment out if you have PYTHON support
  684. + # HAVE_PYTHON = YES
  685.   #######################################################################
  686.   # End of configuration section.
  687.   #
  688. ***************
  689. *** 63,99 ****
  690.   
  691.   SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
  692.        test6.out  test7.out  test8.out  test9.out  test10a.out\
  693. !      test13.out test14.out test15.out test17.out \
  694.        test18.out test19.out test20.out test21.out test22.out \
  695.        test23.out test24.out test26.out \
  696.        test28.out test29.out test30.out test31.out test32.out \
  697.        test33.out test34.out test35.out test36.out test37.out \
  698.        test38.out test39.out test40.out test41.out test42.out \
  699.        test43.out test44.out test45.out test46.out \
  700. !      test48.out test51.out test53.out test54.out test55.out \
  701. !      test56.out test57.out test60.out \
  702.        test61.out test62.out test63.out test64.out test65.out \
  703.        test66.out test67.out test68.out test69.out \
  704.        test71.out test72.out test74.out test75.out test76.out \
  705. !      test77.out test78.out test79.out test80.out test81.out \
  706. !      test82.out test83.out test84.out test88.out test89.out \
  707.        test90.out test91.out test92.out test93.out test94.out \
  708. !      test95.out test96.out test97.out test98.out test99.out \
  709. !      test100.out test101.out test102.out test103.out test104.out \
  710.        test105.out
  711.   
  712.   # Known problems:
  713. ! # Test 30: a problem around mac format - unknown reason
  714.   #
  715. ! # Test 32: VMS is not case sensitive and all filenames are lowercase within Vim
  716.   # (this should be changed in order to preserve the original filename) - should
  717.   # be fixed. VMS allows just one dot in the filename
  718.   #
  719. ! # Test 58 and 59: Failed/Hangs - VMS does not support spell files (file names
  720.   # with too many dots).
  721.   #
  722. ! # Test 72: unknown reason
  723. ! # Test 85: no Lua interface
  724.   
  725.   .IFDEF WANT_GUI
  726.   SCRIPT_GUI = test16.out
  727. --- 78,121 ----
  728.   
  729.   SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
  730.        test6.out  test7.out  test8.out  test9.out  test10a.out\
  731. !      test13.out test14.out test15.out \
  732.        test18.out test19.out test20.out test21.out test22.out \
  733.        test23.out test24.out test26.out \
  734.        test28.out test29.out test30.out test31.out test32.out \
  735.        test33.out test34.out test35.out test36.out test37.out \
  736.        test38.out test39.out test40.out test41.out test42.out \
  737.        test43.out test44.out test45.out test46.out \
  738. !      test48.out test49.out test51.out test53.out test54.out \
  739. !      test55.out test56.out test57.out test60.out \
  740.        test61.out test62.out test63.out test64.out test65.out \
  741.        test66.out test67.out test68.out test69.out \
  742.        test71.out test72.out test74.out test75.out test76.out \
  743. !      test77a.out test78.out test79.out test80.out test81.out \
  744. !      test82.out test84.out test88.out test89.out \
  745.        test90.out test91.out test92.out test93.out test94.out \
  746. !      test95.out test96.out test98.out test99.out \
  747. !      test100.out test101.out test103.out test104.out \
  748.        test105.out
  749.   
  750.   # Known problems:
  751. ! # test17: ?
  752. ! #
  753. ! # test30: bug, most probably - a problem around mac format
  754.   #
  755. ! # test32: VMS is not case sensitive and all filenames are lowercase within Vim
  756.   # (this should be changed in order to preserve the original filename) - should
  757.   # be fixed. VMS allows just one dot in the filename
  758.   #
  759. ! # test58, test59: Failed/Hangs - VMS does not support spell files (file names
  760.   # with too many dots).
  761.   #
  762. ! # test72: bug - Vim hangs at :rename (while rename works well otherwise)
  763. ! # test78: bug - Vim dies at :recover Xtest 
  764. ! # test83: ?
  765. ! # test85: no Lua interface
  766. ! # test89: bug - findfile() does not work on VMS (just in the current directory) 
  767. ! # test97, test102: Just ODS-5 supports space and special chars in the filename.
  768. ! # On ODS-2 tests fail. 
  769.   
  770.   .IFDEF WANT_GUI
  771.   SCRIPT_GUI = test16.out
  772. ***************
  773. *** 101,107 ****
  774.   .ENDIF
  775.   
  776.   .IFDEF WANT_UNIX
  777. ! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out test73.out
  778.   .ENDIF
  779.   
  780.   .IFDEF WANT_WIN
  781. --- 123,129 ----
  782.   .ENDIF
  783.   
  784.   .IFDEF WANT_UNIX
  785. ! SCRIPT_UNIX = test10.out test12.out test17.out test25.out test27.out test49.out test73.out
  786.   .ENDIF
  787.   
  788.   .IFDEF WANT_WIN
  789. ***************
  790. *** 116,121 ****
  791. --- 138,147 ----
  792.   SCRIPT_MZSCH = test70.out 
  793.   .ENDIF
  794.   
  795. + .IFDEF HAVE_ODS5                                                                                                                                   
  796. + SCRIPT_ODS5 = test97.out test102.out                                                                                                   
  797. + .ENDIF  
  798.   .IFDEF HAVE_GZIP
  799.   SCRIPT_GZIP = test11.out
  800.   .ENDIF
  801. ***************
  802. *** 124,133 ****
  803. --- 150,177 ----
  804.   SCRIPT_GDIFF = test47.out
  805.   .ENDIF
  806.   
  807. + .IFDEF HAVE_CKSUM
  808. + SCRIPT_CKSUM = test77.out
  809. + .ENDIF
  810. + .IFDEF HAVE_ICONV
  811. + SCRIPT_ICONV = test83.out
  812. + .ENDIF
  813. + .IFDEF HAVE_LUA
  814. + SCRIPT_LUA = test85.out
  815. + .ENDIF
  816. + .IFDEF HAVE_PYTHON
  817. + SCRIPT_PYTHON = test86.out test87.out
  818. + .ENDIF
  819.   .in.out :
  820.       -@ !clean up before doing the test
  821.       -@ if "''F$SEARCH("test.out.*")'" .NES. "" then delete/noconfirm/nolog test.out.*
  822.       -@ if "''F$SEARCH("$*.out.*")'"   .NES. "" then delete/noconfirm/nolog $*.out.*
  823. +     -@ ! define TMP if not set - some tests use it
  824. +     -@ if "''F$TRNLNM("TMP")'" .EQS. "" then define/nolog TMP []
  825.       -@ write sys$output " "
  826.       -@ write sys$output "-----------------------------------------------"
  827.       -@ write sys$output "                "$*" "
  828. ***************
  829. *** 140,148 ****
  830.       -@ if "''F$SEARCH("$*.out.*")'"   .NES. "" then differences /par $*.out $*.ok;
  831.       -@ !clean up after the test
  832.       -@ if "''F$SEARCH("Xdotest.*")'"  .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  833.   
  834. ! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) \
  835. !     $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) nolog 
  836.       -@ write sys$output " "
  837.       -@ write sys$output "-----------------------------------------------"
  838.       -@ write sys$output "                All done"
  839. --- 184,193 ----
  840.       -@ if "''F$SEARCH("$*.out.*")'"   .NES. "" then differences /par $*.out $*.ok;
  841.       -@ !clean up after the test
  842.       -@ if "''F$SEARCH("Xdotest.*")'"  .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  843. +     -@ if "''F$SEARCH("Xtest.*")'"    .NES. "" then delete/noconfirm/nolog Xtest.*.*
  844.   
  845. ! all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_ODS5) $(SCRIPT_GZIP) \
  846. !     $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_CKSUM) $(SCRIPT_ICONV) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog 
  847.       -@ write sys$output " "
  848.       -@ write sys$output "-----------------------------------------------"
  849.       -@ write sys$output "                All done"
  850. ***************
  851. *** 165,177 ****
  852.       -@ write sys$output "                Test results:"
  853.       -@ write sys$output "-----------------------------------------------"
  854.       -@ write sys$output "MAKE_VMS.MMS options:"
  855. !     -@ write sys$output "   WANT_GUI  = ""$(WANT_GUI)"" "
  856. !     -@ write sys$output "   WANT_UNIX = ""$(WANT_UNIX)"" "
  857. !     -@ write sys$output "   WANT_WIN  = ""$(WANT_WIN)"" "
  858. !     -@ write sys$output "   WANT_SPELL= ""$(WANT_SPELL)"" "
  859. !     -@ write sys$output "   WANT_MZSCH= ""$(WANT_MZSCH)"" "
  860. !     -@ write sys$output "   HAVE_GZIP = ""$(HAVE_GZIP)"" "
  861. !     -@ write sys$output "   HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
  862.       -@ write sys$output "Default vimrc file is VMS.VIM:"
  863.       -@ write sys$output "-----------------------------------------------"
  864.       -@ type VMS.VIM
  865. --- 210,227 ----
  866.       -@ write sys$output "                Test results:"
  867.       -@ write sys$output "-----------------------------------------------"
  868.       -@ write sys$output "MAKE_VMS.MMS options:"
  869. !     -@ write sys$output "   WANT_GUI   = ""$(WANT_GUI)"" "
  870. !     -@ write sys$output "   WANT_UNIX  = ""$(WANT_UNIX)"" "
  871. !     -@ write sys$output "   WANT_WIN   = ""$(WANT_WIN)"" "
  872. !     -@ write sys$output "   WANT_SPELL = ""$(WANT_SPELL)"" "
  873. !     -@ write sys$output "   WANT_MZSCH = ""$(WANT_MZSCH)"" "
  874. !     -@ write sys$output "   HAVE_ODS5  = ""$(HAVE_ODS5)"" "
  875. !     -@ write sys$output "   HAVE_GZIP  = ""$(HAVE_GZIP)"" "
  876. !     -@ write sys$output "   HAVE_GDIFF = ""$(HAVE_GDIFF)"" "
  877. !     -@ write sys$output "   HAVE_CKSUM = ""$(HAVE_CKSUM)"" "      
  878. !     -@ write sys$output "   HAVE_ICONV = ""$(HAVE_ICONV)"" "
  879. !     -@ write sys$output "   HAVE_LUA   = ""$(HAVE_LUA)"" "
  880. !     -@ write sys$output "   HAVE_PYTHON= ""$(HAVE_PYTHON)"" "
  881.       -@ write sys$output "Default vimrc file is VMS.VIM:"
  882.       -@ write sys$output "-----------------------------------------------"
  883.       -@ type VMS.VIM
  884. ***************
  885. *** 181,186 ****
  886. --- 231,239 ----
  887.       -@ if "''F$SEARCH("test.log")'"     .NES. "" then delete/noconfirm/nolog test.log.*
  888.       -@ if "''F$SEARCH("test.ok")'"      .NES. "" then delete/noconfirm/nolog test.ok.*
  889.       -@ if "''F$SEARCH("Xdotest.*")'"    .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  890. +     -@ if "''F$SEARCH("Xtest*.*")'"     .NES. "" then delete/noconfirm/nolog Xtest*.*.*
  891. +     -@ if "''F$SEARCH("XX*.*")'"        .NES. "" then delete/noconfirm/nolog XX*.*.*
  892. +     -@ if "''F$SEARCH("_un_*.*")'"      .NES. "" then delete/noconfirm/nolog _un_*.*.*
  893.       -@ if "''F$SEARCH("*.*_sw*")'"      .NES. "" then delete/noconfirm/nolog *.*_sw*.*
  894.       -@ if "''F$SEARCH("*.failed")'"     .NES. "" then delete/noconfirm/nolog *.failed.*
  895.       -@ if "''F$SEARCH("*.rej")'"        .NES. "" then delete/noconfirm/nolog *.rej.*
  896. ***************
  897. *** 188,193 ****
  898.       -@ if "''F$SEARCH("small.vim")'"    .NES. "" then delete/noconfirm/nolog small.vim.*
  899.       -@ if "''F$SEARCH("mbyte.vim")'"    .NES. "" then delete/noconfirm/nolog mbyte.vim.*
  900.       -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.*
  901. !     -@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.*
  902.       -@ if "''F$SEARCH("viminfo.*")'"    .NES. "" then delete/noconfirm/nolog viminfo.*.*
  903.   
  904. --- 241,246 ----
  905.       -@ if "''F$SEARCH("small.vim")'"    .NES. "" then delete/noconfirm/nolog small.vim.*
  906.       -@ if "''F$SEARCH("mbyte.vim")'"    .NES. "" then delete/noconfirm/nolog mbyte.vim.*
  907.       -@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.*
  908. !     -@ if "''F$SEARCH("lua.vim")'"      .NES. "" then delete/noconfirm/nolog lua.vim.*
  909.       -@ if "''F$SEARCH("viminfo.*")'"    .NES. "" then delete/noconfirm/nolog viminfo.*.*
  910.   
  911. *** ../vim-7.4.196/src/testdir/test72.in    2012-01-04 19:04:17.000000000 +0100
  912. --- src/testdir/test72.in    2014-03-12 15:55:50.204741288 +0100
  913. ***************
  914. *** 105,111 ****
  915.   u:.w >>test.out
  916.   :"
  917.   :" Rename the undo file so that it gets cleaned up.
  918. ! :call rename(".Xtestfile.un~", "Xtestundo")
  919.   :qa!
  920.   ENDTEST
  921.   
  922. --- 105,115 ----
  923.   u:.w >>test.out
  924.   :"
  925.   :" Rename the undo file so that it gets cleaned up.
  926. ! :if has("vms")
  927. ! : call rename("_un_Xtestfile", "Xtestundo")
  928. ! :else
  929. ! : call rename(".Xtestfile.un~", "Xtestundo")
  930. ! :endif
  931.   :qa!
  932.   ENDTEST
  933.   
  934. *** ../vim-7.4.196/src/testdir/test77a.com    2014-03-12 16:49:10.740790329 +0100
  935. --- src/testdir/test77a.com    2014-03-12 16:40:04.316781957 +0100
  936. ***************
  937. *** 0 ****
  938. --- 1,8 ----
  939. + $! test77a - help file creating checksum on VMS
  940. + $! Created by Zoltan Arpadffy
  941. + $
  942. + $ IF P1 .NES. ""
  943. + $ THEN
  944. + $    checksum 'P1'
  945. + $    show symb CHECKSUM$CHECKSUM
  946. + $ ENDIF
  947. *** ../vim-7.4.196/src/testdir/test77a.in    2014-03-12 16:49:10.748790329 +0100
  948. --- src/testdir/test77a.in    2014-03-12 15:55:50.204741288 +0100
  949. ***************
  950. *** 0 ****
  951. --- 1,31 ----
  952. + Inserts 2 million lines with consecutive integers starting from 1
  953. + (essentially, the output of GNU's seq 1 2000000), writes them to Xtest
  954. + and writes its cksum to test.out.
  955. + We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
  956. + up the lines the checksum would differ.
  957. + cksum is part of POSIX and so should be available on most Unixes.
  958. + If it isn't available then the test will be skipped.
  959. + VMS does not have CKSUM but has a built in CHECKSUM - it should be used
  960. + STARTTEST
  961. + :so small.vim
  962. + :if !has("vms")
  963. + : e! test.ok
  964. + : w! test.out
  965. + : qa!
  966. + :endif
  967. + :set fileformat=unix undolevels=-1
  968. + ggdG
  969. + :let i = 1
  970. + :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
  971. + ggdd
  972. + :w! Xtest.
  973. + :r !@test77a.com Xtest.
  974. + :s/\s/ /g
  975. + :set fileformat&
  976. + :.w! test.out
  977. + :qa!
  978. + ENDTEST
  979. *** ../vim-7.4.196/src/testdir/test77a.ok    2014-03-12 16:49:10.756790330 +0100
  980. --- src/testdir/test77a.ok    2014-03-12 15:55:50.204741288 +0100
  981. ***************
  982. *** 0 ****
  983. --- 1 ----
  984. +   CHECKSUM$CHECKSUM = "844110470"
  985. *** ../vim-7.4.196/src/undo.c    2014-01-23 18:12:44.695676751 +0100
  986. --- src/undo.c    2014-03-12 16:31:52.432774419 +0100
  987. ***************
  988. *** 790,798 ****
  989. --- 790,809 ----
  990.           if (undo_file_name == NULL)
  991.           break;
  992.           p = gettail(undo_file_name);
  993. + #ifdef VMS
  994. +         /* VMS can not handle more than one dot in the filenames
  995. +          * use "dir/name" -> "dir/_un_name" - add _un_
  996. +          * at the beginning to keep the extension */
  997. +         mch_memmove(p + 4,  p, STRLEN(p) + 1);
  998. +         mch_memmove(p, "_un_", 4);
  999. + #else
  1000. +         /* Use same directory as the ffname,
  1001. +          * "dir/name" -> "dir/.name.un~" */
  1002.           mch_memmove(p + 1, p, STRLEN(p) + 1);
  1003.           *p = '.';
  1004.           STRCAT(p, ".un~");
  1005. + #endif
  1006.       }
  1007.       else
  1008.       {
  1009. *** ../vim-7.4.196/src/version.c    2014-03-12 15:50:18.472736205 +0100
  1010. --- src/version.c    2014-03-12 15:54:26.712740008 +0100
  1011. ***************
  1012. *** 740,741 ****
  1013. --- 740,743 ----
  1014.   {   /* Add new patch number below this line */
  1015. + /**/
  1016. +     197,
  1017.   /**/
  1018.  
  1019. -- 
  1020. Violators can be fined, arrested or jailed for making ugly faces at a dog.
  1021.         [real standing law in Oklahoma, United States of America]
  1022.  
  1023.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  1024. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  1025. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  1026.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  1027.