root/source4/lib/ldb/common/ldb_debug.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ldb_set_debug
  2. ldb_debug_stderr
  3. ldb_set_debug_stderr
  4. ldb_debug
  5. ldb_debug_set

   1 /* 
   2    ldb database library
   3 
   4    Copyright (C) Andrew Tridgell  2004
   5 
   6      ** NOTE! The following LGPL license applies to the ldb
   7      ** library. This does NOT imply that all of Samba is released
   8      ** under the LGPL
   9    
  10    This library is free software; you can redistribute it and/or
  11    modify it under the terms of the GNU Lesser General Public
  12    License as published by the Free Software Foundation; either
  13    version 3 of the License, or (at your option) any later version.
  14 
  15    This library is distributed in the hope that it will be useful,
  16    but WITHOUT ANY WARRANTY; without even the implied warranty of
  17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18    Lesser General Public License for more details.
  19 
  20    You should have received a copy of the GNU Lesser General Public
  21    License along with this library; if not, see <http://www.gnu.org/licenses/>.
  22 */
  23 
  24 /*
  25  *  Name: ldb
  26  *
  27  *  Component: ldb debug
  28  *
  29  *  Description: functions for printing debug messages
  30  *
  31  *  Author: Andrew Tridgell
  32  */
  33 
  34 #include "ldb_private.h"
  35 
  36 /*
  37   this allows the user to choose their own debug function
  38 */
  39 int ldb_set_debug(struct ldb_context *ldb,
     /* [<][>][^][v][top][bottom][index][help] */
  40                   void (*debug)(void *context, enum ldb_debug_level level, 
  41                                 const char *fmt, va_list ap),
  42                   void *context)
  43 {
  44         ldb->debug_ops.debug = debug;
  45         ldb->debug_ops.context = context;
  46         return 0;
  47 }
  48 
  49 /*
  50   debug function for ldb_set_debug_stderr
  51 */
  52 static void ldb_debug_stderr(void *context, enum ldb_debug_level level, 
     /* [<][>][^][v][top][bottom][index][help] */
  53                              const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0);
  54 static void ldb_debug_stderr(void *context, enum ldb_debug_level level, 
  55                              const char *fmt, va_list ap)
  56 {
  57         if (level <= LDB_DEBUG_WARNING) {
  58                 vfprintf(stderr, fmt, ap);
  59         }
  60 }
  61 
  62 /*
  63   convenience function to setup debug messages on stderr
  64   messages of level LDB_DEBUG_WARNING and higher are printed
  65 */
  66 int ldb_set_debug_stderr(struct ldb_context *ldb)
     /* [<][>][^][v][top][bottom][index][help] */
  67 {
  68         return ldb_set_debug(ldb, ldb_debug_stderr, ldb);
  69 }
  70 
  71 /*
  72   log a message
  73 */
  74 void ldb_debug(struct ldb_context *ldb, enum ldb_debug_level level, const char *fmt, ...)
     /* [<][>][^][v][top][bottom][index][help] */
  75 {
  76         va_list ap;
  77         if (ldb->debug_ops.debug == NULL) {
  78                 ldb_set_debug_stderr(ldb);
  79         }
  80         va_start(ap, fmt);
  81         ldb->debug_ops.debug(ldb->debug_ops.context, level, fmt, ap);
  82         va_end(ap);
  83 }
  84 
  85 
  86 /*
  87   log a message, and set the ldb error string to the same message
  88 */
  89 void ldb_debug_set(struct ldb_context *ldb, enum ldb_debug_level level, 
     /* [<][>][^][v][top][bottom][index][help] */
  90                    const char *fmt, ...)
  91 {
  92         va_list ap;
  93         char *msg;
  94         va_start(ap, fmt);
  95         msg = talloc_vasprintf(ldb, fmt, ap);
  96         va_end(ap);
  97         if (msg != NULL) {
  98                 ldb_set_errstring(ldb, msg);
  99                 ldb_debug(ldb, level, "%s", msg);
 100         }
 101         talloc_free(msg);
 102 }
 103 

/* [<][>][^][v][top][bottom][index][help] */