]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Fix up logging dirs
authorunknown <robert.ancell@gmail.com>
Sat, 31 Jul 2010 09:14:43 +0000 (17:14 +0800)
committerunknown <robert.ancell@gmail.com>
Sat, 31 Jul 2010 09:14:43 +0000 (17:14 +0800)
src/display-manager.c
src/session.c
src/xserver.c

index 10afbbd06b2f3ef4823bb69d66ecc7d168b93f03..ffcbe71bec5fc22e051533586488916feb6c62c6 100644 (file)
@@ -165,6 +165,13 @@ start_session (Display *display, Session *session, gboolean is_greeter, DisplayM
     }
 
     if (is_greeter)
+    {
+        gchar *filename;
+        filename = g_strdup_printf ("%s-greeter.log", xserver_get_address (display_get_xserver (display)));
+        string = g_build_filename (manager->priv->log_dir, filename, NULL);
+        g_free (filename);
+    }
+    else
     {
         // FIXME: Copy old error file
         if (manager->priv->test_mode)
@@ -172,13 +179,6 @@ start_session (Display *display, Session *session, gboolean is_greeter, DisplayM
         else
             string = g_build_filename (getpwnam (session_get_username (session))->pw_dir, ".xsession-errors", NULL);
     }
-    else
-    {
-        gchar *filename;
-        filename = g_strdup_printf ("%s-greeter.log", xserver_get_address (display_get_xserver (display)));
-        string = g_build_filename (manager->priv->log_dir, filename, NULL);
-        g_free (filename);
-    }
     g_debug ("Logging to %s", string);
     session_set_log_file (session, string);
     g_free (string);
index 02c5b4fbcec79081e9a5ff91b54ebd2d00c745cb..ee65c583a8d0fa0cbf6df946b79fba9b5d5d28c3 100644 (file)
  */
 
 #include <stdlib.h>
-#include <fcntl.h>
 #include <unistd.h>
 #include <sys/wait.h>
 #include <pwd.h>
 #include <errno.h>
 #include <string.h>
+#include <fcntl.h>
+#include <glib/gstdio.h>
 
 #include "session.h"
 
@@ -131,6 +132,7 @@ static void
 session_fork_cb (gpointer data)
 {
     Session *session = data;
+    int fd;
 
     if (session->priv->user_info)
     {
@@ -148,12 +150,15 @@ session_fork_cb (gpointer data)
             g_warning ("Failed to change directory: %s", strerror (errno));
     }
 
+    /* Make input non-blocking */
+    fd = g_open ("/dev/null", O_RDONLY);
+    dup2 (fd, STDIN_FILENO);
+    close (fd);
+
     /* Redirect output to logfile */
     if (session->priv->log_file)
     {
-        int fd;
-
-        fd = open (session->priv->log_file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP);
+        fd = g_open (session->priv->log_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
         if (fd < 0)
             g_warning ("Failed to open session log file %s: %s", session->priv->log_file, g_strerror (errno));
         else
index b3dc7be082e603ec24dd5a56cd7664a2b0c82b36..be4ef503e9c83d05e4badbabecb8f7d1f338ad95 100644 (file)
 #include <stdlib.h>
 #include <errno.h>
 #include <string.h>
-#include <fcntl.h>
 #include <sys/wait.h>
 #include <xcb/xcb.h>
+#include <fcntl.h>
+#include <glib/gstdio.h>
 
 #include "xserver.h"
 
@@ -307,7 +308,7 @@ xserver_fork_cb (gpointer data)
     {
          int fd;
 
-         fd = open (server->priv->log_file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP);
+         fd = g_open (server->priv->log_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
          if (fd < 0)
              g_warning ("Failed to open session log file %s: %s", server->priv->log_file, g_strerror (errno));
          else