Karsten Hopp 8785d6
To: vim_dev@googlegroups.com
Karsten Hopp 8785d6
Subject: Patch 7.3.1295
Karsten Hopp 8785d6
Fcc: outbox
Karsten Hopp 8785d6
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 8785d6
Mime-Version: 1.0
Karsten Hopp 8785d6
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 8785d6
Content-Transfer-Encoding: 8bit
Karsten Hopp 8785d6
------------
Karsten Hopp 8785d6
Karsten Hopp 8785d6
Patch 7.3.1295
Karsten Hopp 8785d6
Problem:    glob() and globpath() do not handle escaped special characters
Karsten Hopp 8785d6
	    properly.
Karsten Hopp 8785d6
Solution:   Handle escaped characters differently. (Adnan Zafar)
Karsten Hopp 8785d6
Files:	    src/testdir/Makefile, src/testdir/test97.in,
Karsten Hopp 8785d6
	    src/testdir/test97.ok, src/testdir/Make_amiga.mak,
Karsten Hopp 8785d6
	    src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
Karsten Hopp 8785d6
	    src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/fileio.c,
Karsten Hopp 8785d6
	    src/misc1.c
Karsten Hopp 8785d6
Karsten Hopp 8785d6
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Makefile	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Makefile	2013-07-03 16:20:47.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 29,35 ****
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS_GUI = test16.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
--- 29,35 ----
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS_GUI = test16.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/test97.in	2013-07-03 16:52:09.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/test97.in	2013-07-03 16:24:24.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 0 ****
Karsten Hopp 8785d6
--- 1,17 ----
Karsten Hopp 8785d6
+ Test whether glob()/globpath() return correct results with certain escaped
Karsten Hopp 8785d6
+ characters.
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ STARTTEST
Karsten Hopp 8785d6
+ :so small.vim
Karsten Hopp 8785d6
+ :set shell=doesnotexist
Karsten Hopp 8785d6
+ :e test.out
Karsten Hopp 8785d6
+ :put =glob('Xxx\{')
Karsten Hopp 8785d6
+ :put =glob('Xxx\$')
Karsten Hopp 8785d6
+ :w! Xxx{
Karsten Hopp 8785d6
+ :w! Xxx\$
Karsten Hopp 8785d6
+ :put =glob('Xxx\{')
Karsten Hopp 8785d6
+ :put =glob('Xxx\$')
Karsten Hopp 8785d6
+ :w
Karsten Hopp 8785d6
+ :qa!
Karsten Hopp 8785d6
+ ENDTEST
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/test97.ok	2013-07-03 16:52:09.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/test97.ok	2013-07-03 16:14:50.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 0 ****
Karsten Hopp 8785d6
--- 1,5 ----
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ Xxx{
Karsten Hopp 8785d6
+ Xxx$
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Make_amiga.mak	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Make_amiga.mak	2013-07-03 16:21:39.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 33,39 ****
Karsten Hopp 8785d6
  		test76.out test77.out test78.out test79.out test80.out \
Karsten Hopp 8785d6
  		test81.out test82.out test83.out test84.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  .SUFFIXES: .in .out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
--- 33,39 ----
Karsten Hopp 8785d6
  		test76.out test77.out test78.out test79.out test80.out \
Karsten Hopp 8785d6
  		test81.out test82.out test83.out test84.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  .SUFFIXES: .in .out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 146,148 ****
Karsten Hopp 8785d6
--- 146,149 ----
Karsten Hopp 8785d6
  test94.out: test94.in
Karsten Hopp 8785d6
  test95.out: test95.in
Karsten Hopp 8785d6
  test96.out: test96.in
Karsten Hopp 8785d6
+ test97.out: test97.in
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Make_dos.mak	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Make_dos.mak	2013-07-03 16:21:46.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 32,38 ****
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS32 =	test50.out test70.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
--- 32,38 ----
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS32 =	test50.out test70.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Make_ming.mak	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Make_ming.mak	2013-07-03 16:21:49.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 52,58 ****
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS32 =	test50.out test70.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
--- 52,58 ----
Karsten Hopp 8785d6
  		test79.out test80.out test81.out test82.out test83.out \
Karsten Hopp 8785d6
  		test84.out test85.out test86.out test87.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  SCRIPTS32 =	test50.out test70.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Make_os2.mak	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Make_os2.mak	2013-07-03 16:21:51.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 33,39 ****
Karsten Hopp 8785d6
  		test76.out test77.out test78.out test79.out test80.out \
Karsten Hopp 8785d6
  		test81.out test82.out test83.out test84.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  .SUFFIXES: .in .out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
--- 33,39 ----
Karsten Hopp 8785d6
  		test76.out test77.out test78.out test79.out test80.out \
Karsten Hopp 8785d6
  		test81.out test82.out test83.out test84.out test88.out \
Karsten Hopp 8785d6
  		test89.out test90.out test91.out test92.out test93.out \
Karsten Hopp 8785d6
! 		test94.out test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  .SUFFIXES: .in .out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/testdir/Make_vms.mms	2013-07-01 21:24:40.000000000 +0200
Karsten Hopp 8785d6
--- src/testdir/Make_vms.mms	2013-07-03 16:21:54.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 4,10 ****
Karsten Hopp 8785d6
  # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
Karsten Hopp 8785d6
  #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
Karsten Hopp 8785d6
  #
Karsten Hopp 8785d6
! # Last change:  2013 Jul 01
Karsten Hopp 8785d6
  #
Karsten Hopp 8785d6
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
Karsten Hopp 8785d6
  # Edit the lines in the Configuration section below to select.
Karsten Hopp 8785d6
--- 4,10 ----
Karsten Hopp 8785d6
  # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
Karsten Hopp 8785d6
  #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
Karsten Hopp 8785d6
  #
Karsten Hopp 8785d6
! # Last change:  2013 Jul 03
Karsten Hopp 8785d6
  #
Karsten Hopp 8785d6
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
Karsten Hopp 8785d6
  # Edit the lines in the Configuration section below to select.
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 78,84 ****
Karsten Hopp 8785d6
  	 test77.out test78.out test79.out test80.out test81.out \
Karsten Hopp 8785d6
  	 test82.out test83.out test84.out test88.out test89.out \
Karsten Hopp 8785d6
  	 test90.out test91.out test92.out test93.out test94.out \
Karsten Hopp 8785d6
! 	 test95.out test96.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  # Known problems:
Karsten Hopp 8785d6
  # Test 30: a problem around mac format - unknown reason
Karsten Hopp 8785d6
--- 78,84 ----
Karsten Hopp 8785d6
  	 test77.out test78.out test79.out test80.out test81.out \
Karsten Hopp 8785d6
  	 test82.out test83.out test84.out test88.out test89.out \
Karsten Hopp 8785d6
  	 test90.out test91.out test92.out test93.out test94.out \
Karsten Hopp 8785d6
! 	 test95.out test96.out test97.out
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
  # Known problems:
Karsten Hopp 8785d6
  # Test 30: a problem around mac format - unknown reason
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/fileio.c	2013-06-26 19:17:58.000000000 +0200
Karsten Hopp 8785d6
--- src/fileio.c	2013-07-03 16:27:10.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10301,10307 ****
Karsten Hopp 8785d6
  		 * foo\,bar -> foo,bar
Karsten Hopp 8785d6
  		 * foo\ bar -> foo bar
Karsten Hopp 8785d6
  		 * Don't unescape \, * and others that are also special in a
Karsten Hopp 8785d6
! 		 * regexp. */
Karsten Hopp 8785d6
  		if (*++p == '?'
Karsten Hopp 8785d6
  #ifdef BACKSLASH_IN_FILENAME
Karsten Hopp 8785d6
  			&& no_bslash
Karsten Hopp 8785d6
--- 10301,10310 ----
Karsten Hopp 8785d6
  		 * foo\,bar -> foo,bar
Karsten Hopp 8785d6
  		 * foo\ bar -> foo bar
Karsten Hopp 8785d6
  		 * Don't unescape \, * and others that are also special in a
Karsten Hopp 8785d6
! 		 * regexp.
Karsten Hopp 8785d6
! 		 * An escaped { must be unescaped since we use magic not
Karsten Hopp 8785d6
! 		 * verymagic.
Karsten Hopp 8785d6
! 		 */
Karsten Hopp 8785d6
  		if (*++p == '?'
Karsten Hopp 8785d6
  #ifdef BACKSLASH_IN_FILENAME
Karsten Hopp 8785d6
  			&& no_bslash
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10309,10315 ****
Karsten Hopp 8785d6
  			)
Karsten Hopp 8785d6
  		    reg_pat[i++] = '?';
Karsten Hopp 8785d6
  		else
Karsten Hopp 8785d6
! 		    if (*p == ',' || *p == '%' || *p == '#' || *p == ' ')
Karsten Hopp 8785d6
  			reg_pat[i++] = *p;
Karsten Hopp 8785d6
  		    else
Karsten Hopp 8785d6
  		    {
Karsten Hopp 8785d6
--- 10312,10319 ----
Karsten Hopp 8785d6
  			)
Karsten Hopp 8785d6
  		    reg_pat[i++] = '?';
Karsten Hopp 8785d6
  		else
Karsten Hopp 8785d6
! 		    if (*p == ',' || *p == '%' || *p == '#'
Karsten Hopp 8785d6
! 						    || *p == ' ' || *p == '{')
Karsten Hopp 8785d6
  			reg_pat[i++] = *p;
Karsten Hopp 8785d6
  		    else
Karsten Hopp 8785d6
  		    {
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/misc1.c	2013-06-17 19:26:29.000000000 +0200
Karsten Hopp 8785d6
--- src/misc1.c	2013-07-03 16:39:46.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10457,10462 ****
Karsten Hopp 8785d6
--- 10457,10510 ----
Karsten Hopp 8785d6
  }
Karsten Hopp 8785d6
  #endif
Karsten Hopp 8785d6
  
Karsten Hopp 8785d6
+ static int has_env_var __ARGS((char_u *p));
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ /*
Karsten Hopp 8785d6
+  * Return TRUE if "p" contains what looks like an environment variable.
Karsten Hopp 8785d6
+  * Allowing for escaping.
Karsten Hopp 8785d6
+  */
Karsten Hopp 8785d6
+     static int
Karsten Hopp 8785d6
+ has_env_var(p)
Karsten Hopp 8785d6
+     char_u *p;
Karsten Hopp 8785d6
+ {
Karsten Hopp 8785d6
+     for ( ; *p; mb_ptr_adv(p))
Karsten Hopp 8785d6
+     {
Karsten Hopp 8785d6
+ 	if (*p == '\\' && p[1] != NUL)
Karsten Hopp 8785d6
+ 	    ++p;
Karsten Hopp 8785d6
+ 	else if (vim_strchr((char_u *)
Karsten Hopp 8785d6
+ #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
Karsten Hopp 8785d6
+ 				    "$%"
Karsten Hopp 8785d6
+ #else
Karsten Hopp 8785d6
+ 				    "$"
Karsten Hopp 8785d6
+ #endif
Karsten Hopp 8785d6
+ 					, *p) != NULL)
Karsten Hopp 8785d6
+ 	    return TRUE;
Karsten Hopp 8785d6
+     }
Karsten Hopp 8785d6
+     return FALSE;
Karsten Hopp 8785d6
+ }
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ #ifdef SPECIAL_WILDCHAR
Karsten Hopp 8785d6
+ static int has_special_wildchar __ARGS((char_u *p));
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
+ /*
Karsten Hopp 8785d6
+  * Return TRUE if "p" contains a special wildcard character.
Karsten Hopp 8785d6
+  * Allowing for escaping.
Karsten Hopp 8785d6
+  */
Karsten Hopp 8785d6
+     static int
Karsten Hopp 8785d6
+ has_special_wildchar(p)
Karsten Hopp 8785d6
+     char_u  *p;
Karsten Hopp 8785d6
+ {
Karsten Hopp 8785d6
+     for ( ; *p; mb_ptr_adv(p))
Karsten Hopp 8785d6
+     {
Karsten Hopp 8785d6
+ 	if (*p == '\\' && p[1] != NUL)
Karsten Hopp 8785d6
+ 	    ++p;
Karsten Hopp 8785d6
+ 	else if (vim_strchr((char_u *)SPECIAL_WILDCHAR, *p) != NULL)
Karsten Hopp 8785d6
+ 	    return TRUE;
Karsten Hopp 8785d6
+     }
Karsten Hopp 8785d6
+     return FALSE;
Karsten Hopp 8785d6
+ }
Karsten Hopp 8785d6
+ #endif
Karsten Hopp 8785d6
+ 
Karsten Hopp 8785d6
  /*
Karsten Hopp 8785d6
   * Generic wildcard expansion code.
Karsten Hopp 8785d6
   *
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10507,10513 ****
Karsten Hopp 8785d6
       */
Karsten Hopp 8785d6
      for (i = 0; i < num_pat; i++)
Karsten Hopp 8785d6
      {
Karsten Hopp 8785d6
! 	if (vim_strpbrk(pat[i], (char_u *)SPECIAL_WILDCHAR) != NULL
Karsten Hopp 8785d6
  # ifdef VIM_BACKTICK
Karsten Hopp 8785d6
  		&& !(vim_backtick(pat[i]) && pat[i][1] == '=')
Karsten Hopp 8785d6
  # endif
Karsten Hopp 8785d6
--- 10555,10561 ----
Karsten Hopp 8785d6
       */
Karsten Hopp 8785d6
      for (i = 0; i < num_pat; i++)
Karsten Hopp 8785d6
      {
Karsten Hopp 8785d6
! 	if (has_special_wildchar(pat[i])
Karsten Hopp 8785d6
  # ifdef VIM_BACKTICK
Karsten Hopp 8785d6
  		&& !(vim_backtick(pat[i]) && pat[i][1] == '=')
Karsten Hopp 8785d6
  # endif
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10537,10543 ****
Karsten Hopp 8785d6
  	    /*
Karsten Hopp 8785d6
  	     * First expand environment variables, "~/" and "~user/".
Karsten Hopp 8785d6
  	     */
Karsten Hopp 8785d6
! 	    if (vim_strchr(p, '$') != NULL || *p == '~')
Karsten Hopp 8785d6
  	    {
Karsten Hopp 8785d6
  		p = expand_env_save_opt(p, TRUE);
Karsten Hopp 8785d6
  		if (p == NULL)
Karsten Hopp 8785d6
--- 10585,10591 ----
Karsten Hopp 8785d6
  	    /*
Karsten Hopp 8785d6
  	     * First expand environment variables, "~/" and "~user/".
Karsten Hopp 8785d6
  	     */
Karsten Hopp 8785d6
! 	    if (has_env_var(p) || *p == '~')
Karsten Hopp 8785d6
  	    {
Karsten Hopp 8785d6
  		p = expand_env_save_opt(p, TRUE);
Karsten Hopp 8785d6
  		if (p == NULL)
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 10548,10554 ****
Karsten Hopp 8785d6
  		 * variable, use the shell to do that.  Discard previously
Karsten Hopp 8785d6
  		 * found file names and start all over again.
Karsten Hopp 8785d6
  		 */
Karsten Hopp 8785d6
! 		else if (vim_strchr(p, '$') != NULL || *p == '~')
Karsten Hopp 8785d6
  		{
Karsten Hopp 8785d6
  		    vim_free(p);
Karsten Hopp 8785d6
  		    ga_clear_strings(&ga);
Karsten Hopp 8785d6
--- 10596,10602 ----
Karsten Hopp 8785d6
  		 * variable, use the shell to do that.  Discard previously
Karsten Hopp 8785d6
  		 * found file names and start all over again.
Karsten Hopp 8785d6
  		 */
Karsten Hopp 8785d6
! 		else if (has_env_var(p) || *p == '~')
Karsten Hopp 8785d6
  		{
Karsten Hopp 8785d6
  		    vim_free(p);
Karsten Hopp 8785d6
  		    ga_clear_strings(&ga);
Karsten Hopp 8785d6
*** ../vim-7.3.1294/src/version.c	2013-07-03 15:46:59.000000000 +0200
Karsten Hopp 8785d6
--- src/version.c	2013-07-03 15:51:54.000000000 +0200
Karsten Hopp 8785d6
***************
Karsten Hopp 8785d6
*** 730,731 ****
Karsten Hopp 8785d6
--- 730,733 ----
Karsten Hopp 8785d6
  {   /* Add new patch number below this line */
Karsten Hopp 8785d6
+ /**/
Karsten Hopp 8785d6
+     1295,
Karsten Hopp 8785d6
  /**/
Karsten Hopp 8785d6
Karsten Hopp 8785d6
-- 
Karsten Hopp 8785d6
When I look deep into your eyes, I see JPEG artifacts.
Karsten Hopp 8785d6
I can tell by the pixels that we're wrong for each other.  (xkcd)
Karsten Hopp 8785d6
Karsten Hopp 8785d6
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 8785d6
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 8785d6
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 8785d6
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///