char * System_GetEnvironment(char * envName, char * envValue, int max) { #if defined(__WIN32__) uint16 * _wenvName = __ecereNameSpace__ecere__sys__UTF8toUTF16(envName, null); //uint16 * result; uint16 result[2048]; int success; success = GetEnvironmentVariable(_wenvName, result, sizeof(result) / sizeof(uint16)); //result = _wgetenv(_wenvName); //if(result) if(success && success < sizeof(result) / sizeof(uint16)) __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(result, (byte *)envValue, max); else envValue[0] = 0; __ecereNameSpace__ecere__com__eSystem_Delete(_wenvName); return envValue; //result ? envValue : null; #else char * result = getenv(envName); if(result) strncpy(envValue, result, max); else envValue[0] = 0; return result ? envValue : null; #endif }
const char * System_GetEnvironment(const char * envName, char * envValue, int max) { #if defined(__WIN32__) uint16 * _wenvName = __ecereNameSpace__ecere__sys__UTF8toUTF16(envName, null); //uint16 * result; uint16 result[2048]; int success; success = GetEnvironmentVariable(_wenvName, result, sizeof(result) / sizeof(uint16)); //result = _wgetenv(_wenvName); //if(result) if(success && success < sizeof(result) / sizeof(uint16)) __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(result, envValue, max); else envValue[0] = 0; __ecereNameSpace__ecere__com__eSystem_Delete(_wenvName); // Distinguish empty vs. unexisting environment variables with GetLastError() return (success || !GetLastError()) ? envValue : null; #else char * result = getenv(envName); if(result) strncpy(envValue, result, max); else envValue[0] = 0; return result ? envValue : null; #endif }
char * System_GetWorkingDir(char * buf, int size) { #if defined(__WIN32__) uint16 * _wbuf = __ecereNameSpace__ecere__com__eSystem_New(sizeof(uint16) * size); _wgetcwd(_wbuf, size); __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(_wbuf, (byte *)buf, size); __ecereNameSpace__ecere__com__eSystem_Delete(_wbuf); return buf; #else return getcwd(buf, size); #endif }