diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-09-08 22:11:56 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-09-08 22:11:56 +0000 |
commit | 719e2c0d41e9aade88b140fbd4994b13da9372b0 (patch) | |
tree | bec5c3d522ee8af2f235677ed29054479b29b28b /daemon/gdm-server.c | |
parent | ceccfe79ea21a853f3b3947ce2f8456807417586 (diff) | |
download | gdm-719e2c0d41e9aade88b140fbd4994b13da9372b0.tar.gz |
Use the same log rotation for slave and greeter.
2008-09-08 William Jon McCann <jmccann@redhat.com>
* daemon/gdm-server.c (rotate_logs), (server_child_setup):
* daemon/gdm-welcome-session.c (rotate_logs), (spawn_child_setup):
Use the same log rotation for slave and greeter.
svn path=/trunk/; revision=6482
Diffstat (limited to 'daemon/gdm-server.c')
-rw-r--r-- | daemon/gdm-server.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c index 5b159d87..ca37a2a4 100644 --- a/daemon/gdm-server.c +++ b/daemon/gdm-server.c @@ -58,6 +58,8 @@ extern char **environ; #define SERVER_RUNNING 252 /* Server running and ready for connections */ #define SERVER_ABORT 253 /* Server failed badly. Suspending display. */ +#define MAX_LOGS 5 + struct GdmServerPrivate { char *command; @@ -319,18 +321,10 @@ gdm_server_resolve_command_line (GdmServer *server, } static void -rotate_logs (GdmServer *server) +rotate_logs (const char *path, + guint n_copies) { - int n_copies; - int i; - char *filename; - char *path; - - n_copies = 5; - - filename = g_strdup_printf ("%s.log", server->priv->display_name); - path = g_build_filename (server->priv->log_dir, filename, NULL); - g_free (filename); + int i; for (i = n_copies - 1; i > 0; i--) { char *name_n; @@ -343,14 +337,14 @@ rotate_logs (GdmServer *server) name_n1 = g_strdup (path); } - g_unlink (name_n); - g_rename (name_n1, name_n); + VE_IGNORE_EINTR (g_unlink (name_n)); + VE_IGNORE_EINTR (g_rename (name_n1, name_n)); g_free (name_n1); g_free (name_n); } - g_unlink (path); + VE_IGNORE_EINTR (g_unlink (path)); } static void @@ -408,22 +402,26 @@ change_user (GdmServer *server) static void server_child_setup (GdmServer *server) { - char *logfile; int logfd; struct sigaction ign_signal; sigset_t mask; - char *temp; + char *log_file; + char *log_path; + + log_file = g_strdup_printf ("%s.log", server->priv->display_name); + log_path = g_build_filename (server->priv->log_dir, log_file, NULL); + g_free (log_file); /* Rotate the X server logs */ - rotate_logs (server); + rotate_logs (log_path, MAX_LOGS); /* Log all output from spawned programs to a file */ - temp = g_strconcat (server->priv->display_name, ".log", NULL); - logfile = g_build_filename (server->priv->log_dir, temp, NULL); - g_debug ("GdmServer: Opening logfile for server %s", logfile); + g_debug ("GdmServer: Opening logfile for server %s", log_path); + + VE_IGNORE_EINTR (g_unlink (log_path)); + VE_IGNORE_EINTR (logfd = open (log_path, O_CREAT|O_TRUNC|O_WRONLY|O_EXCL, 0644)); - VE_IGNORE_EINTR (g_unlink (logfile)); - VE_IGNORE_EINTR (logfd = open (logfile, O_CREAT|O_TRUNC|O_WRONLY|O_EXCL, 0644)); + g_free (log_path); if (logfd != -1) { VE_IGNORE_EINTR (dup2 (logfd, 1)); |