Fixed bug in odr_reset
[yaz-moved-to-github.git] / odr / odr.c
index 2347ef3..c5d725c 100644 (file)
--- a/odr/odr.c
+++ b/odr/odr.c
@@ -4,7 +4,16 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: odr.c,v $
- * Revision 1.1  1995-03-07 09:23:15  quinn
+ * Revision 1.4  1995-03-07 13:16:13  quinn
+ * Fixed bug in odr_reset
+ *
+ * Revision 1.3  1995/03/07  10:21:31  quinn
+ * odr_errno-->odr_error
+ *
+ * Revision 1.2  1995/03/07  10:19:05  quinn
+ * Addded some method functions to the ODR type.
+ *
+ * Revision 1.1  1995/03/07  09:23:15  quinn
  * Installing top-level API and documentation.
  *
  *
@@ -31,6 +40,11 @@ void odr_perror(ODR o, char *message)
     fprintf(stderr, "%s: %s\n", message, odr_errlist[o->error]);
 }
 
+int odr_geterror(ODR o)
+{
+    return o->error;
+}
+
 void odr_setprint(ODR o, FILE *file)
 {
     o->print = file;
@@ -53,7 +67,7 @@ ODR odr_createmem(int direction)
 void odr_reset(ODR o)
 {
     o->error = ONONE;
-    o->bp = 0;
+    o->bp = o->buf;
     o->left = o->buflen;
     o->t_class = -1;
     o->t_tag = -1;
@@ -65,3 +79,15 @@ void odr_destroy(ODR o)
 {
     free(o);
 }
+
+void odr_setbuf(ODR o, char *buf, int len)
+{
+    o->buf = o->bp = (unsigned char *) buf;
+    o->buflen = o->left = len;
+}
+
+char *odr_getbuf(ODR o, int *len)
+{
+    *len = o->bp - o->buf;
+    return (char *) o->buf;
+}