Annotation of 43BSD/contrib/mh/mts/mmdf/hosts.c, revision 1.1.1.1

1.1       root        1: /* hosts.c - use MMDF to get hostname information */
                      2: 
                      3: /* LINTLIBRARY */
                      4: 
                      5: #include "../h/strings.h"
                      6: #include "util.h"
                      7: #include "mmdf.h"
                      8: #include "ch.h"
                      9: #ifdef MMDFII
                     10: #include "dm.h"
                     11: #endif MMDFII
                     12: #include "../zotnet/mts.h"
                     13: 
                     14: /* 
                     15:  * We really should be careful with the number of fd's that this routine
                     16:  * opens:  the ch_seq ch_table.c module likes to keep 6 (yes, SIX) fds around
                     17:  * to speed-up host lookups in the channel table.  Unfortunately, after all
                     18:  * of them get opened, six are always open (ch_table may close one to open
                     19:  * another).  The bottom line is that if repl calls post, then we get 12
                     20:  * (yes, TWELVE) fds open, with only six usable.
                     21:  *
                     22:  * send will close all fds >= 3 prior to invoking post.  It would be nice
                     23:  * if one could control ch_seq's use of fds for table lookups, but such is
                     24:  * life.
                     25:  *
                     26:  */
                     27: 
                     28: #ifndef        MMDFII
                     29: char   *OfficialName (name)
                     30: register char   *name;
                     31: {
                     32:     register Chan *ch;
                     33:     static char buffer[BUFSIZ];
                     34: 
                     35:     return ((ch = ch_h2chan (name, buffer)) == (Chan *) (-1) ? NULL
                     36:            : ch == (Chan *) NULL ? LocalName ()
                     37:            : buffer);
                     38: }
                     39: #else  MMDFII
                     40: 
                     41: extern char *invo_name;
                     42: 
                     43: extern short ch_yloc;            /* ok to intercept local names        */
                     44: 
                     45: static int     inited = 0;
                     46: 
                     47: char *OfficialName (name)
                     48: register char  *name;
                     49: {
                     50:     Dmn_route route;
                     51:     static char buffer[BUFSIZ];
                     52: 
                     53:     if (!inited) {
                     54:        mmdf_init (invo_name);
                     55:        inited = 1;
                     56:     }
                     57:     switch (dm_v2route (name, buffer, &route)) {
                     58:        case NOTOK: 
                     59:        case OK: 
                     60:            return ((ch_yloc && lexequ (name, LocalName ())) ? LocalName ()
                     61:                    : NULL);
                     62: 
                     63:        default: 
                     64:            return buffer;
                     65:     }
                     66: }
                     67: #endif MMDFII

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.