-#else
- while (off < reckeys->buf_used)
- {
- const char *src = reckeys->buf + off;
- struct it_key key;
- int lead;
-
- lead = *src++;
-
-#if SU_SCHEME
- if ((lead & 3) < 3)
- {
- memcpy (&ch, src, sizeof(ch));
- src += sizeof(ch);
- }
-#else
- if (!(lead & 1))
- {
- memcpy (&attrSet, src, sizeof(attrSet));
- src += sizeof(attrSet);
- }
- if (!(lead & 2))
- {
- memcpy (&attrUse, src, sizeof(attrUse));
- src += sizeof(attrUse);
- }
-#endif
- if (zh->reg->key_buf_used + 1024 >
- (zh->reg->ptr_top -zh->reg->ptr_i)*sizeof(char*))
- extract_flushWriteKeys (zh,0);
- assert(zh->reg->ptr_i >= 0);
- ++(zh->reg->ptr_i);
- assert(zh->reg->ptr_i > 0);
- (zh->reg->key_buf)[zh->reg->ptr_top - zh->reg->ptr_i] =
- (char*)zh->reg->key_buf + zh->reg->key_buf_used;
-#if SU_SCHEME
-#else
- ch = zebraExplain_lookupSU (zei, attrSet, attrUse);
- if (ch < 0)
- ch = zebraExplain_addSU (zei, attrSet, attrUse);
-#endif
- assert (ch > 0);
- zh->reg->key_buf_used +=
- key_SU_encode (ch,((char*)zh->reg->key_buf) +
- zh->reg->key_buf_used);
-
- while (*src)
- ((char*)zh->reg->key_buf) [(zh->reg->key_buf_used)++] = *src++;
- src++;
- ((char*)(zh->reg->key_buf))[(zh->reg->key_buf_used)++] = '\0';
- ((char*)(zh->reg->key_buf))[(zh->reg->key_buf_used)++] = cmd;
-
- if (lead & 60)
- seqno += ((lead>>2) & 15)-1;
- else
- {
- memcpy (&seqno, src, sizeof(seqno));
- src += sizeof(seqno);
- }
- key.seqno = seqno;
- key.sysno = sysno;
- memcpy ((char*)zh->reg->key_buf + zh->reg->key_buf_used, &key, sizeof(key));
- (zh->reg->key_buf_used) += sizeof(key);
- off = src - reckeys->buf;
- }
-#endif