diff options
| author | Franklin Wei <git@fwei.tk> | 2015-05-21 16:59:07 -0400 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-05-21 16:59:07 -0400 |
| commit | f5808cddfa783b5f270dca922c84e22800f62038 (patch) | |
| tree | 0c041e891e358a1ce1e1f7b715a09cd802419725 /src/util.c | |
| parent | 28ff4aa610c6c98645973ed4fc9acb6cc7a0cf30 (diff) | |
| download | market-sim-f5808cddfa783b5f270dca922c84e22800f62038.zip market-sim-f5808cddfa783b5f270dca922c84e22800f62038.tar.gz market-sim-f5808cddfa783b5f270dca922c84e22800f62038.tar.bz2 market-sim-f5808cddfa783b5f270dca922c84e22800f62038.tar.xz | |
command-line arg support
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 56 |
1 files changed, 55 insertions, 1 deletions
@@ -258,10 +258,64 @@ void update_handler(struct player_t *player) } } -void parse_args(int argc, char *argv[]) +uint parse_args(struct player_t *player, int argc, char *argv[]) { + uint ret = 0; + char *port_file = NULL; + for(int i = 1; i < argc; ++i) { + char *arg = argv[i]; + if(arg && arg[0] != '\0') + { + if(arg[0] == '-') + { + if(strcmp(arg, "--help") == 0 || + strcmp(arg, "-h") == 0) + { + print_usage(argc, argv); + ret |= ARG_FAILURE; + break; + } + else if(strcmp(arg, "-v") == 0 || + strcmp(arg, "--verbose") == 0) + { + ret |= ARG_VERBOSE; + } + else if(strcmp(arg, "--version") == 0) + { + print_version(); + ret |= ARG_FAILURE; + break; + } + else if(strcmp(arg, "--") == 0) + { + break; + } + } + else + { + if(!(ret & ARG_LOADED)) + { + port_file = arg; + ret |= ARG_LOADED; + } + else + { + printf("FATAL: multiple portfolio files specified.\n"); + ret |= ARG_FAILURE; + break; + } + } + } } + + if(ret & ARG_FAILURE) + return ret; + + if(port_file) + load_portfolio(player, port_file); + + return ret; } |