xref: /original-bsd/lib/libc/net/getservbyport.c (revision b424313c)
1 /*
2  * Copyright (c) 1983 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that this notice is preserved and that due credit is given
7  * to the University of California at Berkeley. The name of the University
8  * may not be used to endorse or promote products derived from this
9  * software without specific prior written permission. This software
10  * is provided ``as is'' without express or implied warranty.
11  */
12 
13 #if defined(LIBC_SCCS) && !defined(lint)
14 static char sccsid[] = "@(#)getservbyport.c	5.4 (Berkeley) 03/07/88";
15 #endif /* LIBC_SCCS and not lint */
16 
17 #include <netdb.h>
18 
19 extern int _serv_stayopen;
20 
21 struct servent *
22 getservbyport(port, proto)
23 	int port;
24 	char *proto;
25 {
26 	register struct servent *p;
27 
28 	setservent(_serv_stayopen);
29 	while (p = getservent()) {
30 		if (p->s_port != port)
31 			continue;
32 		if (proto == 0 || strcmp(p->s_proto, proto) == 0)
33 			break;
34 	}
35 	if (!_serv_stayopen)
36 		endservent();
37 	return (p);
38 }
39