Changeset 1341:cc7309b775b2 in roaraudio


Ignore:
Timestamp:
03/23/09 15:06:59 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support for symbolic names to roar_vio_socket_get_port() :)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio_socket.c

    r1339 r1341  
    306306 
    307307int     roar_vio_socket_get_port          (char * service, int domain, int type) { 
     308 struct servent * serv  = NULL; 
     309 char           * proto = NULL; 
     310 int              port; 
     311 
    308312 if ( service == NULL || domain == -1 || type == -1 ) 
    309313  return -1; 
    310314 
    311  // TODO: we should write something better 
    312  return atoi(service); 
     315 if ( sscanf(service, "%i", &port) == 1 ) 
     316  return port; 
     317 
     318 switch (domain) { 
     319#ifdef ROAR_HAVE_IPV6 
     320  case AF_INET6: 
     321#endif 
     322  case AF_INET: 
     323    switch (type) { 
     324     case SOCK_STREAM: proto = "tcp"; break; 
     325     case SOCK_DGRAM:  proto = "udp"; break; 
     326     default: 
     327      return -1; 
     328    } 
     329   break; 
     330#ifdef ROAR_HAVE_LIBDNET 
     331  case AF_DECnet: 
     332#ifdef ROAR_HAVE_GETOBJECTBYNAME 
     333    return getobjectbyname(service); 
     334#else 
     335    if ( !strcmp(service, "roar") ) 
     336     return 0; 
     337 
     338    return -1; 
     339#endif 
     340   break; 
     341#endif 
     342  default: 
     343    return -1; 
     344 } 
     345 
     346 if ( (serv = getservbyname(service, proto)) == NULL ) { 
     347  ROAR_ERR("roar_vio_socket_get_port(*): Unknown service: %s/%s: %s", service, proto, strerror(errno)); 
     348  return -1; 
     349 } 
     350 
     351 return serv->s_port; 
    313352} 
    314353 
Note: See TracChangeset for help on using the changeset viewer.