/* * rehash_node - build a hash table of the node_record entries. * NOTE: using xhash implementation */ extern void rehash_node (void) { int i; struct node_record *node_ptr = node_record_table_ptr; xhash_free (node_hash_table); node_hash_table = xhash_init(node_record_hash_identity, NULL, NULL, 0); for (i = 0; i < node_record_count; i++, node_ptr++) { if ((node_ptr->name == NULL) || (node_ptr->name[0] == '\0')) continue; /* vestigial record */ xhash_add(node_hash_table, node_ptr); } #if _DEBUG _dump_hash(); #endif return; }
/* * rehash_node - build a hash table of the node_record entries. * NOTE: manages memory for node_hash_table */ extern void rehash_node (void) { int i, inx; struct node_record *node_ptr = node_record_table_ptr; xfree (node_hash_table); node_hash_table = xmalloc (sizeof (struct node_record *) * node_record_count); for (i = 0; i < node_record_count; i++, node_ptr++) { if ((node_ptr->name == NULL) || (node_ptr->name[0] == '\0')) continue; /* vestigial record */ inx = _hash_index (node_ptr->name); node_ptr->node_next = node_hash_table[inx]; node_hash_table[inx] = node_ptr; } #if _DEBUG _dump_hash(); #endif return; }