#ifndef lint
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.73 2002-06-11 17:09:01 itojun Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.76 2002-07-18 00:04:12 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
}
}
+/*
+ * this is a generic routine for printing unknown data;
+ * we pass on the linefeed plus indentation string to
+ * get a proper output - returns 0 on error
+ */
+
+int
+print_unknown_data(const u_char *cp,const char *lf,int len)
+{
+ int i;
+
+ printf("%s0x0000: ",lf);
+ for(i=0;i<len;i++) {
+ if (!TTEST2(*(cp+i), 1)) {
+ printf("%spacket exceeded snapshot",lf);
+ return(0);
+ }
+ printf("%02x",*(cp+i));
+ if (i%2)
+ printf(" ");
+ if (i/16!=(i+1)/16) {
+ if (i<(len-1))
+ printf("%s0x%04x: ",lf,i);
+ }
+ }
+ return(1); /* everything is ok */
+}
+
/*
* Convert a token value to a string; use "fmt" if not found.
*/
unsigned char ch;
ch = (unsigned char)(c & 0xff);
- if (c < 0x80 && isprint(c))
- printf("%c", c & 0xff);
+ if (ch < 0x80 && isprint(ch))
+ printf("%c", ch);
else
- printf("\\%03o", c & 0xff);
+ printf("\\%03o", ch);
}