xref: /csrg-svn/lib/libc/net/getprotoname.c (revision 33679)
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[] = "@(#)getprotoname.c	5.4 (Berkeley) 03/07/88";
15 #endif /* LIBC_SCCS and not lint */
16 
17 #include <netdb.h>
18 
19 extern int _proto_stayopen;
20 
21 struct protoent *
22 getprotobyname(name)
23 	register char *name;
24 {
25 	register struct protoent *p;
26 	register char **cp;
27 
28 	setprotoent(_proto_stayopen);
29 	while (p = getprotoent()) {
30 		if (strcmp(p->p_name, name) == 0)
31 			break;
32 		for (cp = p->p_aliases; *cp != 0; cp++)
33 			if (strcmp(*cp, name) == 0)
34 				goto found;
35 	}
36 found:
37 	if (!_proto_stayopen)
38 		endprotoent();
39 	return (p);
40 }
41