Allow size-specific resizers
[jpcrr.git] / streamtools / dumppackets.cpp
blob9397640a17c6dc5ba4072fb94f5e314b39ceed12
1 #include "newpacket.hpp"
2 #include <stdio.h>
4 bool brief_mode = false;
6 void handle_packet(packet* p)
8 printf("Packet: channel %u<perm#%u>[", p->rp_channel, p->rp_channel_perm);
9 for(size_t i = 0; i < p->rp_channel_name.length(); i++) {
10 unsigned char ch = p->rp_channel_name[i];
11 if(ch < 32 || ch > 126)
12 printf("\\x%02X", ch);
13 else if(ch == '[' || ch == ']' || ch == '\\')
14 printf("\\%c", ch);
15 else
16 printf("%c", ch);
18 printf("] at %llu, type %u(%u), payload %zu:\n", (unsigned long long)p->rp_timestamp, p->rp_major,
19 p->rp_minor, p->rp_payload.size());
20 for(size_t i = 0; !brief_mode && i < p->rp_payload.size(); i += 16) {
21 size_t j = p->rp_payload.size() - i;
22 if(j > 16)
23 j = 16;
24 printf("\t");
25 for(size_t k = 0; k < j; k++)
26 printf("%02X ", p->rp_payload[i + k]);
27 printf("\n");
29 delete p;
32 int main(int argc, char** argv)
34 struct packet* p;
35 if(argc != 2) {
36 fprintf(stderr, "syntax: %s <file>\n", argv[0]);
37 exit(1);
39 if(getenv("BRIEF_PACKETDUMP"))
40 brief_mode = true;
41 read_channel rc(argv[1]);
42 while((p = rc.read()))
43 handle_packet(p);
44 return 0;