- memcpy (&key, p, sizeof(key));
-#if IT_KEY_HAVE_SEQNO
- logf (logmask, "%7d s=%-3d", key.sysno, key.seqno);
-#else
- logf (logmask, "%7d f=%-3d", key.sysno, key.freq);
-#endif
+ memcpy (&key, p, sizeof(key));
+ assert(key.len > 0 && key.len <= IT_KEY_LEVEL_MAX);
+ *formstr = '\0';
+ for (i = 0; i<key.len; i++)
+ {
+ if (i)
+ strcat(formstr, ".");
+ sprintf(formstr + strlen(formstr), ZINT_FORMAT, key.mem[i]);
+ }
+ yaz_log(logmask, "%s %s", formstr, txt);
+ }
+ else
+ yaz_log(logmask, " (no key) %s",txt);
+}
+
+void key_logdump(int logmask, const void *p)
+{
+ key_logdump_txt(logmask, p, "");
+}
+
+int key_compare_it (const void *p1, const void *p2)
+{
+ int i, l = ((struct it_key *) p1)->len;
+ if (((struct it_key *) p2)->len > l)
+ l = ((struct it_key *) p2)->len;
+ assert (l <= 4 && l > 0);
+ for (i = 0; i < l; i++)
+ {
+ if (((struct it_key *) p1)->mem[i] != ((struct it_key *) p2)->mem[i])
+ {
+ if (((struct it_key *) p1)->mem[i] > ((struct it_key *) p2)->mem[i])
+ return l-i;
+ else
+ return i-l;
+ }
+ }
+ return 0;
+}
+
+char *key_print_it (const void *p, char *buf)
+{
+ strcpy(buf, "");
+ return buf;