]> git.sur5r.net Git - openldap/blob - libraries/liblutil/debug.c
Fix ldaps / TLS processing...
[openldap] / libraries / liblutil / debug.c
1 /* $OpenLDAP$ */
2 /*
3  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 /*
7  * Copyright (c) 1996, 1998 by Internet Software Consortium.
8  *
9  * Permission to use, copy, modify, and distribute this software for any
10  * purpose with or without fee is hereby granted, provided that the above
11  * copyright notice and this permission notice appear in all copies.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
14  * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
15  * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
16  * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
17  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
18  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
19  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20  * SOFTWARE.
21  */
22
23 #include "portable.h"
24
25 #include <stdio.h>
26
27 #include <ac/stdarg.h>
28 #include <ac/string.h>
29
30 #include "ldap_log.h"
31 #include "ldap_defaults.h"
32 #include "lber.h"
33
34 static FILE *log_file;
35
36 int lutil_debug_file( FILE *file )
37 {
38         log_file = file;
39         ber_set_option( NULL, LBER_OPT_LOG_PRINT_FILE, file );
40
41         return 0;
42 }
43
44 void (lutil_debug)( int level, int debug, const char *fmt, ... )
45 {
46         char buffer[4096];
47         va_list vl;
48
49         if ( !(level & debug ) )
50                 return;
51
52 #ifdef HAVE_WINSOCK
53         if( log_file == NULL )
54     {
55                 log_file = fopen( LDAP_RUNDIR LDAP_DIRSEP "openldap.log", "w" );
56
57         if ( log_file == NULL )
58                         log_file = fopen( "openldap.log", "w" );
59
60                 if ( log_file == NULL )
61                         return;
62
63             ber_set_option( NULL, LBER_OPT_LOG_PRINT_FILE, file );
64         }
65 #endif
66         va_start( vl, fmt );
67
68 #ifdef HAVE_VSNPRINTF
69         vsnprintf( buffer, sizeof(buffer), fmt, vl );
70 #else
71         vsprintf( buffer, fmt, vl );
72 #endif
73         buffer[sizeof(buffer)-1] = '\0';
74
75         if( log_file != NULL ) {
76                 fputs( buffer, log_file );
77                 fflush( log_file );
78         }
79
80     fputs( buffer, stderr );
81         va_end( vl );
82 }