X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/ad7a38341c19e71e3595c17368ac18f08b71482d..5d6a1edd068e89b14f7525f11f992c46e16cfc2f:/util.c diff --git a/util.c b/util.c index 4d25d6f0..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('^'); } @@ -282,7 +276,7 @@ print_unknown_data(netdissect_options *ndo, const u_char *cp,const char *ident,i */ 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