-#if ZEBRASDR
- else if (*fname == '%')
- {
- ZebraSdrHandle h;
- int segment = 0, r;
- char *cp, xname[128];
- unsigned char *buf;
-
- logf (LOG_DEBUG, "SDR");
- strcpy (xname, fname+1);
- if ((cp = strrchr (xname, '.')))
- {
- *cp++ = 0;
- segment = atoi(cp);
- }
- h = zebraSdr_open (xname);
- if (!h)
- {
- logf (LOG_WARN, "sdr open %s", xname);
- return 0;
- }
- if (zebraSdr_segment (h, &segment) < 0)
- {
- logf (LOG_WARN, "zebraSdr_segment fail segment=%d",
- segment);
- rec_rm (&rec);
- return 14;
- }
- r = zebraSdr_read (h, &buf);
- if (r < 1)
- {
- logf (LOG_WARN, "zebraSdr_read fail segment=%d",
- segment);
- rec_rm (&rec);
- return 14;
- }
- zebraSdr_close (h);
-
- fc.record_int_len = recordAttr->recordSize;
- fc.record_int_buf = buf + recordAttr->recordOffset;
- fc.record_int_pos = 0;
-
- logf (LOG_LOG, "segment = %d len=%d off=%d",
- segment,
- recordAttr->recordSize,
- recordAttr->recordOffset);
- if (fc.record_int_len > 180)
- {
- logf (LOG_LOG, "%0.70s", fc.record_int_buf);
- logf (LOG_LOG, "%0.70s", fc.record_int_buf +
- (fc.record_int_len - 70));
- }
- else
- logf (LOG_LOG, "%0.*s",
- fc.record_int_len, fc.record_int_buf);
-
- /* the following two lines makes rec_rm delete buf */
- rec->size[recInfo_storeData] = r;
- rec->info[recInfo_storeData] = buf;
-
- retrieveCtrl.readf = record_int_read;
- retrieveCtrl.seekf = record_int_seek;
- retrieveCtrl.tellf = record_int_tell;
- }
-#endif