Blame winpr/libwinpr/library/test/TestLibraryGetModuleFileName.c

Packit 1fb8d4
Packit 1fb8d4
#include <stdio.h>
Packit 1fb8d4
#include <winpr/crt.h>
Packit 1fb8d4
#include <winpr/path.h>
Packit 1fb8d4
#include <winpr/tchar.h>
Packit 1fb8d4
#include <winpr/windows.h>
Packit 1fb8d4
#include <winpr/library.h>
Packit 1fb8d4
Packit 1fb8d4
int TestLibraryGetModuleFileName(int argc, char* argv[])
Packit 1fb8d4
{
Packit 1fb8d4
	char ModuleFileName[4096];
Packit 1fb8d4
	DWORD len;
Packit 1fb8d4
Packit 1fb8d4
	/* Test insufficient buffer size behaviour */
Packit 1fb8d4
	SetLastError(ERROR_SUCCESS);
Packit 1fb8d4
	len = GetModuleFileNameA(NULL, ModuleFileName, 2);
Packit 1fb8d4
	if (len != 2)
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("%s: GetModuleFileNameA unexpectedly returned %" PRIu32 " instead of 2\n",
Packit Service 5a9772
		       __FUNCTION__, len);
Packit 1fb8d4
		return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
	if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("%s: Invalid last error value: 0x%08" PRIX32
Packit Service 5a9772
		       ". Expected 0x%08X (ERROR_INSUFFICIENT_BUFFER)\n",
Packit Service 5a9772
		       __FUNCTION__, GetLastError(), ERROR_INSUFFICIENT_BUFFER);
Packit 1fb8d4
		return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	/* Test with real/sufficient buffer size */
Packit 1fb8d4
	SetLastError(ERROR_SUCCESS);
Packit 1fb8d4
	len = GetModuleFileNameA(NULL, ModuleFileName, sizeof(ModuleFileName));
Packit 1fb8d4
	if (len == 0)
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("%s: GetModuleFileNameA failed with error 0x%08" PRIX32 "\n", __FUNCTION__,
Packit Service 5a9772
		       GetLastError());
Packit 1fb8d4
		return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
	if (len == sizeof(ModuleFileName))
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("%s: GetModuleFileNameA unexpectedly returned nSize\n", __FUNCTION__);
Packit 1fb8d4
		return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
	if (GetLastError() != ERROR_SUCCESS)
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("%s: Invalid last error value: 0x%08" PRIX32 ". Expected 0x%08X (ERROR_SUCCESS)\n",
Packit Service 5a9772
		       __FUNCTION__, GetLastError(), ERROR_SUCCESS);
Packit 1fb8d4
		return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	printf("GetModuleFileNameA: %s\n", ModuleFileName);
Packit 1fb8d4
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}