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 | |
| parent | b3125e386140a040d8eff57ab9258eaafc60d983 (diff) | |
added option parsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/game.c | 1 | ||||
| -rw-r--r-- | src/main.c | 63 |
2 files changed, 44 insertions, 20 deletions
@@ -142,7 +142,6 @@ void start_game(const bool servermode, const char* addr, const char* port) sock = client_connect_server(addr, port); data_store_t *data = data_store(); - strncpy(data->nickname, getenv("USER"), 10); net_send(sock, msg_type_hello_c, NULL); net_recv(sock, msg_type_hello_s); net_recv(sock, msg_type_start_game); @@ -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); |
