summaryrefslogtreecommitdiff
path: root/logdefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'logdefs.c')
-rw-r--r--logdefs.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/logdefs.c b/logdefs.c
new file mode 100644
index 00000000..444af5ce
--- /dev/null
+++ b/logdefs.c
@@ -0,0 +1,49 @@
+/*
+ * logdefs.c: Logging and debug output
+ *
+ * See the main source file 'xineliboutput.c' for copyright information and
+ * how to reach the author.
+ *
+ * $Id: logdefs.c,v 1.1 2008-11-04 11:55:42 phintuka Exp $
+ *
+ */
+
+#include "logdefs.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <stdarg.h>
+
+#ifndef __APPLE__
+# include <linux/unistd.h> /* syscall(__NR_gettid) */
+#endif
+
+extern int LogToSysLog; /* xine_frontend.c, log to syslog instead of console */
+
+void x_syslog(int level, const char *module, const char *fmt, ...)
+{
+ va_list argp;
+ char buf[512];
+
+ va_start(argp, fmt);
+ vsnprintf(buf, 512, fmt, argp);
+ buf[sizeof(buf)-1] = 0;
+
+#ifndef __APPLE__
+ if(!LogToSysLog) {
+ fprintf(stderr,"[%ld] %s%s\n", (long int)syscall(__NR_gettid), module, buf);
+ } else {
+ syslog(level, "[%ld] %s%s", (long int)syscall(__NR_gettid), module, buf);
+ }
+#else
+ if(!LogToSysLog) {
+ fprintf(stderr, "%s%s\n", module, buf);
+ } else {
+ syslog(level, "%s%s", module, buf);
+ }
+#endif
+
+ va_end(argp);
+}
+