Alexandre Julliard : ntdll: Move create_startup_info() to env.c.
Alexandre Julliard
julliard at winehq.org
Thu Apr 15 16:57:44 CDT 2021
Module: wine
Branch: master
Commit: 8e7c6422e5a196b0e9acfaa4ca05b73468ec5a9f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8e7c6422e5a196b0e9acfaa4ca05b73468ec5a9f
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Apr 15 14:44:50 2021 +0200
ntdll: Move create_startup_info() to env.c.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/unix/env.c | 69 ++++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/process.c | 68 -----------------------------------------
dlls/ntdll/unix/unix_private.h | 1 +
3 files changed, 70 insertions(+), 68 deletions(-)
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
index 01d4f3ea418..33f96c65a7c 100644
--- a/dlls/ntdll/unix/env.c
+++ b/dlls/ntdll/unix/env.c
@@ -1897,6 +1897,23 @@ static inline WCHAR *get_dos_path( WCHAR *nt_path )
return nt_path;
}
+static inline const WCHAR *get_params_string( const RTL_USER_PROCESS_PARAMETERS *params,
+ const UNICODE_STRING *str )
+{
+ if (params->Flags & PROCESS_PARAMS_FLAG_NORMALIZED) return str->Buffer;
+ return (const WCHAR *)((const char *)params + (UINT_PTR)str->Buffer);
+}
+
+static inline DWORD append_string( void **ptr, const RTL_USER_PROCESS_PARAMETERS *params,
+ const UNICODE_STRING *str )
+{
+ const WCHAR *buffer = get_params_string( params, str );
+ memcpy( *ptr, buffer, str->Length );
+ *ptr = (WCHAR *)*ptr + str->Length / sizeof(WCHAR);
+ return str->Length;
+}
+
+
/*************************************************************************
* build_initial_params
*
@@ -2113,6 +2130,58 @@ void init_startup_info(void)
}
+/***********************************************************************
+ * create_startup_info
+ */
+void *create_startup_info( const RTL_USER_PROCESS_PARAMETERS *params, DWORD *info_size )
+{
+ startup_info_t *info;
+ DWORD size;
+ void *ptr;
+
+ size = sizeof(*info);
+ size += params->CurrentDirectory.DosPath.Length;
+ size += params->DllPath.Length;
+ size += params->ImagePathName.Length;
+ size += params->CommandLine.Length;
+ size += params->WindowTitle.Length;
+ size += params->Desktop.Length;
+ size += params->ShellInfo.Length;
+ size += params->RuntimeInfo.Length;
+ size = (size + 1) & ~1;
+ *info_size = size;
+
+ if (!(info = calloc( size, 1 ))) return NULL;
+
+ info->debug_flags = params->DebugFlags;
+ info->console_flags = params->ConsoleFlags;
+ info->console = wine_server_obj_handle( params->ConsoleHandle );
+ info->hstdin = wine_server_obj_handle( params->hStdInput );
+ info->hstdout = wine_server_obj_handle( params->hStdOutput );
+ info->hstderr = wine_server_obj_handle( params->hStdError );
+ info->x = params->dwX;
+ info->y = params->dwY;
+ info->xsize = params->dwXSize;
+ info->ysize = params->dwYSize;
+ info->xchars = params->dwXCountChars;
+ info->ychars = params->dwYCountChars;
+ info->attribute = params->dwFillAttribute;
+ info->flags = params->dwFlags;
+ info->show = params->wShowWindow;
+
+ ptr = info + 1;
+ info->curdir_len = append_string( &ptr, params, ¶ms->CurrentDirectory.DosPath );
+ info->dllpath_len = append_string( &ptr, params, ¶ms->DllPath );
+ info->imagepath_len = append_string( &ptr, params, ¶ms->ImagePathName );
+ info->cmdline_len = append_string( &ptr, params, ¶ms->CommandLine );
+ info->title_len = append_string( &ptr, params, ¶ms->WindowTitle );
+ info->desktop_len = append_string( &ptr, params, ¶ms->Desktop );
+ info->shellinfo_len = append_string( &ptr, params, ¶ms->ShellInfo );
+ info->runtime_len = append_string( &ptr, params, ¶ms->RuntimeInfo );
+ return info;
+}
+
+
/**************************************************************************
* NtGetNlsSectionPtr (NTDLL.@)
*/
diff --git a/dlls/ntdll/unix/process.c b/dlls/ntdll/unix/process.c
index 8d50f5a006d..bd3bba7ca8f 100644
--- a/dlls/ntdll/unix/process.c
+++ b/dlls/ntdll/unix/process.c
@@ -156,74 +156,6 @@ static char **build_argv( const UNICODE_STRING *cmdline, int reserved )
}
-static inline const WCHAR *get_params_string( const RTL_USER_PROCESS_PARAMETERS *params,
- const UNICODE_STRING *str )
-{
- if (params->Flags & PROCESS_PARAMS_FLAG_NORMALIZED) return str->Buffer;
- return (const WCHAR *)((const char *)params + (UINT_PTR)str->Buffer);
-}
-
-static inline DWORD append_string( void **ptr, const RTL_USER_PROCESS_PARAMETERS *params,
- const UNICODE_STRING *str )
-{
- const WCHAR *buffer = get_params_string( params, str );
- memcpy( *ptr, buffer, str->Length );
- *ptr = (WCHAR *)*ptr + str->Length / sizeof(WCHAR);
- return str->Length;
-}
-
-/***********************************************************************
- * create_startup_info
- */
-static startup_info_t *create_startup_info( const RTL_USER_PROCESS_PARAMETERS *params, DWORD *info_size )
-{
- startup_info_t *info;
- DWORD size;
- void *ptr;
-
- size = sizeof(*info);
- size += params->CurrentDirectory.DosPath.Length;
- size += params->DllPath.Length;
- size += params->ImagePathName.Length;
- size += params->CommandLine.Length;
- size += params->WindowTitle.Length;
- size += params->Desktop.Length;
- size += params->ShellInfo.Length;
- size += params->RuntimeInfo.Length;
- size = (size + 1) & ~1;
- *info_size = size;
-
- if (!(info = calloc( size, 1 ))) return NULL;
-
- info->debug_flags = params->DebugFlags;
- info->console_flags = params->ConsoleFlags;
- info->console = wine_server_obj_handle( params->ConsoleHandle );
- info->hstdin = wine_server_obj_handle( params->hStdInput );
- info->hstdout = wine_server_obj_handle( params->hStdOutput );
- info->hstderr = wine_server_obj_handle( params->hStdError );
- info->x = params->dwX;
- info->y = params->dwY;
- info->xsize = params->dwXSize;
- info->ysize = params->dwYSize;
- info->xchars = params->dwXCountChars;
- info->ychars = params->dwYCountChars;
- info->attribute = params->dwFillAttribute;
- info->flags = params->dwFlags;
- info->show = params->wShowWindow;
-
- ptr = info + 1;
- info->curdir_len = append_string( &ptr, params, ¶ms->CurrentDirectory.DosPath );
- info->dllpath_len = append_string( &ptr, params, ¶ms->DllPath );
- info->imagepath_len = append_string( &ptr, params, ¶ms->ImagePathName );
- info->cmdline_len = append_string( &ptr, params, ¶ms->CommandLine );
- info->title_len = append_string( &ptr, params, ¶ms->WindowTitle );
- info->desktop_len = append_string( &ptr, params, ¶ms->Desktop );
- info->shellinfo_len = append_string( &ptr, params, ¶ms->ShellInfo );
- info->runtime_len = append_string( &ptr, params, ¶ms->RuntimeInfo );
- return info;
-}
-
-
/***********************************************************************
* get_so_file_info
*/
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 4c50307fc6b..e1732b0017a 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -141,6 +141,7 @@ extern struct ldt_copy __wine_ldt_copy DECLSPEC_HIDDEN;
extern void init_environment( int argc, char *argv[], char *envp[] ) DECLSPEC_HIDDEN;
extern void init_startup_info(void) DECLSPEC_HIDDEN;
+extern void *create_startup_info( const RTL_USER_PROCESS_PARAMETERS *params, DWORD *info_size ) DECLSPEC_HIDDEN;
extern DWORD ntdll_umbstowcs( const char *src, DWORD srclen, WCHAR *dst, DWORD dstlen ) DECLSPEC_HIDDEN;
extern int ntdll_wcstoumbs( const WCHAR *src, DWORD srclen, char *dst, DWORD dstlen, BOOL strict ) DECLSPEC_HIDDEN;
extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list