Esempio n. 1
0
OutputLogDevice *SearchEngineLog::CreateLog(int device, ...)
{
	va_list args;
	const uni_char *fname;
	OpFileFolder folder;
	FileLogger *flogger;

	switch (device & 255)
	{
	case SearchEngineLog::File:
	case SearchEngineLog::FolderFile:
		{
			if ((flogger = OP_NEW(FileLogger, ((device & SearchEngineLog::LogOnce) != 0))) == NULL)
				return NULL;

			va_start(args, device);
			fname = va_arg(args, const uni_char *);
			if ((device & 255) == SearchEngineLog::FolderFile)
				folder = (OpFileFolder)va_arg(args, int);
			else
				folder = OPFILE_ABSOLUTE_FOLDER;
				
			va_end(args);

			if (OpStatus::IsError(flogger->Open((device & SearchEngineLog::FOverwrite) != 0, fname, folder)))
			{
				OP_DELETE(flogger);
				return NULL;
			}

			return flogger;
		}
	}