if (*headerlenp >= sizeof(header)) *headerlenp = sizeof(header) - 1;
getbsize(headerlenp, blocksizep)	int *headerlenp;	long *blocksizep;{	static char header[20];	long n, max, mul, blocksize;	char *ep, *p, *form;#define	KB	(1024)#define	MB	(1024 * 1024)#define	GB	(1024 * 1024 * 1024)#define	MAXB	GB		/* No tera, peta, nor exa. */	form = "";	if ((p = getenv("BLOCKSIZE")) != NULL && *p != '\0') {		if ((n = strtol(p, &ep, 10)) < 0)			goto underflow;		if (n == 0)			n = 1;		if (*ep && ep[1])			goto fmterr;		switch (*ep) {		case 'G': case 'g':			form = "G";			max = MAXB / GB;			mul = GB;			break;		case 'K': case 'k':			form = "K";			max = MAXB / KB;			mul = KB;			break;		case 'M': case 'm':			form = "M";			max = MAXB / MB;			mul = MB;			break;		case '\0':			max = MAXB;			mul = 1;			break;		default:fmterr:			_warnx("%s: unknown blocksize", p);			n = 512;			max = MAXB;			mul = 1;			break;		}		if (n > max) {			_warnx("maximum blocksize is %dG", MAXB / GB);			n = max;		}		if ((blocksize = n * mul) < 512) {underflow:		_warnx("%s: minimum blocksize is 512", p);			form = "";			blocksize = n = 512;		}	} else		blocksize = n = 512;	*headerlenp = snprintf(header, sizeof(header), "%ld%s-blocks", n, form);	*blocksizep = blocksize;	return (header);}