sbin/newfs_msdos/newfs_msdos.c
167
struct bpb bpb;
sbin/newfs_msdos/newfs_msdos.c
212
static void getstdfmt(const char *, struct bpb *);
sbin/newfs_msdos/newfs_msdos.c
214
struct bpb *);
sbin/newfs_msdos/newfs_msdos.c
215
static void print_bpb(struct bpb *);
sbin/newfs_msdos/newfs_msdos.c
239
struct bpb bpb;
sbin/newfs_msdos/newfs_msdos.c
355
memset(&bpb, 0, sizeof(bpb));
sbin/newfs_msdos/newfs_msdos.c
357
getstdfmt(opt_f, &bpb);
sbin/newfs_msdos/newfs_msdos.c
358
bpb.bsec = bpb.sec;
sbin/newfs_msdos/newfs_msdos.c
359
bpb.sec = 0;
sbin/newfs_msdos/newfs_msdos.c
360
bpb.bspf = bpb.spf;
sbin/newfs_msdos/newfs_msdos.c
361
bpb.spf = 0;
sbin/newfs_msdos/newfs_msdos.c
364
bpb.hds = opt_h;
sbin/newfs_msdos/newfs_msdos.c
366
bpb.spt = opt_u;
sbin/newfs_msdos/newfs_msdos.c
368
bpb.bps = opt_S;
sbin/newfs_msdos/newfs_msdos.c
370
bpb.bsec = opt_s;
sbin/newfs_msdos/newfs_msdos.c
372
bpb.hid = opt_o;
sbin/newfs_msdos/newfs_msdos.c
374
getdiskinfo(fd, fname, dtype, oflag, &bpb);
sbin/newfs_msdos/newfs_msdos.c
375
if (!powerof2(bpb.bps))
sbin/newfs_msdos/newfs_msdos.c
376
errx(1, "bytes/sector (%u) is not a power of 2", bpb.bps);
sbin/newfs_msdos/newfs_msdos.c
377
if (bpb.bps < MINBPS)
sbin/newfs_msdos/newfs_msdos.c
379
bpb.bps, MINBPS);
sbin/newfs_msdos/newfs_msdos.c
391
bpb.rde = 0;
sbin/newfs_msdos/newfs_msdos.c
395
if (opt_b < bpb.bps)
sbin/newfs_msdos/newfs_msdos.c
397
opt_b, bpb.bps);
sbin/newfs_msdos/newfs_msdos.c
398
if (opt_b > bpb.bps * MAXSPC)
sbin/newfs_msdos/newfs_msdos.c
400
opt_b, bpb.bps * MAXSPC);
sbin/newfs_msdos/newfs_msdos.c
401
bpb.spc = opt_b / bpb.bps;
sbin/newfs_msdos/newfs_msdos.c
406
bpb.spc = opt_c;
sbin/newfs_msdos/newfs_msdos.c
409
bpb.res = opt_r;
sbin/newfs_msdos/newfs_msdos.c
414
bpb.nft = opt_n;
sbin/newfs_msdos/newfs_msdos.c
417
bpb.rde = opt_e;
sbin/newfs_msdos/newfs_msdos.c
421
bpb.mid = opt_m;
sbin/newfs_msdos/newfs_msdos.c
424
bpb.bspf = opt_a;
sbin/newfs_msdos/newfs_msdos.c
426
bpb.infs = opt_i;
sbin/newfs_msdos/newfs_msdos.c
428
bpb.bkbs = opt_k;
sbin/newfs_msdos/newfs_msdos.c
441
if (!S_ISREG(sb.st_mode) || sb.st_size % bpb.bps ||
sbin/newfs_msdos/newfs_msdos.c
442
sb.st_size < bpb.bps || sb.st_size > bpb.bps * MAXU16)
sbin/newfs_msdos/newfs_msdos.c
444
bss = sb.st_size / bpb.bps;
sbin/newfs_msdos/newfs_msdos.c
446
if (!bpb.nft)
sbin/newfs_msdos/newfs_msdos.c
447
bpb.nft = 2;
sbin/newfs_msdos/newfs_msdos.c
449
if (bpb.bsec < (bpb.res ? bpb.res : bss) +
sbin/newfs_msdos/newfs_msdos.c
450
howmany((RESFTE + (bpb.spc ? MINCLS16 : MAXCLS12 + 1)) *
sbin/newfs_msdos/newfs_msdos.c
451
((bpb.spc ? 16 : 12) / BPN), bpb.bps * NPB) *
sbin/newfs_msdos/newfs_msdos.c
452
bpb.nft +
sbin/newfs_msdos/newfs_msdos.c
453
howmany(bpb.rde ? bpb.rde : DEFRDE,
sbin/newfs_msdos/newfs_msdos.c
454
bpb.bps / sizeof(struct de)) +
sbin/newfs_msdos/newfs_msdos.c
455
(bpb.spc ? MINCLS16 : MAXCLS12 + 1) *
sbin/newfs_msdos/newfs_msdos.c
456
(bpb.spc ? bpb.spc : howmany(DEFBLK, bpb.bps)))
sbin/newfs_msdos/newfs_msdos.c
458
else if (bpb.rde || bpb.bsec <
sbin/newfs_msdos/newfs_msdos.c
459
(bpb.res ? bpb.res : bss) +
sbin/newfs_msdos/newfs_msdos.c
460
howmany((RESFTE + MAXCLS16) * 2, bpb.bps) * bpb.nft +
sbin/newfs_msdos/newfs_msdos.c
461
howmany(DEFRDE, bpb.bps / sizeof(struct de)) +
sbin/newfs_msdos/newfs_msdos.c
463
(bpb.spc ? bpb.spc : howmany(8192, bpb.bps)))
sbin/newfs_msdos/newfs_msdos.c
470
if (!bpb.infs) {
sbin/newfs_msdos/newfs_msdos.c
471
if (x == MAXU16 || x == bpb.bkbs)
sbin/newfs_msdos/newfs_msdos.c
473
bpb.infs = x;
sbin/newfs_msdos/newfs_msdos.c
475
if (bpb.infs != MAXU16 && x <= bpb.infs)
sbin/newfs_msdos/newfs_msdos.c
476
x = bpb.infs + 1;
sbin/newfs_msdos/newfs_msdos.c
477
if (!bpb.bkbs) {
sbin/newfs_msdos/newfs_msdos.c
480
bpb.bkbs = x;
sbin/newfs_msdos/newfs_msdos.c
481
} else if (bpb.bkbs != MAXU16 && bpb.bkbs == bpb.infs)
sbin/newfs_msdos/newfs_msdos.c
483
if (bpb.bkbs != MAXU16 && x <= bpb.bkbs)
sbin/newfs_msdos/newfs_msdos.c
484
x = bpb.bkbs + 1;
sbin/newfs_msdos/newfs_msdos.c
486
if (!bpb.res)
sbin/newfs_msdos/newfs_msdos.c
487
bpb.res = fat == 32 ? MAXIMUM(x, MAXIMUM(16384 / bpb.bps, 4)) : x;
sbin/newfs_msdos/newfs_msdos.c
488
else if (bpb.res < x)
sbin/newfs_msdos/newfs_msdos.c
490
if (fat != 32 && !bpb.rde)
sbin/newfs_msdos/newfs_msdos.c
491
bpb.rde = DEFRDE;
sbin/newfs_msdos/newfs_msdos.c
492
rds = howmany(bpb.rde, bpb.bps / sizeof(struct de));
sbin/newfs_msdos/newfs_msdos.c
493
if (!bpb.spc)
sbin/newfs_msdos/newfs_msdos.c
494
for (bpb.spc = howmany(fat == 16 ? DEFBLK16 : DEFBLK, bpb.bps);
sbin/newfs_msdos/newfs_msdos.c
495
bpb.spc < MAXSPC &&
sbin/newfs_msdos/newfs_msdos.c
496
bpb.res +
sbin/newfs_msdos/newfs_msdos.c
498
bpb.bps * NPB) * bpb.nft +
sbin/newfs_msdos/newfs_msdos.c
500
(u_int64_t)(maxcls(fat) + 1) * bpb.spc <= bpb.bsec;
sbin/newfs_msdos/newfs_msdos.c
501
bpb.spc <<= 1);
sbin/newfs_msdos/newfs_msdos.c
502
if (fat != 32 && bpb.bspf > MAXU16)
sbin/newfs_msdos/newfs_msdos.c
504
x1 = bpb.res + rds;
sbin/newfs_msdos/newfs_msdos.c
505
x = bpb.bspf ? bpb.bspf : 1;
sbin/newfs_msdos/newfs_msdos.c
506
if (x1 + (u_int64_t)x * bpb.nft > bpb.bsec)
sbin/newfs_msdos/newfs_msdos.c
508
x1 += x * bpb.nft;
sbin/newfs_msdos/newfs_msdos.c
509
x = (u_int64_t)(bpb.bsec - x1) * bpb.bps * NPB /
sbin/newfs_msdos/newfs_msdos.c
510
(bpb.spc * bpb.bps * NPB + fat / BPN * bpb.nft);
sbin/newfs_msdos/newfs_msdos.c
512
bpb.bps * NPB);
sbin/newfs_msdos/newfs_msdos.c
513
if (!bpb.bspf) {
sbin/newfs_msdos/newfs_msdos.c
514
bpb.bspf = x2;
sbin/newfs_msdos/newfs_msdos.c
515
x1 += (bpb.bspf - 1) * bpb.nft;
sbin/newfs_msdos/newfs_msdos.c
517
cls = (bpb.bsec - x1) / bpb.spc;
sbin/newfs_msdos/newfs_msdos.c
518
x = (u_int64_t)bpb.bspf * bpb.bps * NPB / (fat / BPN) - RESFTE;
sbin/newfs_msdos/newfs_msdos.c
521
if (bpb.bspf < x2)
sbin/newfs_msdos/newfs_msdos.c
529
bpb.bsec = x1 + (cls + 1) * bpb.spc - 1;
sbin/newfs_msdos/newfs_msdos.c
531
bpb.bsec);
sbin/newfs_msdos/newfs_msdos.c
534
"(%u bytes/cluster)\n", fname, cls * bpb.spc,
sbin/newfs_msdos/newfs_msdos.c
535
cls * bpb.spc == 1 ? "" : "s", cls, fat,
sbin/newfs_msdos/newfs_msdos.c
536
cls == 1 ? "" : "s", bpb.bps * bpb.spc);
sbin/newfs_msdos/newfs_msdos.c
537
if (!bpb.mid)
sbin/newfs_msdos/newfs_msdos.c
538
bpb.mid = !bpb.hid ? 0xf0 : 0xf8;
sbin/newfs_msdos/newfs_msdos.c
540
bpb.rdcl = RESFTE;
sbin/newfs_msdos/newfs_msdos.c
541
if (bpb.hid + bpb.bsec <= MAXU16) {
sbin/newfs_msdos/newfs_msdos.c
542
bpb.sec = bpb.bsec;
sbin/newfs_msdos/newfs_msdos.c
543
bpb.bsec = 0;
sbin/newfs_msdos/newfs_msdos.c
546
bpb.spf = bpb.bspf;
sbin/newfs_msdos/newfs_msdos.c
547
bpb.bspf = 0;
sbin/newfs_msdos/newfs_msdos.c
549
print_bpb(&bpb);
sbin/newfs_msdos/newfs_msdos.c
556
if (!(img = malloc(bpb.bps)))
sbin/newfs_msdos/newfs_msdos.c
558
dir = bpb.res + (bpb.spf ? bpb.spf : bpb.bspf) * bpb.nft;
sbin/newfs_msdos/newfs_msdos.c
559
for (lsn = 0; lsn < dir + (fat == 32 ? bpb.spc : rds); lsn++) {
sbin/newfs_msdos/newfs_msdos.c
562
fat == 32 && bpb.bkbs != MAXU16 &&
sbin/newfs_msdos/newfs_msdos.c
563
bss <= bpb.bkbs && x >= bpb.bkbs) {
sbin/newfs_msdos/newfs_msdos.c
564
x -= bpb.bkbs;
sbin/newfs_msdos/newfs_msdos.c
569
if ((n = read(fd1, img, bpb.bps)) == -1)
sbin/newfs_msdos/newfs_msdos.c
571
if (n != bpb.bps)
sbin/newfs_msdos/newfs_msdos.c
574
memset(img, 0, bpb.bps);
sbin/newfs_msdos/newfs_msdos.c
576
(fat == 32 && bpb.bkbs != MAXU16 && lsn == bpb.bkbs)) {
sbin/newfs_msdos/newfs_msdos.c
579
mk2(bsbpb->bps, bpb.bps);
sbin/newfs_msdos/newfs_msdos.c
580
mk1(bsbpb->spc, bpb.spc);
sbin/newfs_msdos/newfs_msdos.c
581
mk2(bsbpb->res, bpb.res);
sbin/newfs_msdos/newfs_msdos.c
582
mk1(bsbpb->nft, bpb.nft);
sbin/newfs_msdos/newfs_msdos.c
583
mk2(bsbpb->rde, bpb.rde);
sbin/newfs_msdos/newfs_msdos.c
584
mk2(bsbpb->sec, bpb.sec);
sbin/newfs_msdos/newfs_msdos.c
585
mk1(bsbpb->mid, bpb.mid);
sbin/newfs_msdos/newfs_msdos.c
586
mk2(bsbpb->spf, bpb.spf);
sbin/newfs_msdos/newfs_msdos.c
587
mk2(bsbpb->spt, bpb.spt);
sbin/newfs_msdos/newfs_msdos.c
588
mk2(bsbpb->hds, bpb.hds);
sbin/newfs_msdos/newfs_msdos.c
589
mk4(bsbpb->hid, bpb.hid);
sbin/newfs_msdos/newfs_msdos.c
590
mk4(bsbpb->bsec, bpb.bsec);
sbin/newfs_msdos/newfs_msdos.c
594
mk4(bsxbpb->bspf, bpb.bspf);
sbin/newfs_msdos/newfs_msdos.c
597
mk4(bsxbpb->rdcl, bpb.rdcl);
sbin/newfs_msdos/newfs_msdos.c
598
mk2(bsxbpb->infs, bpb.infs);
sbin/newfs_msdos/newfs_msdos.c
599
mk2(bsxbpb->bkbs, bpb.bkbs);
sbin/newfs_msdos/newfs_msdos.c
629
} else if (fat == 32 && bpb.infs != MAXU16 &&
sbin/newfs_msdos/newfs_msdos.c
630
(lsn == bpb.infs ||
sbin/newfs_msdos/newfs_msdos.c
631
(bpb.bkbs != MAXU16 &&
sbin/newfs_msdos/newfs_msdos.c
632
lsn == bpb.bkbs + bpb.infs))) {
sbin/newfs_msdos/newfs_msdos.c
638
} else if (lsn >= bpb.res && lsn < dir &&
sbin/newfs_msdos/newfs_msdos.c
639
!((lsn - bpb.res) %
sbin/newfs_msdos/newfs_msdos.c
640
(bpb.spf ? bpb.spf : bpb.bspf))) {
sbin/newfs_msdos/newfs_msdos.c
641
mk1(img[0], bpb.mid);
sbin/newfs_msdos/newfs_msdos.c
657
if ((n = write(fd, img, bpb.bps)) == -1)
sbin/newfs_msdos/newfs_msdos.c
659
if (n != bpb.bps)
sbin/newfs_msdos/newfs_msdos.c
698
getstdfmt(const char *fmt, struct bpb *bpb)
sbin/newfs_msdos/newfs_msdos.c
706
*bpb = stdfmt[i].bpb;
sbin/newfs_msdos/newfs_msdos.c
714
struct bpb *bpb)
sbin/newfs_msdos/newfs_msdos.c
734
if ((((!oflag && part != -1) || !bpb->bsec)) ||
sbin/newfs_msdos/newfs_msdos.c
735
!bpb->bps || !bpb->spt || !bpb->hds) {
sbin/newfs_msdos/newfs_msdos.c
752
bpb->hid += DL_GETPOFFSET(&lp->d_partitions[part]);
sbin/newfs_msdos/newfs_msdos.c
753
if (!bpb->bsec)
sbin/newfs_msdos/newfs_msdos.c
754
bpb->bsec = DL_GETPSIZE(&lp->d_partitions[part]);
sbin/newfs_msdos/newfs_msdos.c
755
if (!bpb->bps)
sbin/newfs_msdos/newfs_msdos.c
756
bpb->bps = ckgeom(fname, lp->d_secsize, "bytes/sector");
sbin/newfs_msdos/newfs_msdos.c
757
if (!bpb->spt)
sbin/newfs_msdos/newfs_msdos.c
758
bpb->spt = ckgeom(fname, lp->d_nsectors, "sectors/track");
sbin/newfs_msdos/newfs_msdos.c
759
if (!bpb->hds)
sbin/newfs_msdos/newfs_msdos.c
760
bpb->hds = ckgeom(fname, lp->d_ntracks, "drive heads");
sbin/newfs_msdos/newfs_msdos.c
761
if (bpb->spt > 63) {
sbin/newfs_msdos/newfs_msdos.c
762
bpb->hds = bpb->hds * bpb->spt / 63;
sbin/newfs_msdos/newfs_msdos.c
763
bpb->spt = 63;
sbin/newfs_msdos/newfs_msdos.c
772
print_bpb(struct bpb *bpb)
sbin/newfs_msdos/newfs_msdos.c
774
printf("bps=%u spc=%u res=%u nft=%u", bpb->bps, bpb->spc, bpb->res,
sbin/newfs_msdos/newfs_msdos.c
775
bpb->nft);
sbin/newfs_msdos/newfs_msdos.c
776
if (bpb->rde)
sbin/newfs_msdos/newfs_msdos.c
777
printf(" rde=%u", bpb->rde);
sbin/newfs_msdos/newfs_msdos.c
778
if (bpb->sec)
sbin/newfs_msdos/newfs_msdos.c
779
printf(" sec=%u", bpb->sec);
sbin/newfs_msdos/newfs_msdos.c
780
printf(" mid=%#x", bpb->mid);
sbin/newfs_msdos/newfs_msdos.c
781
if (bpb->spf)
sbin/newfs_msdos/newfs_msdos.c
782
printf(" spf=%u", bpb->spf);
sbin/newfs_msdos/newfs_msdos.c
783
printf(" spt=%u hds=%u hid=%u", bpb->spt, bpb->hds, bpb->hid);
sbin/newfs_msdos/newfs_msdos.c
784
if (bpb->bsec)
sbin/newfs_msdos/newfs_msdos.c
785
printf(" bsec=%u", bpb->bsec);
sbin/newfs_msdos/newfs_msdos.c
786
if (!bpb->spf) {
sbin/newfs_msdos/newfs_msdos.c
787
printf(" bspf=%u rdcl=%u", bpb->bspf, bpb->rdcl);
sbin/newfs_msdos/newfs_msdos.c
789
printf(bpb->infs == MAXU16 ? "%#x" : "%u", bpb->infs);
sbin/newfs_msdos/newfs_msdos.c
791
printf(bpb->bkbs == MAXU16 ? "%#x" : "%u", bpb->bkbs);
usr.sbin/makefs/msdos/mkfs_msdos.c
168
struct bpb bpb;
usr.sbin/makefs/msdos/mkfs_msdos.c
216
static int getstdfmt(const char *, struct bpb *);
usr.sbin/makefs/msdos/mkfs_msdos.c
217
static int getbpbinfo(int, const char *, const char *, int, struct bpb *, int);
usr.sbin/makefs/msdos/mkfs_msdos.c
218
static void print_bpb(struct bpb *);
usr.sbin/makefs/msdos/mkfs_msdos.c
231
struct bpb bpb;
usr.sbin/makefs/msdos/mkfs_msdos.c
282
memset(&bpb, 0, sizeof(bpb));
usr.sbin/makefs/msdos/mkfs_msdos.c
284
if (getstdfmt(o.floppy, &bpb) == -1)
usr.sbin/makefs/msdos/mkfs_msdos.c
286
bpb.bsec = bpb.sec;
usr.sbin/makefs/msdos/mkfs_msdos.c
287
bpb.sec = 0;
usr.sbin/makefs/msdos/mkfs_msdos.c
288
bpb.bspf = bpb.spf;
usr.sbin/makefs/msdos/mkfs_msdos.c
289
bpb.spf = 0;
usr.sbin/makefs/msdos/mkfs_msdos.c
292
bpb.hds = o.drive_heads;
usr.sbin/makefs/msdos/mkfs_msdos.c
294
bpb.spt = o.sectors_per_track;
usr.sbin/makefs/msdos/mkfs_msdos.c
296
bpb.bps = o.bytes_per_sector;
usr.sbin/makefs/msdos/mkfs_msdos.c
298
bpb.bsec = o.size;
usr.sbin/makefs/msdos/mkfs_msdos.c
300
bpb.hid = o.hidden_sectors;
usr.sbin/makefs/msdos/mkfs_msdos.c
303
if (getbpbinfo(fd, fname, dtype, o.hidden_sectors_set, &bpb,
usr.sbin/makefs/msdos/mkfs_msdos.c
306
bpb.bsec -= (o.offset / bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
307
if (bpb.spc == 0) { /* set defaults */
usr.sbin/makefs/msdos/mkfs_msdos.c
311
bpb.spc = 1; /* use 512 bytes */
usr.sbin/makefs/msdos/mkfs_msdos.c
315
bpb.spc = 1; /* use 512 bytes */
usr.sbin/makefs/msdos/mkfs_msdos.c
319
bpb.spc = 8; /* use 4k */
usr.sbin/makefs/msdos/mkfs_msdos.c
323
x1 = howmany(bpb.bsec, (1048576 / 512)); /* -> MB */
usr.sbin/makefs/msdos/mkfs_msdos.c
324
while (bpb.spc < 128 && x < x1) {
usr.sbin/makefs/msdos/mkfs_msdos.c
326
bpb.spc *= 2;
usr.sbin/makefs/msdos/mkfs_msdos.c
364
if (!powerof2(bpb.bps)) {
usr.sbin/makefs/msdos/mkfs_msdos.c
365
warnx("bytes/sector (%u) is not a power of 2", bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
368
if (bpb.bps < MINBPS) {
usr.sbin/makefs/msdos/mkfs_msdos.c
370
bpb.bps, MINBPS);
usr.sbin/makefs/msdos/mkfs_msdos.c
375
bpb.rde = 0;
usr.sbin/makefs/msdos/mkfs_msdos.c
381
if (o.block_size < bpb.bps) {
usr.sbin/makefs/msdos/mkfs_msdos.c
383
o.block_size, bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
386
if (o.block_size > bpb.bps * MAXSPC) {
usr.sbin/makefs/msdos/mkfs_msdos.c
388
o.block_size, bpb.bps * MAXSPC);
usr.sbin/makefs/msdos/mkfs_msdos.c
391
bpb.spc = o.block_size / bpb.bps;
usr.sbin/makefs/msdos/mkfs_msdos.c
399
bpb.spc = o.sectors_per_cluster;
usr.sbin/makefs/msdos/mkfs_msdos.c
402
bpb.res = o.reserved_sectors;
usr.sbin/makefs/msdos/mkfs_msdos.c
409
bpb.nft = o.num_FAT;
usr.sbin/makefs/msdos/mkfs_msdos.c
412
bpb.rde = o.directory_entries;
usr.sbin/makefs/msdos/mkfs_msdos.c
418
bpb.mid = o.media_descriptor;
usr.sbin/makefs/msdos/mkfs_msdos.c
421
bpb.bspf = o.sectors_per_fat;
usr.sbin/makefs/msdos/mkfs_msdos.c
423
bpb.infs = o.info_sector;
usr.sbin/makefs/msdos/mkfs_msdos.c
425
bpb.bkbs = o.backup_sector;
usr.sbin/makefs/msdos/mkfs_msdos.c
442
if (!S_ISREG(sb.st_mode) || sb.st_size % bpb.bps ||
usr.sbin/makefs/msdos/mkfs_msdos.c
443
sb.st_size < bpb.bps || sb.st_size > bpb.bps * MAXU16) {
usr.sbin/makefs/msdos/mkfs_msdos.c
447
bss = sb.st_size / bpb.bps;
usr.sbin/makefs/msdos/mkfs_msdos.c
449
if (!bpb.nft)
usr.sbin/makefs/msdos/mkfs_msdos.c
450
bpb.nft = 2;
usr.sbin/makefs/msdos/mkfs_msdos.c
452
if (bpb.bsec < (bpb.res ? bpb.res : bss) +
usr.sbin/makefs/msdos/mkfs_msdos.c
453
howmany((RESFTE + (bpb.spc ? MINCLS16 : MAXCLS12 + 1)) *
usr.sbin/makefs/msdos/mkfs_msdos.c
454
((bpb.spc ? 16 : 12) / BPN), bpb.bps * NPB) *
usr.sbin/makefs/msdos/mkfs_msdos.c
455
bpb.nft +
usr.sbin/makefs/msdos/mkfs_msdos.c
456
howmany(bpb.rde ? bpb.rde : DEFRDE,
usr.sbin/makefs/msdos/mkfs_msdos.c
457
bpb.bps / sizeof(struct de)) +
usr.sbin/makefs/msdos/mkfs_msdos.c
458
(bpb.spc ? MINCLS16 : MAXCLS12 + 1) *
usr.sbin/makefs/msdos/mkfs_msdos.c
459
(bpb.spc ? bpb.spc : howmany(DEFBLK, bpb.bps)))
usr.sbin/makefs/msdos/mkfs_msdos.c
461
else if (bpb.rde || bpb.bsec <
usr.sbin/makefs/msdos/mkfs_msdos.c
462
(bpb.res ? bpb.res : bss) +
usr.sbin/makefs/msdos/mkfs_msdos.c
463
howmany((RESFTE + MAXCLS16) * 2, bpb.bps) * bpb.nft +
usr.sbin/makefs/msdos/mkfs_msdos.c
464
howmany(DEFRDE, bpb.bps / sizeof(struct de)) +
usr.sbin/makefs/msdos/mkfs_msdos.c
466
(bpb.spc ? bpb.spc : howmany(8192, bpb.bps)))
usr.sbin/makefs/msdos/mkfs_msdos.c
473
if (!bpb.infs) {
usr.sbin/makefs/msdos/mkfs_msdos.c
474
if (x == MAXU16 || x == bpb.bkbs) {
usr.sbin/makefs/msdos/mkfs_msdos.c
478
bpb.infs = x;
usr.sbin/makefs/msdos/mkfs_msdos.c
480
if (bpb.infs != MAXU16 && x <= bpb.infs)
usr.sbin/makefs/msdos/mkfs_msdos.c
481
x = bpb.infs + 1;
usr.sbin/makefs/msdos/mkfs_msdos.c
482
if (!bpb.bkbs) {
usr.sbin/makefs/msdos/mkfs_msdos.c
487
bpb.bkbs = x;
usr.sbin/makefs/msdos/mkfs_msdos.c
488
} else if (bpb.bkbs != MAXU16 && bpb.bkbs == bpb.infs) {
usr.sbin/makefs/msdos/mkfs_msdos.c
492
if (bpb.bkbs != MAXU16 && x <= bpb.bkbs)
usr.sbin/makefs/msdos/mkfs_msdos.c
493
x = bpb.bkbs + 1;
usr.sbin/makefs/msdos/mkfs_msdos.c
495
if (!bpb.res)
usr.sbin/makefs/msdos/mkfs_msdos.c
496
bpb.res = o.fat_type == 32 ? MAXIMUM(x, MAXIMUM(16384 / bpb.bps, 4)) : x;
usr.sbin/makefs/msdos/mkfs_msdos.c
497
else if (bpb.res < x) {
usr.sbin/makefs/msdos/mkfs_msdos.c
498
warnx("too few reserved sectors (need %d have %d)", x, bpb.res);
usr.sbin/makefs/msdos/mkfs_msdos.c
501
if (o.fat_type != 32 && !bpb.rde)
usr.sbin/makefs/msdos/mkfs_msdos.c
502
bpb.rde = DEFRDE;
usr.sbin/makefs/msdos/mkfs_msdos.c
503
rds = howmany(bpb.rde, bpb.bps / sizeof(struct de));
usr.sbin/makefs/msdos/mkfs_msdos.c
504
if (!bpb.spc)
usr.sbin/makefs/msdos/mkfs_msdos.c
505
for (bpb.spc = howmany(o.fat_type == 16 ? DEFBLK16 : DEFBLK, bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
506
bpb.spc < MAXSPC &&
usr.sbin/makefs/msdos/mkfs_msdos.c
507
bpb.res +
usr.sbin/makefs/msdos/mkfs_msdos.c
509
bpb.bps * NPB) * bpb.nft +
usr.sbin/makefs/msdos/mkfs_msdos.c
511
(u_int64_t)(maxcls(o.fat_type) + 1) * bpb.spc <= bpb.bsec;
usr.sbin/makefs/msdos/mkfs_msdos.c
512
bpb.spc <<= 1);
usr.sbin/makefs/msdos/mkfs_msdos.c
513
if (o.fat_type != 32 && bpb.bspf > MAXU16) {
usr.sbin/makefs/msdos/mkfs_msdos.c
517
x1 = bpb.res + rds;
usr.sbin/makefs/msdos/mkfs_msdos.c
518
x = bpb.bspf ? bpb.bspf : 1;
usr.sbin/makefs/msdos/mkfs_msdos.c
519
if (x1 + (u_int64_t)x * bpb.nft > bpb.bsec) {
usr.sbin/makefs/msdos/mkfs_msdos.c
523
x1 += x * bpb.nft;
usr.sbin/makefs/msdos/mkfs_msdos.c
524
x = (u_int64_t)(bpb.bsec - x1) * bpb.bps * NPB /
usr.sbin/makefs/msdos/mkfs_msdos.c
525
(bpb.spc * bpb.bps * NPB + o.fat_type / BPN * bpb.nft);
usr.sbin/makefs/msdos/mkfs_msdos.c
527
bpb.bps * NPB);
usr.sbin/makefs/msdos/mkfs_msdos.c
528
if (!bpb.bspf) {
usr.sbin/makefs/msdos/mkfs_msdos.c
529
bpb.bspf = x2;
usr.sbin/makefs/msdos/mkfs_msdos.c
530
x1 += (bpb.bspf - 1) * bpb.nft;
usr.sbin/makefs/msdos/mkfs_msdos.c
532
cls = (bpb.bsec - x1) / bpb.spc;
usr.sbin/makefs/msdos/mkfs_msdos.c
533
x = (u_int64_t)bpb.bspf * bpb.bps * NPB / (o.fat_type / BPN) - RESFTE;
usr.sbin/makefs/msdos/mkfs_msdos.c
536
if (bpb.bspf < x2) {
usr.sbin/makefs/msdos/mkfs_msdos.c
548
bpb.bsec = x1 + (cls + 1) * bpb.spc - 1;
usr.sbin/makefs/msdos/mkfs_msdos.c
550
bpb.bsec);
usr.sbin/makefs/msdos/mkfs_msdos.c
554
"(%u bytes/cluster)\n", fname, cls * bpb.spc,
usr.sbin/makefs/msdos/mkfs_msdos.c
555
cls * bpb.spc == 1 ? "" : "s", cls, o.fat_type,
usr.sbin/makefs/msdos/mkfs_msdos.c
556
cls == 1 ? "" : "s", bpb.bps * bpb.spc);
usr.sbin/makefs/msdos/mkfs_msdos.c
557
if (!bpb.mid)
usr.sbin/makefs/msdos/mkfs_msdos.c
558
bpb.mid = !bpb.hid ? 0xf0 : 0xf8;
usr.sbin/makefs/msdos/mkfs_msdos.c
560
bpb.rdcl = RESFTE;
usr.sbin/makefs/msdos/mkfs_msdos.c
561
if (bpb.hid + bpb.bsec <= MAXU16) {
usr.sbin/makefs/msdos/mkfs_msdos.c
562
bpb.sec = bpb.bsec;
usr.sbin/makefs/msdos/mkfs_msdos.c
563
bpb.bsec = 0;
usr.sbin/makefs/msdos/mkfs_msdos.c
566
bpb.spf = bpb.bspf;
usr.sbin/makefs/msdos/mkfs_msdos.c
567
bpb.bspf = 0;
usr.sbin/makefs/msdos/mkfs_msdos.c
573
if (bpb.bsec == 0)
usr.sbin/makefs/msdos/mkfs_msdos.c
592
print_bpb(&bpb);
usr.sbin/makefs/msdos/mkfs_msdos.c
597
img = emalloc(bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
598
dir = bpb.res + (bpb.spf ? bpb.spf : bpb.bspf) * bpb.nft;
usr.sbin/makefs/msdos/mkfs_msdos.c
600
for (lsn = 0; lsn < dir + (o.fat_type == 32 ? bpb.spc : rds); lsn++) {
usr.sbin/makefs/msdos/mkfs_msdos.c
603
fname,lsn,(dir + (o.fat_type == 32 ? bpb.spc : rds)),
usr.sbin/makefs/msdos/mkfs_msdos.c
604
(lsn*100)/(dir + (o.fat_type == 32 ? bpb.spc : rds)));
usr.sbin/makefs/msdos/mkfs_msdos.c
609
o.fat_type == 32 && bpb.bkbs != MAXU16 &&
usr.sbin/makefs/msdos/mkfs_msdos.c
610
bss <= bpb.bkbs && x >= bpb.bkbs) {
usr.sbin/makefs/msdos/mkfs_msdos.c
611
x -= bpb.bkbs;
usr.sbin/makefs/msdos/mkfs_msdos.c
618
if ((n = read(fd1, img, bpb.bps)) == -1) {
usr.sbin/makefs/msdos/mkfs_msdos.c
622
if ((size_t)n != bpb.bps) {
usr.sbin/makefs/msdos/mkfs_msdos.c
627
memset(img, 0, bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
629
(o.fat_type == 32 && bpb.bkbs != MAXU16 && lsn == bpb.bkbs)) {
usr.sbin/makefs/msdos/mkfs_msdos.c
632
mk2(bsbpb->bps, bpb.bps);
usr.sbin/makefs/msdos/mkfs_msdos.c
633
mk1(bsbpb->spc, bpb.spc);
usr.sbin/makefs/msdos/mkfs_msdos.c
634
mk2(bsbpb->res, bpb.res);
usr.sbin/makefs/msdos/mkfs_msdos.c
635
mk1(bsbpb->nft, bpb.nft);
usr.sbin/makefs/msdos/mkfs_msdos.c
636
mk2(bsbpb->rde, bpb.rde);
usr.sbin/makefs/msdos/mkfs_msdos.c
637
mk2(bsbpb->sec, bpb.sec);
usr.sbin/makefs/msdos/mkfs_msdos.c
638
mk1(bsbpb->mid, bpb.mid);
usr.sbin/makefs/msdos/mkfs_msdos.c
639
mk2(bsbpb->spf, bpb.spf);
usr.sbin/makefs/msdos/mkfs_msdos.c
640
mk2(bsbpb->spt, bpb.spt);
usr.sbin/makefs/msdos/mkfs_msdos.c
641
mk2(bsbpb->hds, bpb.hds);
usr.sbin/makefs/msdos/mkfs_msdos.c
642
mk4(bsbpb->hid, bpb.hid);
usr.sbin/makefs/msdos/mkfs_msdos.c
643
mk4(bsbpb->bsec, bpb.bsec);
usr.sbin/makefs/msdos/mkfs_msdos.c
647
mk4(bsxbpb->bspf, bpb.bspf);
usr.sbin/makefs/msdos/mkfs_msdos.c
650
mk4(bsxbpb->rdcl, bpb.rdcl);
usr.sbin/makefs/msdos/mkfs_msdos.c
651
mk2(bsxbpb->infs, bpb.infs);
usr.sbin/makefs/msdos/mkfs_msdos.c
652
mk2(bsxbpb->bkbs, bpb.bkbs);
usr.sbin/makefs/msdos/mkfs_msdos.c
682
} else if (o.fat_type == 32 && bpb.infs != MAXU16 &&
usr.sbin/makefs/msdos/mkfs_msdos.c
683
(lsn == bpb.infs ||
usr.sbin/makefs/msdos/mkfs_msdos.c
684
(bpb.bkbs != MAXU16 &&
usr.sbin/makefs/msdos/mkfs_msdos.c
685
lsn == bpb.bkbs + bpb.infs))) {
usr.sbin/makefs/msdos/mkfs_msdos.c
691
} else if (lsn >= bpb.res && lsn < dir &&
usr.sbin/makefs/msdos/mkfs_msdos.c
692
!((lsn - bpb.res) %
usr.sbin/makefs/msdos/mkfs_msdos.c
693
(bpb.spf ? bpb.spf : bpb.bspf))) {
usr.sbin/makefs/msdos/mkfs_msdos.c
694
mk1(img[0], bpb.mid);
usr.sbin/makefs/msdos/mkfs_msdos.c
710
if ((n = write(fd, img, bpb.bps)) == -1) {
usr.sbin/makefs/msdos/mkfs_msdos.c
714
if ((size_t)n != bpb.bps) {
usr.sbin/makefs/msdos/mkfs_msdos.c
727
getstdfmt(const char *fmt, struct bpb *bpb)
usr.sbin/makefs/msdos/mkfs_msdos.c
737
*bpb = stdfmt[i].bpb;
usr.sbin/makefs/msdos/mkfs_msdos.c
746
struct bpb *bpb, int create)
usr.sbin/makefs/msdos/mkfs_msdos.c
762
if (((part != -1) && ((!iflag && part != -1) || !bpb->bsec)) ||
usr.sbin/makefs/msdos/mkfs_msdos.c
763
!bpb->bps || !bpb->spt || !bpb->hds) {
usr.sbin/makefs/msdos/mkfs_msdos.c
781
if (!bpb->bps) {
usr.sbin/makefs/msdos/mkfs_msdos.c
784
bpb->bps = sector_size;
usr.sbin/makefs/msdos/mkfs_msdos.c
796
if (!bpb->spt) {
usr.sbin/makefs/msdos/mkfs_msdos.c
799
bpb->spt = nsectors;
usr.sbin/makefs/msdos/mkfs_msdos.c
801
if (!bpb->hds) {
usr.sbin/makefs/msdos/mkfs_msdos.c
804
bpb->hds = ntracks;
usr.sbin/makefs/msdos/mkfs_msdos.c
806
if (!bpb->bsec)
usr.sbin/makefs/msdos/mkfs_msdos.c
807
bpb->bsec = size;
usr.sbin/makefs/msdos/mkfs_msdos.c
816
print_bpb(struct bpb *bpb)
usr.sbin/makefs/msdos/mkfs_msdos.c
818
printf("bps=%u spc=%u res=%u nft=%u", bpb->bps, bpb->spc, bpb->res,
usr.sbin/makefs/msdos/mkfs_msdos.c
819
bpb->nft);
usr.sbin/makefs/msdos/mkfs_msdos.c
820
if (bpb->rde)
usr.sbin/makefs/msdos/mkfs_msdos.c
821
printf(" rde=%u", bpb->rde);
usr.sbin/makefs/msdos/mkfs_msdos.c
822
if (bpb->sec)
usr.sbin/makefs/msdos/mkfs_msdos.c
823
printf(" sec=%u", bpb->sec);
usr.sbin/makefs/msdos/mkfs_msdos.c
824
printf(" mid=%#x", bpb->mid);
usr.sbin/makefs/msdos/mkfs_msdos.c
825
if (bpb->spf)
usr.sbin/makefs/msdos/mkfs_msdos.c
826
printf(" spf=%u", bpb->spf);
usr.sbin/makefs/msdos/mkfs_msdos.c
827
printf(" spt=%u hds=%u hid=%u", bpb->spt, bpb->hds, bpb->hid);
usr.sbin/makefs/msdos/mkfs_msdos.c
828
if (bpb->bsec)
usr.sbin/makefs/msdos/mkfs_msdos.c
829
printf(" bsec=%u", bpb->bsec);
usr.sbin/makefs/msdos/mkfs_msdos.c
830
if (!bpb->spf) {
usr.sbin/makefs/msdos/mkfs_msdos.c
831
printf(" bspf=%u rdcl=%u", bpb->bspf, bpb->rdcl);
usr.sbin/makefs/msdos/mkfs_msdos.c
833
printf(bpb->infs == MAXU16 ? "%#x" : "%u", bpb->infs);
usr.sbin/makefs/msdos/mkfs_msdos.c
835
printf(bpb->bkbs == MAXU16 ? "%#x" : "%u", bpb->bkbs);