aboutsummaryrefslogtreecommitdiff
path: root/lib/libdisk/write_alpha_disk.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2002-11-07 14:39:21 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2002-11-07 14:39:21 +0000
commit75bd4c1549d9714f555553003182129c97304a5f (patch)
tree28e4f53044afee46c3814805e84ed8d5cea8325e /lib/libdisk/write_alpha_disk.c
parent7ea6c648f54c468355e59bde7780b4a0a05b1ade (diff)
Notes
Diffstat (limited to 'lib/libdisk/write_alpha_disk.c')
-rw-r--r--lib/libdisk/write_alpha_disk.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/lib/libdisk/write_alpha_disk.c b/lib/libdisk/write_alpha_disk.c
index 5cbdecf491f7..c2e18e7286a6 100644
--- a/lib/libdisk/write_alpha_disk.c
+++ b/lib/libdisk/write_alpha_disk.c
@@ -67,33 +67,26 @@ Write_FreeBSD(int fd, const struct disk *new, const struct disk *old, const stru
return 0;
}
-
-
int
Write_Disk(const struct disk *d1)
{
- int fd;
- struct disk *old = NULL;
- struct chunk *c1;
- int ret = 0;
char device[64];
+ struct chunk *c1;
+ int fd, ret;
- strcpy(device,_PATH_DEV);
- strcat(device,d1->name);
-
-
- fd = open(device,O_RDWR);
- if (fd < 0)
- return 1;
+ strcpy(device, _PATH_DEV);
+ strcat(device, d1->name);
- for (c1 = d1->chunks->part->part; c1; c1 = c1->next) {
- if (c1->type == unused) continue;
- if (!strcmp(c1->name, "X")) continue;
- if (c1->type == freebsd)
- ret += Write_FreeBSD(fd, d1, old, c1);
+ fd = open(device,O_RDWR);
+ if (fd < 0)
+ return (1);
- }
+ c1 = d1->chunks->part;
+ if (!strcmp(c1->name, "X") || c1->type != freebsd)
+ ret = 0;
+ else
+ ret = Write_FreeBSD(fd, d1, NULL, c1);
close(fd);
- return 0;
+ return (ret);
}