diff options
-rw-r--r-- | battlestar/save.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/battlestar/save.c b/battlestar/save.c index 6af3c2ee..fa24f407 100644 --- a/battlestar/save.c +++ b/battlestar/save.c @@ -1,4 +1,4 @@ -/* $NetBSD: save.c,v 1.7 1997/10/12 02:06:15 lukem Exp $ */ +/* $NetBSD: save.c,v 1.8 1998/09/13 15:24:41 hubertf Exp $ */ /* * Copyright (c) 1983, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)save.c 8.2 (Berkeley) 4/28/95"; #else -__RCSID("$NetBSD: save.c,v 1.7 1997/10/12 02:06:15 lukem Exp $"); +__RCSID("$NetBSD: save.c,v 1.8 1998/09/13 15:24:41 hubertf Exp $"); #endif #endif /* not lint */ @@ -57,7 +57,7 @@ restore() strcpy(home1, home); strcat(home1, "/Bstar"); if ((fp = fopen(home1, "r")) == 0) { - warn("fopen %s", home1); + err(1, "fopen %s", home1); return; } fread(&WEIGHT, sizeof WEIGHT, 1, fp); @@ -94,7 +94,9 @@ restore() fread(&loved, sizeof loved, 1, fp); fread(&pleasure, sizeof pleasure, 1, fp); fread(&power, sizeof power, 1, fp); - fread(&ego, sizeof ego, 1, fp); + if (fread(&ego, sizeof ego, 1, fp) < 1) + errx(1, "save file %s too short", home1); + fclose(fp); } void @@ -149,4 +151,8 @@ save() fwrite(&pleasure, sizeof pleasure, 1, fp); fwrite(&power, sizeof power, 1, fp); fwrite(&ego, sizeof ego, 1, fp); + fflush(fp); + if (ferror(fp)) + warn("fwrite %s", home1); + fclose(fp); } |