Changeset View
Changeset View
Standalone View
Standalone View
head/sbin/badsect/badsect.c
Show First 20 Lines • Show All 123 Lines • ▼ Show 20 Lines | else | ||||
err(7, "%s", name); | err(7, "%s", name); | ||||
} | } | ||||
for (argc -= 2, argv += 2; argc > 0; argc--, argv++) { | for (argc -= 2, argv += 2; argc > 0; argc--, argv++) { | ||||
number = strtol(*argv, NULL, 0); | number = strtol(*argv, NULL, 0); | ||||
if (errno == EINVAL || errno == ERANGE) | if (errno == EINVAL || errno == ERANGE) | ||||
err(8, "%s", *argv); | err(8, "%s", *argv); | ||||
if (chkuse(number, 1)) | if (chkuse(number, 1)) | ||||
continue; | continue; | ||||
/* | |||||
* Print a warning if converting the block number to a dev_t | |||||
* will truncate it. badsect was not very useful in versions | |||||
* of BSD before 4.4 because dev_t was 16 bits and another | |||||
* bit was lost by bogus sign extensions. | |||||
*/ | |||||
diskbn = dbtofsb(fs, number); | diskbn = dbtofsb(fs, number); | ||||
if ((dev_t)diskbn != diskbn) { | if (mknod(*argv, IFMT|0600, (dev_t)diskbn) < 0) { | ||||
printf("sector %ld cannot be represented as a dev_t\n", | |||||
(long)number); | |||||
errs++; | |||||
} | |||||
else if (mknod(*argv, IFMT|0600, (dev_t)diskbn) < 0) { | |||||
warn("%s", *argv); | warn("%s", *argv); | ||||
errs++; | errs++; | ||||
} | } | ||||
} | } | ||||
ufs_disk_close(&disk); | ufs_disk_close(&disk); | ||||
printf("Don't forget to run ``fsck %s''\n", name); | printf("Don't forget to run ``fsck %s''\n", name); | ||||
exit(errs); | exit(errs); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |