source: branches/2.20_branch/hlpmgr/log.c@ 429

Last change on this file since 429 was 366, checked in by RBRi, 16 years ago

format updates

  • Property svn:eol-style set to native
File size: 2.0 KB
Line 
1#include <stdio.h>
2#include <stdarg.h>
3#include <errno.h>
4#include <string.h>
5#include <stdlib.h>
6
7#define INCL_DOSMISC
8#include <os2.h>
9
10#include "Utility.h"
11
12#define LOG_DIR_VAR "HELPMGR_LOG_DIR"
13#define LOG_FILENAME "helpmgr.log"
14
15int g_CheckedEnvironment = 0;
16char* g_LogFilePath = NULL;
17
18void stoplog()
19{
20 g_LogFilePath = NULL;
21}
22
23void LogEvent( char* format, ... )
24{
25 char* LogDir;
26 va_list ap;
27 FILE* f;
28
29 if ( g_CheckedEnvironment )
30 {
31 if ( g_LogFilePath == NULL )
32 /* logging is not enabled */
33 return;
34 }
35 else
36 {
37 /* check the environment var to see if logging is enabled */
38 g_CheckedEnvironment = 1;
39 LogDir = getenv( LOG_DIR_VAR );
40 if ( LogDir == NULL )
41 /* not defined */
42 return;
43 if ( strlen( LogDir ) == 0 )
44 /* defined as blank? */
45 return;
46
47 /* allocate space for full path, plus slash, plus terminator */
48 g_LogFilePath = malloc( strlen( LogDir ) + strlen( LOG_FILENAME ) + 2 );
49 if ( g_LogFilePath == NULL )
50 /* out of memory */
51 return;
52
53 /* copy path */
54 strcpy( g_LogFilePath, LogDir );
55
56 /* add ending slash if needed */
57 if ( g_LogFilePath[ strlen( g_LogFilePath ) - 1 ] != '\\' )
58 strcat( g_LogFilePath, "\\" );
59
60 /* add filename */
61 strcat( g_LogFilePath, LOG_FILENAME );
62 }
63
64 f = fopen( g_LogFilePath, "a" );
65 if ( f == NULL )
66 {
67 DosBeep( 2000, 50 );
68 printf( "fopen failed, errno %d: %s", errno, strerror( errno ) );
69 return;
70 }
71
72 va_start( ap, format );
73 vfprintf( f, format, ap );
74 fprintf( f, "\n" );
75 fclose( f );
76 va_end( ap );
77}
78
79void LogData( char* data, int length )
80{
81 char* p;
82 char buffer[ 64 ];
83 char hex[ 4 ];
84 int i;
85
86 i = 0;
87 p = data;
88
89 while ( p < data + length )
90 {
91 if ( i == 0 )
92 {
93 strcpy( buffer, "" );
94 }
95
96 sprintf( hex, "%02x ", (int) *p );
97 strcat( buffer, hex );
98
99 p ++;
100
101 i ++;
102 if ( i == 16 )
103 {
104 i = 0;
105 LogEvent( buffer );
106 }
107 }
108 if ( i > 0 )
109 {
110 LogEvent( buffer );
111 }
112}
Note: See TracBrowser for help on using the repository browser.