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

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