]> git.sur5r.net Git - openldap/blobdiff - include/lber.h
Fix select/yield
[openldap] / include / lber.h
index ffa52b2bf88b34c3189ec017068a5fa06a300ed2..c01b3acc04f59ac2ff4412317ea0a910e6e3050f 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -90,6 +90,7 @@ LDAP_BEGIN_DECL
 #define LBER_OPT_BER_REMAINING_BYTES   0x03
 #define LBER_OPT_BER_TOTAL_BYTES               0x04
 #define LBER_OPT_BER_BYTES_TO_WRITE            0x05
+#define LBER_OPT_BER_MEMCTX                            0x06
 
 #define LBER_OPT_DEBUG_LEVEL   LBER_OPT_BER_DEBUG
 #define LBER_OPT_REMAINING_BYTES       LBER_OPT_BER_REMAINING_BYTES
@@ -109,16 +110,16 @@ typedef int* (*BER_ERRNO_FN) LDAP_P(( void ));
 
 typedef void (*BER_LOG_PRINT_FN) LDAP_P(( LDAP_CONST char *buf ));
 
-typedef void* (*BER_MEMALLOC_FN)       LDAP_P(( ber_len_t size ));
-typedef void* (*BER_MEMCALLOC_FN)      LDAP_P(( ber_len_t n, ber_len_t size ));
-typedef void* (*BER_MEMREALLOC_FN)     LDAP_P(( void *p, ber_len_t size ));
-typedef void  (*BER_MEMFREE_FN)                LDAP_P(( void *p ));
+typedef void* (BER_MEMALLOC_FN)        LDAP_P(( ber_len_t size, void *ctx ));
+typedef void* (BER_MEMCALLOC_FN)       LDAP_P(( ber_len_t n, ber_len_t size, void *ctx ));
+typedef void* (BER_MEMREALLOC_FN)      LDAP_P(( void *p, ber_len_t size, void *ctx ));
+typedef void  (BER_MEMFREE_FN)         LDAP_P(( void *p, void *ctx ));
 
 typedef struct lber_memory_fns {
-       BER_MEMALLOC_FN bmf_malloc;
-       BER_MEMCALLOC_FN bmf_calloc;
-       BER_MEMREALLOC_FN bmf_realloc;
-       BER_MEMFREE_FN bmf_free;
+       BER_MEMALLOC_FN *bmf_malloc;
+       BER_MEMCALLOC_FN *bmf_calloc;
+       BER_MEMREALLOC_FN *bmf_realloc;
+       BER_MEMFREE_FN *bmf_free;
 } BerMemoryFunctions;
 
 /* LBER Sockbuf_IO options */
@@ -148,12 +149,14 @@ typedef struct lber_memory_fns {
 #define LBER_OPT_SOCKBUF_DEBUG         0x1002
 
 /* on/off values */
-#define LBER_OPT_ON            ((void *) 1)
+extern char ber_pvt_opt_on;
+#define LBER_OPT_ON            ((void *) &ber_pvt_opt_on)
 #define LBER_OPT_OFF   ((void *) 0)
 
 #define LBER_OPT_SUCCESS       (0)
 #define LBER_OPT_ERROR         (-1)
 
+#define LBER_ELEMENT_SIZEOF (256) /* must be >= sizeof(BerElement) */
 typedef struct berelement BerElement;
 typedef struct sockbuf Sockbuf;
 typedef struct seqorset Seqorset;
@@ -468,6 +471,16 @@ ber_flatten LDAP_P((
        BerElement *ber,
        struct berval **bvPtr ));
 
+LBER_F( int )
+ber_flatten2 LDAP_P((
+       BerElement *ber,
+       struct berval *bv,
+       int alloc ));
+
+LBER_F( int )
+ber_remaining LDAP_P((
+       BerElement *ber ));
+
 /*
  * LBER ber accessor functions
  */