1 #ifdef NDEBUG
debug(const char * errstr,...)2 static void debug(const char *errstr, ...) { }
print_packet(const char * prefix,Packet * pkt)3 static void print_packet(const char *prefix, Packet *pkt) { }
4 #else
5 
debug(const char * errstr,...)6 static void debug(const char *errstr, ...) {
7 	va_list ap;
8 	va_start(ap, errstr);
9 	vfprintf(stderr, errstr, ap);
10 	va_end(ap);
11 }
12 
print_packet(const char * prefix,Packet * pkt)13 static void print_packet(const char *prefix, Packet *pkt) {
14 	static const char *msgtype[] = {
15 		[MSG_CONTENT] = "CONTENT",
16 		[MSG_ATTACH]  = "ATTACH",
17 		[MSG_DETACH]  = "DETACH",
18 		[MSG_RESIZE]  = "RESIZE",
19 		[MSG_REDRAW]  = "REDRAW",
20 		[MSG_EXIT]    = "EXIT",
21 	};
22 	const char *type = "UNKNOWN";
23 	if (pkt->type < countof(msgtype) && msgtype[pkt->type])
24 		type = msgtype[pkt->type];
25 
26 	fprintf(stderr, "%s: %s ", prefix, type);
27 	switch (pkt->type) {
28 	case MSG_CONTENT:
29 		fwrite(pkt->u.msg, pkt->len, 1, stderr);
30 		break;
31 	case MSG_RESIZE:
32 		fprintf(stderr, "%dx%d", pkt->u.ws.ws_col, pkt->u.ws.ws_row);
33 		break;
34 	case MSG_ATTACH:
35 		fprintf(stderr, "readonly: %d low-priority: %d",
36 			pkt->u.i & CLIENT_READONLY,
37 			pkt->u.i & CLIENT_LOWPRIORITY);
38 		break;
39 	default:
40 		fprintf(stderr, "len: %zu", pkt->len);
41 		break;
42 	}
43 	fprintf(stderr, "\n");
44 }
45 
46 #endif /* NDEBUG */
47