From: Aron Xu Date: Mon, 13 Feb 2012 14:45:08 +0800 Subject: get sev by name --- netcat.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) --- a/netcat.c +++ b/netcat.c @@ -1679,11 +1679,16 @@ strtoport(char *portstr, int udp) void build_ports(char *p) { + struct servent *sv; char *n; int hi, lo, cp; int x = 0; - if (isdigit((unsigned char)*p) && (n = strchr(p, '-')) != NULL) { + sv = getservbyname(p, uflag ? "udp" : "tcp"); + if (sv) { + if (asprintf(&portlist[0], "%d", ntohs(sv->s_port)) < 0) + err(1, "asprintf"); + } else if (isdigit((unsigned char)*p) && (n = strchr(p, '-')) != NULL) { *n = '\0'; n++;