Changeset 1341:cc7309b775b2 in roaraudio
- Timestamp:
- 03/23/09 15:06:59 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio_socket.c
r1339 r1341 306 306 307 307 int roar_vio_socket_get_port (char * service, int domain, int type) { 308 struct servent * serv = NULL; 309 char * proto = NULL; 310 int port; 311 308 312 if ( service == NULL || domain == -1 || type == -1 ) 309 313 return -1; 310 314 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; 313 352 } 314 353
Note: See TracChangeset
for help on using the changeset viewer.