Karsten Hopp 683f3a
To: vim_dev@googlegroups.com
Karsten Hopp 683f3a
Subject: Patch 7.4.103
Karsten Hopp 683f3a
Fcc: outbox
Karsten Hopp 683f3a
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 683f3a
Mime-Version: 1.0
Karsten Hopp 683f3a
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 683f3a
Content-Transfer-Encoding: 8bit
Karsten Hopp 683f3a
------------
Karsten Hopp 683f3a
Karsten Hopp 683f3a
Patch 7.4.103
Karsten Hopp 683f3a
Problem:    Dos installer uses an old way to escape spaces in the diff
Karsten Hopp 683f3a
	    command.
Karsten Hopp 683f3a
Solution:   Adjust the quoting to the new default shellxquote. (Ben Fritz)
Karsten Hopp 683f3a
Files:	    src/dosinst.c
Karsten Hopp 683f3a
Karsten Hopp 683f3a
Karsten Hopp 683f3a
*** ../vim-7.4.102/src/dosinst.c	2013-11-07 04:49:23.000000000 +0100
Karsten Hopp 683f3a
--- src/dosinst.c	2013-11-21 18:12:13.000000000 +0100
Karsten Hopp 683f3a
***************
Karsten Hopp 683f3a
*** 1192,1214 ****
Karsten Hopp 683f3a
  	fprintf(fd, "  if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n");
Karsten Hopp 683f3a
  
Karsten Hopp 683f3a
  	/* If the path has a space:  When using cmd.exe (Win NT/2000/XP) put
Karsten Hopp 683f3a
! 	 * quotes around the whole command and around the diff command.
Karsten Hopp 683f3a
  	 * Otherwise put a double quote just before the space and at the
Karsten Hopp 683f3a
  	 * end of the command.  Putting quotes around the whole thing
Karsten Hopp 683f3a
  	 * doesn't work on Win 95/98/ME.  This is mostly guessed! */
Karsten Hopp 683f3a
- 	fprintf(fd, "  let eq = ''\n");
Karsten Hopp 683f3a
  	fprintf(fd, "  if $VIMRUNTIME =~ ' '\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    if &sh =~ '\\
Karsten Hopp 683f3a
! 	fprintf(fd, "      let cmd = '\"\"' . $VIMRUNTIME . '\\diff\"'\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "      let eq = '\"'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    else\n");
Karsten Hopp 683f3a
  	fprintf(fd, "      let cmd = substitute($VIMRUNTIME, ' ', '\" ', '') . '\\diff\"'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    endif\n");
Karsten Hopp 683f3a
  	fprintf(fd, "  else\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    let cmd = $VIMRUNTIME . '\\diff'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "  endif\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq\n");
Karsten Hopp 683f3a
! 
Karsten Hopp 683f3a
  	fprintf(fd, "endfunction\n");
Karsten Hopp 683f3a
  	fprintf(fd, "\n");
Karsten Hopp 683f3a
      }
Karsten Hopp 683f3a
--- 1192,1220 ----
Karsten Hopp 683f3a
  	fprintf(fd, "  if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n");
Karsten Hopp 683f3a
  
Karsten Hopp 683f3a
  	/* If the path has a space:  When using cmd.exe (Win NT/2000/XP) put
Karsten Hopp 683f3a
! 	 * quotes around the diff command and rely on the default value of
Karsten Hopp 683f3a
!          * shellxquote to solve the quoting problem for the whole command.
Karsten Hopp 683f3a
!          *
Karsten Hopp 683f3a
  	 * Otherwise put a double quote just before the space and at the
Karsten Hopp 683f3a
  	 * end of the command.  Putting quotes around the whole thing
Karsten Hopp 683f3a
  	 * doesn't work on Win 95/98/ME.  This is mostly guessed! */
Karsten Hopp 683f3a
  	fprintf(fd, "  if $VIMRUNTIME =~ ' '\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    if &sh =~ '\\
Karsten Hopp 683f3a
! 	fprintf(fd, "      if empty(&shellxquote)\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "        let l:shxq_sav = ''\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "        set shellxquote&\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "      endif\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "      let cmd = '\"' . $VIMRUNTIME . '\\diff\"'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    else\n");
Karsten Hopp 683f3a
  	fprintf(fd, "      let cmd = substitute($VIMRUNTIME, ' ', '\" ', '') . '\\diff\"'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    endif\n");
Karsten Hopp 683f3a
  	fprintf(fd, "  else\n");
Karsten Hopp 683f3a
  	fprintf(fd, "    let cmd = $VIMRUNTIME . '\\diff'\n");
Karsten Hopp 683f3a
  	fprintf(fd, "  endif\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "  if exists('l:shxq_sav')\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "    let &shellxquote=l:shxq_sav\n");
Karsten Hopp 683f3a
! 	fprintf(fd, "  endif\n");
Karsten Hopp 683f3a
  	fprintf(fd, "endfunction\n");
Karsten Hopp 683f3a
  	fprintf(fd, "\n");
Karsten Hopp 683f3a
      }
Karsten Hopp 683f3a
*** ../vim-7.4.102/src/version.c	2013-11-21 17:42:26.000000000 +0100
Karsten Hopp 683f3a
--- src/version.c	2013-11-21 18:11:08.000000000 +0100
Karsten Hopp 683f3a
***************
Karsten Hopp 683f3a
*** 740,741 ****
Karsten Hopp 683f3a
--- 740,743 ----
Karsten Hopp 683f3a
  {   /* Add new patch number below this line */
Karsten Hopp 683f3a
+ /**/
Karsten Hopp 683f3a
+     103,
Karsten Hopp 683f3a
  /**/
Karsten Hopp 683f3a
Karsten Hopp 683f3a
-- 
Karsten Hopp 683f3a
The fastest way to get an engineer to solve a problem is to declare that the
Karsten Hopp 683f3a
problem is unsolvable.  No engineer can walk away from an unsolvable problem
Karsten Hopp 683f3a
until it's solved.
Karsten Hopp 683f3a
				(Scott Adams - The Dilbert principle)
Karsten Hopp 683f3a
Karsten Hopp 683f3a
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 683f3a
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 683f3a
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 683f3a
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///