aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoshihiro Takahashi <nyan@FreeBSD.org>2014-11-29 09:27:18 +0000
committerYoshihiro Takahashi <nyan@FreeBSD.org>2014-11-29 09:27:18 +0000
commit6d6911c44b6787e461e36a585df5158813657be1 (patch)
treef0dcecd49e2355c1bd9744e51dfd5e4021a7a589
parent0fa5393fa8146125584e6d1cf54e64a0a3bc84c7 (diff)
downloadsrc-6d6911c44b6787e461e36a585df5158813657be1.tar.gz
src-6d6911c44b6787e461e36a585df5158813657be1.zip
MFi386: r275237 (by rdivacky)
Shrink boot2 a bit more by factoring out common pattern of printf();return(-1);
Notes
Notes: svn path=/head/; revision=275239
-rw-r--r--sys/boot/pc98/boot2/boot2.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/boot/pc98/boot2/boot2.c b/sys/boot/pc98/boot2/boot2.c
index 69a422e5cb44..010fd5093bcc 100644
--- a/sys/boot/pc98/boot2/boot2.c
+++ b/sys/boot/pc98/boot2/boot2.c
@@ -639,6 +639,7 @@ dskread(void *buf, unsigned lba, unsigned nblk)
unsigned i;
uint8_t sl;
u_char *p;
+ const char *reason;
if (!dsk_meta) {
sec = dmadat->secbuf;
@@ -660,8 +661,8 @@ dskread(void *buf, unsigned lba, unsigned nblk)
if (sl != WHOLE_DISK_SLICE) {
dp += sl - BASE_SLICE;
if (dp->dp_mid != DOSMID_386BSD) {
- printf("Invalid %s\n", "slice");
- return -1;
+ reason = "slice";
+ goto error;
}
dsk.start = dp->dp_scyl * dsk.head * dsk.sec +
dp->dp_shd * dsk.sec + dp->dp_ssect;
@@ -671,14 +672,14 @@ dskread(void *buf, unsigned lba, unsigned nblk)
d = (void *)(sec + LABELOFFSET);
if (d->d_magic != DISKMAGIC || d->d_magic2 != DISKMAGIC) {
if (dsk.part != RAW_PART) {
- printf("Invalid %s\n", "label");
- return -1;
+ reason = "label";
+ goto error;
}
} else {
if (dsk.part >= d->d_npartitions ||
!d->d_partitions[dsk.part].p_size) {
- printf("Invalid %s\n", "partition");
- return -1;
+ reason = "partition";
+ goto error;
}
dsk.start += d->d_partitions[dsk.part].p_offset;
dsk.start -= d->d_partitions[RAW_PART].p_offset;
@@ -690,6 +691,9 @@ dskread(void *buf, unsigned lba, unsigned nblk)
return i;
}
return 0;
+error:
+ printf("Invalid %s\n", reason);
+ return -1;
}
static void