1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #ifndef _PROCESSENV_
7 #define _PROCESSENV_
8 
9 #include <apiset.h>
10 #include <apisetcconv.h>
11 #include <minwindef.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
18   WINBASEAPI LPSTR WINAPI GetCommandLineA (VOID);
19   WINBASEAPI LPWSTR WINAPI GetCommandLineW (VOID);
20   WINBASEAPI WINBOOL WINAPI SetCurrentDirectoryA (LPCSTR lpPathName);
21   WINBASEAPI WINBOOL WINAPI SetCurrentDirectoryW (LPCWSTR lpPathName);
22   WINBASEAPI DWORD WINAPI GetCurrentDirectoryA (DWORD nBufferLength, LPSTR lpBuffer);
23   WINBASEAPI DWORD WINAPI GetCurrentDirectoryW (DWORD nBufferLength, LPWSTR lpBuffer);
24 #endif
25 
26 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
27   WINBASEAPI WINBOOL WINAPI SetEnvironmentStringsW (LPWCH NewEnvironment);
28 
29 #ifdef UNICODE
30 #define SetEnvironmentStrings SetEnvironmentStringsW
31 #endif
32 
33   WINBASEAPI DWORD WINAPI SearchPathW (LPCWSTR lpPath, LPCWSTR lpFileName, LPCWSTR lpExtension, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart);
34   WINBASEAPI DWORD APIENTRY SearchPathA (LPCSTR lpPath, LPCSTR lpFileName, LPCSTR lpExtension, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart);
35   WINBASEAPI WINBOOL WINAPI NeedCurrentDirectoryForExePathA (LPCSTR ExeName);
36   WINBASEAPI WINBOOL WINAPI NeedCurrentDirectoryForExePathW (LPCWSTR ExeName);
37 
38 #define GetCommandLine __MINGW_NAME_AW(GetCommandLine)
39 #define GetCurrentDirectory __MINGW_NAME_AW(GetCurrentDirectory)
40 #define NeedCurrentDirectoryForExePath __MINGW_NAME_AW(NeedCurrentDirectoryForExePath)
41 #define SearchPath __MINGW_NAME_AW(SearchPath)
42 #define SetCurrentDirectory __MINGW_NAME_AW(SetCurrentDirectory)
43 
44 #endif
45 
46 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= _WIN32_WINNT_WIN10
47 
48   WINBASEAPI LPCH WINAPI GetEnvironmentStrings (VOID);
49   WINBASEAPI LPWCH WINAPI GetEnvironmentStringsW (VOID);
50 
51 #ifdef UNICODE
52 #define GetEnvironmentStrings GetEnvironmentStringsW
53 #else
54 #define GetEnvironmentStringsA GetEnvironmentStrings
55 #endif
56 
57   WINBASEAPI HANDLE WINAPI GetStdHandle (DWORD nStdHandle);
58   WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsA (LPCSTR lpSrc, LPSTR lpDst, DWORD nSize);
59   WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsW (LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
60   WINBASEAPI WINBOOL WINAPI FreeEnvironmentStringsA (LPCH penv);
61   WINBASEAPI WINBOOL WINAPI FreeEnvironmentStringsW (LPWCH penv);
62   WINBASEAPI DWORD WINAPI GetEnvironmentVariableA (LPCSTR lpName, LPSTR lpBuffer, DWORD nSize);
63   WINBASEAPI DWORD WINAPI GetEnvironmentVariableW (LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
64   WINBASEAPI WINBOOL WINAPI SetEnvironmentVariableA (LPCSTR lpName, LPCSTR lpValue);
65   WINBASEAPI WINBOOL WINAPI SetEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpValue);
66   WINBASEAPI WINBOOL WINAPI SetStdHandle (DWORD nStdHandle, HANDLE hHandle);
67 #if _WIN32_WINNT >= 0x0600
68   WINBASEAPI WINBOOL WINAPI SetStdHandleEx (DWORD nStdHandle, HANDLE hHandle, PHANDLE phPrevValue);
69 #endif
70 
71 #define ExpandEnvironmentStrings __MINGW_NAME_AW(ExpandEnvironmentStrings)
72 #define FreeEnvironmentStrings __MINGW_NAME_AW(FreeEnvironmentStrings)
73 #define GetEnvironmentVariable __MINGW_NAME_AW(GetEnvironmentVariable)
74 #define SetEnvironmentVariable __MINGW_NAME_AW(SetEnvironmentVariable)
75 
76 #endif
77 
78 #ifdef __cplusplus
79 }
80 #endif
81 #endif
82