gdm r6482 - in trunk: . daemon



Author: mccann
Date: Mon Sep  8 22:11:56 2008
New Revision: 6482
URL: http://svn.gnome.org/viewvc/gdm?rev=6482&view=rev

Log:
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.



Modified:
   trunk/ChangeLog
   trunk/daemon/gdm-server.c
   trunk/daemon/gdm-welcome-session.c

Modified: trunk/daemon/gdm-server.c
==============================================================================
--- trunk/daemon/gdm-server.c	(original)
+++ trunk/daemon/gdm-server.c	Mon Sep  8 22:11:56 2008
@@ -58,6 +58,8 @@
 #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 @@
 }
 
 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 @@
                         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 @@
 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));

Modified: trunk/daemon/gdm-welcome-session.c
==============================================================================
--- trunk/daemon/gdm-welcome-session.c	(original)
+++ trunk/daemon/gdm-welcome-session.c	Mon Sep  8 22:11:56 2008
@@ -48,6 +48,8 @@
 
 #define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch --exit-with-session"
 
+#define MAX_LOGS 5
+
 extern char **environ;
 
 #define GDM_WELCOME_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_WELCOME_SESSION, GdmWelcomeSessionPrivate))
@@ -376,6 +378,33 @@
         stop_dbus_daemon (session);
 }
 
+static void
+rotate_logs (const char *path,
+             guint       n_copies)
+{
+        int i;
+
+        for (i = n_copies - 1; i > 0; i--) {
+                char *name_n;
+                char *name_n1;
+
+                name_n = g_strdup_printf ("%s.%d", path, i);
+                if (i > 1) {
+                        name_n1 = g_strdup_printf ("%s.%d", path, i - 1);
+                } else {
+                        name_n1 = g_strdup (path);
+                }
+
+                VE_IGNORE_EINTR (g_unlink (name_n));
+                VE_IGNORE_EINTR (g_rename (name_n1, name_n));
+
+                g_free (name_n1);
+                g_free (name_n);
+        }
+
+        VE_IGNORE_EINTR (g_unlink (path));
+}
+
 typedef struct {
         const char *user_name;
         const char *group_name;
@@ -450,14 +479,7 @@
         if (data->log_file != NULL) {
                 int logfd;
 
-                if (g_access (data->log_file, R_OK | W_OK) == 0) {
-                        char *filename_old;
-
-                        filename_old = g_strdup_printf ("%s.old", data->log_file);
-                        VE_IGNORE_EINTR (g_unlink (filename_old));
-                        VE_IGNORE_EINTR (g_rename (data->log_file, filename_old));
-                        g_free (filename_old);
-                }
+                rotate_logs (data->log_file, MAX_LOGS);
 
                 VE_IGNORE_EINTR (g_unlink (data->log_file));
                 VE_IGNORE_EINTR (logfd = open (data->log_file, O_CREAT|O_TRUNC|O_WRONLY|O_EXCL, 0644));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]