- sizeof(ISAMC_P), &isamc_p2);
- }
- }
- else
- {
- isamc_p = isamb_merge (hi->reg->isamb, 0, isamc_i);
- hi->no_insertions++;
- dict_insert (hi->reg->dict, this_name, sizeof(ISAMC_P), &isamc_p);
- }
- }
- xfree (isamc_i);
- xfree (hci.key);
- xfree (hci.key_1);
- xfree (hci.key_2);
- return 0;
-}
-
-int heap_inpd (struct heap_info *hi)
-{
- struct heap_cread_info hci;
- ISAMD_I isamd_i = (ISAMD_I) xmalloc (sizeof(*isamd_i));
-
- hci.key = (char *) xmalloc (KEY_SIZE);
- hci.key_1 = (char *) xmalloc (KEY_SIZE);
- hci.key_2 = (char *) xmalloc (KEY_SIZE);
- hci.ret = -1;
- hci.first_in_list = 1;
- hci.hi = hi;
- hci.more = heap_read_one (hi, hci.cur_name, hci.key);
-
- isamd_i->clientData = &hci;
- isamd_i->read_item = heap_cread_item;
-
- while (hci.more)
- {
- char this_name[INP_NAME_MAX];
- char *dict_info;
- char dictentry[ISAMD_MAX_DICT_LEN+1];
- char dictlen;
-
- strcpy (this_name, hci.cur_name);
-
- /* print_dict_item (hi->reg->zebra_maps, hci.cur_name); */
- /*!*/ /* FIXME: depend on isamd-debug */
-
- assert (hci.cur_name[1]);
- hi->no_diffs++;
- if ((dict_info = dict_lookup (hi->reg->dict, hci.cur_name)))
- {
- dictlen=dict_info[0];
- memcpy (dictentry, dict_info+1, dictlen );
-#ifdef SKIPTHIS
- logf(LOG_LOG,"dictentry before. len=%d: %d %d %d %d %d %d %d %d %d",
- dictlen,dictentry[0], dictentry[1], dictentry[2],
- dictentry[3], dictentry[4], dictentry[5],
- dictentry[6], dictentry[7], dictentry[8]); /*!*/
-#endif
- dictlen= isamd_append(hi->reg->isamd, dictentry, dictlen, isamd_i);
- /* logf dictentry after */
- if (dictlen)
- {
- hi->no_updates++;
- if ( (dictlen!=dict_info[0]) ||
- (0!=memcmp(dictentry, dict_info+1, dictlen)) )
- {
- dict_insert(hi->reg->dict, this_name,
- dictlen,dictentry);
- }
- }
- else
- {
- hi->no_deletions++;
- if (!dict_delete (hi->reg->dict, this_name))
- {
- logf (LOG_FATAL, "dict_delete failed");
- abort();
- }