- fix Building without Nagra not possible at Nagra_Merlin https://trac.streamboard...
[oscam.git] / oscam-log-reader.c
blobce850f22127dc8823727343f97f247c14020bb43
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"
8 #include "oscam-string.h"
10 extern int log_remove_sensitive;
12 static char *debug_mask_txt(int mask)
14 switch(mask)
16 case D_EMM:
17 return "EMM: ";
19 case D_IFD:
20 return "IFD: ";
22 case D_TRACE:
23 return "TRACE: ";
25 case D_DEVICE:
26 return "IO: ";
28 default:
29 return "";
33 static const char *reader_desc_txt(struct s_reader *reader)
35 if(reader->csystem && reader->csystem->desc)
36 { return reader->csystem->desc; }
37 else if(reader->crdr && reader->crdr->desc)
38 { return reader->crdr->desc; }
39 else if(reader->ph.desc)
40 { return reader->ph.desc; }
41 else
42 { return reader_get_type_desc(reader, 1); }
45 static char *format_sensitive(char *result, int remove_sensitive)
47 // Filter sensitive information
48 int i, n = cs_strlen(result), p = 0;
49 if(remove_sensitive)
51 int in_sens = 0;
52 for(i = 0; i < n; i++)
54 switch(result[i])
56 case '{':
57 in_sens = 1;
58 continue;
60 case '}':
61 in_sens = 0;
62 break;
65 if(in_sens)
66 { result[i] = '#'; }
70 // Filter sensitive markers
71 for(i = 0; i < n; i++)
73 if(result[i] == '{' || result[i] == '}')
74 { continue; }
76 result[p++] = result[i];
78 result[p] = '\0';
79 return result;
82 void rdr_log(struct s_reader *reader, char *fmt, ...)
84 char txt[256];
85 va_list args;
86 va_start(args, fmt);
87 vsnprintf(txt, sizeof(txt), fmt, args);
88 va_end(args);
89 cs_log("%s [%s] %s", reader->label, reader_desc_txt(reader), txt);
92 void rdr_log_sensitive(struct s_reader *reader, char *fmt, ...)
94 char txt[256];
95 va_list args;
96 va_start(args, fmt);
97 vsnprintf(txt, sizeof(txt), fmt, args);
98 va_end(args);
99 format_sensitive(txt, log_remove_sensitive);
100 rdr_log(reader, "%s", txt);
103 void rdr_log_dbg(struct s_reader *reader, uint16_t mask, char *fmt, ...)
105 if(config_enabled(WITH_DEBUG))
107 char txt[2048];
108 va_list args;
109 va_start(args, fmt);
110 vsnprintf(txt, sizeof(txt), fmt, args);
111 va_end(args);
112 cs_log_dbg(mask, "%s [%s] %s%s", reader->label, reader_desc_txt(reader), debug_mask_txt(mask), txt);
116 void rdr_log_dbg_sensitive(struct s_reader *reader, uint16_t mask, char *fmt, ...)
118 if(config_enabled(WITH_DEBUG))
120 char txt[2048];
121 va_list args;
122 va_start(args, fmt);
123 vsnprintf(txt, sizeof(txt), fmt, args);
124 va_end(args);
125 format_sensitive(txt, log_remove_sensitive);
126 rdr_log_dbg(reader, mask, "%s", txt);
130 void rdr_log_dump(struct s_reader *reader, const uint8_t *buf, int n, char *fmt, ...)
132 char txt[2048];
133 va_list args;
134 va_start(args, fmt);
135 vsnprintf(txt, sizeof(txt), fmt, args);
136 va_end(args);
137 cs_log_dump(buf, n, "%s [%s] %s", reader->label, reader_desc_txt(reader), txt);
140 void rdr_log_dump_dbg(struct s_reader *reader, uint16_t mask, const uint8_t *buf, int n, char *fmt, ...)
142 if(config_enabled(WITH_DEBUG))
144 char txt[2048];
145 va_list args;
146 va_start(args, fmt);
147 vsnprintf(txt, sizeof(txt), fmt, args);
148 va_end(args);
149 cs_log_dump_dbg(mask, buf, n, "%s [%s] %s%s", reader->label, reader_desc_txt(reader), debug_mask_txt(mask), txt);