summaryrefslogtreecommitdiff
path: root/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/debug.c b/debug.c
new file mode 100644
index 0000000..3727028
--- /dev/null
+++ b/debug.c
@@ -0,0 +1,68 @@
+#include <vdr/plugin.h>
+#include <stdarg.h>
+#include "debug.h"
+
+// --- cDebugLog -------------------------------------------------------
+
+cDebugLog DebugLog;
+
+cDebugLog::cDebugLog(void)
+{
+ FileName = NULL;
+ File = NULL;
+}
+
+cDebugLog::~ cDebugLog(void)
+{
+ Close();
+ free(FileName);
+}
+
+bool cDebugLog::Open(void)
+{
+ File = fopen(FileName, "a");
+ if(File)
+ {
+ DEBUG("---------");
+ DEBUG("Neuer Log");
+ DEBUG("---------");
+ return true;
+ }
+
+ return false;
+}
+
+void cDebugLog::Close(void)
+{
+ if(File)
+ fclose(File);
+}
+
+bool cDebugLog::SetLogFile(char *filename)
+{
+ if(filename)
+ FileName = strdup(filename);
+
+ return Open();
+}
+
+void cDebugLog::WriteLine(char *file, int line, char *format, ...)
+{
+ if(File)
+ {
+ char *fmt;
+ asprintf(&fmt, "DVDSWITCH(%s,%d): %s", file, line, format);
+ va_list ap;
+ va_start(ap, format);
+ vfprintf(File, fmt, ap);
+ va_end(ap);
+ fprintf(File, "\n");
+ fflush(File);
+ free(fmt);
+ }
+}
+
+void cDebugLog::End(void)
+{
+ Close();
+}