mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-18 10:59:45 +00:00
Get rid of MG_ENABLE_LOG, change mg_hexdump()
This commit is contained in:
1 parent
6db0485c7b
commit
bc16854ccb
13 files changed
+117
-167
No files matched your search
@@ -28,10 +28,6 @@
|
||||
#define MG_ENABLE_IPV6 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_LOG
|
||||
#define MG_ENABLE_LOG 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_MD5
|
||||
#define MG_ENABLE_MD5 0
|
||||
#endif
|
||||
|
||||
@@ -148,9 +148,8 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
|
||||
struct mg_dns_message dm;
|
||||
int resolved = 0;
|
||||
if (mg_dns_parse(c->recv.buf, c->recv.len, &dm) == false) {
|
||||
char *s = mg_hexdump(c->recv.buf, c->recv.len);
|
||||
MG_ERROR(("Unexpected DNS response:\n%s\n", s));
|
||||
free(s);
|
||||
MG_ERROR(("Unexpected DNS response:"));
|
||||
mg_hexdump(c->recv.buf, c->recv.len);
|
||||
} else {
|
||||
MG_VERBOSE(("%s %d", dm.name, dm.resolved));
|
||||
for (d = (struct dns_data *) c->mgr->active_dns_requests; d != NULL;
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
|
||||
#if MG_ENABLE_LOG
|
||||
static void logc(int c) {
|
||||
putchar(c);
|
||||
}
|
||||
|
||||
static void logs(const char *buf, size_t len) {
|
||||
size_t i;
|
||||
for (i = 0; i < len; i++) logc(buf[i]);
|
||||
}
|
||||
|
||||
static void mg_log_stdout(const void *buf, size_t len, void *userdata) {
|
||||
(void) userdata, (void) buf, (void) len;
|
||||
#if MG_ENABLE_FILE
|
||||
fwrite(buf, 1, len, stdout);
|
||||
logs((const char *) buf, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -64,4 +72,28 @@ void mg_log_set_callback(void (*fn)(const void *, size_t, void *), void *fnd) {
|
||||
s_fn = fn;
|
||||
s_fn_param = fnd;
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned char nibble(unsigned c) {
|
||||
return (unsigned char) (c < 10 ? c + '0' : c + 'W');
|
||||
}
|
||||
|
||||
#define ISPRINT(x) ((x) >= ' ' && (x) <= '~')
|
||||
void mg_hexdump(const void *buf, size_t len) {
|
||||
const unsigned char *p = (const unsigned char *) buf;
|
||||
unsigned char ascii[16], alen = 0;
|
||||
size_t i;
|
||||
for (i = 0; i < len; i++) {
|
||||
if ((i % 16) == 0) {
|
||||
// Print buffered ascii chars
|
||||
if (i > 0) logs(" ", 2), logs((char *) ascii, 16), logc('\n'), alen = 0;
|
||||
// Print hex address, then \t
|
||||
logc(nibble((i >> 12) & 15)), logc(nibble((i >> 8) & 15)),
|
||||
logc(nibble((i >> 4) & 15)), logc('0'), logs(" ", 3);
|
||||
}
|
||||
logc(nibble(p[i] >> 4)), logc(nibble(p[i] & 15)); // Two nibbles, e.g. c5
|
||||
logc(' '); // Space after hex number
|
||||
ascii[alen++] = ISPRINT(p[i]) ? p[i] : '.'; // Add to the ascii buf
|
||||
}
|
||||
while (alen < 16) logs(" ", 3), ascii[alen++] = ' ';
|
||||
logs(" ", 2), logs((char *) ascii, 16), logc('\n');
|
||||
}
|
||||
@@ -8,27 +8,13 @@ void mg_log(const char *fmt, ...) PRINTF_LIKE(1, 2);
|
||||
bool mg_log_prefix(int ll, const char *file, int line, const char *fname);
|
||||
void mg_log_set(const char *spec);
|
||||
void mg_log_set_callback(void (*fn)(const void *, size_t, void *), void *param);
|
||||
|
||||
// Let the compiler always see the log invocation in order to check parameters
|
||||
// For MG_ENABLE_LOG=0 case, the call will be optimised out, anyway
|
||||
|
||||
#if MG_ENABLE_LOG
|
||||
void mg_hexdump(const void *buf, size_t len);
|
||||
|
||||
#define MG_LOG(level, args) \
|
||||
do { \
|
||||
if (mg_log_prefix((level), __FILE__, __LINE__, __func__)) mg_log args; \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
#define MG_LOG(level, args) \
|
||||
do { \
|
||||
(void) level; \
|
||||
if (0) mg_log args; \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
||||
#define MG_ERROR(args) MG_LOG(MG_LL_ERROR, args)
|
||||
#define MG_INFO(args) MG_LOG(MG_LL_INFO, args)
|
||||
#define MG_DEBUG(args) MG_LOG(MG_LL_DEBUG, args)
|
||||
|
||||
+4
-5
@@ -117,17 +117,16 @@ static void iolog(struct mg_connection *c, char *buf, long n, bool r) {
|
||||
union usa usa;
|
||||
char t1[50] = "", t2[50] = "";
|
||||
socklen_t slen = sizeof(usa.sin);
|
||||
char *s = mg_hexdump(buf, (size_t) n);
|
||||
struct mg_addr a;
|
||||
memset(&usa, 0, sizeof(usa));
|
||||
memset(&a, 0, sizeof(a));
|
||||
if (getsockname(FD(c), &usa.sa, &slen) < 0) (void) 0; // Ignore result
|
||||
tomgaddr(&usa, &a, c->rem.is_ip6);
|
||||
MG_INFO(("\n-- %lu %s %s %s %s %ld\n%s", c->id,
|
||||
MG_INFO(("\n-- %lu %s %s %s %s %ld", c->id,
|
||||
mg_straddr(&a, t1, sizeof(t1)), r ? "<-" : "->",
|
||||
mg_straddr(&c->rem, t2, sizeof(t2)), c->label, n, s));
|
||||
free(s);
|
||||
(void) t1, (void) t2; // Silence warnings for MG_ENABLE_LOG=0
|
||||
mg_straddr(&c->rem, t2, sizeof(t2)), c->label, n));
|
||||
|
||||
mg_hexdump(buf, (size_t) n);
|
||||
}
|
||||
if (r) {
|
||||
struct mg_str evd = mg_str_n(buf, (size_t) n);
|
||||
|
||||
@@ -165,33 +165,6 @@ size_t mg_snprintf(char *buf, size_t len, const char *fmt, ...) {
|
||||
return n;
|
||||
}
|
||||
|
||||
char *mg_hexdump(const void *buf, size_t len) {
|
||||
const unsigned char *p = (const unsigned char *) buf;
|
||||
size_t i, idx, n = 0, ofs = 0, dlen = len * 5 + 100;
|
||||
char ascii[17] = "", *dst = (char *) calloc(1, dlen);
|
||||
if (dst == NULL) return dst;
|
||||
for (i = 0; i < len; i++) {
|
||||
idx = i % 16;
|
||||
if (idx == 0) {
|
||||
if (i > 0 && dlen > n)
|
||||
n += mg_snprintf(dst + n, dlen - n, " %s\n", ascii);
|
||||
if (dlen > n)
|
||||
n += mg_snprintf(dst + n, dlen - n, "%04x ", (int) (i + ofs));
|
||||
}
|
||||
if (dlen < n) break;
|
||||
n += mg_snprintf(dst + n, dlen - n, " %02x", p[i]);
|
||||
ascii[idx] = (char) (p[i] < 0x20 || p[i] > 0x7e ? '.' : p[i]);
|
||||
ascii[idx + 1] = '\0';
|
||||
}
|
||||
while (i++ % 16) {
|
||||
if (n < dlen) n += mg_snprintf(dst + n, dlen - n, "%s", " ");
|
||||
}
|
||||
if (n < dlen) n += mg_snprintf(dst + n, dlen - n, " %s\n", ascii);
|
||||
if (n > dlen - 1) n = dlen - 1;
|
||||
dst[n] = '\0';
|
||||
return dst;
|
||||
}
|
||||
|
||||
char *mg_hex(const void *buf, size_t len, char *to) {
|
||||
const unsigned char *p = (const unsigned char *) buf;
|
||||
const char *hex = "0123456789abcdef";
|
||||
|
||||
@@ -33,7 +33,6 @@ bool mg_commalist(struct mg_str *s, struct mg_str *k, struct mg_str *v);
|
||||
bool mg_commalist(struct mg_str *s, struct mg_str *k, struct mg_str *v);
|
||||
size_t mg_vsnprintf(char *buf, size_t len, const char *fmt, va_list ap);
|
||||
size_t mg_snprintf(char *, size_t, const char *fmt, ...) PRINTF_LIKE(3, 4);
|
||||
char *mg_hexdump(const void *buf, size_t len);
|
||||
char *mg_hex(const void *buf, size_t len, char *dst);
|
||||
void mg_unhex(const char *buf, size_t len, unsigned char *to);
|
||||
unsigned long mg_unhexn(const char *s, size_t len);
|
||||
|
||||
Reference in new issue
Block a user