+#endif
+
+ static const int record_prefix[] = {
+ 0xff, 0xff, 0x00, 0x00,
+ };
+ size_t record_prefix_len = sizeof record_prefix / sizeof *record_prefix;
+ if (match_bytes(pos, record_prefix, record_prefix_len))
+ {
+ int len = record_prefix_len;
+ int slen = data[pos + 4] + (data[pos + 5] << 8);
+ if (slen >= 2 && slen < 256 && all_utf8((char *) &data[pos + 6], slen))
+ {
+ if (prev_end != pos)
+ {
+ if (print_offsets)
+ printf ("%04x ", prev_end);
+ hex_dump (stdout, prev_end, pos - prev_end);
+ }
+
+ putchar ('\n');
+
+ printf ("rec:%-20.*s ", slen, &data[pos + 6]);
+ len = slen + 6;
+ title = xmemdup0(&data[pos + 6], slen);
+ fprintf (stderr, "%s%d ", title, data[pos + len]);
+ sum += data[pos+len];
+
+ pos += len - 1;
+ prev_end = pos + 1;
+ continue;
+ }
+ }
+
+ static const int number_prefix[] = {
+ 0x80, 0x02
+ };
+ size_t number_prefix_len = sizeof number_prefix / sizeof *number_prefix;
+ if (match_bytes(pos, number_prefix, number_prefix_len))
+ {
+ if (prev_end != pos)
+ {
+ if (print_offsets)
+ printf ("%04x ", prev_end);
+ hex_dump (stdout, prev_end, pos - prev_end);
+ }
+ prev_end = pos;
+
+ double d = *(double *) &data[pos + number_prefix_len];
+ printf ("float %f\n", d);
+
+ pos += 10 - 1;
+ prev_end = pos + 1;
+ continue;
+ }
+
+ if (!memcmp (&data[pos + 4], "{\\rtf", 5))
+ {
+ int len = data[pos] + (data[pos + 1] << 8) + (data[pos + 2] << 16)
+ + (data[pos + 3] << 24);
+ if (len < n - pos - 4)
+ {
+ if (prev_end != pos)
+ {
+ if (print_offsets)
+ printf ("%04x ", prev_end);
+ hex_dump (stdout, prev_end, pos - prev_end);
+ }
+ prev_end = pos;
+
+ printf ("rtf\n");
+ pos += 4 + len - 1;
+ prev_end = pos + 1;
+ continue;
+ }
+ }