0
|
1 /*
|
|
2 log.c
|
|
3
|
|
4 $Id: log.c 3 2000-01-04 11:35:42Z enz $
|
|
5 */
|
|
6
|
|
7 #include <syslog.h>
|
|
8 #include <stdarg.h>
|
|
9 #include "common.h"
|
|
10
|
|
11 #define MAXLENGTH 240
|
|
12
|
|
13 struct
|
|
14 {
|
|
15 Bool interactive;
|
|
16 } log = { FALSE };
|
|
17
|
|
18 void
|
|
19 Log_init( Str name, Bool interactive, int facility )
|
|
20 {
|
|
21 int option = LOG_PID | LOG_CONS;
|
|
22
|
|
23 log.interactive = interactive;
|
|
24 openlog( name, option, facility );
|
|
25 }
|
|
26
|
|
27 #define DO_LOG( LEVEL ) \
|
|
28 va_list ap; \
|
|
29 Str t; \
|
|
30 \
|
|
31 va_start( ap, fmt ); \
|
|
32 vsnprintf( t, MAXCHAR, fmt, ap ); \
|
|
33 if ( MAXLENGTH < MAXCHAR ) \
|
|
34 t[ MAXLENGTH ] = '\0'; \
|
|
35 syslog( LEVEL, "%s", t ); \
|
|
36 if ( log.interactive ) \
|
|
37 fprintf( stderr, "%s\n", t ); \
|
|
38 va_end( ap );
|
|
39
|
|
40 void
|
|
41 Log_inf( const char *fmt, ... )
|
|
42 {
|
|
43 DO_LOG( LOG_INFO );
|
|
44 }
|
|
45
|
|
46 void
|
|
47 Log_err( const char *fmt, ... )
|
|
48 {
|
|
49 DO_LOG( LOG_ERR );
|
|
50 }
|
|
51
|
|
52 /* Ensure the condition "cond" is true; otherwise log an error and return 1 */
|
|
53 int
|
|
54 Log_check(int cond, const char *fmt, ... )
|
|
55 {
|
|
56 if (!cond) {
|
|
57 DO_LOG( LOG_ERR );
|
|
58 return 1;
|
|
59 }
|
|
60 return 0;
|
|
61 }
|
|
62
|
|
63 void
|
|
64 Log_ntc( const char *fmt, ... )
|
|
65 {
|
|
66 DO_LOG( LOG_NOTICE );
|
|
67 }
|
|
68
|
|
69 void
|
|
70 Log_dbg( const char *fmt, ... )
|
|
71 {
|
|
72 #ifdef DEBUG
|
|
73 DO_LOG( LOG_DEBUG );
|
|
74 #endif
|
|
75 }
|