From 464094a69306c21191c146cee572af48b7ede9e3 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 2 Apr 2010 11:51:15 +0200 Subject: [PATCH] Change how client option -s interprets ':' Old version recognizes the first ':', which prevents use of ':' in host names. They are used in numerical IPv6 addresses. New version recognizes the last ':', which prevents use of ':' in service names. Old version treats empty host or port specially (use default). Documentation suggests ':' is required, but the code doesn't do that. Instead, the argument is interpreted as host, even when it's empty. New version makes the HOST: part optional. You can't specify host and default the port. Tough. Keeps documentation and code as simple as possible. Compare: old version new version argument host port host port "" "" default default "" "A" "A" default default "A" ":" default default "" "" "A:" "A" default "A" "" ":B" default "B" "" "B" "A:B" "A" "B" "A" "B" --- man/empire.6 | 7 ++----- src/client/main.c | 20 ++++++++------------ 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/man/empire.6 b/man/empire.6 index ae4d731ce..4df55b328 100644 --- a/man/empire.6 +++ b/man/empire.6 @@ -37,11 +37,8 @@ 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). +.BI \-s " [host:]port" +Specify server \fIhost\fR and \fIport\fR. .TP .B \-u Use UTF-8 rather than ASCII character set. diff --git a/src/client/main.c b/src/client/main.c index b6c2298f8..b9f747462 100644 --- a/src/client/main.c +++ b/src/client/main.c @@ -69,7 +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" + " -s [HOST:]PORT Specify server HOST and PORT\n" " -u Use UTF-8\n" " -h display this help and exit\n" " -v display version information and exit\n", @@ -89,6 +89,7 @@ main(int argc, char **argv) char *country; char *passwd; char *uname; + char *colon; int sock; while ((opt = getopt(argc, argv, "2:ks:uhv")) != EOF) { @@ -100,17 +101,12 @@ main(int argc, char **argv) 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; - } + port = strdup(optarg); + colon = strrchr(port, ':'); + if (colon) { + *colon = 0; + host = port; + port = colon + 1; } break; case 'u': -- 2.43.0