void *context;
} *SilcLog, SilcLogStruct;
+#ifndef SILC_SYMBIAN
+
/* Default settings */
static SilcLogSettingsStruct silclog =
{
TRUE,
};
+#endif /* !SILC_SYMBIAN */
+
/* Default log contexts */
+#ifndef SILC_SYMBIAN
static SilcLogStruct silclogs[4] =
+#else
+const SilcLogStruct silclogs[4] =
+#endif /* !SILC_SYMBIAN */
{
{"", NULL, 0, "Info", SILC_LOG_INFO, NULL, NULL},
{"", NULL, 0, "Warning", SILC_LOG_WARNING, NULL, NULL},
{
if (type < 1 || type > 4)
return NULL;
- return &silclogs[(int)type - 1];
+ return (SilcLog)&silclogs[(int)type - 1];
}
/* Check log file site and cycle log file if it is over max size. */
SILC_TASK_CALLBACK(silc_log_fflush_callback)
{
+#ifndef SILC_SYMBIAN
SilcLog log;
if (!silclog.quick) {
silclog.flushdelay = 2;
silc_schedule_task_add_timeout(context, silc_log_fflush_callback, context,
silclog.flushdelay, 0);
+#endif /* !SILC_SYMBIAN */
}
/* Output log message to log file */
typename = log->typename;
+#ifndef SILC_SYMBIAN
if (!silclog.scheduled) {
if (silclog.no_init == FALSE) {
fprintf(stderr,
log = NULL;
goto found;
}
+#endif /* !SILC_SYMBIAN */
/* Find open log file */
while (log) {
if (!log || !log->fp)
goto end;
+#ifndef SILC_SYMBIAN
found:
if (silclog.timestamp)
fprintf(fp, "[%s] [%s] %s\n", silc_time_string(0), typename, string);
if (log)
silc_log_checksize(log);
}
+#endif /* !SILC_SYMBIAN */
end:
+#ifndef SILC_SYMBIAN
/* Output log to stderr if debugging */
if (typename && silclog.debug) {
fprintf(stderr, "[Logging] [%s] %s\n", typename, string);
fflush(stderr);
}
+#else
+ fprintf(stderr, "[Logging] [%s] %s\n", typename, string);
+#endif /* !SILC_SYMBIAN */
+
silc_free(string);
}
SilcBool silc_log_set_file(SilcLogType type, char *filename,
SilcUInt32 maxsize, SilcSchedule scheduler)
{
+#ifndef SILC_SYMBIAN
FILE *fp = NULL;
SilcLog log;
silclog.scheduled = TRUE;
}
+#endif /* !SILC_SYMBIAN */
return TRUE;
}
void silc_log_set_callback(SilcLogType type, SilcLogCb cb, void *context)
{
+#ifndef SILC_SYMBIAN
SilcLog log = silc_log_get_context(type);
if (log) {
log->cb = cb;
log->context = context;
}
+#endif /* !SILC_SYMBIAN */
}
/* Reset log callbacks */
void silc_log_reset_callbacks(void)
{
+#ifndef SILC_SYMBIAN
SilcLog log;
log = silc_log_get_context(SILC_LOG_INFO);
log->cb = log->context = NULL;
log->cb = log->context = NULL;
log = silc_log_get_context(SILC_LOG_FATAL);
log->cb = log->context = NULL;
+#endif /* !SILC_SYMBIAN */
}
/* Flush all log files */
SilcLogHexdumpCb hexdump_cb,
void *hexdump_context)
{
+#ifndef SILC_SYMBIAN
silclog.debug_cb = debug_cb;
silclog.debug_context = debug_context;
silclog.hexdump_cb = hexdump_cb;
silclog.hexdump_context = hexdump_context;
+#endif /* !SILC_SYMBIAN */
}
/* Resets debug callbacks */
void silc_log_reset_debug_callbacks()
{
+#ifndef SILC_SYMBIAN
silclog.debug_cb = NULL;
silclog.debug_context = NULL;
silclog.hexdump_cb = NULL;
silclog.hexdump_context = NULL;
+#endif /* !SILC_SYMBIAN */
}
/* Set current debug string */
void silc_log_set_debug_string(const char *debug_string)
{
+#ifndef SILC_SYMBIAN
char *string;
int len;
if ((strchr(debug_string, '(') && strchr(debug_string, ')')) ||
memset(silclog.debug_string, 0, sizeof(silclog.debug_string));
strncpy(silclog.debug_string, string, len);
silc_free(string);
+#endif /* !SILC_SYMBIAN */
}
/* Set timestamp */
void silc_log_timestamp(SilcBool enable)
{
+#ifndef SILC_SYMBIAN
silclog.timestamp = enable;
+#endif /* !SILC_SYMBIAN */
}
/* Set flushdelay */
void silc_log_flushdelay(SilcUInt32 flushdelay)
{
+#ifndef SILC_SYMBIAN
silclog.flushdelay = flushdelay;
+#endif /* !SILC_SYMBIAN */
}
/* Set quick logging */
void silc_log_quick(SilcBool enable)
{
+#ifndef SILC_SYMBIAN
silclog.quick = enable;
+#endif /* !SILC_SYMBIAN */
}
/* Set debugging */
void silc_log_debug(SilcBool enable)
{
+#ifndef SILC_SYMBIAN
silclog.debug = enable;
+#endif /* !SILC_SYMBIAN */
}
/* Set debug hexdump */
void silc_log_debug_hexdump(SilcBool enable)
{
+#ifndef SILC_SYMBIAN
silclog.debug_hexdump = enable;
+#endif /* !SILC_SYMBIAN */
}
/* Outputs the debug message to stderr. */
void silc_log_output_debug(char *file, const char *function,
int line, char *string)
{
+#ifndef SILC_SYMBIAN
if (!silclog.debug)
goto end;
silclog.debug_context))
goto end;
}
+#endif /* !SILC_SYMBIAN */
#ifdef SILC_WIN32
if (strrchr(function, '\\'))
fprintf(stderr, "%s:%d: %s\n", strrchr(function, '\\') + 1, line, string);
else
#endif /* SILC_WIN32 */
-
+#ifdef SILC_SYMBIAN
+ silc_symbian_debug(function, line, string);
+#else
fprintf(stderr, "%s:%d: %s\n", function, line, string);
fflush(stderr);
-
+#endif /* SILC_SYMBIAN */
+
end:
silc_free(string);
}
int off, pos, count;
unsigned char *data = (unsigned char *)data_in;
+#ifndef SILC_SYMBIAN
if (!silclog.debug_hexdump)
goto end;
data_in, len, string, silclog.hexdump_context))
goto end;
}
+#endif /* !SILC_SYMBIAN */
fprintf(stderr, "%s:%d: %s\n", function, line, string);