first = 0; } break;  case 'B':  while (size > 0) { if (!first) putchar(','); switch (*bp) { case 0: putchar('N'); break; case 1: putchar('Y'); break; default: printf("%d?", *bp); break; } ++bp; --size;
rfc1048_print(register const u_char *bp, register u_int length){	register u_char tag;	register u_int len, size;	register const char *cp;	register char c;	int first;	u_int32_t ul;	u_short us;	printf(" vend-rfc1048");	/* Step over magic cookie */	bp += sizeof(int32_t);	/* Loop while we there is a tag left in the buffer */	while (bp + 1 < snapend) {		tag = *bp++;		if (tag == TAG_PAD)			continue;		if (tag == TAG_END)			return;		cp = tok2str(tag2str, "?T%d", tag);		c = *cp++;		printf(" %s:", cp);		/* Get the length; check for truncation */		if (bp + 1 >= snapend) {			fputs(tstr, stdout);			return;		}		len = *bp++;		if (bp + len >= snapend) {			fputs(tstr, stdout);			return;		}		/* Print data */		size = len;		if (c == '?') {			/* Base default formats for unknown tags on data size */			if (size & 1)				c = 'b';			else if (size & 2)				c = 's';			else				c = 'l';		}		first = 1;		switch (c) {		case 'a':			/* ascii strings */			putchar('"');			(void)fn_printn(bp, size, NULL);			putchar('"');			bp += size;			size = 0;			break;		case 'i':		case 'l':			/* ip addresses/32-bit words */			while (size >= sizeof(ul)) {				if (!first)					putchar(',');				memcpy((char *)&ul, (char *)bp, sizeof(ul));				if (c == 'i')					printf("%s", ipaddr_string(&ul));				else					printf("%u", ul);				bp += sizeof(ul);				size -= sizeof(ul);				first = 0;			}			break;		case 's':			/* shorts */			while (size >= sizeof(us)) {				if (!first)					putchar(',');				memcpy((char *)&us, (char *)bp, sizeof(us));				printf("%d", us);				bp += sizeof(us);				size -= sizeof(us);				first = 0;			}			break;		case 'b':		default:			/* Bytes */			while (size > 0) {				if (!first)					putchar('.');				printf("%d", *bp);				++bp;				--size;				first = 0;			}			break;		}		/* Data left over? */		if (size)			printf("[len %d]", len);	}}