diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/globals.h | 1 | ||||
| -rw-r--r-- | src/load.c | 9 | ||||
| -rw-r--r-- | src/util.c | 8 |
3 files changed, 14 insertions, 4 deletions
diff --git a/src/globals.h b/src/globals.h index b9d6e0c..0dbd723 100644 --- a/src/globals.h +++ b/src/globals.h @@ -3,6 +3,7 @@ #include <assert.h> #include <ctype.h> +#include <errno.h> #include <signal.h> #include <stdbool.h> #include <stdint.h> @@ -95,9 +95,14 @@ void load_portfolio(struct player_t *player, const char *filename) FILE *f = fopen(filename, "rb"); char magic[MAGIC_LEN]; - if(!f || ck_read(magic, 1, sizeof(magic), f) != 6 || memcmp(magic, SAVE_MAGIC, sizeof(magic)) != 0) + if(!f) { - fail("Failed to load save."); + fail("Failed to load save: %s", strerror(errno)); + } + + if(ck_read(magic, 1, sizeof(magic), f) != 6 || memcmp(magic, SAVE_MAGIC, sizeof(magic)) != 0) + { + fail("Failed to load save: Invalid file signature"); } player->cash.cents = read_be64(f); @@ -75,8 +75,7 @@ bool get_stock_info(char *symbol, struct money_t *price, char **name_ret) if(res != CURLE_OK || buf.data[0] != '"') { - output("Failed querying information for '%s'.\n", symbol); - return false; + fail("Failed to query information for '%s'.\n", symbol); } /* null-terminate buffer */ @@ -329,6 +328,11 @@ uint parse_args(int argc, char *argv[], char **port_file) { break; } + else + { + output("Unrecognized option '%s'\nTry %s --help for more information.\n", arg, argv[0]); + ret |= ARG_FAILURE; + } } else { |