- Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathlog.cpp
More file actions
Latest commit
102 lines (81 loc) · 1.96 KB
/
Copy pathlog.cpp
File metadata and controls
102 lines (81 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include<Windows.h>
#include<stdio.h>
#include"log.h"
#include<stdlib.h>
CLog::CLog()
{
_FileHandle = NULL;
}
CLog::~CLog()
{
CloseLog();
}
voidwriteinfo(HANDLE file, constchar *format, va_list marker)
{
char buf[2048], *pos = buf;
pos += vsprintf(pos, format, marker);
DWORD written;
WriteFile(file, buf, pos - buf, &written, NULL);
}
voidCLog::Print( constchar *format, ... )
{
if( _FileHandle != NULL && _FileHandle != INVALID_HANDLE_VALUE )
{
va_list marker;
va_start(marker, format);
writeinfo(_FileHandle, format, marker);
va_end(marker);
}
}
boolCLog::OpenLog( char *filename )
{
_FileHandle = CreateFileA( filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
return ( _FileHandle != INVALID_HANDLE_VALUE );
}
voidCLog::CloseLog()
{
CloseHandle( _FileHandle );
}
voidFormatArguments( char *buffer, char *format, void *args )
{
va_list marker = (va_list)args;
vsprintf( buffer, format, marker );
}
staticAPI_ARGS_ARRAY *ArgFmt;
voidLoadApiArgsFormat()
{
FILE *f = fopen( "apiargs.txt", "rt" );
if( f == NULL )
return;
char ApiName[250];
char ApiArgs[512];
ArgFmt = (API_ARGS_ARRAY *)malloc( sizeof(*ArgFmt) * 5000 );
memset( ArgFmt, 0, sizeof(*ArgFmt) * 5000 );
if( f != NULL )
{
while( !feof( f ) )
{
ApiArgs[0] = 0;
ApiName[0] = 0;
fscanf( f, "%s\t\"%[^\"]\"", &ApiName, &ApiArgs );
strcpy( ArgFmt->a[ArgFmt->Count].ApiName, ApiName );
strcpy( ArgFmt->a[ArgFmt->Count].ApiArgFormat, ApiArgs );
ArgFmt->Count++;
}
}
fclose(f);
}
API_ARGS_FORMAT *FindFormatByName( constchar *ApiName )
{
if( ArgFmt == NULL )
returnNULL;
for ( unsignedint i = 0; i < ArgFmt->Count; i++ )
{
//pLog->Print( "find = %s\n", ApiName );
if( strcmp( ArgFmt->a[i].ApiName, ApiName ) == 0 )
{
return &ArgFmt->a[i];
}
}
returnNULL;
}