Пример #1
0
static BOOL WLog_BinaryAppender_Open(wLog* log, wLogAppender* appender)
{
	wLogBinaryAppender* binaryAppender;
	if (!log || !appender)
		return FALSE;

	binaryAppender = (wLogBinaryAppender *)appender;
	if (!binaryAppender->FileName)
	{
		binaryAppender->FileName = (char*) malloc(MAX_PATH);
		if (!binaryAppender->FileName)
			return FALSE;
		sprintf_s(binaryAppender->FileName, MAX_PATH, "%"PRIu32".wlog", GetCurrentProcessId());
	}

	if (!binaryAppender->FilePath)
	{
		binaryAppender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");
		if (!binaryAppender->FilePath)
			return FALSE;
	}

	if (!binaryAppender->FullFileName)
	{
		binaryAppender->FullFileName = GetCombinedPath(binaryAppender->FilePath, binaryAppender->FileName);
		if (!binaryAppender->FullFileName)
			return FALSE;
	}

	if (!PathFileExistsA(binaryAppender->FilePath))
	{
		if (!PathMakePathA(binaryAppender->FilePath, 0))
			return FALSE;
		UnixChangeFileMode(binaryAppender->FilePath, 0xFFFF);
	}

	binaryAppender->FileDescriptor = fopen(binaryAppender->FullFileName, "a+");

	if (!binaryAppender->FileDescriptor)
		return FALSE;

	return TRUE;
}
Пример #2
0
BOOL WLog_FileAppender_Open(wLog* log, wLogFileAppender* appender)
{
	if (!log || !appender)
		return FALSE;

	if (!appender->FilePath)
	{
		appender->FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");
		if (!appender->FilePath)
			return FALSE;
	}

	if (!appender->FileName)
	{
		appender->FileName = (char*) malloc(MAX_PATH);
		if (!appender->FileName)
			return FALSE;

		sprintf_s(appender->FileName, MAX_PATH, "%u.log", (unsigned int) GetCurrentProcessId());
	}

	if (!appender->FullFileName)
	{
		appender->FullFileName = GetCombinedPath(appender->FilePath, appender->FileName);
		if (!appender->FullFileName)
			return FALSE;
	}

	if (!PathFileExistsA(appender->FilePath))
	{
		if (!PathMakePathA(appender->FilePath, 0))
			return FALSE;
		UnixChangeFileMode(appender->FilePath, 0xFFFF);
	}

	appender->FileDescriptor = fopen(appender->FullFileName, "a+");

	if (!appender->FileDescriptor)
		return FALSE;

	return TRUE;
}
Пример #3
0
char* WLog_Message_GetOutputFileName(int id, const char* ext)
{
	DWORD ProcessId;
	char* FilePath;
	char* FileName;
	char* FullFileName;


	if (!(FileName = (char*) malloc(256)))
		return NULL;

	FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");

	if (!PathFileExistsA(FilePath))
	{
		if (!PathMakePathA(FilePath, NULL))
		{
			free(FileName);
			free(FilePath);
			return NULL;
		}
	}

	ProcessId = GetCurrentProcessId();
	if (id >= 0)
		sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext);
	else
		sprintf_s(FileName, 256, "%u.%s", (unsigned int) ProcessId, ext);

	FullFileName = GetCombinedPath(FilePath, FileName);

	free(FileName);
	free(FilePath);

	return FullFileName;
}
Пример #4
0
int TestPathMakePath(int argc, char* argv[])
{
	int x;
	size_t baseLen;
	BOOL success;
	char tmp[64];
	char* path;
	char* cur;
	char delim = PathGetSeparatorA(0);
	char* base = GetKnownPath(KNOWN_PATH_TEMP);

	if (!base)
	{
		fprintf(stderr, "Failed to get temporary directory!\n");
		return -1;
	}

	baseLen = strlen(base);
	srand(time(NULL));

	for (x = 0; x < 5; x++)
	{
		sprintf_s(tmp, ARRAYSIZE(tmp), "%08X", rand());
		path = GetCombinedPath(base, tmp);
		free(base);

		if (!path)
		{
			fprintf(stderr, "GetCombinedPath failed!\n");
			return -1;
		}

		base = path;
	}

	printf("Creating path %s\n", path);
	success = PathMakePathA(path, NULL);

	if (!success)
	{
		fprintf(stderr, "MakePath failed!\n");
		free(path);
		return -1;
	}

	success = PathFileExistsA(path);

	if (!success)
	{
		fprintf(stderr, "MakePath lied about success!\n");
		free(path);
		return -1;
	}

	while (strlen(path) > baseLen)
	{
		if (!RemoveDirectoryA(path))
		{
			fprintf(stderr, "RemoveDirectoryA %s failed!\n", path);
			free(path);
			return -1;
		}

		cur = strrchr(path, delim);

		if (cur)
			*cur = '\0';
	}

	free(path);
	printf("%s success!\n", __FUNCTION__);
	return 0;
}