aboutsummaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-05-21 16:59:07 -0400
committerFranklin Wei <git@fwei.tk>2015-05-21 16:59:07 -0400
commitf5808cddfa783b5f270dca922c84e22800f62038 (patch)
tree0c041e891e358a1ce1e1f7b715a09cd802419725 /src/util.c
parent28ff4aa610c6c98645973ed4fc9acb6cc7a0cf30 (diff)
downloadmarket-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.c56
1 files changed, 55 insertions, 1 deletions
diff --git a/src/util.c b/src/util.c
index 8cd197d..585112b 100644
--- a/src/util.c
+++ b/src/util.c
@@ -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;
}