]> git.pond.sub.org Git - empserver/commitdiff
New client option -s to specify server host and port
authorTom Dickson-Hunt <tomdicksonhunt@gmail.com>
Fri, 2 Apr 2010 08:47:41 +0000 (10:47 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 9 May 2010 07:07:01 +0000 (09:07 +0200)
Overrides EMPIREHOST and EMPIREPORT.

man/empire.6
src/client/main.c

index 186064fc95d6f839f31ba1642135db23bccbff83..ae4d731ce745e5d5e1a14100c26c7edb730d0fab 100644 (file)
@@ -10,6 +10,9 @@ empire \- Empire client
 .BI \-2 " outfile"
 ]
 [
+.BI \-s " host:port"
+]
+[
 .I country
 [
 .I password
@@ -34,6 +37,12 @@ Help.  Print brief usage information and exit.
 .B \-k
 If someone else is connected to your country, kill their connection.
 .TP
+.BI \-s " host:port"
+Specify host and port to which to connect.
+.IP
+Connect to \fIhost\fR using port \fIport\fR.  You can specify only
+one; just leave the other empty (include the colon).
+.TP
 .B \-u
 Use UTF-8 rather than ASCII character set.
 .IP
@@ -60,9 +69,11 @@ client:
 .TP
 .I EMPIREHOST
 Specifies the host to connect to, i.e. where the server runs.
+Only effective if no host specified via \-s.
 .TP
 .I EMPIREPORT
 Specifies the port number or service name to connect to.
+Only effective if no port specified via \-s.
 .TP
 .I COUNTRY
 The name of your country in the game.
index 0a55067fb3ad25fb82aea4058dae6d03d4e266e0..b6c2298f847c9e85ae3ccaff128af353fbf28b71 100644 (file)
@@ -37,6 +37,7 @@
 #include <config.h>
 
 #include <stdlib.h>
+#include <string.h>
 #ifdef _WIN32
 #include <windows.h>
 #include "sys/socket.h"
@@ -68,6 +69,7 @@ print_usage(char *program_name)
     printf("Usage: %s [OPTION]...[COUNTRY [PASSWORD]]\n"
           "  -2 FILE         Append log of session to FILE\n"
           "  -k              Kill connection\n"
+          "  -s HOST:PORT    Set host and port to connect\n"
           "  -u              Use UTF-8\n"
           "  -h              display this help and exit\n"
           "  -v              display version information and exit\n",
@@ -80,16 +82,16 @@ main(int argc, char **argv)
     int opt;
     char *auxfname = NULL;
     int send_kill = 0;
+    char *host = NULL;
+    char *port = NULL;
     int utf8 = 0;
     char **ap;
     char *country;
     char *passwd;
     char *uname;
-    char *host;
-    char *port;
     int sock;
 
-    while ((opt = getopt(argc, argv, "2:kuhv")) != EOF) {
+    while ((opt = getopt(argc, argv, "2:ks:uhv")) != EOF) {
        switch (opt) {
        case '2':
            auxfname = optarg;
@@ -97,6 +99,20 @@ main(int argc, char **argv)
        case 'k':
            send_kill = 1;
            break;
+       case 's':
+           host = strdup(optarg);
+           port = strchr(host, ':');
+           if (port == host) { /* if no host specified, then set to null */
+               host = NULL;
+           }
+           if (port) {        /* make port the bit after the colon */
+               port[0] = 0;
+               port++;
+               if (port[0] == 0) { /* handle colon-at-end-of-string */
+                   port = NULL;
+               }
+           }
+           break;
        case 'u':
            utf8 = eight_bit_clean = 1;
            break;
@@ -121,10 +137,12 @@ main(int argc, char **argv)
        passwd = *ap++;
     else
        passwd = getenv("PLAYER");
-    port = getenv("EMPIREPORT");
+    if (!port)
+       port = getenv("EMPIREPORT");
     if (!port)
        port = empireport;
-    host = getenv("EMPIREHOST");
+    if (!host)
+       host = getenv("EMPIREHOST");
     if (!host)
        host = empirehost;
     uname = getenv("LOGNAME");