-/*
- * Copyright (c) 1995-2004, Index Data
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2009 Index Data
* See the file LICENSE for details.
- *
- * $Id: ber_int.c,v 1.2 2004-10-15 00:18:59 adam Exp $
*/
/**
#include <string.h>
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
#ifdef WIN32
#include <winsock.h>
-#else
-#include <sys/types.h>
+#endif
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#include "odr-priv.h"
-static int ber_encinteger(ODR o, int val);
-static int ber_decinteger(const unsigned char *buf, int *val, int max);
+static int ber_encinteger(ODR o, Odr_int val);
+static int ber_decinteger(const unsigned char *buf, Odr_int *val, int max);
-int ber_integer(ODR o, int *val)
+int ber_integer(ODR o, Odr_int *val)
{
int res;
switch (o->direction)
{
- case ODR_DECODE:
- if ((res = ber_decinteger(o->bp, val, odr_max(o))) <= 0)
- {
- odr_seterror(o, OPROTO, 50);
- return 0;
- }
- o->bp += res;
- return 1;
- case ODR_ENCODE:
- if ((res = ber_encinteger(o, *val)) < 0)
- return 0;
- return 1;
- case ODR_PRINT: return 1;
- default: odr_seterror(o, OOTHER, 51); return 0;
+ case ODR_DECODE:
+ if ((res = ber_decinteger(o->bp, val, odr_max(o))) <= 0)
+ {
+ odr_seterror(o, OPROTO, 50);
+ return 0;
+ }
+ o->bp += res;
+ return 1;
+ case ODR_ENCODE:
+ if ((res = ber_encinteger(o, *val)) < 0)
+ return 0;
+ return 1;
+ case ODR_PRINT:
+ return 1;
+ default:
+ odr_seterror(o, OOTHER, 51); return 0;
}
}
/*
* Returns: number of bytes written or -1 for error (out of bounds).
*/
-int ber_encinteger(ODR o, int val)
+int ber_encinteger(ODR o, Odr_int val)
{
int a, len;
union { int i; unsigned char c[sizeof(int)]; } tmp;
return -1;
if (odr_write(o, (unsigned char*) tmp.c + a, len) < 0)
return -1;
-#ifdef ODR_DEBUG
- fprintf(stderr, "[val=%d]", val);
-#endif
return 0;
}
/*
* Returns: Number of bytes read or 0 if no match, -1 if error.
*/
-int ber_decinteger(const unsigned char *buf, int *val, int max)
+int ber_decinteger(const unsigned char *buf, Odr_int *val, int max)
{
const unsigned char *b = buf;
unsigned char fill;
*val = ntohl(tmp.i);
b += len;
-#ifdef ODR_DEBUG
- fprintf(stderr, "[val=%d]", *val);
-#endif
return b - buf;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+