Patch 7.4.2195
Problem:    MS-Windows: The vimrun program does not support Unicode.
Solution:   Use GetCommandLineW().  Cleanup old #ifdefs. (Ken Takata)
Files:      src/vimrun.c


*** ../vim-7.4.2194/src/vimrun.c        2015-10-13 17:52:55.921988351 +0200
--- src/vimrun.c        2016-08-10 21:52:15.854044151 +0200
***************
*** 17,105 ****
  
  #include <stdio.h>
  #include <stdlib.h>
! #ifndef __CYGWIN__
! # include <conio.h>
  #endif
  
  #ifdef __BORLANDC__
- extern char *
- #ifdef _RTLDLL
- __import
- #endif
- _oscmd;
  # define _kbhit kbhit
  # define _getch getch
- #else
- # ifdef __MINGW32__
- #  ifndef WIN32_LEAN_AND_MEAN
- #   define WIN32_LEAN_AND_MEAN
- #  endif
- #  include <windows.h>
- # else
- #  ifdef __CYGWIN__
- #   ifndef WIN32_LEAN_AND_MEAN
- #    define WIN32_LEAN_AND_MEAN
- #   endif
- #   include <windows.h>
- #   define _getch getchar
- #  else
- extern char *_acmdln;
- #  endif
- # endif
  #endif
  
      int
  main(void)
  {
!     const char        *p;
!     int               retval;
!     int               inquote = 0;
!     int               silent = 0;
  
- #ifdef __BORLANDC__
-     p = _oscmd;
- #else
- # if defined(__MINGW32__) || defined(__CYGWIN__)
-     p = (const char *)GetCommandLine();
- # else
-     p = _acmdln;
- # endif
- #endif
      /*
       * Skip the executable name, which might be in "".
       */
      while (*p)
      {
!       if (*p == '"')
            inquote = !inquote;
!       else if (!inquote && *p == ' ')
        {
            ++p;
            break;
        }
        ++p;
      }
!     while (*p == ' ')
          ++p;
  
      /*
       * "-s" argument: don't wait for a key hit.
       */
!     if (p[0] == '-' && p[1] == 's' && p[2] == ' ')
      {
        silent = 1;
        p += 3;
!       while (*p == ' ')
            ++p;
      }
  
      /* Print the command, including quotes and redirection. */
!     puts(p);
  
      /*
       * Do it!
       */
!     retval = system(p);
  
      if (retval == -1)
        perror("vimrun system(): ");
--- 17,82 ----
  
  #include <stdio.h>
  #include <stdlib.h>
! #include <conio.h>
! #ifndef WIN32_LEAN_AND_MEAN
! # define WIN32_LEAN_AND_MEAN
  #endif
+ #include <windows.h>
  
  #ifdef __BORLANDC__
  # define _kbhit kbhit
  # define _getch getch
  #endif
  
      int
  main(void)
  {
!     const wchar_t   *p;
!     int                   retval;
!     int                   inquote = 0;
!     int                   silent = 0;
!     HANDLE        hstdout;
!     DWORD         written;
! 
!     p = (const wchar_t *)GetCommandLineW();
  
      /*
       * Skip the executable name, which might be in "".
       */
      while (*p)
      {
!       if (*p == L'"')
            inquote = !inquote;
!       else if (!inquote && *p == L' ')
        {
            ++p;
            break;
        }
        ++p;
      }
!     while (*p == L' ')
          ++p;
  
      /*
       * "-s" argument: don't wait for a key hit.
       */
!     if (p[0] == L'-' && p[1] == L's' && p[2] == L' ')
      {
        silent = 1;
        p += 3;
!       while (*p == L' ')
            ++p;
      }
  
      /* Print the command, including quotes and redirection. */
!     hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
!     WriteConsoleW(hstdout, p, wcslen(p), &written, NULL);
!     WriteConsoleW(hstdout, L"\r\n", 2, &written, NULL);
  
      /*
       * Do it!
       */
!     retval = _wsystem(p);
  
      if (retval == -1)
        perror("vimrun system(): ");
***************
*** 110,119 ****
      {
        puts("Hit any key to close this window...");
  
- #ifndef __CYGWIN__
        while (_kbhit())
            (void)_getch();
- #endif
        (void)_getch();
      }
  
--- 87,94 ----
*** ../vim-7.4.2194/src/version.c       2016-08-10 21:36:19.319004255 +0200
--- src/version.c       2016-08-10 21:53:51.361163542 +0200
***************
*** 765,766 ****
--- 765,768 ----
  {   /* Add new patch number below this line */
+ /**/
+     2195,
  /**/

-- 
A)bort, R)etry, D)o it right this time

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui