diff options
author | George Lebl <jirka@5z.com> | 2001-11-22 03:07:24 +0000 |
---|---|---|
committer | George Lebl <jirka@src.gnome.org> | 2001-11-22 03:07:24 +0000 |
commit | fbf49a272c81714fa687d7c548ca05ceeeda5d5b (patch) | |
tree | 1766f2957f4199e3e51895b127953cd63813d80a | |
parent | ddbdeb994517c37e2d7745a3cf437ac059bf768b (diff) | |
download | gdm-fbf49a272c81714fa687d7c548ca05ceeeda5d5b.tar.gz |
keep 4 old x server logs in a logrotate like manner to make debugging X
Wed Nov 21 19:46:50 2001 George Lebl <jirka@5z.com>
* daemon/server.c: keep 4 old x server logs in a logrotate like
manner to make debugging X server problems easier
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | daemon/server.c | 29 |
2 files changed, 33 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Wed Nov 21 19:46:50 2001 George Lebl <jirka@5z.com> + + * daemon/server.c: keep 4 old x server logs in a logrotate like + manner to make debugging X server problems easier + 2001-11-17 Carlos Perelló Marín <carlos@gnome-db.org> * configure.in (ALL_LINGUAS): Added pt. diff --git a/daemon/server.c b/daemon/server.c index 7bbddd64..e5b90230 100644 --- a/daemon/server.c +++ b/daemon/server.c @@ -552,6 +552,30 @@ gdm_server_checklog (GdmDisplay *disp) #endif } +static void +rotate_logs (const char *dname) +{ + /* I'm too lazy to write a loop damnit */ + char *fname4 = g_strconcat (GdmLogDir, "/", dname, ".log.4", NULL); + char *fname3 = g_strconcat (GdmLogDir, "/", dname, ".log.3", NULL); + char *fname2 = g_strconcat (GdmLogDir, "/", dname, ".log.2", NULL); + char *fname1 = g_strconcat (GdmLogDir, "/", dname, ".log.1", NULL); + char *fname = g_strconcat (GdmLogDir, "/", dname, ".log", NULL); + + /* Rotate the logs (keep 4 last) */ + unlink (fname4); + rename (fname3, fname4); + rename (fname2, fname3); + rename (fname1, fname2); + rename (fname, fname1); + + g_free (fname4); + g_free (fname3); + g_free (fname2); + g_free (fname1); + g_free (fname); +} + /** * gdm_server_spawn: * @disp: Pointer to a GdmDisplay structure @@ -588,7 +612,7 @@ gdm_server_spawn (GdmDisplay *d) if (kill (pid, SIGTERM) == 0) waitpid (pid, NULL, 0); } - + /* Fork into two processes. Parent remains the gdm process. Child * becomes the X server. */ @@ -616,6 +640,9 @@ gdm_server_spawn (GdmDisplay *d) open ("/dev/null", O_RDWR); /* open stdout - fd 1 */ open ("/dev/null", O_RDWR); /* open stderr - fd 2 */ + /* Rotate the X server logs */ + rotate_logs (d->name); + /* Log all output from spawned programs to a file */ logfd = open (g_strconcat (GdmLogDir, "/", d->name, ".log", NULL), O_CREAT|O_TRUNC|O_WRONLY, 0644); |