Created SILC Crypto Toolkit git repository.
[crypto.git] / lib / silcutil / silclog.h
diff --git a/lib/silcutil/silclog.h b/lib/silcutil/silclog.h
deleted file mode 100644 (file)
index 56c58ec..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
-
-  silclog.h
-
-  Author: Pekka Riikonen <priikone@silcnet.org>
-
-  Copyright (C) 1997 - 2007 Pekka Riikonen
-
-  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; version 2 of the License.
-
-  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.
-
-*/
-
-/****h* silcutil/SILC Logging Interface
- *
- * DESCRIPTION
- *
- * The SILC logging APIs provide a powerful and easy-to-use interface to
- * the logging system and debugging output.
- *
- ***/
-
-#ifndef SILCLOG_H
-#define SILCLOG_H
-
-/****d* silcutil/SilcLogAPI/SilcLogType
- *
- * NAME
- *
- *    typedef enum { ... } SilcLogType;
- *
- * DESCRIPTION
- *
- *    The log type.  This can be given to various silc_log_* routines.
- *
- * SOURCE
- */
-typedef enum {
-  SILC_LOG_INFO       = 1,     /* Generic info */
-  SILC_LOG_WARNING    = 2,      /* Warnings and non-critical failures */
-  SILC_LOG_ERROR      = 3,      /* Generic error and critical failure */
-  SILC_LOG_FATAL      = 4,     /* Fatal error */
-} SilcLogType;
-/***/
-
-#include "silclog_i.h"
-
-/****f* silcutil/SilcLogAPI/SilcLogCb
- *
- * SYNOPSIS
- *
- *    typedef SilcBool (*SilcLogCb)(SilcLogType type, char *message,
- *                                  void *context);
- *
- * DESCRIPTION
- *
- *    The logging custom callback function.  The `type' is the channel ID
- *    that triggered the event, which allows you to use the same callback
- *    function for multiple logging channels.
- *
- *    The `message' parameter points to a null-terminated buffer containing
- *    the received message, while `context' is the caller-specified context.
- *    The message must not be modified or freed by the callback function.
- *    If the function returns TRUE, SilcLog will assume the message was
- *    handled and won't run its default handler.
- *
- * SEE ALSO
- *    silc_log_set_callback
- *
- ***/
-typedef SilcBool (*SilcLogCb)(SilcLogType type, char *message, void *context);
-
-/****f* silcutil/SilcLogAPI/SilcLogDebugCb
- *
- * SYNOPSIS
- *
- *    typedef SilcBool (*SilcLogDebugCb)(char *file, char *function, int line,
- *                                       char *message, void *context);
- *
- * DESCRIPTION
- *
- *    The debug logging callback function.  The default behaviour is to
- *    output messages to stderr.  `file', `function', and `line' are the
- *    corresponding offsets in the source files.  `message' points to a
- *    null-terminated buffer containing the debugging message, and `context'
- *    is the caller-specified context.
- *
- *    The message must not be modified or freed by the callback function.
- *    If the function returns TRUE, SilcLog will assume the message as handled
- *    and won't run its default handler.
- *
- * SEE ALSO
- *    silc_debug, silc_log_set_debug_callbacks
- *
- ***/
-typedef SilcBool (*SilcLogDebugCb)(char *file, char *function, int line,
-                                  char *message, void *context);
-
-/****f* silcutil/SilcLogAPI/SilcLogHexdumpCb
- *
- * SYNOPSIS
- *
- *    typedef SilcBool
- *    (*SilcDebugHexdumpCb)(char *file, char *function, int line,
- *                          unsigned char *data,
- *                          SilcUInt32 data_len,
- *                          char *message, void *context;
- *
- * DESCRIPTION
- *
- *    The hexdump logging callback function.  The default behaviour is to
- *    print a formatted hexdump to stderr, and is commonly what you would
- *    like it to be.  `file', `function', and `line' are the corresponding
- *    offsets in the source files.  `data' is the begin of the buffer that
- *    should be hexdumped, which is `data_len' bytes long.
- *
- *    The `message' parameter points to a null-terminated buffer containing
- *    the received message, while `context' is the caller-specified context.
- *    The message must not be modified or freed by the callback function.
- *    If the function returns TRUE, SilcLog will assume the message as handled
- *    and won't run its default handler.
- *
- * SEE ALSO
- *    silc_debug_hexdump, silc_log_set_debug_callbacks
- *
- ***/
-typedef SilcBool (*SilcLogHexdumpCb)(char *file, char *function, int line,
-                                    unsigned char *data, SilcUInt32 data_len,
-                                    char *message, void *context);
-
-/* Macros */
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_INFO
- *
- * NAME
- *
- *    #define SILC_LOG_INFO(...)
- *
- * DESCRIPTION
- *
- *    This macro is a wrapper to the main logging function.
- *    It supports variable argument list formatting, and *automatically*
- *    appends newline at the end of the string.
- *
- * NOTES
- *
- *    This macro requires double parenthesis to ensure that the VA list
- *    formatting would work correctly.
- *
- * EXAMPLE
- *
- *    SILC_LOG_INFO(("Today i feel %s", core->mood));
- *
- * SOURCE
- */
-#define SILC_LOG_INFO(fmt) silc_log_output(SILC_LOG_INFO, silc_format fmt)
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_WARNING
- *
- * NAME
- *
- *    #define SILC_LOG_WARNING(...)
- *
- * DESCRIPTION
- *
- *    Wrapper to the WARNING logging channel.
- *    Please see the SILC_LOG_INFO macro.
- *
- * SEE ALSO
- *    SILC_LOG_INFO
- *
- * SOURCE
- */
-#define SILC_LOG_WARNING(fmt) silc_log_output(SILC_LOG_WARNING, silc_format fmt)
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_ERROR
- *
- * NAME
- *
- *    #define SILC_LOG_ERROR(...)
- *
- * DESCRIPTION
- *
- *    Wrapper to the ERROR logging channel.
- *    Please see the SILC_LOG_INFO macro.
- *
- * SEE ALSO
- *    SILC_LOG_INFO
- *
- * SOURCE
- */
-#define SILC_LOG_ERROR(fmt) silc_log_output(SILC_LOG_ERROR, silc_format fmt)
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_FATAL
- *
- * NAME
- *
- *    #define SILC_LOG_FATAL(...)
- *
- * DESCRIPTION
- *
- *    Wrapper to the FATAL logging channel.
- *    Please see the SILC_LOG_INFO macro.
- *
- * SEE ALSO
- *    SILC_LOG_INFO
- *
- * SOURCE
- */
-#define SILC_LOG_FATAL(fmt) silc_log_output(SILC_LOG_FATAL, silc_format fmt)
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_DEBUG
- *
- * NAME
- *
- *    #define SILC_LOG_DEBUG(...)
- *
- * DESCRIPTION
- *
- *    This is a special wrapper to the debugging output (usually stderr).
- *    The standard behaviour is the same as SILC_LOG_INFO, with the difference
- *    that this macro also depends on the global define SILC_DEBUG.
- *
- *    Undefining SILC_DEBUG causes these functions to be defined to an empty
- *    value, thus removing all debug logging calls from the compiled
- *    application.
- *
- * SOURCE
- */
-#if defined(SILC_DEBUG)
-#define SILC_LOG_DEBUG(fmt) silc_log_output_debug(__FILE__,    \
-                               __FUNCTION__,                   \
-                               __LINE__,                       \
-                               silc_format fmt)
-#define SILC_NOT_IMPLEMENTED(string)                                   \
-  SILC_LOG_INFO(("*********** %s: NOT IMPLEMENTED YET", string));
-#else
-#define SILC_LOG_DEBUG(fmt) do { } while(0)
-#define SILC_NOT_IMPLEMENTED(string) do { } while(0)
-#endif /* SILC_DEBUG */
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_LOG_HEXDUMP
- *
- * NAME
- *
- *    #define SILC_LOG_HEXDUMP(...)
- *
- * DESCRIPTION
- *
- *    This is a special wrapper to the hexdump output function.  This macro
- *    behaves slightly differently from other logging wrappers.
- *    The first parameter, is composed by a group of parameters delimited by
- *    parenthesis.
- *    The second parameter is a `char *' pointer pointing to the beginning
- *    of the memory section that should be hexdumped, and the third parameter
- *    is the length of this memory section.
- *    Undefining the global SILC_DEBUG define causes these functions to be
- *    defined to an empty value, thus removing all debug logging calls from
- *    the compiled application.
- *    This macro is also affected by the global variable silc_debug_hexdump.
- *
- * EXAMPLE
- *
- *    SILC_LOG_HEXDUMP(("Outgoing packet [%d], len %d", pckt->seq, pckt->len),
- *                     pckt->data, pckt->datalen);
- *
- * SOURCE
- */
-#if defined(SILC_DEBUG)
-#define SILC_LOG_HEXDUMP(fmt, data, len) silc_log_output_hexdump(__FILE__, \
-                               __FUNCTION__,                              \
-                               __LINE__,                                  \
-                               (void *)(data), (len),                     \
-                               silc_format fmt)
-#else
-#define SILC_LOG_HEXDUMP(fmt, data, len) do { } while(0)
-#endif /* SILC_DEBUG */
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_ASSERT
- *
- * NAME
- *
- *    #define SILC_ASSERT(experssion)
- *
- * DESCRIPTION
- *
- *    Assert macro that prints error message to stderr and calls abort()
- *    if the `expression' is false (ie. compares equal to zero).  If
- *    SILC_DEBUG is not defined this macro has no effect.
- *
- * SOURCE
- */
-#if defined(SILC_DEBUG)
-#define SILC_ASSERT(expr) assert((expr));
-#else
-#define SILC_ASSERT(expr) do { } while(0)
-#endif /* SILC_DEBUG */
-/***/
-
-/****d* silcutil/SilcLogAPI/SILC_VERIFY
- *
- * NAME
- *
- *    #define SILC_VERIFY(experssion)
- *
- * DESCRIPTION
- *
- *    Verification macro that prints error message to stderr and calls
- *    abort() if the `expression' is false (ie. compares equal to zero)
- *    on debug builds (SILC_DEBUG defined), and prints error message to
- *    stderr on release builds (SILC_DEBUG undefined) but does not abort().
- *    This macro is always compiled even if debugging (SILC_DEBUG) is not
- *    defined.
- *
- * SOURCE
- */
-#if defined(SILC_DEBUG)
-#define SILC_VERIFY(expr) assert((expr));
-#else
-#define SILC_VERIFY(expr)                                              \
-  if (silc_unlikely(!(expr))) {                                                \
-    SILC_LOG_ERROR(("SILC_VERIFY %s:%s:%d",                            \
-                   __FILE__, __FUNCTION__, __LINE__));                 \
-    silc_set_errno_reason_nofail(SILC_ERR_ASSERT, "SILC_VERIFY %s:%s:%d", \
-                                __FILE__, __FUNCTION__, __LINE__);     \
-  }
-#endif /* SILC_DEBUG */
-/***/
-
-/* Prototypes */
-
-/****f* silcutil/SilcLogAPI/silc_log_set_file
- *
- * SYNOPSIS
- *
- *    SilcBool silc_log_set_file(SilcLogType type, char *filename,
- *                               SilcUInt32 maxsize,
- *                               SilcSchedule scheduler);
- *
- * DESCRIPTION
- *
- *    Sets `filename', which can be maximum `maxsize' bytes long, as the new
- *    logging file for the channel `type'.  If you specify an illegal filename
- *    a warning message is printed and FALSE is returned.  In this case
- *    logging settings are not changed.
- *
- *    You can disable logging for a channel by specifying NULL filename, the
- *    maxsize in this case is not important.  The `scheduler' parameter is
- *    needed by the internal logging to allow buffered output and thus to
- *    save HD activity.  If `scheduler' is NULL this will call
- *    silc_schedule_get_global to try to get global scheduler.
- *
- ***/
-SilcBool silc_log_set_file(SilcLogType type, char *filename,
-                          SilcUInt32 maxsize, SilcSchedule scheduler);
-
-/****f* silcutil/SilcLogAPI/silc_log_get_file
- *
- * SYNOPSIS
- *
- *    char *silc_log_get_file(SilcLogType type);
- *
- * DESCRIPTION
- *
- *    Returns the current logging file for the channel `type'.
- *    If there has been an error during the opening of this channel, NULL
- *    is returned, even if the file has been previously set with
- *    silc_log_set_file().
- *
- *    The returned pointer points to internally allocated storage and must
- *    not be freed, modified or stored.
- *
- ***/
-char *silc_log_get_file(SilcLogType type);
-
-/****f* silcutil/SilcLogAPI/silc_log_set_callback
- *
- * SYNOPSIS
- *
- *    void silc_log_set_callback(SilcLogType type, SilcLogCb cb,
- *                               void *context);
- *
- * DESCRIPTION
- *
- *    Set `cb' as the default callback function for the logging channel
- *    `type'.  When SilcLog receives a message for this channel, it will
- *    trigger the callback function.  If the callback function returns TRUE
- *    SilcLog will assume the input as handled and won't run its default
- *    handler.
- *
- *    You can disable/remove a callback by setting it to NULL or calling the
- *    function silc_log_reset_callbacks.  If set, the callback function
- *    must be in the form described by SilcLogCb.
- *
- * SEE ALSO
- *    silc_log_reset_callbacks
- *
- ***/
-void silc_log_set_callback(SilcLogType type, SilcLogCb cb, void *context);
-
-/****f* silcutil/SilcLogAPI/silc_log_reset_callbacks
- *
- * SYNOPSIS
- *
- *    void silc_log_reset_callbacks();
- *
- * DESCRIPTION
- *
- *    Removes all logging callbacks for normal channels.  This function does
- *    NOT remove callbacks for debugging channels (debug and hexdump), you
- *    rather need to call silc_log_set_debug_callbacks() with NULL callbacks.
- *
- ***/
-void silc_log_reset_callbacks(void);
-
-/****f* silcutil/SilcLogAPI/silc_log_flush_all
- *
- * SYNOPSIS
- *
- *    void silc_log_flush_all();
- *
- * DESCRIPTION
- *
- *    Forces flushing for all logging channels.  This should be called for
- *    example after receiving special signals.
- *
- * SEE ALSO
- *    silc_log_quick
- *
- ***/
-void silc_log_flush_all(void);
-
-/****f* silcutil/SilcLogAPI/silc_log_reset_all
- *
- * SYNOPSIS
- *
- *    void silc_log_reset_all();
- *
- * DESCRIPTION
- *
- *    Forces all logging channels to close and reopen their streams.  Useful
- *    for example after a SIGHUP signal.
- *
- *    Please note that this function could generate some warning messages if
- *    one or more logging channels point to an illegal filename.
- *
- ***/
-void silc_log_reset_all(void);
-
-/****f* silcutil/SilcLogAPI/silc_log_set_debug_callbacks
- *
- * SYNOPSIS
- *
- *    void silc_log_set_debug_callbacks(SilcLogDebugCb debug_cb,
- *                                      void *debug_context,
- *                                      SilcLogHexdumpCb hexdump_cb,
- *                                      void *hexdump_context);
- *
- * DESCRIPTION
- *
- *    Sets `debug_cb' as the the default callback function for the debug
- *    output, that will be called with the `debug_context' parameter.
- *    When SilcLog receives a debug message, it will trigger the callback
- *    function.  If the callback function returns TRUE SilcLog will assume
- *    the input as handled and won't run its default handler.  The `hexdump_cb'
- *    and `hexdump_context' works the same way, except that they are referred
- *    to SILC_LOG_HEXDUMP requests.
- *
- *    You can disable/remove a callback by setting it to NULL.  If set, each
- *    callback function must be either in the form described by SilcLogDebugCb
- *    or SilcLogHexdumpCb.
- *
- ***/
-void silc_log_set_debug_callbacks(SilcLogDebugCb debug_cb,
-                                 void *debug_context,
-                                 SilcLogHexdumpCb hexdump_cb,
-                                 void *hexdump_context);
-
-/****f* silcutil/SilcLogAPI/silc_log_reset_debug_callbacks
- *
- * SYNOPSIS
- *
- *    void silc_log_reset_debug_callbacks();
- *
- * DESCRIPTION
- *
- *    Resets debug callbacks set with silc_log_set_debug_callbacks.
- *
- ***/
-void silc_log_reset_debug_callbacks(void);
-
-/****f* silcutil/SilcLogAPI/silc_log_set_debug_string
- *
- * SYNOPSIS
- *
- *    void silc_log_set_debug_string(const char *debug_string);
- *
- * DESCRIPTION
- *
- *    Sets `debug_string' as the regexp string for filtering debugging
- *    output.  The string is copied and it can be modified/destroyed after
- *    this function call.
- *
- ***/
-void silc_log_set_debug_string(const char *debug_string);
-
-/****f* silcutil/SilcLogAPI/silc_log_timestamp
- *
- * NAME
- *
- *    void silc_log_timestamp(SilcBool enable);
- *
- * DESCRIPTION
- *
- *    Use timestamp in log messages.  Set `enable' to TRUE to enable
- *    timestamp and to FALSE to disable it.  Default is TRUE.
- *
- ***/
-void silc_log_timestamp(SilcBool enable);
-
-/****f* silcutil/SilcLogAPI/silc_log_flushdelay
- *
- * NAME
- *
- *    void silc_log_flushdelay(SilcUInt32 flushdelay);
- *
- * DESCRIPTION
- *
- *    Sets the logfiles flushing delay in seconds.  Default is 300 seconds.
- *
- ***/
-void silc_log_flushdelay(SilcUInt32 flushdelay);
-
-/****f* silcutil/SilcLogAPI/silc_log_quick
- *
- * NAME
- *
- *    void silc_log_quick(SilcBool enable);
- *
- * DESCRIPTION
- *
- *    SilcLog makes use of libc stream buffering output, which means that it
- *    saves HD activity by buffering the logging messages and writing them
- *    all together every some minutes (default is 5 minutes).
- *
- *    Setting `enable' to TRUE will force SilcLog to write messages to the
- *    filesystem as soon as they are received. This increases the CPU activity
- *    notably on bigger servers, but reduces memory usage.
- *
- *    If you want to change the logging style on-the-fly, make sure to call
- *    silc_log_flush_all() after setting `enable'  to TRUE.
- *
- *    Default is FALSE.
- *
- ***/
-void silc_log_quick(SilcBool enable);
-
-/****v* silcutil/SilcLogAPI/silc_log_debug
- *
- * NAME
- *
- *    void silc_log_debug(SilcBool enable);
- *
- * DESCRIPTION
- *
- *    If `enable' is set to FALSE, debugging functions won't procude any
- *    output and if set to TRUE prints debug messages to stderr.  Default
- *    is FALSE.
- *
- * SEE ALSO
- *    SILC_LOG_DEBUG
- *
- ***/
-void silc_log_debug(SilcBool enable);
-
-/****v* silcutil/SilcLogAPI/silc_log_debug_hexdump
- *
- * NAME
- *
- *    void silc_log_debug_hexdump(SilcBool enable);
- *
- * DESCRIPTION
- *
- *    If `enable' is set to FALSE, debugging functions won't produce
- *    any output anf if set to TRUE prints hexdump debug message to
- *    stderr.  Default is FALSE.
- *
- * SEE ALSO
- *    SILC_LOG_HEXDUMP
- *
- ***/
-void silc_log_debug_hexdump(SilcBool enable);
-
-#endif /* !SILCLOG_H */