/*
- * Copyright (c) 1995, Index Data
+ * Copyright (c) 1995-2000, Index Data
* See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
*
* $Log: marcdisp.c,v $
- * Revision 1.8 1999-11-30 13:47:12 adam
+ * Revision 1.12 2000-10-02 11:07:44 adam
+ * Added peer_name member for bend_init handler. Changed the YAZ
+ * client so that tcp: can be avoided in target spec.
+ *
+ * Revision 1.11 2000/02/29 13:44:55 adam
+ * Check for config.h (currently not generated).
+ *
+ * Revision 1.10 2000/02/05 10:47:19 adam
+ * Identifier-length and indicator-lenght no longer set to 2 (forced).
+ *
+ * Revision 1.9 1999/12/21 16:24:48 adam
+ * More robust ISO2709 handling (in case of real bad formats).
+ *
+ * Revision 1.8 1999/11/30 13:47:12 adam
* Improved installation. Moved header files to include/yaz.
*
* Revision 1.7 1997/09/24 13:29:40 adam
*
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdio.h>
#include <string.h>
#include <ctype.h>
outf = stdout;
record_length = atoi_n (buf, 5);
if (record_length < 25)
+ {
+ if (debug)
+ {
+ fprintf (outf, "Record length %d - aborting\n", record_length);
+
+ }
return -1;
- indicator_length = atoi_n (buf+10, 1);
- identifier_length = atoi_n (buf+11, 1);
+ }
+ if (isdigit(buf[10]))
+ indicator_length = atoi_n (buf+10, 1);
+ else
+ indicator_length = 2;
+ if (isdigit(buf[11]))
+ identifier_length = atoi_n (buf+11, 1);
+ else
+ identifier_length = 2;
base_address = atoi_n (buf+12, 4);
- indicator_length = identifier_length = 2;
-
length_data_entry = atoi_n (buf+20, 1);
length_starting = atoi_n (buf+21, 1);
length_implementation = atoi_n (buf+22, 1);
fprintf (outf, "Length implementation %5d\n", length_implementation);
}
for (entry_p = 24; buf[entry_p] != ISO2709_FS; )
+ {
entry_p += 3+length_data_entry+length_starting;
+ if (entry_p >= record_length)
+ return -1;
+ }
base_address = entry_p+1;
for (entry_p = 24; buf[entry_p] != ISO2709_FS; )
{