static void InitializeWtsApiStubs_FreeRDS() { wIniFile* ini; const char* prefix; const char* libdir; if (g_WtsApi) return; ini = IniFile_New(); if (IniFile_ReadFile(ini, "/var/run/freerds.instance") < 0) { IniFile_Free(ini); WLog_ERR(TAG, "failed to parse freerds.instance"); LoadAndInitialize(FREERDS_LIBRARY_NAME); return; } prefix = IniFile_GetKeyValueString(ini, "FreeRDS", "prefix"); libdir = IniFile_GetKeyValueString(ini, "FreeRDS", "libdir"); WLog_INFO(TAG, "FreeRDS (prefix / libdir): %s / %s", prefix, libdir); if (prefix && libdir) { char* prefix_libdir; char* wtsapi_library; prefix_libdir = GetCombinedPath(prefix, libdir); wtsapi_library = GetCombinedPath(prefix_libdir, FREERDS_LIBRARY_NAME); if (wtsapi_library) { LoadAndInitialize(wtsapi_library); } free(prefix_libdir); free(wtsapi_library); } IniFile_Free(ini); }
static void InitializeWtsApiStubs_Env() { DWORD nSize; char *env = NULL; if (g_WtsApi) return; nSize = GetEnvironmentVariableA("WTSAPI_LIBRARY", NULL, 0); if (!nSize) return; env = (LPSTR) malloc(nSize); if (env) { if (GetEnvironmentVariableA("WTSAPI_LIBRARY", env, nSize)) LoadAndInitialize(env); free(env); } }