New client option -s to specify server host and port

Overrides EMPIREHOST and EMPIREPORT.
This commit is contained in:
Tom Dickson-Hunt 2010-04-02 10:47:41 +02:00 committed by Markus Armbruster
parent 7506039f1b
commit f4fe7da1fb
2 changed files with 34 additions and 5 deletions

View 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.

View 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,9 +137,11 @@ main(int argc, char **argv)
passwd = *ap++;
else
passwd = getenv("PLAYER");
if (!port)
port = getenv("EMPIREPORT");
if (!port)
port = empireport;
if (!host)
host = getenv("EMPIREHOST");
if (!host)
host = empirehost;