123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #include <u.h>
- #include <libc.h>
- #include <ip.h>
- #include <ctype.h>
- #include "dat.h"
- #include "protos.h"
- static void
- p_compile(Filter *)
- {
- }
- static char tohex[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'a', 'b', 'c', 'd', 'e', 'f'
- };
- static int
- p_seprint(Msg *m)
- {
- int c, i, n, isstring;
- uchar *ps = m->ps;
- char *p = m->p;
- char *e = m->e;
- n = m->pe - ps;
- if(n > Nflag)
- n = Nflag;
- isstring = 1;
- for(i = 0; i < n; i++){
- c = ps[i];
- if(!isprint(c) && !isspace(c)){
- isstring = 0;
- break;
- }
- }
- if(isstring){
- for(i = 0; i < n && p+1<e; i++){
- c = ps[i];
- switch(c){
- case '\t':
- *p++ = '\\';
- *p++ = 't';
- break;
- case '\r':
- *p++ = '\\';
- *p++ = 'r';
- break;
- case '\n':
- *p++ = '\\';
- *p++ = 'n';
- break;
- default:
- *p++ = c;
- }
- }
- } else {
- for(i = 0; i < n && p+1<e; i++){
- c = ps[i];
- *p++ = tohex[c>>4];
- *p++ = tohex[c&0xf];
- }
- }
- m->pr = nil;
- m->p = p;
- m->ps = ps;
- return 0;
- }
- Proto dump =
- {
- "dump",
- p_compile,
- nil,
- p_seprint,
- nil,
- nil,
- nil,
- defaultframer,
- };
|