aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--libempathy/empathy-debug.c37
-rw-r--r--libempathy/empathy-debug.h5
-rw-r--r--src/empathy.c2
4 files changed, 50 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 0823abdbb..4a5bb445c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2007-07-09 Xavier Claessens <xclaesse@gmail.com>
+ * src/empathy.c:
+ * libempathy/empathy-debug.c:
+ * libempathy/empathy-debug.h: Add EMPATHY_LOGFILE env variable. Fixes
+ bug #455240 (Guillaume Desmottes).
+
+2007-07-09 Xavier Claessens <xclaesse@gmail.com>
+
* libempathy-gtk/empathy-account-widget-msn.glade:
* libempathy-gtk/empathy-account-widget-msn.c:
* libempathy-gtk/empathy-account-widget-msn.h:
diff --git a/libempathy/empathy-debug.c b/libempathy/empathy-debug.c
index 2f5658499..c3e5d74b0 100644
--- a/libempathy/empathy-debug.c
+++ b/libempathy/empathy-debug.c
@@ -24,9 +24,15 @@
#include <stdarg.h>
#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
#include <glib.h>
#include <glib/gprintf.h>
+#include <glib/gstdio.h>
/* Set EMPATHY_DEBUG to a colon/comma/space separated list of domains, or "all"
* to get all debug output.
@@ -90,3 +96,34 @@ empathy_debug_impl (const gchar *domain, const gchar *msg, ...)
}
}
+void
+empathy_debug_set_log_file_from_env (void)
+{
+ const gchar *output_file;
+ gint out;
+
+ output_file = g_getenv ("EMPATHY_LOGFILE");
+ if (output_file == NULL) {
+ return;
+ }
+
+ out = g_open (output_file, O_WRONLY | O_CREAT, 0644);
+ if (out == -1) {
+ g_warning ("Can't open logfile '%s': %s", output_file,
+ g_strerror (errno));
+ return;
+ }
+
+ if (dup2 (out, STDOUT_FILENO) == -1) {
+ g_warning ("Error when duplicating stdout file descriptor: %s",
+ g_strerror (errno));
+ return;
+ }
+
+ if (dup2 (out, STDERR_FILENO) == -1) {
+ g_warning ("Error when duplicating stderr file descriptor: %s",
+ g_strerror (errno));
+ return;
+ }
+}
+
diff --git a/libempathy/empathy-debug.h b/libempathy/empathy-debug.h
index 19d2aa380..fca53f4bd 100644
--- a/libempathy/empathy-debug.h
+++ b/libempathy/empathy-debug.h
@@ -45,7 +45,10 @@ G_BEGIN_DECLS
# endif
#endif
-void empathy_debug_impl (const gchar *domain, const gchar *msg, ...);
+void empathy_debug_impl (const gchar *domain,
+ const gchar *msg,
+ ...);
+void empathy_debug_set_log_file_from_env (void);
G_END_DECLS
diff --git a/src/empathy.c b/src/empathy.c
index 416d2134d..9a764cef3 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -167,6 +167,8 @@ main (int argc, char *argv[])
{ NULL }
};
+ empathy_debug_set_log_file_from_env ();
+
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);