From 768c5ebb55832b7ca64c790109f583ff2fce2df0 Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Wed, 26 Jan 2011 11:39:21 +0100 Subject: added option parsing --- src/main.c | 63 +++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 19 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 98347fb..0c6a63c 100644 --- a/src/main.c +++ b/src/main.c @@ -1,34 +1,59 @@ #include -#include #include +#include #include -#include "ui.h" +#include +#include "data_store.h" #include "game.h" -#include "player.h" -#include "hand.h" -int main(int argc, char **argv) +static void print_usage(const char* name) { - char* port = 0; + fprintf(stderr, "Usage: %s [-n nickname] [-s server] -p port\n", name); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int opt; + char* port = NULL; char* addr = NULL; - bool servermode = false; + bool servermode = true; + data_store_t *ds = data_store(); - if (argc < 2) + const char* accepted = "n:s:p:h:"; + while((opt = getopt(argc, argv, accepted)) != -1) { - printf("usage: '%s address port' for client mode, or '%s port' for server mode\n", argv[0], argv[0]); - return EXIT_SUCCESS; + switch(opt) + { + case 'n': // nickname + strncpy(ds->nickname, optarg, MAX_PLAYER_NAME_LENGTH); + ds->nickname[MAX_PLAYER_NAME_LENGTH] = '\0'; + break; + case 'p': // port + port = optarg; + break; + case 's': // hostname + addr = optarg; + servermode = false; + break; + case 'h': // help + default: + print_usage(argv[0]); + break; + } } - else if(argc == 2) // Server mode - { + + if(port == NULL) + print_usage(argv[0]); + + if(servermode) addr = "localhost"; - port = argv[1]; - servermode = true; - } - else if(argc == 3) + + if(strlen(ds->nickname) == 0) { - addr = argv[1]; - port = argv[2]; - servermode = false; + const char* env_nick = getenv("USER"); + strncpy(ds->nickname, (env_nick!=NULL)?env_nick:"hornoxe", MAX_PLAYER_NAME_LENGTH); + ds->nickname[MAX_PLAYER_NAME_LENGTH] = '\0'; } start_game(servermode, addr, port); -- cgit v1.2.3