21 #include <sys/types.h>
63 unsigned long long uval = val;
64 unsigned char tmp[
sizeof(uval)];
67 for (i =
sizeof(uval); i > 0; )
69 tmp[--i] = (
unsigned char ) uval;
72 for (i = 0; i <
sizeof(uval)-1; i++)
73 if (!((tmp[i] == 0 && !(tmp[i+1] & 0x80))
75 (tmp[i] == 0xFF && (tmp[i+1] & 0x80))))
77 len =
sizeof(uval) - i;
80 if (
odr_write(o, (
const char *) tmp + i, len) < 0)
90 unsigned long long uval = 0;
93 const unsigned char *b = (
const unsigned char *) buf;
95 if ((res =
ber_declen((
const char *) b, &len, max)) < 0)
97 if (len+res > max || len < 0)
99 if (len > (
int)
sizeof(uval))
104 for (i = 0; i < (int)
sizeof(uval) - len; i++)
105 uval = (uval << 8) + 0xFF;
106 for (i = 0; i < len; i++)
107 uval = (uval << 8) + b[i];
110 return (
const char *) b - buf;
static int ber_encinteger(ODR o, Odr_int val)
int ber_integer(ODR o, Odr_int *val)
static int ber_decinteger(const char *buf, Odr_int *val, int max)
int ber_declen(const char *buf, int *len, int max)
int ber_enclen(ODR o, int len, int lenlen, int exact)
Internal ODR definitions.
void odr_seterror(ODR o, int error, int id)
int odr_write(ODR o, const char *buf, int bytes)