ReactOS 0.4.15-dev-7931-gfd331f1
msvcrt20.c
Go to the documentation of this file.
1/*
2 * msvcrt20 implementation
3 *
4 * Copyright 2002 Alexandre Julliard
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#define WIN32_NO_STATUS
22
23#include <stdio.h>
24#define _CRT_PRECOMP_H
25#include <internal/tls.h>
26//#include <stdlib.h>
27//#include <windows.h>
29#include <internal/locale.h>
30//#include <locale.h>
31//#include <mbctype.h>
32
33#include <wine/debug.h>
35
36/* EXTERNAL PROTOTYPES ********************************************************/
37
38extern int BlockEnvToEnvironA(void);
39extern int BlockEnvToEnvironW(void);
40extern void FreeEnvironment(char **environment);
41
42extern unsigned int _osplatform;
43extern unsigned int _osver;
44extern unsigned int _winminor;
45extern unsigned int _winmajor;
46extern unsigned int _winver;
47
48extern char* _acmdln; /* pointer to ascii command line */
49extern wchar_t* _wcmdln; /* pointer to wide character command line */
50#undef _environ
51extern char** _environ; /* pointer to environment block */
52extern char** __initenv; /* pointer to initial environment block */
53extern wchar_t** _wenviron; /* pointer to environment block */
54extern wchar_t** __winitenv; /* pointer to initial environment block */
55
56
57extern BOOL msvcrt_init_heap(void);
58extern void CDECL __getmainargs(int *argc, char** *argv, char** *envp,
59 int expand_wildcards, int *new_mode);
60extern void CDECL __wgetmainargs(int *argc, WCHAR** *wargv, WCHAR** *wenvp,
61 int expand_wildcards, int *new_mode);
62
63/* LIBRARY ENTRY POINT ********************************************************/
64
65BOOL
68{
70 switch (dwReason)
71 {
73 /* initialize version info */
74 TRACE("Process Attach\n");
82
83 /* create tls stuff */
85 return FALSE;
86
87 if (!msvcrt_init_heap())
88 return FALSE;
89
90 if (BlockEnvToEnvironA() < 0)
91 return FALSE;
92
93 if (BlockEnvToEnvironW() < 0)
94 {
96 return FALSE;
97 }
98
101
102 /* Initialization of the WINE code */
104 //msvcrt_init_math();
106 //msvcrt_init_console();
107 //msvcrt_init_args();
108 //msvcrt_init_signals();
109 TRACE("Attach done\n");
110 break;
111
113 //msvcrt_get_thread_data creates data when first called
114 break;
115
118 break;
119
121 TRACE("Detach\n");
122 /* Deinit of the WINE code */
124 if (reserved) break;
127 //msvcrt_free_console();
128 //msvcrt_free_args();
129 //msvcrt_free_signals();
131 if (!msvcrt_free_tls())
132 return FALSE;
133 if(global_locale)
135
138 if (_wenviron)
139 FreeEnvironment((char**)_wenviron);
140
141 if (__initenv && __initenv != _environ)
143 if (_environ)
145
146 TRACE("Detach done\n");
147 break;
148 }
149
150 return TRUE;
151}
152
153/* LIBRARY EXPORTS ************************************************************/
154
155/*********************************************************************
156 * __getmainargs (MSVCRT20.@)
157 *
158 * new_mode is not a pointer in msvcrt20.
159 */
160void CDECL MSVCRT20__getmainargs( int *argc, char** *argv, char** *envp,
161 int expand_wildcards, int new_mode )
162{
163 __getmainargs( argc, argv, envp, expand_wildcards, &new_mode );
164}
165
166/*********************************************************************
167 * __wgetmainargs (MSVCRT20.@)
168 *
169 * new_mode is not a pointer in msvcrt20.
170 */
171void CDECL MSVCRT20__wgetmainargs( int *argc, WCHAR** *wargv, WCHAR** *wenvp,
172 int expand_wildcards, int new_mode )
173{
174 __wgetmainargs( argc, wargv, wenvp, expand_wildcards, &new_mode );
175}
176
177/* EOF */
static int argc
Definition: ServiceArgs.c:12
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
DWORD dwReason
Definition: misc.cpp:154
#define _strdup
Definition: debug_ros.c:7
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CDECL
Definition: compat.h:29
#define DLL_THREAD_DETACH
Definition: compat.h:133
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define DLL_THREAD_ATTACH
Definition: compat.h:132
LPSTR WINAPI GetCommandLineA(VOID)
Definition: proc.c:2003
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2013
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
Definition: version.c:37
r reserved
Definition: btrfs.c:3006
unsigned int BOOL
Definition: ntddk_ex.h:94
MSVCRT__locale_t global_locale
Definition: locale.c:1495
if(dx< 0)
Definition: linetemp.h:194
void msvcrt_init_io(void)
Definition: file.c:456
void msvcrt_init_mt_locks(void)
Definition: lock.c:54
void __cdecl MSVCRT__free_locale(MSVCRT__locale_t)
Definition: locale.c:711
void msvcrt_free_mt_locks(void)
Definition: lock.c:77
void msvcrt_free_io(void)
Definition: file.c:1100
#define argv
Definition: mplay32.c:18
char * _acmdln
Definition: environ.c:18
void CDECL __wgetmainargs(int *argc, WCHAR ***wargv, WCHAR ***wenvp, int expand_wildcards, int *new_mode)
BOOL WINAPI DllMain(PVOID hinstDll, ULONG dwReason, PVOID reserved)
Definition: msvcrt20.c:67
int BlockEnvToEnvironA(void)
Definition: environ.c:34
void FreeEnvironment(char **environment)
Definition: environ.c:190
unsigned int _winminor
Definition: environ.c:12
unsigned int _winmajor
Definition: environ.c:13
void CDECL __getmainargs(int *argc, char ***argv, char ***envp, int expand_wildcards, int *new_mode)
Definition: getargs.c:182
BOOL msvcrt_init_heap(void)
Definition: heap.c:895
char ** __initenv
Definition: environ.c:24
wchar_t ** __winitenv
Definition: environ.c:25
wchar_t ** _wenviron
Definition: environ.c:23
wchar_t * _wcmdln
Definition: environ.c:19
int BlockEnvToEnvironW(void)
Definition: environ.c:86
unsigned int _osver
Definition: environ.c:11
void CDECL MSVCRT20__wgetmainargs(int *argc, WCHAR ***wargv, WCHAR ***wenvp, int expand_wildcards, int new_mode)
Definition: msvcrt20.c:171
unsigned int _osplatform
Definition: environ.c:10
unsigned int _winver
Definition: environ.c:14
char ** _environ
Definition: environ.c:22
void CDECL MSVCRT20__getmainargs(int *argc, char ***argv, char ***envp, int expand_wildcards, int new_mode)
Definition: msvcrt20.c:160
_Check_return_ _CRTIMP wchar_t *__cdecl _wcsdup(_In_z_ const wchar_t *_Str)
void msvcrt_free_tls_mem(void)
Definition: tls.c:51
BOOL msvcrt_free_tls(void)
Definition: tls.c:21
BOOL msvcrt_init_tls(void)
Definition: tls.c:9
void msvcrt_free_popen_data(void)
Definition: popen.c:29
#define TRACE(s)
Definition: solgame.cpp:4
ULONG dwPlatformId
Definition: rtltypes.h:241
ULONG dwOSVersionInfoSize
Definition: rtltypes.h:237
ULONG dwMajorVersion
Definition: rtltypes.h:238
ULONG dwBuildNumber
Definition: rtltypes.h:240
ULONG dwMinorVersion
Definition: rtltypes.h:239
uint32_t ULONG
Definition: typedefs.h:59
OSVERSIONINFO osvi
Definition: ver.c:28
#define WINAPI
Definition: msvc.h:6
struct _OSVERSIONINFOW OSVERSIONINFOW
__wchar_t WCHAR
Definition: xmlstorage.h:180