X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/a97fb2f3ae9731dd13e6854742c090ca9ef454cf..77493011a78df00e5ba285d56fa97c816c088ceb:/util.c diff --git a/util.c b/util.c index d5fe17df..ff406025 100644 --- a/util.c +++ b/util.c @@ -19,11 +19,6 @@ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.109 2007-01-29 09:59:42 hannes Exp $ (LBL)"; -#endif - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -36,7 +31,6 @@ static const char rcsid[] _U_ = #ifdef HAVE_FCNTL_H #include #endif -#include #include #include #include @@ -64,12 +58,12 @@ fn_print(register const u_char *s, register const u_char *ep) ret = 0; break; } - if (!isascii(c)) { - c = toascii(c); + if (!ND_ISASCII(c)) { + c = ND_TOASCII(c); putchar('M'); putchar('-'); } - if (!isprint(c)) { + if (!ND_ISPRINT(c)) { c ^= 0x40; /* DEL to ?, others to alpha */ putchar('^'); } @@ -92,12 +86,12 @@ fn_printn(register const u_char *s, register u_int n, while (n > 0 && (ep == NULL || s < ep)) { n--; c = *s++; - if (!isascii(c)) { - c = toascii(c); + if (!ND_ISASCII(c)) { + c = ND_TOASCII(c); putchar('M'); putchar('-'); } - if (!isprint(c)) { + if (!ND_ISPRINT(c)) { c ^= 0x40; /* DEL to ?, others to alpha */ putchar('^'); } @@ -126,12 +120,12 @@ fn_printzp(register const u_char *s, register u_int n, ret = 0; break; } - if (!isascii(c)) { - c = toascii(c); + if (!ND_ISASCII(c)) { + c = ND_TOASCII(c); putchar('M'); putchar('-'); } - if (!isprint(c)) { + if (!ND_ISPRINT(c)) { c ^= 0x40; /* DEL to ?, others to alpha */ putchar('^'); } @@ -259,21 +253,21 @@ relts_print(int secs) */ int -print_unknown_data(const u_char *cp,const char *ident,int len) +print_unknown_data(netdissect_options *ndo, const u_char *cp,const char *ident,int len) { if (len < 0) { - printf("%sDissector error: print_unknown_data called with negative length", - ident); + ND_PRINT((ndo,"%sDissector error: print_unknown_data called with negative length", + ident)); return(0); } if (snapend - cp < len) len = snapend - cp; if (len < 0) { - printf("%sDissector error: print_unknown_data called with pointer past end of packet", - ident); + ND_PRINT((ndo,"%sDissector error: print_unknown_data called with pointer past end of packet", + ident)); return(0); } - hex_print(ident,cp,len); + hex_print(ndo, ident,cp,len); return(1); /* everything is ok */ } @@ -282,7 +276,7 @@ print_unknown_data(const u_char *cp,const char *ident,int len) */ const char * tok2strbuf(register const struct tok *lp, register const char *fmt, - register int v, char *buf, size_t bufsize) + register u_int v, char *buf, size_t bufsize) { if (lp != NULL) { while (lp->s != NULL) { @@ -601,8 +595,28 @@ safeputchar(int c) unsigned char ch; ch = (unsigned char)(c & 0xff); - if (ch < 0x80 && isprint(ch)) + if (ch < 0x80 && ND_ISPRINT(ch)) printf("%c", ch); else printf("\\0x%02x", ch); } + +#ifdef LBL_ALIGN +/* + * Some compilers try to optimize memcpy(), using the alignment constraint + * on the argument pointer type. by using this function, we try to avoid the + * optimization. + */ +void +unaligned_memcpy(void *p, const void *q, size_t l) +{ + memcpy(p, q, l); +} + +/* As with memcpy(), so with memcmp(). */ +int +unaligned_memcmp(const void *p, const void *q, size_t l) +{ + return (memcmp(p, q, l)); +} +#endif