/* * Simple portable service name lookup. * $Id$ * Copyright (c) 1997 by Tycho Softworks. * For conditions of distribution and reuse see product license. */ #include #include int getservice(const char *service) { char servname[32]; char *p; struct servent *svc; struct protoent *proto; if(isdigit(*service)) return atoi(service); strcpy(servname, service); p = strchr(servname, '/'); if(!p) strcat(servname, "/tcp"); p = strchr(servname, '/'); *(p++) = 0; if(isdigit(*p)) { proto = getprotobynumber(atoi(p)); if(!proto) return 0; p = proto->p_name; } svc = getservbyname(servname, p); if(!svc) return 0; return ntohs(svc->s_port); }