Nikolay Sivov : ucrtbase: Implement _get_narrow_winmain_command_line/ _get_wide_winmain_command_line.

Alexandre Julliard julliard at winehq.org
Fri Oct 7 15:09:13 CDT 2016


Module: wine
Branch: stable
Commit: 5edf349cffef54538dc0e9073dd1c9e61982a7d0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5edf349cffef54538dc0e9073dd1c9e61982a7d0

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Jul 28 12:24:24 2016 +0200

ucrtbase: Implement _get_narrow_winmain_command_line/_get_wide_winmain_command_line.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 1411d800ee660b92798a0edbbc414e51a090da59)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 .../api-ms-win-crt-runtime-l1-1-0.spec             |  4 +-
 dlls/msvcrt/data.c                                 | 54 ++++++++++++++++++++++
 dlls/ucrtbase/ucrtbase.spec                        |  4 +-
 3 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec b/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec
index f7de559..4c9a653 100644
--- a/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec
@@ -43,11 +43,11 @@
 @ cdecl _get_initial_narrow_environment() ucrtbase._get_initial_narrow_environment
 @ stub _get_initial_wide_environment
 @ cdecl _get_invalid_parameter_handler() ucrtbase._get_invalid_parameter_handler
-@ stub _get_narrow_winmain_command_line
+@ cdecl _get_narrow_winmain_command_line() ucrtbase._get_narrow_winmain_command_line
 @ cdecl _get_pgmptr(ptr) ucrtbase._get_pgmptr
 @ cdecl _get_terminate() ucrtbase._get_terminate
 @ cdecl _get_thread_local_invalid_parameter_handler() ucrtbase._get_thread_local_invalid_parameter_handler
-@ stub _get_wide_winmain_command_line
+@ cdecl _get_wide_winmain_command_line() ucrtbase._get_wide_winmain_command_line
 @ cdecl _get_wpgmptr(ptr) ucrtbase._get_wpgmptr
 @ cdecl _getdllprocaddr(long str long) ucrtbase._getdllprocaddr
 @ cdecl _getpid() ucrtbase._getpid
diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c
index b665333..4da8666 100644
--- a/dlls/msvcrt/data.c
+++ b/dlls/msvcrt/data.c
@@ -684,3 +684,57 @@ int CDECL _initialize_wide_environment(void)
   FIXME("stub\n");
   return 0;
 }
+
+/*********************************************************************
+ *		_get_narrow_winmain_command_line (UCRTBASE.@)
+ */
+char* CDECL _get_narrow_winmain_command_line(void)
+{
+  static char *narrow_command_line;
+  char *s;
+
+  if (narrow_command_line)
+      return narrow_command_line;
+
+  s = GetCommandLineA();
+  while (*s && *s != ' ' && *s != '\t')
+  {
+      if (*s++ == '"')
+      {
+          while (*s && *s++ != '"')
+              ;
+      }
+  }
+
+  while (*s == ' ' || *s == '\t')
+      s++;
+
+  return narrow_command_line = s;
+}
+
+/*********************************************************************
+ *		_get_wide_winmain_command_line (UCRTBASE.@)
+ */
+MSVCRT_wchar_t* CDECL _get_wide_winmain_command_line(void)
+{
+  static MSVCRT_wchar_t *wide_command_line;
+  MSVCRT_wchar_t *s;
+
+  if (wide_command_line)
+      return wide_command_line;
+
+  s = GetCommandLineW();
+  while (*s && *s != ' ' && *s != '\t')
+  {
+      if (*s++ == '"')
+      {
+          while (*s && *s++ != '"')
+              ;
+      }
+  }
+
+  while (*s == ' ' || *s == '\t')
+      s++;
+
+  return wide_command_line = s;
+}
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index 26acae7..b5f752f 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -368,7 +368,7 @@
 @ cdecl _get_initial_narrow_environment()
 @ stub _get_initial_wide_environment
 @ cdecl _get_invalid_parameter_handler()
-@ stub _get_narrow_winmain_command_line
+@ cdecl _get_narrow_winmain_command_line()
 @ cdecl _get_osfhandle(long) MSVCRT__get_osfhandle
 @ cdecl _get_pgmptr(ptr)
 @ cdecl _get_printf_count_output() MSVCRT__get_printf_count_output
@@ -379,7 +379,7 @@
 @ cdecl _get_timezone(ptr)
 @ cdecl _get_tzname(ptr str long long) MSVCRT__get_tzname
 @ cdecl _get_unexpected() MSVCRT__get_unexpected
-@ stub _get_wide_winmain_command_line
+@ cdecl _get_wide_winmain_command_line()
 @ cdecl _get_wpgmptr(ptr)
 @ cdecl _getc_nolock(ptr) MSVCRT__fgetc_nolock
 @ cdecl _getch()




More information about the wine-cvs mailing list