1: #ifndef lint 2: static char sccsid[] = "@(#)db_reload.c 4.3 (Berkeley) 5/30/86"; 3: #endif 4: 5: /* 6: * Copyright (c) 1986 Regents of the University of California 7: * All Rights Reserved 8: */ 9: 10: #include <sys/types.h> 11: #include <netinet/in.h> 12: #include <stdio.h> 13: #include <arpa/nameser.h> 14: #include "ns.h" 15: #include "db.h" 16: 17: /* 18: * Flush and reload data base. 19: */ 20: 21: db_reload() 22: { 23: extern char *bootfile; 24: 25: #ifdef DEBUG 26: if (debug >= 3) 27: fprintf(ddt,"reload()\n"); 28: #endif 29: 30: if (hashtab != NULL) 31: db_free(hashtab); 32: db_inv_free(); 33: hashtab = NULL; 34: ns_init(bootfile); 35: } 36: 37: db_free(htp) 38: struct hashbuf *htp; 39: { 40: register struct databuf *dp; 41: register struct namebuf *np; 42: struct namebuf **npp, **nppend; 43: 44: npp = htp->h_tab; 45: nppend = npp + htp->h_size; 46: while (npp < nppend) { 47: for (np = *npp++; np != NULL; free((char *)np), np = np->n_next) { 48: if (np->n_hash != NULL) 49: db_free(np->n_hash); 50: (void) free(np->n_dname); 51: if (np->n_data == NULL) 52: continue; 53: for (dp = np->n_data; dp != NULL; dp = dp->d_next) 54: (void) free((char *)dp); 55: } 56: } 57: (void) free((char *)htp); 58: } 59: 60: db_inv_free() 61: { 62: register struct invbuf *ip; 63: register int i, j; 64: 65: for (i = 0; i < INVHASHSZ; i++) 66: for (ip = invtab[i]; ip != NULL; ip = ip->i_next) 67: for (j = 0; j < INVBLKSZ; j++) 68: ip->i_dname[j] = NULL; 69: }