along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef _SAMBA_DEBUG_H_
+#define _SAMBA_DEBUG_H_
+
/**
* @file
* @brief Debugging macros
#define DEBUGLEVEL *debug_level
extern int DEBUGLEVEL;
-#define debug_ctx() (_debug_ctx?_debug_ctx:(_debug_ctx=talloc_new(NULL)))
-
#define DEBUGLVL(level) ((level) <= DEBUGLEVEL)
#define _DEBUG(level, body, header) do { \
if (DEBUGLVL(level)) { \
- void* _debug_ctx=NULL; \
if (header) { \
dbghdr(level, __location__, __FUNCTION__); \
} \
dbgtext body; \
- talloc_free(_debug_ctx); \
} \
} while (0)
/**
*/
#define DEBUGTAB(n) do_debug_tab(n)
-/** Possible destinations for the debug log */
+/** Possible destinations for the debug log (in order of precedence -
+ * once set to DEBUG_FILE, it is not possible to reset to DEBUG_STDOUT
+ * for example. This makes it easy to override for debug to stderr on
+ * the command line, as the smb.conf cannot reset it back to
+ * file-based logging */
enum debug_logtype {DEBUG_STDOUT = 0, DEBUG_FILE = 1, DEBUG_STDERR = 2};
/**
*/
_PUBLIC_ void dbghdr(int level, const char *location, const char *func);
-_PUBLIC_ void dbghdrclass(int level, int class, const char *location, const char *func);
+_PUBLIC_ void dbghdrclass(int level, int cls, const char *location, const char *func);
/**
reopen the log file (usually called because the log file name might have changed)
*/
_PUBLIC_ void setup_logging(const char *prog_name, enum debug_logtype new_logtype);
+/**
+ Just run logging to stdout for this program
+*/
+_PUBLIC_ void setup_logging_stdout(void);
+
/**
return a string constant containing n tabs
no more than 10 tabs are returned
*/
_PUBLIC_ void dbgtext(const char *format, ...) PRINTF_ATTRIBUTE(1,2);
-extern XFILE *dbf;
+struct _XFILE;
+extern struct _XFILE *dbf;
+
+#endif