diff options
author | brian <brian@FreeBSD.org> | 1997-07-12 19:26:49 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1997-07-12 19:26:49 +0000 |
commit | 253d097eb2475ed08840482035f3d471edb49116 (patch) | |
tree | c4c2a14ba7f3dce374f98ccf046e3bf889adae49 | |
parent | aa8643ed6cef49dd34a96a1fe0d74f4d82400a70 (diff) | |
download | FreeBSD-src-253d097eb2475ed08840482035f3d471edb49116.zip FreeBSD-src-253d097eb2475ed08840482035f3d471edb49116.tar.gz |
Support "host:port" as first arg.
-rw-r--r-- | usr.sbin/pppctl/pppctl.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/usr.sbin/pppctl/pppctl.c b/usr.sbin/pppctl/pppctl.c index e63d736..323c3dd 100644 --- a/usr.sbin/pppctl/pppctl.c +++ b/usr.sbin/pppctl/pppctl.c @@ -169,18 +169,31 @@ main(int argc, char **argv) return 2; } } else { + char *port, *host, *colon; + + colon = strchr(argv[arg], ':'); + if (colon) { + port = colon + 1; + *colon = '\0'; + host = argv[arg]; + } else { + port = argv[arg]; + host = "localhost"; + } sock = (struct sockaddr *)&ifsin; socksz = sizeof ifsin; - if ((h = gethostbyname("localhost")) == 0) { - fprintf(stderr, "Cannot resolve localhost\n"); + if ((h = gethostbyname(host)) == 0) { + fprintf(stderr, "Cannot resolve %s\n", host); return 1; } + if (colon) + *colon = ':'; - if (strspn(argv[arg], "0123456789") == strlen(argv[arg])) - ifsin.sin_port = htons(atoi(argv[arg])); - else if (s = getservbyname(argv[arg], "tcp"), !s) { - fprintf(stderr, "%s isn't a valid port or service!\n", argv[arg]); + if (strspn(port, "0123456789") == strlen(port)) + ifsin.sin_port = htons(atoi(port)); + else if (s = getservbyname(port, "tcp"), !s) { + fprintf(stderr, "%s isn't a valid port or service!\n", port); return Usage(); } else |