summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--src/util/debug.h140
-rw-r--r--src/util/util.h119
3 files changed, 142 insertions, 118 deletions
diff --git a/Makefile.am b/Makefile.am
index f5d0400cd..e2d2c38ae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -527,6 +527,7 @@ dist_noinst_HEADERS = \
src/util/crypto/sss_crypto.h \
src/util/cert.h \
src/util/dlinklist.h \
+ src/util/debug.h \
src/util/util.h \
src/util/io.h \
src/util/util_errors.h \
diff --git a/src/util/debug.h b/src/util/debug.h
new file mode 100644
index 000000000..667021ba1
--- /dev/null
+++ b/src/util/debug.h
@@ -0,0 +1,140 @@
+/*
+ Authors:
+ Simo Sorce <ssorce@redhat.com>
+
+ Copyright (C) 2009 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __SSSD_DEBUG_H__
+#define __SSSD_DEBUG_H__
+
+#include "config.h"
+
+#ifdef HAVE_FUNCTION_ATTRIBUTE_FORMAT
+#define SSS_ATTRIBUTE_PRINTF(a1, a2) __attribute__((format (printf, a1, a2)))
+#else
+#define SSS_ATTRIBUTE_PRINTF(a1, a2)
+#endif
+
+extern const char *debug_prg_name;
+extern int debug_level;
+extern int debug_timestamps;
+extern int debug_microseconds;
+extern int debug_to_file;
+extern int debug_to_stderr;
+extern const char *debug_log_file;
+void sss_vdebug_fn(const char *file,
+ long line,
+ const char *function,
+ int level,
+ const char *format,
+ va_list ap);
+void sss_debug_fn(const char *file,
+ long line,
+ const char *function,
+ int level,
+ const char *format, ...) SSS_ATTRIBUTE_PRINTF(5, 6);
+int debug_convert_old_level(int old_level);
+errno_t set_debug_file_from_fd(const int fd);
+int get_fd_from_debug_file(void);
+
+#define SSS_DOM_ENV "_SSS_DOM"
+
+#define SSSDBG_FATAL_FAILURE 0x0010 /* level 0 */
+#define SSSDBG_CRIT_FAILURE 0x0020 /* level 1 */
+#define SSSDBG_OP_FAILURE 0x0040 /* level 2 */
+#define SSSDBG_MINOR_FAILURE 0x0080 /* level 3 */
+#define SSSDBG_CONF_SETTINGS 0x0100 /* level 4 */
+#define SSSDBG_FUNC_DATA 0x0200 /* level 5 */
+#define SSSDBG_TRACE_FUNC 0x0400 /* level 6 */
+#define SSSDBG_TRACE_LIBS 0x1000 /* level 7 */
+#define SSSDBG_TRACE_INTERNAL 0x2000 /* level 8 */
+#define SSSDBG_TRACE_ALL 0x4000 /* level 9 */
+#define SSSDBG_BE_FO 0x8000 /* level 9 */
+#define SSSDBG_IMPORTANT_INFO SSSDBG_OP_FAILURE
+
+#define SSSDBG_INVALID -1
+#define SSSDBG_UNRESOLVED 0
+#define SSSDBG_MASK_ALL 0xFFF0 /* enable all debug levels */
+#define SSSDBG_DEFAULT SSSDBG_FATAL_FAILURE
+
+#define SSSDBG_TIMESTAMP_UNRESOLVED -1
+#define SSSDBG_TIMESTAMP_DEFAULT 1
+
+#define SSSDBG_MICROSECONDS_UNRESOLVED -1
+#define SSSDBG_MICROSECONDS_DEFAULT 0
+
+#define SSSD_DEBUG_OPTS \
+ {"debug-level", 'd', POPT_ARG_INT, &debug_level, 0, \
+ _("Debug level"), NULL}, \
+ {"debug-to-files", 'f', POPT_ARG_NONE, &debug_to_file, 0, \
+ _("Send the debug output to files instead of stderr"), NULL }, \
+ {"debug-to-stderr", 0, POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &debug_to_stderr, 0, \
+ _("Send the debug output to stderr directly."), NULL }, \
+ {"debug-timestamps", 0, POPT_ARG_INT, &debug_timestamps, 0, \
+ _("Add debug timestamps"), NULL}, \
+ {"debug-microseconds", 0, POPT_ARG_INT, &debug_microseconds, 0, \
+ _("Show timestamps with microseconds"), NULL},
+
+/** \def DEBUG(level, format, ...)
+ \brief macro to generate debug messages
+
+ \param level the debug level, please use one of the SSSDBG_* macros
+ \param format the debug message format string, should result in a
+ newline-terminated message
+ \param ... the debug message format arguments
+*/
+#define DEBUG(level, format, ...) do { \
+ int __debug_macro_level = level; \
+ if (DEBUG_IS_SET(__debug_macro_level)) { \
+ sss_debug_fn(__FILE__, __LINE__, __FUNCTION__, \
+ __debug_macro_level, \
+ format, ##__VA_ARGS__); \
+ } \
+} while (0)
+
+/** \def DEBUG_IS_SET(level)
+ \brief checks whether level is set in debug_level
+
+ \param level the debug level, please use one of the SSSDBG*_ macros
+*/
+#define DEBUG_IS_SET(level) (debug_level & (level) || \
+ (debug_level == SSSDBG_UNRESOLVED && \
+ (level & (SSSDBG_FATAL_FAILURE | \
+ SSSDBG_CRIT_FAILURE))))
+
+#define DEBUG_INIT(dbg_lvl) do { \
+ if (dbg_lvl != SSSDBG_INVALID) { \
+ debug_level = debug_convert_old_level(dbg_lvl); \
+ } else { \
+ debug_level = SSSDBG_UNRESOLVED; \
+ } \
+\
+ talloc_set_log_fn(talloc_log_fn); \
+} while (0)
+
+/* CLI tools shall debug to stderr even when SSSD was compiled with journald
+ * support
+ */
+#define DEBUG_CLI_INIT(dbg_lvl) do { \
+ DEBUG_INIT(dbg_lvl); \
+ debug_to_stderr = 1; \
+} while (0)
+
+#define PRINT(fmt, ...) fprintf(stdout, gettext(fmt), ##__VA_ARGS__)
+#define ERROR(fmt, ...) fprintf(stderr, gettext(fmt), ##__VA_ARGS__)
+
+#endif /* __SSSD_DEBUG_H__ */
diff --git a/src/util/util.h b/src/util/util.h
index 30713f9b5..05ee87584 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -51,6 +51,7 @@
#include "util/util_errors.h"
#include "util/util_safealign.h"
#include "util/sss_format.h"
+#include "util/debug.h"
#define _(STRING) gettext (STRING)
@@ -58,130 +59,12 @@
#define CLEAR_MC_FLAG "clear_mc_flag"
-#ifdef HAVE_FUNCTION_ATTRIBUTE_FORMAT
-#define SSS_ATTRIBUTE_PRINTF(a1, a2) __attribute__ ((format (printf, a1, a2)))
-#else
-#define SSS_ATTRIBUTE_PRINTF(a1, a2)
-#endif
-
/** Default secure umask */
#define SSS_DFL_UMASK 0177
/** Secure mask with executable bit */
#define SSS_DFL_X_UMASK 0077
-extern const char *debug_prg_name;
-extern int debug_level;
-extern int debug_timestamps;
-extern int debug_microseconds;
-extern int debug_to_file;
-extern int debug_to_stderr;
-extern const char *debug_log_file;
-void sss_vdebug_fn(const char *file,
- long line,
- const char *function,
- int level,
- const char *format,
- va_list ap);
-void sss_debug_fn(const char *file,
- long line,
- const char *function,
- int level,
- const char *format, ...) SSS_ATTRIBUTE_PRINTF(5, 6);
-int debug_convert_old_level(int old_level);
-errno_t set_debug_file_from_fd(const int fd);
-int get_fd_from_debug_file(void);
-
-#define SSS_DOM_ENV "_SSS_DOM"
-
-#define SSSDBG_FATAL_FAILURE 0x0010 /* level 0 */
-#define SSSDBG_CRIT_FAILURE 0x0020 /* level 1 */
-#define SSSDBG_OP_FAILURE 0x0040 /* level 2 */
-#define SSSDBG_MINOR_FAILURE 0x0080 /* level 3 */
-#define SSSDBG_CONF_SETTINGS 0x0100 /* level 4 */
-#define SSSDBG_FUNC_DATA 0x0200 /* level 5 */
-#define SSSDBG_TRACE_FUNC 0x0400 /* level 6 */
-#define SSSDBG_TRACE_LIBS 0x1000 /* level 7 */
-#define SSSDBG_TRACE_INTERNAL 0x2000 /* level 8 */
-#define SSSDBG_TRACE_ALL 0x4000 /* level 9 */
-#define SSSDBG_BE_FO 0x8000 /* level 9 */
-#define SSSDBG_IMPORTANT_INFO SSSDBG_OP_FAILURE
-
-#define SSSDBG_INVALID -1
-#define SSSDBG_UNRESOLVED 0
-#define SSSDBG_MASK_ALL 0xFFF0 /* enable all debug levels */
-#define SSSDBG_DEFAULT SSSDBG_FATAL_FAILURE
-
-#define SSSDBG_TIMESTAMP_UNRESOLVED -1
-#define SSSDBG_TIMESTAMP_DEFAULT 1
-
-#define SSSDBG_MICROSECONDS_UNRESOLVED -1
-#define SSSDBG_MICROSECONDS_DEFAULT 0
-
-#define SSSD_DEBUG_OPTS \
- {"debug-level", 'd', POPT_ARG_INT, &debug_level, 0, \
- _("Debug level"), NULL}, \
- {"debug-to-files", 'f', POPT_ARG_NONE, &debug_to_file, 0, \
- _("Send the debug output to files instead of stderr"), NULL }, \
- {"debug-to-stderr", 0, POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &debug_to_stderr, 0, \
- _("Send the debug output to stderr directly."), NULL }, \
- {"debug-timestamps", 0, POPT_ARG_INT, &debug_timestamps, 0, \
- _("Add debug timestamps"), NULL}, \
- {"debug-microseconds", 0, POPT_ARG_INT, &debug_microseconds, 0, \
- _("Show timestamps with microseconds"), NULL},
-
-/** \def DEBUG(level, format, ...)
- \brief macro to generate debug messages
-
- \param level the debug level, please use one of the SSSDBG_* macros
- \param format the debug message format string, should result in a
- newline-terminated message
- \param ... the debug message format arguments
-*/
-#define DEBUG(level, format, ...) do { \
- int __debug_macro_level = level; \
- if (DEBUG_IS_SET(__debug_macro_level)) { \
- sss_debug_fn(__FILE__, __LINE__, __FUNCTION__, \
- __debug_macro_level, \
- format, ##__VA_ARGS__); \
- } \
-} while (0)
-
-/** \def DEBUG_IS_SET(level)
- \brief checks whether level is set in debug_level
-
- \param level the debug level, please use one of the SSSDBG*_ macros
-*/
-#define DEBUG_IS_SET(level) (debug_level & (level) || \
- (debug_level == SSSDBG_UNRESOLVED && \
- (level & (SSSDBG_FATAL_FAILURE | \
- SSSDBG_CRIT_FAILURE))))
-
-#define DEBUG_INIT(dbg_lvl) do { \
- if (dbg_lvl != SSSDBG_INVALID) { \
- debug_level = debug_convert_old_level(dbg_lvl); \
- } else { \
- debug_level = SSSDBG_UNRESOLVED; \
- } \
-\
- talloc_set_log_fn(talloc_log_fn); \
-} while (0)
-
-/* CLI tools shall debug to stderr even when SSSD was compiled with journald
- * support
- */
-#define DEBUG_CLI_INIT(dbg_lvl) do { \
- DEBUG_INIT(dbg_lvl); \
- debug_to_stderr = 1; \
-} while (0)
-
-#define PRINT(fmt, ...) fprintf(stdout, gettext(fmt), ##__VA_ARGS__)
-#define ERROR(fmt, ...) fprintf(stderr, gettext(fmt), ##__VA_ARGS__)
-
-#ifndef discard_const
-#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
-#endif
-
#ifndef NULL
#define NULL 0
#endif