|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.