1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #if defined(LIBC_SCCS) && !defined(lint)
   8: static char sccsid[] = "@(#)gethostent.c	5.3 (Berkeley) 3/9/86";
   9: #endif LIBC_SCCS and not lint
  10: 
  11: #include <stdio.h>
  12: #include <sys/types.h>
  13: #include <sys/socket.h>
  14: #include <netdb.h>
  15: #include <ctype.h>
  16: #include <ndbm.h>
  17: 
  18: /*
  19:  * Internet version.
  20:  */
  21: #define MAXALIASES  35
  22: #define MAXADDRSIZE 14
  23: 
  24: static FILE *hostf = NULL;
  25: static char line[BUFSIZ+1];
  26: static char hostaddr[MAXADDRSIZE];
  27: static struct hostent host;
  28: static char *host_aliases[MAXALIASES];
  29: static char *host_addrs[] = {
  30:     hostaddr,
  31:     NULL
  32: };
  33: 
  34: /*
  35:  * The following is shared with gethostnamadr.c
  36:  */
  37: char    *_host_file = "/etc/hosts";
  38: int _host_stayopen;
  39: DBM *_host_db;  /* set by gethostbyname(), gethostbyaddr() */
  40: 
  41: static char *any();
  42: 
  43: sethostent(f)
  44:     int f;
  45: {
  46:     if (hostf != NULL)
  47:         rewind(hostf);
  48:     _host_stayopen |= f;
  49: }
  50: 
  51: endhostent()
  52: {
  53:     if (hostf) {
  54:         fclose(hostf);
  55:         hostf = NULL;
  56:     }
  57:     if (_host_db) {
  58:         dbm_close(_host_db);
  59:         _host_db = (DBM *)NULL;
  60:     }
  61:     _host_stayopen = 0;
  62: }
  63: 
  64: struct hostent *
  65: gethostent()
  66: {
  67:     char *p;
  68:     register char *cp, **q;
  69: 
  70:     if (hostf == NULL && (hostf = fopen(_host_file, "r" )) == NULL)
  71:         return (NULL);
  72: again:
  73:     if ((p = fgets(line, BUFSIZ, hostf)) == NULL)
  74:         return (NULL);
  75:     if (*p == '#')
  76:         goto again;
  77:     cp = any(p, "#\n");
  78:     if (cp == NULL)
  79:         goto again;
  80:     *cp = '\0';
  81:     cp = any(p, " \t");
  82:     if (cp == NULL)
  83:         goto again;
  84:     *cp++ = '\0';
  85:     /* THIS STUFF IS INTERNET SPECIFIC */
  86:     host.h_addr_list = host_addrs;
  87:     *((u_long *)host.h_addr) = inet_addr(p);
  88:     host.h_length = sizeof (u_long);
  89:     host.h_addrtype = AF_INET;
  90:     while (*cp == ' ' || *cp == '\t')
  91:         cp++;
  92:     host.h_name = cp;
  93:     q = host.h_aliases = host_aliases;
  94:     cp = any(cp, " \t");
  95:     if (cp != NULL)
  96:         *cp++ = '\0';
  97:     while (cp && *cp) {
  98:         if (*cp == ' ' || *cp == '\t') {
  99:             cp++;
 100:             continue;
 101:         }
 102:         if (q < &host_aliases[MAXALIASES - 1])
 103:             *q++ = cp;
 104:         cp = any(cp, " \t");
 105:         if (cp != NULL)
 106:             *cp++ = '\0';
 107:     }
 108:     *q = NULL;
 109:     return (&host);
 110: }
 111: 
 112: sethostfile(file)
 113:     char *file;
 114: {
 115:     _host_file = file;
 116: }
 117: 
 118: static char *
 119: any(cp, match)
 120:     register char *cp;
 121:     char *match;
 122: {
 123:     register char *mp, c;
 124: 
 125:     while (c = *cp) {
 126:         for (mp = match; *mp; mp++)
 127:             if (*mp == c)
 128:                 return (cp);
 129:         cp++;
 130:     }
 131:     return ((char *)0);
 132: }

Defined functions

any defined in line 118; used 5 times
endhostent defined in line 51; never used
sethostent defined in line 43; never used
sethostfile defined in line 112; never used

Defined variables

_host_file defined in line 37; used 4 times
_host_stayopen defined in line 38; used 2 times
host defined in line 27; used 7 times
host_addrs defined in line 29; used 1 times
  • in line 86
host_aliases defined in line 28; used 2 times
hostaddr defined in line 26; used 1 times
  • in line 30
line defined in line 25; used 1 times
  • in line 73
sccsid defined in line 8; never used

Defined macros

MAXADDRSIZE defined in line 22; used 1 times
  • in line 26
MAXALIASES defined in line 21; used 2 times
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1063
Valid CSS Valid XHTML 1.0 Strict