Blame winpr/libwinpr/path/test/TestPathMakePath.c

Packit Service fa4841
#include <stdlib.h>
Packit Service fa4841
#include <string.h>
Packit Service fa4841
#include <time.h>
Packit Service fa4841
Packit Service fa4841
#include <winpr/crt.h>
Packit Service fa4841
#include <winpr/file.h>
Packit Service fa4841
#include <winpr/path.h>
Packit Service fa4841
Packit Service fa4841
int TestPathMakePath(int argc, char* argv[])
Packit Service fa4841
{
Packit Service fa4841
	int x;
Packit Service fa4841
	size_t baseLen;
Packit Service fa4841
	BOOL success;
Packit Service fa4841
	char tmp[64];
Packit Service fa4841
	char* path;
Packit Service fa4841
	char* cur;
Packit Service fa4841
	char delim = PathGetSeparatorA(0);
Packit Service fa4841
	char* base = GetKnownPath(KNOWN_PATH_TEMP);
Packit Service fa4841
Packit Service fa4841
	if (!base)
Packit Service fa4841
	{
Packit Service fa4841
		fprintf(stderr, "Failed to get temporary directory!\n");
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	baseLen = strlen(base);
Packit Service fa4841
	srand(time(NULL));
Packit Service fa4841
Packit Service fa4841
	for (x = 0; x < 5; x++)
Packit Service fa4841
	{
Packit Service fa4841
		sprintf_s(tmp, ARRAYSIZE(tmp), "%08X", rand());
Packit Service fa4841
		path = GetCombinedPath(base, tmp);
Packit Service fa4841
		free(base);
Packit Service fa4841
Packit Service fa4841
		if (!path)
Packit Service fa4841
		{
Packit Service fa4841
			fprintf(stderr, "GetCombinedPath failed!\n");
Packit Service fa4841
			return -1;
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		base = path;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	printf("Creating path %s\n", path);
Packit Service fa4841
	success = PathMakePathA(path, NULL);
Packit Service fa4841
Packit Service fa4841
	if (!success)
Packit Service fa4841
	{
Packit Service fa4841
		fprintf(stderr, "MakePath failed!\n");
Packit Service fa4841
		free(path);
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	success = PathFileExistsA(path);
Packit Service fa4841
Packit Service fa4841
	if (!success)
Packit Service fa4841
	{
Packit Service fa4841
		fprintf(stderr, "MakePath lied about success!\n");
Packit Service fa4841
		free(path);
Packit Service fa4841
		return -1;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	while (strlen(path) > baseLen)
Packit Service fa4841
	{
Packit Service fa4841
		if (!RemoveDirectoryA(path))
Packit Service fa4841
		{
Packit Service fa4841
			fprintf(stderr, "RemoveDirectoryA %s failed!\n", path);
Packit Service fa4841
			free(path);
Packit Service fa4841
			return -1;
Packit Service fa4841
		}
Packit Service fa4841
Packit Service fa4841
		cur = strrchr(path, delim);
Packit Service fa4841
Packit Service fa4841
		if (cur)
Packit Service fa4841
			*cur = '\0';
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	free(path);
Packit Service fa4841
	printf("%s success!\n", __FUNCTION__);
Packit Service fa4841
	return 0;
Packit Service fa4841
}
Packit Service bb5c11