diff options
-rw-r--r-- | lib/libdisk/write_sparc64_disk.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/libdisk/write_sparc64_disk.c b/lib/libdisk/write_sparc64_disk.c index bf6c248..1269a06 100644 --- a/lib/libdisk/write_sparc64_disk.c +++ b/lib/libdisk/write_sparc64_disk.c @@ -36,6 +36,15 @@ Write_Disk(const struct disk *d1) char device[64]; int fd; + strcpy(device,_PATH_DEV); + strcat(device,d1->name); + + fd = open(device,O_RDWR); + if (fd < 0) { + warn("open(%s) failed", device); + return (1); + } + sl = calloc(sizeof *sl, 1); c = d1->chunks; c2 = c->part; @@ -70,6 +79,10 @@ Write_Disk(const struct disk *d1) i = *p - 'a'; sl->sl_part[i].sdkp_cyloffset = c1->offset / secpercyl; sl->sl_part[i].sdkp_nsectors = c1->size; + for (i = 1; i < 16; i++) { + write_block(fd, c1->offset + i, d1->boot1 + (i * 512), + 512); + } } /* @@ -87,20 +100,8 @@ Write_Disk(const struct disk *d1) cksum ^= *sp1++; sl->sl_cksum = cksum; - strcpy(device,_PATH_DEV); - strcat(device,d1->name); - - fd = open(device,O_RDWR); - if (fd < 0) { - warn("open(%s) failed", device); - return (1); - } - write_block(fd, 0, sl, sizeof *sl); - for (i = 1; i < 16; i++) - write_block(fd, i, d1->boot1 + (i * 512), 512); - close(fd); return 0; } |