* Added global variable silc_log_timestamp that tells silclog
[silc.git] / lib / silcutil / silclog.h
index 76f8f67c7a8c5a8520cafa1563d1d9a5a8bd1a01..0819ace625d2f821c45e9383068b757ad9783440 100644 (file)
@@ -18,7 +18,7 @@
 
 */
 
-/****h* silcutil/SilcLogAPI
+/****h* silcutil/SILC Logging Interface
  *
  * DESCRIPTION
  *
@@ -41,7 +41,7 @@
  *    This is the main logging channel id. There are currently four known
  *    logging channels (plus the debugging output channel), and they are
  *    ordered by importance.
- *    See the source code for SILC coding conventions about how choosing
+ *    See the source code for SILC coding conventions about how to choose
  *    the right output channel.
  *
  * SOURCE
@@ -53,13 +53,13 @@ typedef enum {
   /* This should be used for warnings and non critical failures */
   SILC_LOG_WARNING,
 
-  /* Generic error and critical failures messages */
+  /* Generic error and critical failure messages */
   SILC_LOG_ERROR,
 
   /* Fatal messages (usually situations that will lead to a program crash */
   SILC_LOG_FATAL,
 
-  /* Total logging channels */
+  /* Total number logging channels */
   SILC_LOG_MAX
 } SilcLogType;
 /***/
@@ -116,14 +116,14 @@ typedef bool (*SilcLogDebugCb)(char *file, char *function, int line,
  * SYNOPSIS
  *
  *    typedef bool (*SilcDebugHexdumpCb)(char *file, char *function, int line,
- *                                       unsigned char *data, uint32 data_len,
+ *                                       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 it
- *    like to be.  `file', `function', and `line' are the corresponding
+ *    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
@@ -137,11 +137,27 @@ typedef bool (*SilcLogDebugCb)(char *file, char *function, int line,
  *
  ***/
 typedef bool (*SilcLogHexdumpCb)(char *file, char *function, int line,
-                                unsigned char *data, uint32 data_len,
+                                unsigned char *data, SilcUInt32 data_len,
                                 char *message, void *context);
 
 /* Global Variables */
 
+/****v* silcutil/SilcLogAPI/silc_log_timestamp
+ *
+ * NAME
+ *
+ *    bool silc_log_timestamp -- enable/disable fast logging timestamp
+ *
+ * DESCRIPTION
+ *
+ *    Causes SilcLog to add a timestamp as returned by silc_get_time().
+ *    This may be useful for example if you run your application under a
+ *    daemon helper like watchdog that adds its own timestamp.  Defaults to
+ *    true.
+ *
+ ***/
+extern DLLAPI bool silc_log_timestamp;
+
 /****v* silcutil/SilcLogAPI/silc_log_quick
  *
  * NAME
@@ -220,9 +236,11 @@ extern DLLAPI bool silc_debug_hexdump;
 
 /* Macros */
 
-#ifdef WIN32
+#ifdef SILC_WIN32
+#ifndef __FUNCTION__
 #define __FUNCTION__ ""
 #endif
+#endif
 
 /****d* silcutil/SilcLogAPI/SILC_LOG_INFO
  *
@@ -316,14 +334,12 @@ extern DLLAPI bool silc_debug_hexdump;
  * DESCRIPTION
  *
  *    This is a special wrapper to the debugging output (usually stderr).
- *    The standard behaviour is the same as SILC_LOG_INFO, but this macro
- *    also depends on the global debugging macro SILC_DEBUG.
- *    Undefining the global SILC_DEBUG define causes these functions to be
- *    defined to an empty value, thus removing all logging calls from the
- *    compiled program.
- *
- * SEE ALSO
- *    SILC_LOG_INFO
+ *    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.
+ *    This macro is also affected by the global variable silc_debug.
  *
  * SOURCE
  */
@@ -332,8 +348,11 @@ extern DLLAPI bool silc_debug_hexdump;
                                __FUNCTION__, \
                                __LINE__, \
                                silc_format fmt)
+#define SILC_NOT_IMPLEMENTED(string) \
+  SILC_LOG_DEBUG(("*********** %s: NOT IMPLEMENTED YET", string));
 #else
 #define SILC_LOG_DEBUG(fmt)
+#define SILC_NOT_IMPLEMENTED(string)
 #endif /* SILC_DEBUG */
 /***/
 
@@ -349,13 +368,13 @@ extern DLLAPI bool silc_debug_hexdump;
  *    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 to the beginning of the
- *    memory section that should be hexdumped, and the third parameter is
- *    the length of this memory section.
- *    This macro is also affected by the global variable silc_debug_hexdump.
+ *    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 logging calls from the
- *    compiled program.
+ *    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
  *
@@ -414,7 +433,7 @@ void silc_log_output(SilcLogType type, char *string);
  *    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
- *    must not be freed, modified or stored.
+ *    not be freed, modified or stored.
  *
  ***/
 char *silc_log_get_file(SilcLogType type);
@@ -423,7 +442,8 @@ char *silc_log_get_file(SilcLogType type);
  *
  * SYNOPSIS
  *
- *    bool silc_log_set_file(SilcLogType type, char *filename, uint32 maxsize,
+ *    bool silc_log_set_file(SilcLogType type, char *filename, 
+ *                           SilcUInt32 maxsize,
  *                           SilcSchedule scheduler);
  *
  * DESCRIPTION
@@ -438,7 +458,7 @@ char *silc_log_get_file(SilcLogType type);
  *    buffered output and thus to save HD activity.
  *
  ***/
-bool silc_log_set_file(SilcLogType type, char *filename, uint32 maxsize,
+bool silc_log_set_file(SilcLogType type, char *filename, SilcUInt32 maxsize,
                       SilcSchedule scheduler);
 
 /****f* silcutil/SilcLogAPI/silc_log_set_callback
@@ -461,7 +481,7 @@ bool silc_log_set_file(SilcLogType type, char *filename, uint32 maxsize,
  *    SilcLogCb.
  *
  * SEE ALSO
- *    SilcLogCb, silc_log_reset_callbacks
+ *    silc_log_reset_callbacks
  *
  ***/
 void silc_log_set_callback(SilcLogType type, SilcLogCb cb, void *context);
@@ -508,8 +528,8 @@ void silc_log_flush_all();
  *
  *    Forces all logging channels to close and reopen their streams.  Useful
  *    for example after a SIGHUP signal.
- *    Please note that this function could cause some warning messages if
- *    some logging channel points to an illegal filename.
+ *    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();
@@ -539,7 +559,7 @@ void silc_log_output_debug(char *file, char *function,
  *
  *    void silc_log_output_hexdump(char *file, char *function,
  *                                 int line, void *data_in,
- *                                 uint32 len, char *string);
+ *                                 SilcUInt32 len, char *string);
  *
  * DESCRIPTION
  *
@@ -553,7 +573,7 @@ void silc_log_output_debug(char *file, char *function,
  ***/
 void silc_log_output_hexdump(char *file, char *function,
                             int line, void *data_in,
-                            uint32 len, char *string);
+                            SilcUInt32 len, char *string);
 
 /****f* silcutil/SilcLogAPI/silc_log_set_debug_callbacks
  *