Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
74eaa341
Commit
74eaa341
authored
Dec 03, 2019
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel32: Initialize argv from the dll entry point.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
d33504b9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
34 deletions
+32
-34
kernel_main.c
dlls/kernel32/kernel_main.c
+32
-0
process.c
dlls/kernel32/process.c
+0
-34
No files found.
dlls/kernel32/kernel_main.c
View file @
74eaa341
...
...
@@ -29,6 +29,7 @@
#include "windef.h"
#include "winbase.h"
#include "winnls.h"
#include "wincon.h"
#include "winternl.h"
...
...
@@ -77,12 +78,43 @@ static void set_entry_point( HMODULE module, const char *name, DWORD rva )
/***********************************************************************
* set_library_argv
*
* Set the Wine library argv global variable.
*/
static
void
set_library_argv
(
WCHAR
**
wargv
)
{
int
argc
;
char
*
p
,
**
argv
;
DWORD
total
=
0
;
/* convert argv back from Unicode since it has to be in the Ansi codepage not the Unix one */
for
(
argc
=
0
;
wargv
[
argc
];
argc
++
)
total
+=
WideCharToMultiByte
(
CP_ACP
,
0
,
wargv
[
argc
],
-
1
,
NULL
,
0
,
NULL
,
NULL
);
argv
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
total
+
(
argc
+
1
)
*
sizeof
(
*
argv
)
);
p
=
(
char
*
)(
argv
+
argc
+
1
);
for
(
argc
=
0
;
wargv
[
argc
];
argc
++
)
{
DWORD
reslen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
wargv
[
argc
],
-
1
,
p
,
total
,
NULL
,
NULL
);
argv
[
argc
]
=
p
;
p
+=
reslen
;
total
-=
reslen
;
}
argv
[
argc
]
=
NULL
;
__wine_main_argv
=
argv
;
}
/***********************************************************************
* KERNEL process initialisation routine
*/
static
BOOL
process_attach
(
HMODULE
module
)
{
RTL_USER_PROCESS_PARAMETERS
*
params
=
NtCurrentTeb
()
->
Peb
->
ProcessParameters
;
set_library_argv
(
__wine_main_wargv
);
NtQuerySystemInformation
(
SystemBasicInformation
,
&
system_info
,
sizeof
(
system_info
),
NULL
);
/* Setup registry timezone information */
...
...
dlls/kernel32/process.c
View file @
74eaa341
...
...
@@ -86,39 +86,6 @@ const WCHAR DIR_System[] = {'C',':','\\','w','i','n','d','o','w','s',
#define PDB32_WIN32S_PROC 0x8000
/* Win32s process */
/***********************************************************************
* set_library_argv
*
* Set the Wine library argv global variables.
*/
static
void
set_library_argv
(
WCHAR
**
wargv
)
{
int
argc
;
char
*
p
,
**
argv
;
DWORD
total
=
0
;
/* convert argv back from Unicode since it has to be in the Ansi codepage not the Unix one */
for
(
argc
=
0
;
wargv
[
argc
];
argc
++
)
total
+=
WideCharToMultiByte
(
CP_ACP
,
0
,
wargv
[
argc
],
-
1
,
NULL
,
0
,
NULL
,
NULL
);
argv
=
RtlAllocateHeap
(
GetProcessHeap
(),
0
,
total
+
(
argc
+
1
)
*
sizeof
(
*
argv
)
);
p
=
(
char
*
)(
argv
+
argc
+
1
);
for
(
argc
=
0
;
wargv
[
argc
];
argc
++
)
{
DWORD
reslen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
wargv
[
argc
],
-
1
,
p
,
total
,
NULL
,
NULL
);
argv
[
argc
]
=
p
;
p
+=
reslen
;
total
-=
reslen
;
}
argv
[
argc
]
=
NULL
;
__wine_main_argc
=
argc
;
__wine_main_argv
=
argv
;
__wine_main_wargv
=
wargv
;
}
#ifdef __i386__
extern
DWORD
call_process_entry
(
PEB
*
peb
,
LPTHREAD_START_ROUTINE
entry
);
__ASM_GLOBAL_FUNC
(
call_process_entry
,
...
...
@@ -214,7 +181,6 @@ void * CDECL __wine_kernel_init(void)
RtlSetUnhandledExceptionFilter
(
UnhandledExceptionFilter
);
LOCALE_Init
();
set_library_argv
(
__wine_main_wargv
);
if
(
!
params
->
CurrentDirectory
.
Handle
)
chdir
(
"/"
);
/* avoid locking removable devices */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment