diff options
author | Mystery Man <unknown@mandriva.org> | 2003-03-28 17:06:34 +0000 |
---|---|---|
committer | Mystery Man <unknown@mandriva.org> | 2003-03-28 17:06:34 +0000 |
commit | 58b47dd22440429495a586a13bf975fad4a5645e (patch) | |
tree | 59002ba00fba5bc9c3a3ad339dd18848e87895c3 /mdk-stage1/dietlibc/libugly/getprotoent.c | |
parent | 22aa34691eda7885218ec1b19543ed44ac9b7417 (diff) | |
download | drakx-backup-do-not-use-9_1_29mdk.tar drakx-backup-do-not-use-9_1_29mdk.tar.gz drakx-backup-do-not-use-9_1_29mdk.tar.bz2 drakx-backup-do-not-use-9_1_29mdk.tar.xz drakx-backup-do-not-use-9_1_29mdk.zip |
This commit was manufactured by cvs2svn to create tag 'V9_1_29mdk'.V9_1_29mdk
Diffstat (limited to 'mdk-stage1/dietlibc/libugly/getprotoent.c')
-rw-r--r-- | mdk-stage1/dietlibc/libugly/getprotoent.c | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/mdk-stage1/dietlibc/libugly/getprotoent.c b/mdk-stage1/dietlibc/libugly/getprotoent.c deleted file mode 100644 index a648e2307..000000000 --- a/mdk-stage1/dietlibc/libugly/getprotoent.c +++ /dev/null @@ -1,130 +0,0 @@ -#include <unistd.h> -#include <fcntl.h> -#include <netdb.h> -#include <sys/mman.h> -#include <errno.h> -#include <netinet/in.h> -#include <string.h> -#include <ctype.h> - -static int protofd=-1; -static char* protomap; -static unsigned int protolen; - -static char* aliases[10]; - -static char *cur; - -/* ip 0 IP # internet protocol, pseudo protocol number */ -struct protoent *getprotoent(void) { - static struct protoent pe; - char *last; - int aliasidx; - if (protofd<0) { - protofd=open(_PATH_SERVICES,O_RDONLY); - if (protofd<0) return 0; - protolen=lseek(protofd,0,SEEK_END); - protomap=mmap(0,protolen,PROT_READ|PROT_WRITE,MAP_PRIVATE,protofd,0); - if ((long)protomap==(-1)) goto error; - cur=protomap; - } - last=protomap+protolen; -again: - pe.p_name=0; - pe.p_aliases=aliases; aliases[0]=0; - pe.p_proto=0; - if (cur>=last) return 0; - if (*cur=='#' || *cur=='\n') goto parseerror; - /* first, the primary name */ - if (!isalpha(*cur)) goto parseerror; - pe.p_name=cur; - pe.p_aliases=aliases; - while (cur<last && isalnum(*cur)) cur++; - if (cur>=last) return 0; - if (*cur=='\n') goto parseerror; - *cur=0; cur++; - /* second, the protocol number */ - while (cur<last && isblank(*cur)) cur++; - while (cur<last && isdigit(*cur)) { - pe.p_proto=pe.p_proto*10+*cur-'0'; - cur++; - } -/* pe.p_proto=htons(pe.s_proto); */ - if (cur>=last) return 0; - if (*cur=='\n') { *cur++=0; return &pe; } - *cur=0; cur++; - /* now the aliases */ - for (aliasidx=0;aliasidx<10;++aliasidx) { - while (cur<last && isblank(*cur)) ++cur; - aliases[aliasidx]=cur; - while (cur<last && isalpha(*cur)) ++cur; - if (*cur=='\n') { *cur++=0; ++aliasidx; break; } - if (cur>=last || !isblank(*cur)) break; - *cur++=0; - } - aliases[aliasidx]=0; - return &pe; -parseerror: - while (cur<last && *cur!='\n') cur++; - cur++; - goto again; -error: - if (protomap!=(char*)-1) munmap(protomap,protolen); - if (protofd!=-1) close(protofd); - protomap=(char*)-1; - protofd=-1; - errno=ENOMEM; - return 0; -} - -void setprotoent(int stayopen) { - cur=protomap; -} - -struct protoent *getprotobyname(const char *name) { - struct protoent *s; - setprotoent(0); - for (s=getprotoent(); s; s=getprotoent()) { - char **tmp; -#if 0 - write(1,"found ",6); - write(1,s->p_name,strlen(s->p_name)); - write(1,"/",1); - write(1,s->p_proto,strlen(s->p_proto)); - write(1,"\n",1); - if (!strcmp(name,"auth")) { - tmp=s->p_aliases; - write(1," aka ",5); - while (*tmp) { - write(1,*tmp,strlen(*tmp)); - write(1,", ",2); - ++tmp; - } - write(1,"\n",1); - } -#endif - if (!strcmp(name,s->p_name)) - return s; - tmp=s->p_aliases; - while (*tmp) - if (!strcmp(name,*tmp++)) return s; - } - return 0; -} - -struct protoent *getprotobynumber(int proto) { - struct protoent *s; - for (s=getprotoent(); s; s=getprotoent()) { - if (proto==s->p_proto) - return s; - } - return 0; -} - -void endprotoent(void) { - if (protomap!=(char*)-1) munmap(protomap,protolen); - if (protofd!=-1) close(protofd); - protomap=(char*)-1; - protofd=-1; -} - |