display(f, lp)
display(f, lp, unit)
display(f, lp)	FILE *f;	struct disklabel *lp;{	int i, j;	int width;	fprintf(f, "# %s:\n", specname);	if ((unsigned) lp->d_type < DKMAXTYPES)		fprintf(f, "type: %s\n", dktypenames[lp->d_type]);	else		fprintf(f, "type: %d\n", lp->d_type);	fprintf(f, "disk: %.*s\n", (int)sizeof(lp->d_typename), lp->d_typename);	fprintf(f, "label: %.*s\n", (int)sizeof(lp->d_packname), lp->d_packname);	fprintf(f, "flags:");	if (lp->d_flags & D_REMOVABLE)		fprintf(f, " removable");	if (lp->d_flags & D_ECC)		fprintf(f, " ecc");	if (lp->d_flags & D_BADSECT)		fprintf(f, " badsect");	putc('\n', f);	fprintf(f, "bytes/sector: %ld\n", (long)lp->d_secsize);	fprintf(f, "sectors/track: %ld\n", (long)lp->d_nsectors);	fprintf(f, "tracks/cylinder: %ld\n", (long)lp->d_ntracks);	fprintf(f, "sectors/cylinder: %ld\n", (long)lp->d_secpercyl);	fprintf(f, "cylinders: %ld\n", (long)lp->d_ncylinders);	fprintf(f, "total sectors: %ld\n", (long)lp->d_secperunit);	fprintf(f, "rpm: %ld\n", (long)lp->d_rpm);	fprintf(f, "interleave: %ld\n", (long)lp->d_interleave);	fprintf(f, "trackskew: %ld\n", (long)lp->d_trackskew);	fprintf(f, "cylinderskew: %ld\n", (long)lp->d_cylskew);	fprintf(f, "headswitch: %ld\t\t# microseconds\n",	    (long)lp->d_headswitch);	fprintf(f, "track-to-track seek: %ld\t# microseconds\n",	    (long)lp->d_trkseek);	fprintf(f, "drivedata: ");	for (i = NDDATA - 1; i >= 0; i--)		if (lp->d_drivedata[i])			break;	if (i < 0)		i = 0;	for (j = 0; j <= i; j++)		fprintf(f, "%d ", lp->d_drivedata[j]);	fprintf(f, "\n\n%d partitions:\n", lp->d_npartitions);	width = width_partition(lp, 0);	fprintf(f,	    "#    %*.*s %*.*s    fstype   [fsize bsize   cpg]\n",	    width, width, "size", width, width, "offset");	for (i = 0; i < lp->d_npartitions; i++)		display_partition(f, lp, NULL, i, 0, width);	fflush(f);}