Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
	}
}