diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2011-01-26 11:39:21 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2011-01-26 11:39:21 +0100 |
| commit | 768c5ebb55832b7ca64c790109f583ff2fce2df0 (patch) | |
| tree | 293c9a1c10feb9b3069850149f52669f7775c854 /src/main.c | |
| parent | b3125e386140a040d8eff57ab9258eaafc60d983 (diff) | |
added option parsing
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 63 |
1 files changed, 44 insertions, 19 deletions
@@ -1,34 +1,59 @@ #include <stdlib.h> -#include <curses.h> #include <string.h> +#include <stdio.h> #include <unistd.h> -#include "ui.h" +#include <getopt.h> +#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); |
