X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/ea91ebb8324c8156ce9fba06959e3eaad0b5717e..bfadcfe91ffc2584d00b6a9def079fa1e6b5cdfc:/tcpdump.c diff --git a/tcpdump.c b/tcpdump.c index 3983a33e..3f175c28 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -30,7 +30,7 @@ static const char copyright[] _U_ = "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ The Regents of the University of California. All rights reserved.\n"; static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.216.2.6 2003-12-29 22:42:22 hannes Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.216.2.12 2004-06-15 00:01:52 guy Exp $ (LBL)"; #endif /* @@ -205,6 +205,9 @@ static struct printer printers[] = { #endif #ifdef DLT_ENC { enc_if_print, DLT_ENC }, +#endif +#ifdef DLT_APPLE_IP_OVER_IEEE1394 + { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, #endif { NULL, 0 }, }; @@ -494,6 +497,7 @@ main(int argc, char **argv) program_name, optarg); (void)fprintf(stderr, "(no libsmi support)\n"); #endif + break; case 'O': Oflag = 0; @@ -611,7 +615,7 @@ main(int argc, char **argv) /* NOTREACHED */ } - if (tflag > 0) + if (tflag > 0 || tflag == -3) thiszone = gmt2local(0); if (RFileName != NULL) { @@ -655,11 +659,8 @@ main(int argc, char **argv) error("%s", ebuf); } #ifdef WIN32 - if(IsTextUnicode(device, - wcslen((short*)device), // Device always ends with a double \0, so this way to determine its - // length should be always valid - NULL)) - { + if(strlen(device) == 1) //we assume that an ASCII string is always longer than 1 char + { //a Unicode string has a \0 as second byte (so strlen() is 1) fprintf(stderr, "%s: listening on %ws\n", program_name, device); } else @@ -940,13 +941,18 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * file could put it over Cflag. */ if (ftell((FILE *)dump_info->p) > Cflag) { + /* + * Close the current file and open a new one. + */ + pcap_dump_close(dump_info->p); + if (cnt >= 1000) + error("too many output files"); name = (char *) malloc(strlen(dump_info->WFileName) + 4); if (name == NULL) error("dump_packet_and_trunc: malloc"); strcpy(name, dump_info->WFileName); swebitoa(cnt, name + strlen(dump_info->WFileName)); cnt++; - pcap_dump_close(dump_info->p); dump_info->p = pcap_dump_open(dump_info->pd, name); free(name); if (dump_info->p == NULL) @@ -1053,7 +1059,7 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) char WDversion[]="current-cvs.tcpdump.org"; char version[]="current-cvs.tcpdump.org"; char pcap_version[]="current-cvs.tcpdump.org"; - char Wpcap_version[]="3.0 alpha"; + char Wpcap_version[]="3.1"; #endif /* @@ -1088,8 +1094,12 @@ usage(void) #endif /* HAVE_PCAP_LIB_VERSION */ #ifdef HAVE_PCAP_LIB_VERSION +#ifdef WIN32 + (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version); +#else /* WIN32 */ (void)fprintf(stderr, "%s version %s\n", program_name, version); - (void)fprintf(stderr, "%s\n", pcap_lib_version()); +#endif /* WIN32 */ + (void)fprintf(stderr, "%s\n",pcap_lib_version()); #else /* HAVE_PCAP_LIB_VERSION */ #ifdef WIN32 (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version);