- const char *wstart;
- 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
- wstart = src;
- while (*src++)
- ;
- if (lead & 60)
- seqno += ((lead>>2) & 15)-1;
- else
- {
- memcpy (&seqno, src, sizeof(seqno));
- src += sizeof(seqno);
- }
- if (
-#if SU_SCHEME
- ch == chS
-#else
- attrUseS == attrUse && attrSetS == attrSet
-#endif
- )
+ struct it_key key;
+ char *dst = (char*) &key;
+ int attrSet, attrUse;
+
+ iscz1_decode(decode_handle, &dst, &src);
+ assert(key.len < 4 && key.len > 2);
+
+ attrSet = (int) key.mem[0] >> 16;
+ attrUse = (int) key.mem[0] & 65535;
+ seqno = (int) key.mem[key.len-1];
+
+ if (attrUseS == attrUse && attrSetS == attrSet)