diff options
| author | Franklin Wei <git@fwei.tk> | 2015-05-21 21:57:58 -0400 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-05-21 21:57:58 -0400 |
| commit | 5cc60817ff7f496dec9820e089ab25a115021513 (patch) | |
| tree | 3349bf2e56372c9c036af31972e31db213c21d8c /src | |
| parent | ad01f507d1b35c656c781a50ba3445bca52ea1af (diff) | |
| download | market-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.c | 15 | ||||
| -rw-r--r-- | src/save.c | 14 |
2 files changed, 25 insertions, 4 deletions
@@ -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); @@ -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); |