revert breaks some stupid old compilers
[oscam.git] / oscam-log-reader.c
blob05bfa1ec3ad6b322517b5861d4bb027e40b8bcf5
1 #define MODULE_LOG_PREFIX "reader"
3 #include "globals.h"
5 #include "oscam-log.h"
6 #include "oscam-log-reader.h"
7 #include "oscam-reader.h"
9 extern int log_remove_sensitive;
11 static char *debug_mask_txt(int mask)
13 switch(mask)
15 case D_EMM :
16 return "EMM: ";
17 case D_IFD :
18 return "IFD: ";
19 case D_TRACE :
20 return "TRACE: ";
21 case D_DEVICE :
22 return "IO: ";
23 default :
24 return "";
28 static const char *reader_desc_txt(struct s_reader *reader)
30 if(reader->csystem && reader->csystem->desc)
31 { return reader->csystem->desc; }
32 else if(reader->crdr && reader->crdr->desc)
33 { return reader->crdr->desc; }
34 else if(reader->ph.desc)
35 { return reader->ph.desc; }
36 else
37 { return reader_get_type_desc(reader, 1); }
40 static char *format_sensitive(char *result, int remove_sensitive)
42 // Filter sensitive information
43 int i, n = strlen(result), p = 0;
44 if(remove_sensitive)
46 int in_sens = 0;
47 for(i = 0; i < n; i++)
49 switch(result[i])
51 case '{':
52 in_sens = 1;
53 continue;
54 case '}':
55 in_sens = 0;
56 break;
58 if(in_sens)
59 { result[i] = '#'; }
62 // Filter sensitive markers
63 for(i = 0; i < n; i++)
65 if(result[i] == '{' || result[i] == '}')
66 { continue; }
67 result[p++] = result[i];
69 result[p] = '\0';
70 return result;
73 void rdr_log(struct s_reader *reader, char *fmt, ...)
75 char txt[256];
76 va_list args;
77 va_start(args, fmt);
78 vsnprintf(txt, sizeof(txt), fmt, args);
79 va_end(args);
80 cs_log("%s [%s] %s", reader->label, reader_desc_txt(reader), txt);
83 void rdr_log_sensitive(struct s_reader *reader, char *fmt, ...)
85 char txt[256];
86 va_list args;
87 va_start(args, fmt);
88 vsnprintf(txt, sizeof(txt), fmt, args);
89 va_end(args);
90 format_sensitive(txt, log_remove_sensitive);
91 rdr_log(reader, "%s", txt);
94 void rdr_log_dbg(struct s_reader *reader, uint16_t mask, char *fmt, ...)
96 if(config_enabled(WITH_DEBUG))
98 char txt[2048];
99 va_list args;
100 va_start(args, fmt);
101 vsnprintf(txt, sizeof(txt), fmt, args);
102 va_end(args);
103 cs_log_dbg(mask, "%s [%s] %s%s", reader->label, reader_desc_txt(reader), debug_mask_txt(mask), txt);
107 void rdr_log_dbg_sensitive(struct s_reader *reader, uint16_t mask, char *fmt, ...)
109 if(config_enabled(WITH_DEBUG))
111 char txt[2048];
112 va_list args;
113 va_start(args, fmt);
114 vsnprintf(txt, sizeof(txt), fmt, args);
115 va_end(args);
116 format_sensitive(txt, log_remove_sensitive);
117 rdr_log_dbg(reader, mask, "%s", txt);
121 void rdr_log_dump(struct s_reader *reader, const uint8_t *buf, int n, char *fmt, ...)
123 char txt[2048];
124 va_list args;
125 va_start(args, fmt);
126 vsnprintf(txt, sizeof(txt), fmt, args);
127 va_end(args);
128 cs_log_dump(buf, n, "%s [%s] %s", reader->label, reader_desc_txt(reader), txt);
131 void rdr_log_dump_dbg(struct s_reader *reader, uint16_t mask, const uint8_t *buf, int n, char *fmt, ...)
133 if(config_enabled(WITH_DEBUG))
135 char txt[2048];
136 va_list args;
137 va_start(args, fmt);
138 vsnprintf(txt, sizeof(txt), fmt, args);
139 va_end(args);
140 cs_log_dump_dbg(mask, buf, n, "%s [%s] %s%s", reader->label, reader_desc_txt(reader), debug_mask_txt(mask), txt);