diff options
Diffstat (limited to 'tests/boot-sector.c')
-rw-r--r-- | tests/boot-sector.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/tests/boot-sector.c b/tests/boot-sector.c index 0168fd0247..83993143a6 100644 --- a/tests/boot-sector.c +++ b/tests/boot-sector.c @@ -69,12 +69,13 @@ static uint8_t boot_sector[0x7e000] = { }; /* Create boot disk file. */ -int boot_sector_init(const char *fname) +int boot_sector_init(char *fname) { - FILE *f = fopen(fname, "w"); + int fd, ret; size_t len = sizeof boot_sector; - if (!f) { + fd = mkstemp(fname); + if (fd < 0) { fprintf(stderr, "Couldn't open \"%s\": %s", fname, strerror(errno)); return 1; } @@ -86,8 +87,14 @@ int boot_sector_init(const char *fname) HIGH(SIGNATURE), BOOT_SECTOR_ADDRESS + SIGNATURE_OFFSET + 1); } - fwrite(boot_sector, 1, len, f); - fclose(f); + ret = write(fd, boot_sector, len); + close(fd); + + if (ret != len) { + fprintf(stderr, "Could not write \"%s\"", fname); + return 1; + } + return 0; } |