]> git.sur5r.net Git - openldap/commitdiff
Added lber_get/set_option. Removed lber_debug/ldap_debug.
authorKurt Zeilenga <kurt@openldap.org>
Tue, 22 Dec 1998 01:34:01 +0000 (01:34 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 22 Dec 1998 01:34:01 +0000 (01:34 +0000)
Updated other codes as needed.

44 files changed:
README
build/lib-shared.mk
build/top.mk
clients/gopher/go500.c
clients/gopher/go500gw.c
clients/tools/ldapdelete.c
clients/tools/ldapmodify.c
clients/tools/ldapmodrdn.c
clients/tools/ldappasswd.c
clients/tools/ldapsearch.c
clients/ud/main.c
configure.in
doc/devel/todo
doc/man/man3/lber-decode.3
doc/man/man3/lber-decode.3.links [new file with mode: 0644]
doc/man/man3/lber-encode.3
doc/man/man3/lber-encode.3.links [new file with mode: 0644]
include/lber.h
include/ldap.h
include/ldap_log.h
include/ldif.h
libraries/liblber/Makefile.in
libraries/liblber/bprint.c
libraries/liblber/decode.c
libraries/liblber/dtest.c
libraries/liblber/encode.c
libraries/liblber/etest.c
libraries/liblber/io.c
libraries/liblber/lber-int.h
libraries/liblber/options.c [new file with mode: 0644]
libraries/libldap/cldap.c
libraries/libldap/init.c
libraries/libldap/ldap-int.h
libraries/libldap/open.c
libraries/libldap/options.c
libraries/libldap/request.c
libraries/libldap/test.c
libraries/libldif/line64.c
servers/slapd/backend.c
servers/slapd/main.c
servers/slapd/slap.h
servers/slurpd/args.c
servers/slurpd/re.c
servers/slurpd/slurp.h

diff --git a/README b/README
index de693b48f9f29d56f5d3700fd570c8103c343ea4..bac6baae165ac2a012eb5741f971bda9e0e0e83f 100644 (file)
--- a/README
+++ b/README
@@ -9,7 +9,7 @@ OpenLDAP Devel README
                guidelines for developers
 
        Client developers seeking a stable development platform
-       should use -stable.
+       should use -stable or the latest OpenLDAP release.
 
 
 OpenLDAP 1.1 README
index 57627f16450afe316e19e988f46ac6955ad2cc6a..76774428f87cf1fbffb866bf0ac03b7827d5cff4 100644 (file)
@@ -3,7 +3,8 @@
 ## Makefile Template for Shared Libraries
 ##
 
-LINK    = $(LTLINK) -version-info $(LIBVERSION)
+LTVERSION = -version-info $(LIBVERSION)
+LINK    = $(LTLINK)
 COMPILE = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c
 MKDEPFLAG = -l
 
index 090db8ea8ff094864281444d797532025aee3225..03cd3d6b275403f66829ff5182ee70e1ecaa5894 100644 (file)
@@ -49,7 +49,7 @@ MKDEP = $(top_srcdir)/build/mkdep $(MKDEPFLAG) -c "$(CC)"
 
 LIBTOOL = @LIBTOOL@
 LIBVERSION = 0:0:0
-LTLINK  = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LFLAGS)
+LTLINK  = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LFLAGS) $(LTVERSION)
 LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) 
 
 # Misc UNIX commands used in makefiles
index ca582e939bf2ee1a96ad44fdd5f97941db94ee90..2c3222635307d21875ced28df0b9abf7878f80b3 100644 (file)
 #include "ldapconfig.h"
 #include "lber.h"
 #include "ldap.h"
+
+#define ldap_debug debug
 #include "ldap_log.h"
+
 #include "lutil.h"
 
 #include "disptmpl.h"
@@ -96,7 +99,7 @@ main( int argc, char **argv )
                        break;
 
                case 'd':       /* debug level */
-                       debug = atoi( optarg );
+                       debug |= atoi( optarg );
                        break;
 
                case 'f':       /* ldap filter file */
@@ -156,7 +159,6 @@ main( int argc, char **argv )
        }
 #endif /* FD_SETSIZE*/
 
-
        /* detach if stderr is redirected or no debugging */
        if ( inetd == 0 )
                lutil_detach( debug && !isatty( 1 ), 1 );
@@ -166,6 +168,11 @@ main( int argc, char **argv )
        else
                myname = strdup( myname + 1 );
 
+       if ( debug ) {
+               lber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug);
+               ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug);
+       }
+       
        if ( dosyslog ) {
 #ifdef LOG_LOCAL3
                openlog( myname, OPENLOG_OPTIONS, LOG_LOCAL3 );
index 109fa47dddad28ec6a46f95dcd5101a54485d819..4d83b88b6cdabad39215a9134fcc325fc1f5ea20 100644 (file)
 
 #include "lber.h"
 #include "ldap.h"
+
+#define ldap_debug debug
 #include "ldap_log.h"
+
 #include "lutil.h"
 
 #include "disptmpl.h"
@@ -110,12 +113,7 @@ main (int  argc, char **argv )
                        break;
 
                case 'd':       /* debugging level */
-                       debug = atoi( optarg );
-#ifdef LDAP_DEBUG
-                       ldap_debug = debug;
-#else
-                       fprintf( stderr, "warning: ldap debugging requires LDAP_DEBUG\n" );
-#endif
+                       debug |= atoi( optarg );
                        break;
 
                case 'f':       /* ldap filter file */
@@ -194,6 +192,12 @@ main (int  argc, char **argv )
        else
                myname = strdup( myname + 1 );
 
+
+       if ( debug ) {
+               lber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug);
+               ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug);
+       }
+       
        if ( dosyslog ) {
 #ifdef LOG_LOCAL3
                openlog( myname, OPENLOG_OPTIONS, LOG_LOCAL3 );
index a2b477758de089832b878855be2c545ecd811127..df1103cda15c00e09883ddb09ee9bb4a4418c1ee 100644 (file)
@@ -33,9 +33,9 @@ main( int argc, char **argv )
     char               *usage = "usage: %s [-n] [-v] [-k] [-W] [-d debug-level] [-f file] [-h ldaphost] [-p ldapport] [-D binddn] [-w passwd] [dn]...\n";
     char               buf[ 4096 ];
     FILE               *fp;
-    int                        i, rc, authmethod, want_bindpw;
+    int                        i, rc, authmethod, want_bindpw, debug;
 
-    not = verbose = contoper = want_bindpw = 0;
+    not = verbose = contoper = want_bindpw = debug = 0;
     fp = NULL;
     authmethod = LDAP_AUTH_SIMPLE;
 
@@ -74,11 +74,7 @@ main( int argc, char **argv )
            }
            break;
        case 'd':
-#ifdef LDAP_DEBUG
-           ldap_debug = lber_debug = atoi( optarg );   /* */
-#else /* LDAP_DEBUG */
-           fprintf( stderr, "compile with -DLDAP_DEBUG for debugging\n" );
-#endif /* LDAP_DEBUG */
+           debug |= atoi( optarg );
            break;
        case 'p':
            ldapport = atoi( optarg );
@@ -104,6 +100,11 @@ main( int argc, char **argv )
        }
     }
 
+       if ( debug ) {
+               lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug );
+               ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug );
+       }
+
     if (( ld = ldap_open( ldaphost, ldapport )) == NULL ) {
        perror( "ldap_open" );
        exit( 1 );
index 48b25249757535376404432907b20948ab784cbe..d6342746746c2542cfda097e19c28bd48cc11718 100644 (file)
@@ -68,7 +68,7 @@ main( int argc, char **argv )
 {
     char               *infile, *rbuf, *start, *p, *q;
     FILE               *fp;
-    int                        rc, i, use_ldif, authmethod, want_bindpw;
+    int                        rc, i, use_ldif, authmethod, want_bindpw, debug;
     char               *usage = "usage: %s [-abcknrvWF] [-d debug-level] [-h ldaphost] [-p ldapport] [-D binddn] [-w passwd] [ -f file | < entryfile ]\n";
 
     if (( prog = strrchr( argv[ 0 ], '/' )) == NULL ) {
@@ -79,7 +79,7 @@ main( int argc, char **argv )
     new = ( strcmp( prog, "ldapadd" ) == 0 );
 
     infile = NULL;
-    not = verbose = valsfromfiles = want_bindpw = 0;
+    not = verbose = valsfromfiles = want_bindpw = debug = 0;
     authmethod = LDAP_AUTH_SIMPLE;
 
     while (( i = getopt( argc, argv, "WFabckKnrtvh:p:D:w:d:f:" )) != EOF ) {
@@ -123,12 +123,7 @@ main( int argc, char **argv )
            passwd = strdup( optarg );
            break;
        case 'd':
-#ifdef LDAP_DEBUG
-           ldap_debug = lber_debug = atoi( optarg );   /* */
-#else /* LDAP_DEBUG */
-           fprintf( stderr, "%s: compile with -DLDAP_DEBUG for debugging\n",
-                   prog );
-#endif /* LDAP_DEBUG */
+           debug |= atoi( optarg );
            break;
        case 'f':       /* read from file */
            infile = strdup( optarg );
@@ -165,6 +160,11 @@ main( int argc, char **argv )
        fp = stdin;
     }
 
+       if ( debug ) {
+               lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug );
+               ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug );
+               ldif_debug = debug;
+       }
 
     if ( !not ) {
        if (( ld = ldap_open( ldaphost, ldapport )) == NULL ) {
@@ -173,7 +173,10 @@ main( int argc, char **argv )
        }
 
        /* this seems prudent */
-       ldap_set_option( ld, LDAP_OPT_DEREF, LDAP_DEREF_NEVER);
+       {
+               int deref = LDAP_DEREF_NEVER;
+               ldap_set_option( ld, LDAP_OPT_DEREF, &deref);
+       }
 
        if (want_bindpw)
                passwd = getpass("Enter LDAP Password: ");
index 03d6adfcbf337aeefaee95c836e4e74c96ce4345..3ba5ac2a37818ae27694a3c2ad8d21359a788873 100644 (file)
@@ -35,10 +35,10 @@ main(int argc, char **argv)
     char               *usage = "usage: %s [-nvkWc] [-d debug-level] [-h ldaphost] [-p ldapport] [-D binddn] [-w passwd] [ -f file | < entryfile | dn newrdn ]\n";
     char               *myname,*infile, *entrydn, *rdn, buf[ 4096 ];
     FILE               *fp;
-    int                        rc, i, remove, havedn, authmethod, want_bindpw;
+    int                        rc, i, remove, havedn, authmethod, want_bindpw, debug;
 
     infile = NULL;
-    not = contoper = verbose = remove = want_bindpw = 0;
+    not = contoper = verbose = remove = want_bindpw = debug = 0;
     authmethod = LDAP_AUTH_SIMPLE;
 
     myname = (myname = strrchr(argv[0], '/')) == NULL ? argv[0] : ++myname;
@@ -72,11 +72,7 @@ main(int argc, char **argv)
            passwd = strdup( optarg );
            break;
        case 'd':
-#ifdef LDAP_DEBUG
-           ldap_debug = lber_debug = atoi( optarg );   /* */
-#else /* LDAP_DEBUG */
-           fprintf( stderr, "compile with -DLDAP_DEBUG for debugging\n" );
-#endif /* LDAP_DEBUG */
+           debug |= atoi( optarg );
            break;
        case 'f':       /* read from file */
            infile = strdup( optarg );
@@ -128,13 +124,21 @@ main(int argc, char **argv)
        fp = stdin;
     }
 
+       if ( debug ) {
+               lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug );
+               ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug );
+       }
+
     if (( ld = ldap_open( ldaphost, ldapport )) == NULL ) {
        perror( "ldap_open" );
        exit( 1 );
     }
 
        /* this seems prudent */
-       ldap_set_option( ld, LDAP_OPT_DEREF, LDAP_DEREF_NEVER);
+       {
+               int deref = LDAP_DEREF_NEVER;
+               ldap_set_option( ld, LDAP_OPT_DEREF, &deref);
+       }
 
        if (want_bindpw)
                passwd = getpass("Enter LDAP Password: ");
index ea440a43c89b13e8ebdf7609b9288dacb9727a5b..11c71c4cc6b455ef9cf38f88a196d92c6913be4c 100644 (file)
@@ -388,6 +388,7 @@ main (int argc, char *argv[])
        int             hashtype = HASHTYPE_CRYPT;
        int             i, j;
        int             ldapport = 0;
+       int             debug = 0;
        int             scope = LDAP_SCOPE_SUBTREE;
        int             sizelimit = LDAP_NO_LIMIT;
        int             timelimit = LDAP_NO_LIMIT;
@@ -423,11 +424,7 @@ main (int argc, char *argv[])
                        break;
 
                case 'd':       /* debugging option */
-#ifdef LDAP_DEBUG
-                       ldap_debug = lber_debug = atoi (optarg);        /* */
-#else
-                       fprintf (stderr, "compile with -DLDAP_DEBUG for debugging\n");
-#endif
+                       debug |= atoi (optarg);
                        break;
 
                case 'E':       /* prompt for new password */
@@ -565,6 +562,11 @@ main (int argc, char *argv[])
                }
        }
 
+       if ( debug ) {
+               lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug );
+               ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug );
+       }
+
        /* connect to server */
        if ((ld = ldap_open (ldaphost, ldapport)) == NULL)
        {
@@ -576,6 +578,13 @@ main (int argc, char *argv[])
        ldap_set_option (ld, LDAP_OPT_TIMELIMIT, (void *)&timelimit);
        ldap_set_option (ld, LDAP_OPT_SIZELIMIT, (void *)&sizelimit);
 
+       /* this seems prudent */
+       {
+               int deref = LDAP_DEREF_NEVER;
+               ldap_set_option( ld, LDAP_OPT_DEREF, &deref);
+       }
+
+
        /* authenticate to server */
        if (ldap_bind_s (ld, binddn, bindpw, authmethod) != LDAP_SUCCESS)
        {
index f6014767964a73340c30326bd2ba6dc42eacb552..7d6d118fd51bb2ed6521189b9912129ab5203be0 100644 (file)
@@ -87,14 +87,15 @@ main( int argc, char **argv )
     char               *infile, *filtpattern, **attrs, line[ BUFSIZ ];
     FILE               *fp;
     int                        rc, i, first, scope, deref, attrsonly;
-    int                        referrals, timelimit, sizelimit, authmethod, want_bindpw;
+    int                        referrals, timelimit, sizelimit, debug;
+       int                     authmethod, want_bindpw;
     LDAP               *ld;
 
     infile = NULL;
     deref = verbose = allow_binary = not = vals2tmp =
            attrsonly = ldif = want_bindpw = 0;
     referrals = (int) LDAP_OPT_ON;
-    sizelimit = timelimit = 0;
+    sizelimit = timelimit = debug = 0;
     scope = LDAP_SCOPE_SUBTREE;
     authmethod = LDAP_AUTH_SIMPLE;
 
@@ -107,11 +108,7 @@ main( int argc, char **argv )
            ++verbose;
            break;
        case 'd':
-#ifdef LDAP_DEBUG
-           ldap_debug = lber_debug = atoi( optarg );   /* */
-#else /* LDAP_DEBUG */
-           fprintf( stderr, "compile with -DLDAP_DEBUG for debugging\n" );
-#endif /* LDAP_DEBUG */
+           debug |= atoi( optarg );
            break;
        case 'k':       /* use kerberos bind */
 #ifdef HAVE_KERBEROS
@@ -247,6 +244,12 @@ main( int argc, char **argv )
        printf( "ldap_open( %s, %d )\n", ldaphost, ldapport );
     }
 
+       if ( debug ) {
+               lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug );
+               ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug );
+               ldif_debug = debug;
+       }
+
     if (( ld = ldap_open( ldaphost, ldapport )) == NULL ) {
        perror( ldaphost );
        exit( 1 );
index 79fab94ff04f5818d3cdf5f2dbaa02f31e9510f0..956ef1be6feb470cebadd372595003c56c78ef93 100644 (file)
@@ -81,6 +81,7 @@ LDAPFiltDesc *lfdp;           /* LDAP filter descriptor */
 #ifdef DEBUG
 int debug;                     /* debug flag */
 #endif
+int ldebug;                    /* library debug flag */
 
 
 int
@@ -95,14 +96,11 @@ main( int argc, char **argv )
        while ((c = getopt(argc, argv, "c:d:Df:l:p:s:u:vV")) != -1) {
                switch (c) {
                case 'l' :
-#ifdef LDAP_DEBUG
-                       ldap_debug = (int) strtol(optarg, (char **) NULL, 0);
-                       lber_debug = ldap_debug;
-#endif
+                       ldebug |= (int) strtol(optarg, (char **) NULL, 0);
                        break;
                case 'd' :
 #ifdef DEBUG
-                       debug = (int) strtol(optarg, (char **) NULL, 0);
+                       debug |= (int) strtol(optarg, (char **) NULL, 0);
 #endif
                        break;
                case 's' :
@@ -549,6 +547,12 @@ initialize_client( void )
        if (debug & D_TRACE)
                printf("->initialize_client()\n");
 #endif
+
+       if (ldebug) {
+               lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldebug);
+               ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldebug);
+       }
+
        /*
         *  A per-user config file has precedence over any system-wide
         *  config file, if one exists.
index d0cedc76e997f266b6324e9484e5d92428ad8f50..8ff7e9f9af409ee975415347b633fb30841812bc 100644 (file)
@@ -42,7 +42,6 @@ OL_ARG_ENABLE(debug,[  --enable-debug         enable debugging], yes)dnl
 ol_enable_syslog=no
 dnl OL_ARG_ENABLE(syslog,[  --enable-syslog    enable syslog support], auto)dnl
 OL_ARG_ENABLE(proctitle,[  --enable-proctitle  enable proctitle support], yes)dnl
-OL_ARG_ENABLE(libui,[  --enable-libui  enable library user interface], yes)dnl
 OL_ARG_ENABLE(cache,[  --enable-cache  enable caching], yes)dnl
 OL_ARG_ENABLE(dns,[  --enable-dns              enable V2 DNS  extension], no)dnl
 OL_ARG_ENABLE(referrals,[  --enable-referrals  enable V2 Referrals extension], yes)dnl
index a70b5bdb4609454197e2df7a185dab3efb5fa281..fde20127cd3f781df9a288b2757bbd2f04962174 100644 (file)
@@ -40,6 +40,7 @@ Modify libraries to use application specified logging routines
 Modify libraries to use application specified memory allocation routines
 Extend configure.in to support autodetect of ISODE features.
 Port slurpd to NT
+Update manual page
 
 
 Small projects
index e885337a38ad6b1d907a6d757c464cf28d96572d..025aba5c14803cb292f3c1562ab44821ef97e8cd 100644 (file)
@@ -10,23 +10,13 @@ ber_get_next, ber_skiptag, ber_peek_tag, ber_scanf, ber_get_int, ber_get_stringb
 .LP
 .nf
 .ft B
-typedef struct berelement {
-    char *ber_buf;
-    char *ber_ptr;
-    char *ber_end;
-    struct seqorset *ber_sos;
-    int ber_tag;
-    int ber_usertag;
-} BerElement;
+typedef struct berelement BerElement;
 .ft
 .fi
 .LP
 .nf
 .ft B
-typedef struct sockbuf {
-    int sb_sd;
-    BerElement sb_ber;
-} Sockbuf;
+typedef struct sockbuf Sockbuf;
 .ft
 .fi
 .LP
diff --git a/doc/man/man3/lber-decode.3.links b/doc/man/man3/lber-decode.3.links
new file mode 100644 (file)
index 0000000..8d43e71
--- /dev/null
@@ -0,0 +1,12 @@
+ber_get_next.3
+ber_skip_tag.3
+ber_peek_tag.3
+ber_scanf.3
+ber_get_int.3
+ber_get_stringa.3
+ber_get_stringb.3
+ber_get_null.3
+ber_get_boolean.3
+ber_get_bitstring.3
+ber_first_element.3
+ber_next_element.3
index 7d6806b245b1f6ccdfdd3a857138709e23fddde6..f33fe2d2c885ee9082f29d6c54df9f0d6653eb1c 100644 (file)
@@ -10,23 +10,13 @@ ber_alloc, ber_flush, ber_printf, ber_put_int, ber_put_ostring, ber_put_string,
 .LP
 .nf
 .ft B
-typedef struct berelement {
-    char *ber_buf;
-    char *ber_ptr;
-    char *ber_end;
-    struct seqorset *ber_sos;
-    int ber_tag;
-    int ber_usertag;
-} BerElement;
+typedef struct berelement BerElement;
 .ft
 .fi
 .LP
 .nf
 .ft B
-typedef struct sockbuf {
-    int sb_sd;
-    BerElement sb_ber;
-} Sockbuf;
+typedef struct sockbuf Sockbuf;
 .ft
 .fi
 .LP
diff --git a/doc/man/man3/lber-encode.3.links b/doc/man/man3/lber-encode.3.links
new file mode 100644 (file)
index 0000000..e1fef9a
--- /dev/null
@@ -0,0 +1,10 @@
+ber_alloc.3
+ber_flush.3
+ber_printf.3
+ber_put_int.3
+ber_put_ostring.3
+ber_put_string.3
+ber_put_null.3
+ber_start_set.3
+ber_put_seq.3
+ber_put_set.3
index 559f43b9e98e3715bcc236300e355265892f8080..ea96bd654d95dab96673450cdea118bc50bec19a 100644 (file)
@@ -55,33 +55,42 @@ LDAP_BEGIN_DECL
 #define OLD_LBER_SEQUENCE      0x10L   /* w/o constructed bit - broken */
 #define OLD_LBER_SET           0x11L   /* w/o constructed bit - broken */
 
-/* get/set options for BerElement */
-#define LBER_SOCKBUF_OPT_TO_FILE                               0x01
-#define LBER_SOCKBUF_OPT_TO_FILE_ONLY                  0x02
-#define        LBER_SOCKBUF_OPT_TO_MAX_INCOMING_SIZE   0x04
-#define LBER_SOCKBUF_OPT_TO_NO_READ_AHEAD              0x08
-#define LBER_SOCKBUF_OPT_TO_DESC                               0x10
-#define        LBER_SOCKBUF_OPT_TO_COPYDESC                    0x20
-#define LBER_SOCKBUF_OPT_TO_READFN                             0x40
-#define LBER_SOCKBUF_OPT_TO_WRITE_FN                   0x80
-
-/* LBER on/off values */
-#define LBER_OPT_ON ((void *) 1)
-#define LBER_OPT_OFF ((void *) 0)
-
 typedef int (*BERTranslateProc) LDAP_P(( char **bufp,
        unsigned long *buflenp,
        int free_input ));
 
+/* LBER BerElement options */
 #define LBER_USE_DER           0x01
 #define LBER_USE_INDEFINITE_LEN        0x02
 #define LBER_TRANSLATE_STRINGS 0x04
 
+/* get/set options for BerElement */
+#define LBER_OPT_BER_OPTIONS   0x01
+#define LBER_OPT_BER_DEBUG             0x02
+#define LBER_OPT_DEBUG_LEVEL   LBER_OPT_BER_DEBUG
+
+/* LBER Sockbuf options */ 
+#define LBER_TO_FILE           0x01    /* to a file referenced by sb_fd   */
+#define LBER_TO_FILE_ONLY      0x02    /* only write to file, not network */
+#define LBER_MAX_INCOMING_SIZE 0x04    /* impose limit on incoming stuff  */
+#define LBER_NO_READ_AHEAD     0x08    /* read only as much as requested  */
+
+/* get/set options for Sockbuf */
+#define LBER_OPT_SOCKBUF_DESC          0x1000
+#define LBER_OPT_SOCKBUF_OPTIONS       0x1001
+#define LBER_OPT_SOCKBUF_DEBUG         0x1002
+
+/* on/off values */
+#define LBER_OPT_ON            ((void *) 1)
+#define LBER_OPT_OFF   ((void *) 0)
+
+#define LBER_OPT_SUCCESS       0
+#define LBER_OPT_ERROR         (-1)
+
 typedef struct berelement BerElement;
 #define NULLBER        ((BerElement *) 0)
 
 typedef struct sockbuf Sockbuf;
-#define READBUFSIZ     8192
 
 typedef struct seqorset Seqorset;
 #define NULLSEQORSET ((Seqorset *) 0)
@@ -92,16 +101,16 @@ struct berval {
        char            *bv_val;
 };
 
-#ifdef LDAP_DEBUG
-extern int lber_debug;
-#endif
-
 /*
  * in bprint.c:
  */
 LDAP_F void ber_print_error LDAP_P(( char *data ));
 LDAP_F void ber_bprint LDAP_P(( char *data, int len ));
-#define lber_bprint(d,l)       ber_bprint((d),(l))
+#define lber_bprint(d,l)       ber_bprint((d),(l))
+
+LDAP_F void ber_dump LDAP_P(( BerElement *ber, int inout ));
+LDAP_F void ber_sos_dump LDAP_P(( Seqorset *sos ));
+
 
 /*
  * in decode.c:
@@ -160,19 +169,33 @@ LDAP_F BerElement *ber_alloc LDAP_P(( void ));
 LDAP_F BerElement *der_alloc LDAP_P(( void ));
 LDAP_F BerElement *ber_alloc_t LDAP_P(( int options ));
 LDAP_F BerElement *ber_dup LDAP_P(( BerElement *ber ));
-LDAP_F void ber_dump LDAP_P(( BerElement *ber, int inout ));
-LDAP_F void ber_sos_dump LDAP_P(( Seqorset *sos ));
 LDAP_F unsigned long ber_get_next LDAP_P(( Sockbuf *sb, unsigned long *len,
        BerElement *ber ));
 LDAP_F void ber_init_w_nullc LDAP_P(( BerElement *ber, int options ));
 LDAP_F void ber_reset LDAP_P(( BerElement *ber, int was_writing ));
 
 /*
- * LDAP draft-ietf-ldapext-ldap-c-api-01 routines
+ * LBER draft-ietf-ldapext-ldap-c-api-01 routines
  */
 LDAP_F BerElement *ber_init LDAP_P(( struct berval *bv ));
 LDAP_F int ber_flatten LDAP_P(( BerElement *ber, struct berval **bvPtr ));
 
+/*
+ * LBER ber accessor functions
+ */
+LDAP_F int
+lber_get_option LDAP_P((void *item, int option, void *outvalue));
+
+LDAP_F int
+lber_set_option LDAP_P((void *item, int option, void *invalue));
+
+/*
+ * LBER Sockbuf functions
+ */
+LDAP_F Sockbuf *lber_sockbuf_alloc LDAP_P((void));
+LDAP_F Sockbuf *lber_sockbuf_alloc_fd LDAP_P((int fd));
+LDAP_F void lber_sockbuf_free LDAP_P((Sockbuf *sb));
+
 LDAP_END_DECL
 
 #endif /* _LBER_H */
index cf04a6e7ab4df0593fbac32e1a9187c70a97e874..ce9a1941f902f6c433757ee64d5a5cecf92d5f6e 100644 (file)
@@ -85,6 +85,9 @@ LDAP_BEGIN_DECL
 /*     for LDAPv2 compatibility */
 #define LDAP_OPT_DNS                           0x1001  /* use DN & DNS */
 
+/* OpenLDAP specific options */
+#define LDAP_OPT_DEBUG_LEVEL           0x4001  /* OpenLDAP - debug level */
+
 /* on/off values */
 #define LDAP_OPT_ON            ((void *) 1)
 #define LDAP_OPT_OFF   ((void *) 0)
@@ -92,10 +95,6 @@ LDAP_BEGIN_DECL
 #define LDAP_OPT_SUCCESS       0
 #define        LDAP_OPT_ERROR          (-1)
 
-#ifdef LDAP_DEBUG
-extern int ldap_debug;
-#endif
-
 #define LDAP_API_INFO_VERSION  1
 typedef struct ldapapiinfo {
        int             ldapai_info_version;            /* version of LDAPAPIInfo (1) */
index 08dab9cd081b230bacebbf1c5df62ac31317a16b..d368b8f6a0c39add2b09ba00243af062e8f4fc29 100644 (file)
@@ -19,25 +19,31 @@ LDAP_BEGIN_DECL
 
 /* debugging stuff */
 #ifdef LDAP_DEBUG
+
+#ifndef ldap_debug
 extern int     ldap_debug;
+#endif /* !ldap_debug */
+
 #ifdef LDAP_SYSLOG
 extern int     ldap_syslog;
 extern int     ldap_syslog_level;
 #endif /* LDAP_SYSLOG */
 
-#define LDAP_DEBUG_TRACE       0x001
-#define LDAP_DEBUG_PACKETS     0x002
-#define LDAP_DEBUG_ARGS                0x004
-#define LDAP_DEBUG_CONNS       0x008
-#define LDAP_DEBUG_BER         0x010
-#define LDAP_DEBUG_FILTER      0x020
-#define LDAP_DEBUG_CONFIG      0x040
-#define LDAP_DEBUG_ACL         0x080
-#define LDAP_DEBUG_STATS       0x100
-#define LDAP_DEBUG_STATS2      0x200
-#define LDAP_DEBUG_SHELL       0x400
-#define LDAP_DEBUG_PARSE       0x800
-#define LDAP_DEBUG_ANY         0xffff
+#define LDAP_DEBUG_TRACE       0x0001
+#define LDAP_DEBUG_PACKETS     0x0002
+#define LDAP_DEBUG_ARGS                0x0004
+#define LDAP_DEBUG_CONNS       0x0008
+#define LDAP_DEBUG_BER         0x0010
+#define LDAP_DEBUG_FILTER      0x0020
+#define LDAP_DEBUG_CONFIG      0x0040
+#define LDAP_DEBUG_ACL         0x0080
+#define LDAP_DEBUG_STATS       0x0100
+#define LDAP_DEBUG_STATS2      0x0200
+#define LDAP_DEBUG_SHELL       0x0400
+#define LDAP_DEBUG_PARSE       0x0800
+
+#define LDAP_DEBUG_NONE                0x8000
+#define LDAP_DEBUG_ANY         -1
 
 /* this doesn't below as part of ldap.h */
 #ifdef LDAP_SYSLOG
index d89b7da8cc295c7332eaf1b9655163a81063f2cc..3a2aad4027e00bcb8433afb60c1f9e2eb763d0bc 100644 (file)
@@ -17,6 +17,8 @@
 
 LDAP_BEGIN_DECL
 
+extern int ldif_debug;
+
 #define LINE_WIDTH      76      /* maximum length of LDIF lines */
 
 /*
index 1c0bfcb79b7a9339ba346e2b2038950150c7561b..4cd14eef67dbcb3a8751f661e4a0e42900228ca3 100644 (file)
@@ -5,8 +5,8 @@
 LIBRARY = liblber.la
 XLIBRARY = ../liblber.a
 
-SRCS= decode.c encode.c io.c bprint.c
-OBJS= decode.lo encode.lo io.lo bprint.lo
+SRCS= decode.c encode.c io.c bprint.c options.c
+OBJS= decode.lo encode.lo io.lo bprint.lo options.lo
 XSRCS= version.c
 
 PROGRAMS= dtest etest idtest
index 099c61bbe8e117890aed3fa46abb73263cc07feb..6c59c3a6778427e77a0564c25eccca67d8d164b8 100644 (file)
@@ -3,9 +3,8 @@
 
 #include <stdio.h>
 
-#if defined( LDAP_DEBUG ) && defined( LDAP_LIBUI )
 #include <ac/ctype.h>
-#endif /* LDAP_DEBUG && LDAP_LIBUI  */
+#include <ac/stdarg.h>
 #include <ac/string.h>
 
 #include "lber-int.h"
 /*
  * Print stuff
  */
-void
-ber_print_error( char *data)
+static void
+lber_print_error( char *data )
 {
        fputs( data, stderr );
        fflush( stderr );
 }
 
+/*
+ * lber log 
+ */
+
+static int lber_log_check( int errlvl, int loglvl )
+{
+       return errlvl & loglvl ? 1 : 0;
+}
+
+int lber_log_printf
+#ifdef HAVE_STDARG
+       (int errlvl, int loglvl, char *fmt, ...)
+#else
+       ( va_alist )
+va_dcl
+#endif
+{
+       char buf[ 1024 ];
+       va_list ap;
+
+#ifdef HAVE_STDARG
+       va_start( ap, fmt );
+#else
+       int errlvl, loglvl;
+       char *fmt;
+
+       va_start( ap );
+
+       errlvl = va_arg( ap, int );
+       loglvl = va_arg( ap, int );
+       fmt = va_arg( ap, char * );
+#endif
+
+       if ( !lber_log_check( errlvl, loglvl )) {
+               return 0;
+       }
+
+#ifdef HAVE_VSNPRINTF
+       buf[sizeof(buf) - 1] = '\0';
+       vsnprintf( buf, sizeof(buf)-1, fmt, ap );
+#elif
+       vsprintf( buf, fmt, ap ); /* hope it's not too long */
+#else
+       /* use doprnt() */
+       chokeme = "choke me! I don't have a doprnt manual handy!";
+#endif
+
+       va_end(ap);
+
+       lber_print_error( buf );
+       return 1;
+}
+
+static int lber_log_puts(int errlvl, int loglvl, char *buf)
+{
+       if ( !lber_log_check( errlvl, loglvl )) {
+               return 0;
+       }
+
+       lber_print_error( buf );
+       return 1;
+}
+
 /*
  * Print arbitrary stuff, for debugging.
  */
 
-void
-ber_bprint( char *data, int len )
+int
+lber_log_bprint(int errlvl, int loglvl, char *data, int len )
 {
-#if defined( LDAP_DEBUG ) && defined( LDAP_LIBUI )
-#define BPLEN  48
+       if ( !lber_log_check( errlvl, loglvl )) {
+               return 0;
+       }
 
+       ber_bprint(data, len);
+       return 1;
+}
+
+void
+ber_bprint(char *data, int len )
+{
     static char        hexdig[] = "0123456789abcdef";
+#define BPLEN  48
     char       out[ BPLEN ];
+    char       buf[ BPLEN + sizeof("\t%s\n") ];
     int                i = 0;
 
     memset( out, 0, BPLEN );
     for ( ;; ) {
        if ( len < 1 ) {
-           fprintf( stderr, "\t%s\n", ( i == 0 ) ? "(end)" : out );
+           sprintf( buf, "\t%s\n", ( i == 0 ) ? "(end)" : out );
+               lber_print_error( buf );
            break;
        }
 
-#ifndef HEX
+#ifndef LDAP_HEX
        if ( isgraph( (unsigned char)*data )) {
            out[ i ] = ' ';
            out[ i+1 ] = *data;
@@ -49,7 +122,7 @@ ber_bprint( char *data, int len )
 #endif
            out[ i ] = hexdig[ ( *data & 0xf0 ) >> 4 ];
            out[ i+1 ] = hexdig[ *data & 0x0f ];
-#ifndef HEX
+#ifndef LDAP_HEX
        }
 #endif
        i += 2;
@@ -59,14 +132,83 @@ ber_bprint( char *data, int len )
        if ( i > BPLEN - 2 ) {
                char data[128 + BPLEN];
            sprintf( data, "\t%s\n", out );
-               ber_print_error(data);
+               lber_print_error(data);
            memset( out, 0, BPLEN );
            i = 0;
            continue;
        }
        out[ i++ ] = ' ';
     }
+}
+
+int
+lber_log_dump( int errlvl, int loglvl, BerElement *ber, int inout )
+{
+       if ( !lber_log_check( errlvl, loglvl )) {
+               return 0;
+       }
+
+       ber_dump(ber, inout);
+       return 1;
+}
+
+void
+ber_dump( BerElement *ber, int inout )
+{
+       char buf[132];
+
+       sprintf( buf, "ber_dump: buf 0x%lx, ptr 0x%lx, end 0x%lx\n",
+           (long) ber->ber_buf,
+               (long) ber->ber_ptr,
+               (long) ber->ber_end );
+
+       lber_print_error( buf );
+
+       if ( inout == 1 ) {
+               sprintf( buf, "          current len %ld, contents:\n",
+                   (long) (ber->ber_end - ber->ber_ptr) );
+               ber_bprint( ber->ber_ptr, ber->ber_end - ber->ber_ptr );
+
+       } else {
+               sprintf( buf, "          current len %ld, contents:\n",
+                   (long) (ber->ber_ptr - ber->ber_buf) );
+
+               ber_bprint( ber->ber_buf, ber->ber_ptr - ber->ber_buf );
+       }
+}
+
+int
+lber_log_sos_dump( int errlvl, int loglvl, Seqorset *sos )
+{
+       if ( !lber_log_check( errlvl, loglvl )) {
+               return 0;
+       }
+
+       ber_sos_dump( sos );
+       return 1;
+}
+
+void
+ber_sos_dump( Seqorset *sos )
+{
+       char buf[132];
+
+       lber_print_error( "*** sos dump ***\n" );
+
+       while ( sos != NULLSEQORSET ) {
+               sprintf( buf, "ber_sos_dump: clen %ld first 0x%lx ptr 0x%lx\n",
+                   (long) sos->sos_clen, (long) sos->sos_first, (long) sos->sos_ptr );
+               lber_print_error( buf );
+
+               sprintf( buf, "              current len %ld contents:\n",
+                   (long) (sos->sos_ptr - sos->sos_first) );
+               lber_print_error( buf );
+
+               ber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first );
+
+               sos = sos->sos_next;
+       }
 
-#endif /* LDAP_DEBUG && LDAP_LIBUI  */
+       lber_print_error( "*** end dump ***\n" );
 }
 
index 4a15d47a38b111f326ce57f37defedb8b97a4934..3b376d7cb6fb97c99cfc9c6ae2acc870ae6a4fd4 100644 (file)
 
 #include "lber-int.h"
 
-#ifdef LDAP_DEBUG
-int    lber_debug;
-#endif
-
 static int ber_getnint LDAP_P(( BerElement *ber, long *num, int len ));
 
 /* return the tag - LBER_DEFAULT returned means trouble */
@@ -398,12 +394,11 @@ va_dcl
        fmt = va_arg( ap, char * );
 #endif
 
-#ifdef LDAP_DEBUG
-       if ( lber_debug & 64 ) {
-               fprintf( stderr, "ber_scanf fmt (%s) ber:\n", fmt );
-               ber_dump( ber, 1 );
+       if ( ber->ber_debug ) {
+               lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
+                       "ber_scanf fmt (%s) ber:\n", fmt );
+               lber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );
        }
-#endif
 
        for ( rc = 0; *fmt && rc != LBER_DEFAULT; fmt++ ) {
                switch ( *fmt ) {
@@ -548,9 +543,10 @@ va_dcl
                        break;
 
                default:
-#ifdef LDAP_LIBUI
-                       fprintf( stderr, "unknown fmt %c\n", *fmt );
-#endif /* LDAP_LIBUI */
+                       if( ber->ber_debug ) {
+                               lber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug,
+                                       "ber_scanf: unknown fmt %c\n", *fmt );
+                       }
                        rc = LBER_DEFAULT;
                        break;
                }
index a03bb626afe5036b357959f95a483621444e4338..c6b063e74a9381f27651d992d1ea8fb10e993d7b 100644 (file)
@@ -24,7 +24,7 @@
 #include <console.h>
 #endif /* MACOS */
 
-#include "lber-int.h"
+#include <lber.h>
 
 static void usage( char *name )
 {
@@ -37,29 +37,33 @@ main( int argc, char **argv )
        long            i;
        unsigned long   len;
        int             tag;
-       BerElement      ber;
-       Sockbuf         sb;
+       BerElement      *ber;
+       Sockbuf         *sb;
 
 #ifdef HAVE_CONSOLE_H
        ccommand( &argv );
        cshow( stdout );
 #endif /* MACOS */
 
-       memset( &sb, 0, sizeof(sb) );
-       sb.sb_sd = 0;
-       sb.sb_ber.ber_buf = NULL;
+       sb = lber_sockbuf_alloc_fd( fileno(stdin) );
 
-       if ( (tag = ber_get_next( &sb, &len, &ber )) == -1 ) {
+       if( (ber = ber_alloc_t(LBER_USE_DER)) == NULL ) {
+               perror( "ber_alloc_t" );
+               exit( 1 );
+       }
+
+       if ( (tag = ber_get_next( sb, &len, ber )) == -1 ) {
                perror( "ber_get_next" );
                exit( 1 );
        }
        printf( "message has tag 0x%x and length %ld\n", tag, len );
 
-       if ( ber_scanf( &ber, "i", &i ) == -1 ) {
+       if ( ber_scanf( ber, "i", &i ) == -1 ) {
                fprintf( stderr, "ber_scanf returns -1\n" );
                exit( 1 );
        }
        printf( "got int %ld\n", i );
 
+       lber_sockbuf_free( sb );
        return( 0 );
 }
index 37a0a4497195c686113cdfceef19e2b434a932d3..4f2b738365dfbfbfb7dfee22e3812fe9c7e40cfa 100644 (file)
@@ -609,9 +609,10 @@ va_dcl
                        break;
 
                default:
-#ifdef LDAP_LIBUI
-                       fprintf( stderr, "unknown fmt %c\n", *fmt );
-#endif /* LDAP_LIBUI */
+                       if( ber->ber_debug ) {
+                               lber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug,
+                                       "ber_printf: unknown fmt %c\n", *fmt );
+                       }
                        rc = -1;
                        break;
                }
index 6c407ddb59b0317ab06ffe11dd8d52d383d0b7e8..266262cd0b146eef8312457dc5b4eb3cf4cd22aa 100644 (file)
@@ -16,7 +16,7 @@
 #include <console.h>
 #endif /* HAVE_CONSOLE_H */
 
-#include "lber-int.h"
+#include <lber.h>
 
 static void usage( char *name )
 {
@@ -30,31 +30,32 @@ main( int argc, char **argv )
        int             i, len;
        char    *s, *p;
 #endif
-       int             num;
+       int                     fd, num;
        Seqorset        *sos = NULLSEQORSET;
        BerElement      *ber;
-       Sockbuf         sb;
+       Sockbuf         *sb;
 
        if ( argc < 2 ) {
                usage( argv[0] );
                exit( 1 );
        }
 
-       memset( &sb, 0, sizeof(sb) );
-       sb.sb_sd = 1;
-       sb.sb_ber.ber_buf = NULL;
 
 #ifdef HAVE_CONSOLE_H
        ccommand( &argv );
        cshow( stdout );
 
-       if (( sb.sb_sd = open( "lber-test", O_WRONLY|O_CREAT|O_TRUNC|O_BINARY ))
+       if (( fd = open( "lber-test", O_WRONLY|O_CREAT|O_TRUNC|O_BINARY ))
                < 0 ) {
            perror( "open" );
            exit( 1 );
        }
+#else
+       fd = fileno(stdout);
 #endif /* MACOS */
 
+       sb = lber_sockbuf_alloc_fd( fd );
+
        if ( (ber = ber_alloc()) == NULLBER ) {
                perror( "ber_alloc" );
                exit( 1 );
@@ -66,7 +67,7 @@ main( int argc, char **argv )
                exit( 1 );
        }
 
-       if ( ber_flush( &sb, ber, 1 ) == -1 ) {
+       if ( ber_flush( sb, ber, 1 ) == -1 ) {
                perror( "ber_flush" );
                exit( 1 );
        }
@@ -166,5 +167,6 @@ main( int argc, char **argv )
 
 #endif
 
+       lber_sockbuf_free( sb );
        return( 0 );
 }
index d54047750dbdc45a3c21b2c449a8771383bff64b..968e635b4e036e0625b516dfaf71326a86e61e88 100644 (file)
@@ -124,14 +124,15 @@ ber_filbuf( Sockbuf *sb, long len )
        if ( sb->sb_naddr > 0 ) {
 #ifdef LDAP_CONNECTIONLESS
                rc = udp_read(sb, sb->sb_ber.ber_buf, READBUFSIZ, addrlen );
-#ifdef LDAP_DEBUG
-               if ( lber_debug ) {
-                       fprintf( stderr, "ber_filbuf udp_read %d bytes\n",
-                               rc );
-                       if ( lber_debug > 1 && rc > 0 )
-                               lber_bprint( sb->sb_ber.ber_buf, rc );
+
+               if ( sb->sb_debug ) {
+                       lber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug,
+                               "ber_filbuf udp_read %d bytes\n",
+                                       rc );
+                       if ( rc > 0 )
+                               lber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug,
+                                       sb->sb_ber.ber_buf, rc );
                }
-#endif /* LDAP_DEBUG */
 #else /* LDAP_CONNECTIONLESS */
                rc = -1;
 #endif /* LDAP_CONNECTIONLESS */
@@ -272,15 +273,15 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
        }
        towrite = ber->ber_ptr - ber->ber_rwptr;
 
-#ifdef LDAP_DEBUG
-       if ( lber_debug ) {
-               fprintf( stderr, "ber_flush: %ld bytes to sd %ld%s\n", towrite,
+       if ( sb->sb_debug ) {
+               lber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug,
+                       "ber_flush: %ld bytes to sd %ld%s\n", towrite,
                    (long) sb->sb_sd, ber->ber_rwptr != ber->ber_buf ? " (re-flush)"
                    : "" );
-               if ( lber_debug > 1 )
-                       lber_bprint( ber->ber_rwptr, towrite );
+               lber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug,
+                       ber->ber_rwptr, towrite );
        }
-#endif
+
 #if !defined(MACOS) && !defined(DOS)
        if ( sb->sb_options & (LBER_TO_FILE | LBER_TO_FILE_ONLY) ) {
                rc = write( sb->sb_fd, ber->ber_buf, towrite );
@@ -334,7 +335,8 @@ ber_alloc_t( int options )
        if ( (ber = (BerElement *) calloc( 1, sizeof(BerElement) )) == NULLBER )
                return( NULLBER );
        ber->ber_tag = LBER_DEFAULT;
-       ber->ber_options = (char) options;
+       ber->ber_options = options;
+       ber->ber_debug = lber_int_debug;
 
        return( ber );
 }
@@ -461,45 +463,6 @@ ber_reset( BerElement *ber, int was_writing )
        ber->ber_rwptr = NULL;
 }
 
-
-#ifdef LDAP_DEBUG
-
-void
-ber_dump( BerElement *ber, int inout )
-{
-       fprintf( stderr, "ber_dump: buf 0x%lx, ptr 0x%lx, end 0x%lx\n",
-           (long) ber->ber_buf,
-               (long) ber->ber_ptr,
-               (long) ber->ber_end );
-       if ( inout == 1 ) {
-               fprintf( stderr, "          current len %ld, contents:\n",
-                   (long) (ber->ber_end - ber->ber_ptr) );
-               lber_bprint( ber->ber_ptr, ber->ber_end - ber->ber_ptr );
-       } else {
-               fprintf( stderr, "          current len %ld, contents:\n",
-                   (long) (ber->ber_ptr - ber->ber_buf) );
-               lber_bprint( ber->ber_buf, ber->ber_ptr - ber->ber_buf );
-       }
-}
-
-void
-ber_sos_dump( Seqorset *sos )
-{
-       fprintf( stderr, "*** sos dump ***\n" );
-       while ( sos != NULLSEQORSET ) {
-               fprintf( stderr, "ber_sos_dump: clen %ld first 0x%lx ptr 0x%lx\n",
-                   (long) sos->sos_clen, (long) sos->sos_first, (long) sos->sos_ptr );
-               fprintf( stderr, "              current len %ld contents:\n",
-                   (long) (sos->sos_ptr - sos->sos_first) );
-               lber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first );
-
-               sos = sos->sos_next;
-       }
-       fprintf( stderr, "*** end dump ***\n" );
-}
-
-#endif
-
 /* return the tag - LBER_DEFAULT returned means trouble */
 static unsigned long
 get_tag( Sockbuf *sb )
@@ -544,10 +507,10 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber )
        long            noctets;
        unsigned int    diff;
 
-#ifdef LDAP_DEBUG
-       if ( lber_debug )
-               fprintf( stderr, "ber_get_next\n" );
-#endif
+       if ( ber->ber_debug ) {
+               lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
+                       "ber_get_next\n" );
+       }
 
        /*
         * Any ber element looks like this: tag length contents.
@@ -638,16 +601,47 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber )
                ber->ber_rwptr += rc;
        } while ( toread > 0 );
 
-#ifdef LDAP_DEBUG
-       if ( lber_debug ) {
-               fprintf( stderr, "ber_get_next: tag 0x%lx len %ld contents:\n",
+       if ( ber->ber_debug ) {
+               lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,
+                       "ber_get_next: tag 0x%lx len %ld contents:\n",
                    tag, ber->ber_len );
-               if ( lber_debug > 1 )
-                       ber_dump( ber, 1 );
+
+               lber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 );
        }
-#endif
 
        *len = ber->ber_len;
        ber->ber_rwptr = NULL;
        return( ber->ber_tag );
 }
+
+Sockbuf *lber_sockbuf_alloc( void )
+{
+       Sockbuf *sb = calloc(1, sizeof(Sockbuf));
+       sb->sb_debug = lber_int_debug;
+       return sb;
+}
+
+Sockbuf *lber_sockbuf_alloc_fd( int fd )
+{
+       Sockbuf *sb = lber_sockbuf_alloc();
+       sb->sb_sd = fd;
+
+       return sb;
+}
+
+void lber_sockbuf_free( Sockbuf *sb )
+{
+       if(sb == NULL) return;
+
+       free(sb);
+}
+
+int lber_sockbuf_get_option( Sockbuf *sb, int opt, void *outvalue )
+{
+       return LBER_OPT_ERROR;
+}
+
+int lber_sockbuf_set_option( Sockbuf *sb, int opt, void *invalue )
+{
+       return LBER_OPT_ERROR;
+}
index 66e5084d843de9d8df7841d64f3e908fbeb6905e..81def4b97455d8efc3db2e87ca244a71af1f49f2 100644 (file)
 #define _LBER_INT_H
 
 #include "lber.h"
+#include "ldap_log.h"
 
 LDAP_BEGIN_DECL
 
+#define LBER_ITEM_BERELEMENT 1
+#define LBER_ITEM_SOCKBUF 2
+
+extern int lber_int_debug;
+
 struct berelement {
+       short           ber_item_type;  /* always LBER_ITEM_BERELEMENT */
+       short           ber_options;
+       int                     ber_debug;
+
+       int                     ber_usertag;
+
+       unsigned long   ber_tag;
+       unsigned long   ber_len;
+
        char            *ber_buf;
        char            *ber_ptr;
        char            *ber_end;
+
        struct seqorset *ber_sos;
-       unsigned long   ber_tag;
-       unsigned long   ber_len;
-       int             ber_usertag;
-       char            ber_options;
-#define LBER_USE_DER           0x01
-#define LBER_USE_INDEFINITE_LEN        0x02
-#define LBER_TRANSLATE_STRINGS 0x04
        char            *ber_rwptr;
        BERTranslateProc ber_encode_translate_proc;
        BERTranslateProc ber_decode_translate_proc;
@@ -36,26 +45,26 @@ struct berelement {
 #define NULLBER        ((BerElement *) 0)
 
 struct sockbuf {
+       short           sb_item_type;   /* always LBER_ITEM_SOCKBUF */
+       short           sb_options;     /* to support copying ber elements */
+       int                     sb_debug;
+
+       int                     sb_fd;
 #ifndef MACOS
        int             sb_sd;
 #else /* MACOS */
        void            *sb_sd;
 #endif /* MACOS */
+
+       long            sb_max_incoming;
+
        BerElement      sb_ber;
 
-       int             sb_naddr;       /* > 0 implies using CLDAP (UDP) */
+       int                     sb_naddr;       /* > 0 implies using CLDAP (UDP) */
        void            *sb_useaddr;    /* pointer to sockaddr to use next */
        void            *sb_fromaddr;   /* pointer to message source sockaddr */
        void            **sb_addrs;     /* actually an array of pointers to
                                                sockaddrs */
-
-       int             sb_options;     /* to support copying ber elements */
-#define LBER_TO_FILE           0x01    /* to a file referenced by sb_fd   */
-#define LBER_TO_FILE_ONLY      0x02    /* only write to file, not network */
-#define LBER_MAX_INCOMING_SIZE 0x04    /* impose limit on incoming stuff  */
-#define LBER_NO_READ_AHEAD     0x08    /* read only as much as requested  */
-       int             sb_fd;
-       long            sb_max_incoming;
 };
 #define READBUFSIZ     8192
 
@@ -69,4 +78,30 @@ struct seqorset {
 };
 #define NULLSEQORSET   ((Seqorset *) 0)
 
+/*
+ * bprint.c
+ */
+LDAP_F int lber_log_printf LDAP_P((
+       int errlvl,
+       int loglvl,
+       char *fmt,
+       ... ));
+
+LDAP_F int lber_log_bprint LDAP_P((
+       int errlvl,
+       int loglvl,
+       char *data,
+       int len ));
+
+LDAP_F int lber_log_dump LDAP_P((
+       int errlvl,
+       int loglvl,
+       BerElement *ber,
+       int inout ));
+
+LDAP_F int lber_log_sos_dump LDAP_P((
+       int errlvl,
+       int loglvl,
+       Seqorset *sos ));
+
 #endif /* _LBER_INT_H */
diff --git a/libraries/liblber/options.c b/libraries/liblber/options.c
new file mode 100644 (file)
index 0000000..c6e976c
--- /dev/null
@@ -0,0 +1,93 @@
+#include "portable.h"
+
+#include <stdlib.h>
+
+#include "lber-int.h"
+
+int lber_int_debug = 0;
+
+int
+lber_get_option(
+       void    *item,
+       int             option,
+       void    *outvalue)
+{
+       BerElement *ber;
+       Sockbuf *sb;
+
+       if(outvalue == NULL) {
+               /* no place to get to */
+               return LBER_OPT_ERROR;
+       }
+
+       if(item == NULL) {
+               if(option == LBER_OPT_BER_DEBUG) {
+                       * (int *) outvalue = lber_int_debug;
+                       return LBER_OPT_SUCCESS;
+               }
+
+               return LBER_OPT_ERROR;
+       }
+
+       ber = (BerElement *) item;
+       sb = (Sockbuf *) item;
+
+       switch(option) {
+       case LBER_OPT_BER_OPTIONS:
+               * (int *) outvalue = ber->ber_options;
+               return LBER_OPT_SUCCESS;
+
+       case LBER_OPT_BER_DEBUG:
+               * (int *) outvalue = ber->ber_debug;
+               return LBER_OPT_SUCCESS;
+
+       default:
+               /* bad param */
+               break;
+       }
+
+       return LBER_OPT_ERROR;
+}
+
+int
+lber_set_option(
+       void    *item,
+       int             option,
+       void    *invalue)
+{
+       BerElement *ber;
+       Sockbuf *sb;
+
+       if(invalue == NULL) {
+               /* no place to set from */
+               return LBER_OPT_ERROR;
+       }
+
+       if(item == NULL) {
+               if(option == LBER_OPT_BER_DEBUG) {
+                       lber_int_debug = * (int *) invalue;
+                       return LBER_OPT_SUCCESS;
+               }
+
+               return LBER_OPT_ERROR;
+       }
+
+       ber = (BerElement *) item;
+       sb = (Sockbuf *) item;
+
+       switch(option) {
+       case LBER_OPT_BER_OPTIONS:
+               ber->ber_options = * (int *) invalue;
+               return LBER_OPT_SUCCESS;
+
+       case LBER_OPT_BER_DEBUG:
+               ber->ber_debug = * (int *) invalue;
+               return LBER_OPT_SUCCESS;
+
+       default:
+               /* bad param */
+               break;
+       }
+
+       return LBER_OPT_ERROR;
+}
index 1ed8693a15b31a192e48c43dde9774a9318660ee..36e2a03447c898c2a1d1372f07725f5b194f032d 100644 (file)
@@ -487,7 +487,7 @@ cldap_parsemsg( LDAP *ld, int msgid, BerElement *ber,
        if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
            fprintf( stderr, "cldap_parsemsg add message id %d type %d:\n",
                    ldm->lm_msgid, ldm->lm_msgtype  );
-           ber_dump( ldm->lm_ber, 1 );
+           lber_log_dump( LDAP_DEBUG_BER, ldap_debug, ldm->lm_ber, 1 );
        }
 #endif /* LDAP_DEBUG */
 
index c79bdb93cfa3b9bdc77f9be3461842cff0ceeb85..13316a4d91498fde405071944c626f6f5ed22b9d 100644 (file)
@@ -286,6 +286,8 @@ void openldap_ldap_initialize( void )
        gopts.ldo_timelimit = LDAP_NO_LIMIT;
        gopts.ldo_sizelimit = LDAP_NO_LIMIT;
 
+       gopts.ldo_debug = 0;
+
        gopts.ldo_defhost = ldap_strdup("localhost");
        gopts.ldo_defport = LDAP_PORT;
 
index 7948578895fe4aa2562c13d5a3808b3c83332733..b8e8fc273c52c296b7f717d9e39b2293494a8b65 100644 (file)
 #endif
 
 #include "../liblber/lber-int.h"
+
+#define ldap_debug     (openldap_ldap_global_options.ldo_debug)
+
 #include "ldap_log.h"
+
 #include "ldap.h"
 
 LDAP_BEGIN_DECL
@@ -71,6 +75,8 @@ struct ldapoptions {
        int             ldo_timelimit;
        int             ldo_sizelimit;
 
+       int             ldo_debug;
+
        char*   ldo_defbase;
        char*   ldo_defhost;
        int             ldo_defport;
index f66b8dba3f00ffea2a48d8d5c83c6333d6c86a75..3aaf339144a432ee7cfb4177df96b97d131879b3 100644 (file)
@@ -24,11 +24,6 @@ static char copyright[] = "@(#) Copyright (c) 1995 Regents of the University of
 
 #include "ldap-int.h"
 
-#ifdef LDAP_DEBUG
-int    ldap_debug;
-#endif
-
-
 /*
  * ldap_open - initialize and connect to an ldap server.  A magic cookie to
  * be used for future communication is returned on success, NULL on failure.
index c595972bc2c415bc427efd1d67402d5ad825cd7d..c047f5a814a571fd820d9ce8cbae5d70a03390d8 100644 (file)
@@ -178,6 +178,10 @@ ldap_get_option(
                }
                break;
 
+       case LDAP_OPT_DEBUG_LEVEL:
+               * (int *) outvalue = lo->ldo_debug;
+               break;
+
        default:
                /* bad param */
                break;
@@ -321,6 +325,10 @@ ldap_set_option(
                        ld->ld_error = err;
                } return 0;
 
+       case LDAP_OPT_DEBUG_LEVEL:
+               lo->ldo_debug = * (int *) invalue;
+               return 0;
+
        default:
                /* bad param */
                break;
index 245c73b9486c417b57cb05aa5c1c6c515520cb11..c3885e6a7d5382f7d84981ac79b9fd149de1ced0 100644 (file)
@@ -834,7 +834,7 @@ re_encode_request( LDAP *ld, BerElement *origber, int msgid, char **dnp )
        if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
                Debug( LDAP_DEBUG_ANY, "re_encode_request new request is:\n",
                    0, 0, 0 );
-               ber_dump( ber, 0 );
+               lber_log_dump( LDAP_DEBUG_BER, ldap_debug, ber, 0 );
        }
 #endif /* LDAP_DEBUG */
 
index ad50e483ca3b1a19a7a8b47bfef8d84f597e4a3f..013942aa52bf00793c806cc0df2de6af67cef61b 100644 (file)
@@ -295,9 +295,11 @@ main( int argc, char **argv )
                case 'd':
 #ifdef LDAP_DEBUG
                        ldap_debug = atoi( optarg );
+#ifdef LBER_DEBUG
                        if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
                                lber_debug = ldap_debug;
                        }
+#endif
 #else
                        printf( "Compile with -DLDAP_DEBUG for debugging\n" );
 #endif
@@ -477,9 +479,11 @@ main( int argc, char **argv )
 #ifdef LDAP_DEBUG
                        getline( line, sizeof(line), stdin, "debug level? " );
                        ldap_debug = atoi( line );
+#ifdef LBER_DEBUG
                        if ( ldap_debug & LDAP_DEBUG_PACKETS ) {
                                lber_debug = ldap_debug;
                        }
+#endif
 #else
                        printf( "Compile with -DLDAP_DEBUG for debugging\n" );
 #endif
index 14037b5379258995b1090f0b8ab157190987eac1..fba438c67ebcddd772b7b6b8fab02d7104b0fd27 100644 (file)
 #include <ac/socket.h>
 #include <ac/time.h>
 
+int ldif_debug = 0;
+
+#define ldap_debug     ldif_debug
 #include "ldap_log.h"
 #include "ldif.h"
 
-
 #define RIGHT2                 0x03
 #define RIGHT4                 0x0f
 #define CONTINUED_LINE_MARKER  '\001'
index c2f4656d741eb13bb3e936e8b760b541a5b7106d..45ce3150d8f86b6b914c4450a2bf07adb9c1cac7 100644 (file)
@@ -201,7 +201,8 @@ be_isroot( Backend *be, char *dn )
                return( 0 );
        }
 
-       return( be->be_rootdn ? strcasecmp( be->be_rootdn, dn ) == 0
+       return( be->be_rootdn != NULL
+               ? strcasecmp( be->be_rootdn, dn ) == 0
            : 0 );
 }
 
index f81df898c3d1d36154fb81df3b6746495b4af21b..e17b7c2f76f0fdc1b033517bdbfbc6e8bd0ad086 100644 (file)
  * read-only global variables or variables only written by the listener
  * thread (after they are initialized) - no need to protect them with a mutex.
  */
-int            ldap_debug = 0;
+int            slap_debug = 0;
+
 #ifdef LDAP_DEBUG
 int            ldap_syslog = LDAP_DEBUG_STATS;
 #else
 int            ldap_syslog;
 #endif
+
 int            ldap_syslog_level = LOG_DEBUG;
 int            udp;
 char           *default_referral;
@@ -107,8 +109,7 @@ main( int argc, char **argv )
                                    LDAP_DEBUG_ANY );
                                exit( 0 );
                        } else {
-                               ldap_debug |= atoi( optarg );
-                               lber_debug = (ldap_debug & LDAP_DEBUG_BER);
+                               slap_debug |= atoi( optarg );
                        }
                        break;
 #else
@@ -144,6 +145,10 @@ main( int argc, char **argv )
                }
        }
 
+       lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
+       ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
+       ldif_debug = slap_debug;
+
        Debug( LDAP_DEBUG_TRACE, "%s", Versionstr, 0, 0 );
 
        if ( (myname = strrchr( argv[0], '/' )) == NULL ) {
index e7c2dd2ffd1960919406091364f28b94daa9f4e5..fbce7eba8e81e8626cd26a62e11cb77c6e6dda7b 100644 (file)
 #include <assert.h>
 
 #include "avl.h"
+
+#ifndef ldap_debug
+#define ldap_debug slap_debug
+#endif
+
+#include "ldap_log.h"
+
 #include "../../libraries/liblber/lber-int.h"
 #include "ldap.h"
-#include "ldap_log.h"
 
 #include "lthread.h"
 #include "lthread_rdwr.h"
@@ -39,6 +45,8 @@
 
 LDAP_BEGIN_DECL
 
+extern int slap_debug;
+
 struct op;
 struct conn;
 
index c3b202065c67ed09a08fb16a134a301ff030665f..57b80c111cfdf93959f9f02a2ac2e129167ec6ad 100644 (file)
@@ -65,8 +65,8 @@ doargs(
 
     while ( (i = getopt( argc, argv, "hd:f:r:t:k:o" )) != EOF ) {
        switch ( i ) {
-#ifdef LDAP_DEBUG
        case 'd':       /* turn on debugging */
+#ifdef LDAP_DEBUG
            if ( optarg[0] == '?' ) {
                printf( "Debug levels:\n" );
                printf( "\tLDAP_DEBUG_TRACE\t%d\n",
@@ -89,14 +89,13 @@ doargs(
                        LDAP_DEBUG_ANY );
                return( -1 );
            } else {
-               ldap_debug = atoi( optarg );
+               ldap_debug |= atoi( optarg );
            }
-           break;
 #else /* LDAP_DEBUG */
-       case 'd':       /* can't enable debugging - not built with debug code */
+               /* can't enable debugging - not built with debug code */
            fprintf( stderr, "must compile with LDAP_DEBUG for debugging\n" );
-           break;
 #endif /* LDAP_DEBUG */
+           break;
        case 'f':       /* slapd config file */
            g->slapd_configfile = strdup( optarg );
            break;
@@ -140,6 +139,10 @@ doargs(
     sprintf( g->slurpd_status_file, "%s/%s", g->slurpd_rdir,
            DEFAULT_SLURPD_STATUS_FILE );
 
+       lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldap_debug);
+       ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldap_debug);
+       ldif_debug = ldap_debug;
+
 #ifdef LOG_LOCAL4
     openlog( g->myname, OPENLOG_OPTIONS, LOG_LOCAL4 );
 #else
index 02e558116bb36fa90d38f2bfde14f53b350895c6..f44601c1ac4a3d0ce76763992b4bc3ed53526b54 100644 (file)
 #include <ac/string.h>
 #include <ac/ctype.h>
 
-#include "../slapd/slap.h"
 #include "slurp.h"
 #include "globals.h"
 
+#include "../slapd/slap.h"
+
 /* Forward references */
 static Rh      *get_repl_hosts LDAP_P(( char *, int *, char ** ));
 static int     gettype LDAP_P(( char * ));
index 445e48d62a3e3f53a0831bb0ebd3e433becc6489..4e1e96ab2c2446458884a13a9f0ee7304d048db7 100644 (file)
 #define LDAP_SYSLOG 1
 #endif
 
-#include <ac/syslog.h>
 #include <ac/errno.h>
+#include <ac/syslog.h>
 
 #include <sys/param.h>
 
 #include "lber.h"
 #include "ldap.h"
+
+#define ldap_debug slurp_debug
 #include "ldap_log.h"
 
 #include "lthread.h"