aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-05-21 21:57:58 -0400
committerFranklin Wei <git@fwei.tk>2015-05-21 21:57:58 -0400
commit5cc60817ff7f496dec9820e089ab25a115021513 (patch)
tree3349bf2e56372c9c036af31972e31db213c21d8c /src
parentad01f507d1b35c656c781a50ba3445bca52ea1af (diff)
downloadmarket-sim-5cc60817ff7f496dec9820e089ab25a115021513.zip
market-sim-5cc60817ff7f496dec9820e089ab25a115021513.tar.gz
market-sim-5cc60817ff7f496dec9820e089ab25a115021513.tar.bz2
market-sim-5cc60817ff7f496dec9820e089ab25a115021513.tar.xz
add more redundancy
Diffstat (limited to 'src')
-rw-r--r--src/load.c15
-rw-r--r--src/save.c14
2 files changed, 25 insertions, 4 deletions
diff --git a/src/load.c b/src/load.c
index 526592e..733ad4d 100644
--- a/src/load.c
+++ b/src/load.c
@@ -69,6 +69,17 @@ uint8_t read_int8(FILE *f)
return n;
}
+/* this is SLOWWW, but who cares? :P */
+size_t ck_read(char *buf, size_t sz, size_t nmemb, FILE* f)
+{
+ for(size_t i = 0 ; i < sz * nmemb; ++i)
+ {
+ buf[i] = read_int8(f);
+ }
+
+ return nmemb;
+}
+
void load_portfolio(struct player_t *player, const char *filename)
{
printf("Loading portfolio...\n");
@@ -84,7 +95,7 @@ void load_portfolio(struct player_t *player, const char *filename)
FILE *f = fopen(filename, "rb");
char magic[6];
- if(!f || fread(magic, 1, sizeof(magic), f) != 6 || memcmp(magic, "PORTv2", sizeof(magic)) != 0)
+ if(!f || ck_read(magic, 1, sizeof(magic), f) != 6 || memcmp(magic, "PORTv2", sizeof(magic)) != 0)
{
printf("FATAL: Failed to load save.\n");
exit(EXIT_FAILURE);
@@ -105,7 +116,7 @@ void load_portfolio(struct player_t *player, const char *filename)
uint64_t symlen = read_be64(f);
char *sym = malloc(symlen + 1);
- if(fread(sym, symlen + 1, 1, f) != 1)
+ if(ck_read(sym, symlen + 1, 1, f) != 1)
{
printf("FATAL: Save is corrupted (symbol too short).\n");
exit(EXIT_FAILURE);
diff --git a/src/save.c b/src/save.c
index 48dd069..debe610 100644
--- a/src/save.c
+++ b/src/save.c
@@ -53,6 +53,16 @@ static bool write_int8(FILE *f, uint8_t n)
return true;
}
+size_t ck_write(const char *buf, size_t sz, size_t nmemb, FILE *f)
+{
+ for(size_t i = 0 ; i < sz * nmemb; ++i)
+ {
+ write_int8(f, buf[i]);
+ }
+
+ return nmemb;
+}
+
void save_handler(struct player_t *player)
{
printf("Enter the file to save your portfolio in: ");
@@ -67,7 +77,7 @@ void save_handler(struct player_t *player)
cksum = 0;
const char *magic = "PORTv2";
- fwrite(magic, strlen(magic), 1, f);
+ ck_write(magic, strlen(magic), 1, f);
write_be64(f, player->cash.cents);
@@ -77,7 +87,7 @@ void save_handler(struct player_t *player)
write_be64(f, strlen(stock->symbol));
- fwrite(stock->symbol, strlen(stock->symbol) + 1, 1, f);
+ ck_write(stock->symbol, strlen(stock->symbol) + 1, 1, f);
write_be64(f, stock->count);