while ((op = getopt(argc, argv, "ac:defF:i:lnNOpqr:s:StT:vw:xXY")) != -1)
while ((op = getopt(argc, argv, "ac:deE:fF:i:lnNOpqr:s:StT:vw:xXY")) != -1)
main(int argc, char **argv){	register int cnt, op, i;	bpf_u_int32 localnet, netmask;	register char *cp, *infile, *cmdbuf, *device, *RFileName, *WFileName;	pcap_handler printer;	struct bpf_program fcode;	RETSIGTYPE (*oldhandler)(int);	u_char *pcap_userdata;	char ebuf[PCAP_ERRBUF_SIZE];	cnt = -1;	device = NULL;	infile = NULL;	RFileName = NULL;	WFileName = NULL;	if ((cp = strrchr(argv[0], '/')) != NULL)		program_name = cp + 1;	else		program_name = argv[0];	if (abort_on_misalignment(ebuf, sizeof(ebuf)) < 0)		error("%s", ebuf);	opterr = 0;	while ((op = getopt(argc, argv, "ac:defF:i:lnNOpqr:s:StT:vw:xXY")) != -1)		switch (op) {		case 'a':			++aflag;			break;		case 'c':			cnt = atoi(optarg);			if (cnt <= 0)				error("invalid packet count %s", optarg);			break;		case 'd':			++dflag;			break;		case 'e':			++eflag;			break;		case 'f':			++fflag;			break;		case 'F':			infile = optarg;			break;		case 'i':			device = optarg;			break;		case 'l':#ifdef HAVE_SETLINEBUF			setlinebuf(stdout);#else			setvbuf(stdout, NULL, _IOLBF, 0);#endif			break;		case 'n':			++nflag;			break;		case 'N':			++Nflag;			break;		case 'O':			Oflag = 0;			break;		case 'p':			++pflag;			break;		case 'q':			++qflag;			break;		case 'r':			RFileName = optarg;			break;		case 's':			snaplen = atoi(optarg);			if (snaplen <= 0)				error("invalid snaplen %s", optarg);			break;		case 'S':			++Sflag;			break;		case 't':			--tflag;			break;		case 'T':			if (strcasecmp(optarg, "vat") == 0)				packettype = PT_VAT;			else if (strcasecmp(optarg, "wb") == 0)				packettype = PT_WB;			else if (strcasecmp(optarg, "rpc") == 0)				packettype = PT_RPC;			else if (strcasecmp(optarg, "rtp") == 0)				packettype = PT_RTP;			else if (strcasecmp(optarg, "rtcp") == 0)				packettype = PT_RTCP;			else if (strcasecmp(optarg, "cnfp") == 0)				packettype = PT_CNFP;			else if (strcasecmp(optarg, "sack") == 0)				snaplen = SACK_SNAPLEN;			else				error("unknown packet type `%s'", optarg);			break;		case 'v':			++vflag;			break;		case 'w':			WFileName = optarg;			break;#ifdef YYDEBUG		case 'Y':			{			/* Undocumented flag */			extern int yydebug;			yydebug = 1;			}			break;#endif		case 'x':			++xflag;			break;		case 'X':			++Xflag;			if (xflag == 0) ++xflag;			break;		default:			usage();			/* NOTREACHED */		}	if (aflag && nflag)		error("-a and -n options are incompatible");	if (tflag > 0)		thiszone = gmt2local(0);	if (RFileName != NULL) {		/*		 * We don't need network access, so set it back to the user id.		 * Also, this prevents the user from reading anyone's		 * trace file.		 */		seteuid(getuid());		setuid(getuid());		pd = pcap_open_offline(RFileName, ebuf);		if (pd == NULL)			error("%s", ebuf);		localnet = 0;		netmask = 0;		if (fflag != 0)			error("-f and -r options are incompatible");	} else {		if (device == NULL) {			device = pcap_lookupdev(ebuf);			if (device == NULL)				error("%s", ebuf);		}		pd = pcap_open_live(device, snaplen, !pflag, 1000, ebuf);		if (pd == NULL)			error("%s", ebuf);		i = pcap_snapshot(pd);		if (snaplen < i) {			warning("snaplen raised from %d to %d", snaplen, i);			snaplen = i;		}		if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) {			warning("%s", ebuf);			localnet = 0;			netmask = 0;		}		/*		 * Let user own process after socket has been opened.		 */		seteuid(getuid());		setuid(getuid());	}	if (infile)		cmdbuf = read_infile(infile);	else		cmdbuf = copy_argv(&argv[optind]);	if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)		error("%s", pcap_geterr(pd));	if (dflag) {		bpf_dump(&fcode, dflag);		exit(0);	}	init_addrtoname(localnet, netmask);	(void)setsignal(SIGTERM, cleanup);	(void)setsignal(SIGINT, cleanup);	/* Cooperate with nohup(1) */	if ((oldhandler = setsignal(SIGHUP, cleanup)) != SIG_DFL)		(void)setsignal(SIGHUP, oldhandler);	if (pcap_setfilter(pd, &fcode) < 0)		error("%s", pcap_geterr(pd));	if (WFileName) {		pcap_dumper_t *p;		p = pcap_dump_open(pd, WFileName);		if (p == NULL)			error("%s", pcap_geterr(pd));		{			FILE *fp = (FILE *)p;	/* XXX touching pcap guts! */			fflush(fp);			setvbuf(fp, NULL, _IONBF, 0);		}		printer = pcap_dump;		pcap_userdata = (u_char *)p;	} else {		printer = lookup_printer(pcap_datalink(pd));		pcap_userdata = 0;	}	if (RFileName == NULL) {		(void)fprintf(stderr, "%s: listening on %s\n",		    program_name, device);		(void)fflush(stderr);	}	if (pcap_loop(pd, cnt, printer, pcap_userdata) < 0) {		(void)fprintf(stderr, "%s: pcap_loop: %s\n",		    program_name, pcap_geterr(pd));		exit(1);	}	pcap_close(pd);	exit(0);}