22#ifndef WINPR_ENVIRONMENT_H
23#define WINPR_ENVIRONMENT_H
25#include <winpr/winpr.h>
26#include <winpr/wtypes.h>
36 WINPR_API DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer);
39 WINPR_API DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer);
42 WINPR_API BOOL SetCurrentDirectoryA(LPCSTR lpPathName);
45 WINPR_API BOOL SetCurrentDirectoryW(LPCWSTR lpPathName);
48 WINPR_API DWORD SearchPathA(LPCSTR lpPath, LPCSTR lpFileName, LPCSTR lpExtension,
49 DWORD nBufferLength, LPSTR lpBuffer, LPSTR* lpFilePart);
52 WINPR_API DWORD SearchPathW(LPCWSTR lpPath, LPCWSTR lpFileName, LPCWSTR lpExtension,
53 DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR* lpFilePart);
56 WINPR_API LPSTR GetCommandLineA(VOID);
59 WINPR_API LPWSTR GetCommandLineW(VOID);
62 WINPR_API BOOL NeedCurrentDirectoryForExePathA(LPCSTR ExeName);
65 WINPR_API BOOL NeedCurrentDirectoryForExePathW(LPCWSTR ExeName);
72#define GetCurrentDirectory GetCurrentDirectoryW
73#define SetCurrentDirectory SetCurrentDirectoryW
74#define SearchPath SearchPathW
75#define GetCommandLine GetCommandLineW
76#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathW
78#define GetCurrentDirectory GetCurrentDirectoryA
79#define SetCurrentDirectory SetCurrentDirectoryA
80#define SearchPath SearchPathA
81#define GetCommandLine GetCommandLineA
82#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathA
87#if !defined(_WIN32) || defined(_UWP)
95 WINPR_API DWORD GetEnvironmentVariableA(LPCSTR lpName, LPSTR lpBuffer, DWORD nSize);
97 WINPR_API DWORD GetEnvironmentVariableW(LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
99 WINPR_API BOOL SetEnvironmentVariableA(LPCSTR lpName, LPCSTR lpValue);
101 WINPR_API BOOL SetEnvironmentVariableW(LPCWSTR lpName, LPCWSTR lpValue);
108 WINPR_API BOOL FreeEnvironmentStringsA(LPCH lpszEnvironmentBlock);
110 WINPR_API BOOL FreeEnvironmentStringsW(LPWCH lpszEnvironmentBlock);
112 WINPR_ATTR_MALLOC(FreeEnvironmentStringsA, 1)
113 WINPR_API LPCH GetEnvironmentStrings(VOID);
115 WINPR_ATTR_MALLOC(FreeEnvironmentStringsW, 1)
116 WINPR_API LPWCH GetEnvironmentStringsW(VOID);
119 WINPR_API BOOL SetEnvironmentStringsA(LPCH NewEnvironment);
122 WINPR_API BOOL SetEnvironmentStringsW(LPWCH NewEnvironment);
125 WINPR_API DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize);
128 WINPR_API DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
135#define GetEnvironmentVariable GetEnvironmentVariableW
136#define SetEnvironmentVariable SetEnvironmentVariableW
137#define GetEnvironmentStrings GetEnvironmentStringsW
138#define SetEnvironmentStrings SetEnvironmentStringsW
139#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
140#define FreeEnvironmentStrings FreeEnvironmentStringsW
142#define GetEnvironmentVariable GetEnvironmentVariableA
143#define SetEnvironmentVariable SetEnvironmentVariableA
144#define GetEnvironmentStringsA GetEnvironmentStrings
145#define SetEnvironmentStrings SetEnvironmentStringsA
146#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
147#define FreeEnvironmentStrings FreeEnvironmentStringsA
157 WINPR_ATTR_MALLOC(free, 1)
158 WINPR_API LPCH MergeEnvironmentStrings(PCSTR original, PCSTR merge);
161 WINPR_API DWORD GetEnvironmentVariableEBA(LPCSTR envBlock, LPCSTR lpName, LPSTR lpBuffer,
164 WINPR_API BOOL SetEnvironmentVariableEBA(LPSTR* envBlock, LPCSTR lpName, LPCSTR lpValue);
166 WINPR_ATTR_MALLOC(free, 1)
167 WINPR_API
char** EnvironmentBlockToEnvpA(LPCH lpszEnvironmentBlock);
170 WINPR_API DWORD GetEnvironmentVariableX(const
char* lpName,
char* lpBuffer, DWORD nSize);
172 WINPR_ATTR_MALLOC(free, 1)
173 WINPR_API
char* GetEnvAlloc(LPCSTR lpName);