summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Sing <jsing@cvs.openbsd.org>2009-02-10 03:13:21 +0000
committerJoel Sing <jsing@cvs.openbsd.org>2009-02-10 03:13:21 +0000
commitdfc32f192d11a025067185ed9811d5237deeab61 (patch)
treef6cda97bac4a1a8d3b83f999c5b4c1eaf6d3dc82
parentd5b4232d19137a24cc746d3c77808408444195c5 (diff)
Unbreak sgivol. When writing to the raw device use the native blocksize.
Whilst here, check the return value of fread() and improve error messages. ok krw@ miod@
-rw-r--r--sys/arch/sgi/stand/sgivol/sgivol.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/arch/sgi/stand/sgivol/sgivol.c b/sys/arch/sgi/stand/sgivol/sgivol.c
index cd8d2e9ceaf..8120d3bad20 100644
--- a/sys/arch/sgi/stand/sgivol/sgivol.c
+++ b/sys/arch/sgi/stand/sgivol/sgivol.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sgivol.c,v 1.12 2008/08/25 14:53:34 jsing Exp $ */
+/* $OpenBSD: sgivol.c,v 1.13 2009/02/10 03:13:20 jsing Exp $ */
/* $NetBSD: sgivol.c,v 1.8 2003/11/08 04:59:00 sekiya Exp $ */
/*-
@@ -422,10 +422,12 @@ write_file(void)
i = st.st_size;
fp = fopen(ufilename, "r");
while (i > 0) {
+ bzero(fbuf, fbufsize);
fsize = i > fbufsize ? fbufsize : i;
- fread(fbuf, 1, fsize, fp);
- if (write(fd, fbuf, fsize) != fsize)
- err(1, "write file");
+ if (fread(fbuf, 1, fsize, fp) != fsize)
+ err(1, "reading file from disk");
+ if (write(fd, fbuf, fbufsize) != fbufsize)
+ err(1, "writing file to SGI volume header");
i -= fsize;
}
fclose(fp);