summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game.c1
-rw-r--r--src/main.c63
2 files changed, 44 insertions, 20 deletions
diff --git a/src/game.c b/src/game.c
index ad88a9f..5708d31 100644
--- a/src/game.c
+++ b/src/game.c
@@ -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);
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 <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);