]> git.sur5r.net Git - openldap/blobdiff - libraries/liblber/bprint.c
Move schema needed by slapd to core.schema so that only one file
[openldap] / libraries / liblber / bprint.c
index 4a5def2586f49f22061701dda7b955b1518450f4..ec2949eb71fb06026311384606c9fb9662662a75 100644 (file)
@@ -1,5 +1,6 @@
+/* $OpenLDAP$ */
 /*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
 #include <ac/stdarg.h>
 #include <ac/string.h>
 
-#undef LDAP_F_PRE
-#define LDAP_F_PRE LDAP_F_EXPORT
-
 #include "lber-int.h"
 
+/*
+ * We don't just set ber_pvt_err_file to stderr here, because in NT,
+ * stderr is a symbol imported from a DLL. As such, the compiler
+ * doesn't recognize the symbol as having a constant address. Thus
+ * we set ber_pvt_err_file to stderr later, when it first gets
+ * referenced.
+ */
+FILE *ber_pvt_err_file;
+
+/*
+ * ber errno
+ */
+BER_ERRNO_FN ber_int_errno_fn;
+
+int * ber_errno_addr(void)
+{
+       static int ber_int_errno = LBER_ERROR_NONE;
+
+       if( ber_int_errno_fn ) {
+               return (*ber_int_errno_fn)();
+       }
+
+       return &ber_int_errno;
+}
+
 /*
  * Print stuff
  */
@@ -24,8 +47,19 @@ ber_error_print( char *data )
 {
        assert( data != NULL );
 
+       if (!ber_pvt_err_file)
+           ber_pvt_err_file = stderr;
+
+       fputs( data, ber_pvt_err_file );
+
+       /* Print to both streams */
+       if (ber_pvt_err_file != stderr)
+       {
        fputs( data, stderr );
        fflush( stderr );
+       }
+
+       fflush( ber_pvt_err_file );
 }
 
 BER_LOG_PRINT_FN ber_pvt_log_print = ber_error_print;
@@ -39,36 +73,19 @@ static int ber_log_check( int errlvl, int loglvl )
        return errlvl & loglvl ? 1 : 0;
 }
 
-int ber_pvt_log_printf
-#ifdef HAVE_STDARG
-       (int errlvl, int loglvl, const char *fmt, ...)
-#else
-       ( va_alist )
-va_dcl
-#endif
+int ber_pvt_log_printf( int errlvl, int loglvl, const char *fmt, ... )
 {
        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
-
        assert( fmt != NULL );
 
        if ( !ber_log_check( errlvl, loglvl )) {
                return 0;
        }
 
+       va_start( ap, fmt );
+
 #ifdef HAVE_VSNPRINTF
        buf[sizeof(buf) - 1] = '\0';
        vsnprintf( buf, sizeof(buf)-1, fmt, ap );
@@ -169,7 +186,7 @@ int
 ber_log_dump(
        int errlvl,
        int loglvl,
-       const BerElement *ber,
+       BerElement *ber,
        int inout )
 {
        assert( ber != NULL );
@@ -185,7 +202,7 @@ ber_log_dump(
 
 void
 ber_dump(
-       LDAP_CONST BerElement *ber,
+       BerElement *ber,
        int inout )
 {
        char buf[132];
@@ -214,10 +231,10 @@ ber_dump(
 }
 
 int
-lber_log_sos_dump(
+ber_log_sos_dump(
        int errlvl,
        int loglvl,
-       const Seqorset *sos )
+       Seqorset *sos )
 {
        assert( sos != NULL );
 
@@ -231,7 +248,7 @@ lber_log_sos_dump(
 
 void
 ber_sos_dump(
-       LDAP_CONST Seqorset *sos )
+       Seqorset *sos )
 {
        char buf[132];