-#if NEW
-void zebra_rec_keys_write(zebra_rec_keys_t keys,
- const char *str, size_t slen,
- const struct it_key *key)
-{
- char *dst;
- const char *src = (char*) key;
-
- struct zebra_rec_word_entry **wep;
- struct zebra_rec_key_entry **kep;
- int ord = key->mem[0];
- int seq = key->mem[key->len-1];
-
- assert(keys->owner_of_buffer);
-
- wep = zebra_rec_keys_mk_hash(keys, str, slen, ord);
-
- while (*wep)
- {
- struct zebra_rec_word_entry *e = *wep;
- if (ord == e->ord && slen == e->len && !memcmp(str, e->buf, slen))
- break;
- wep = &(*wep)->next;
- }
-
- if (!*wep)
- {
- *wep = nmem_malloc(keys->nmem, sizeof(**wep));
- (*wep)->buf = nmem_malloc(keys->nmem, slen);
- memcpy((*wep)->buf, str, slen);
- (*wep)->len = slen;
- (*wep)->ord = ord;
- (*wep)->next = 0;
- (*wep)->keys = 0;
- (*wep)->max_seq = 0;
- (*wep)->last_key = &(*wep)->keys;
- }
- if (seq > (*wep)->max_seq)
- kep = (*wep)->last_key;
- else
- {
- kep = &(*wep)->keys;
- while (*kep)
- {
- if (!key_compare(key, &(*kep)->key))
- return;
- kep = &(*kep)->next;
- }
- }
- *kep = nmem_malloc(keys->nmem, sizeof(**kep));
- (*kep)->next = 0;
- (*wep)->last_key = &(*kep)->next;
- memcpy(&(*kep)->key, key, sizeof(*key));
- if (seq > (*wep)->max_seq)
- {
- (*wep)->max_seq = seq;
- }
-}
-#else