+ if (p)
+ {
+#if IT_KEY_NEW
+ char formstr[128];
+ int i;
+
+ memcpy (&key, p, sizeof(key));
+ assert(key.len > 0 && key.len <= IT_KEY_LEVEL_MAX);
+ *formstr = '\0';
+ for (i = 0; i<key.len; i++)
+ {
+ sprintf(formstr + strlen(formstr), ZINT_FORMAT, key.mem[i]);
+ if (i)
+ strcat(formstr, " ");
+ }
+ logf (logmask, "%s %s", formstr, txt);
+#else
+/* !IT_KEY_NEW */
+ memcpy (&key, p, sizeof(key));
+ logf (logmask, "%7d:%-4d %s", key.sysno, key.seqno, txt);
+#endif
+ }
+ else
+ logf(logmask, " (null) %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)
+{
+#if IT_KEY_NEW
+ 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;
+ }
+ }
+#else
+ if (((struct it_key *) p1)->sysno != ((struct it_key *) p2)->sysno)
+ {
+ if (((struct it_key *) p1)->sysno > ((struct it_key *) p2)->sysno)
+ return 2;
+ else
+ return -2;
+ }
+ if (((struct it_key *) p1)->seqno != ((struct it_key *) p2)->seqno)
+ {
+ if (((struct it_key *) p1)->seqno > ((struct it_key *) p2)->seqno)
+ return 1;
+ else
+ return -1;
+ }
+#endif
+ return 0;
+}