From: Aron Xu Date: Mon, 13 Feb 2012 14:45:08 +0800 Subject: get sev by name --- netcat.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/netcat.c b/netcat.c index d40e3a5..e0ad5c7 100644 --- a/netcat.c +++ b/netcat.c @@ -1193,12 +1193,19 @@ atelnet(int nfd, unsigned char *buf, unsigned int size) void build_ports(char *p) { + struct servent *sv; const char *errstr; char *n; int hi, lo, cp; int x = 0; - if ((n = strchr(p, '-')) != NULL) { + sv = getservbyname(p, uflag ? "udp" : "tcp"); + if (sv) { + portlist[0] = calloc(1, PORT_MAX_LEN); + if (portlist[0] == NULL) + err(1, NULL); + snprintf(portlist[0], PORT_MAX_LEN, "%d", ntohs(sv->s_port)); + } else if ((n = strchr(p, '-')) != NULL) { *n = '\0'; n++; --