Annotation of 43BSD/contrib/mh/mts/mmdf/hosts.c, revision 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.