summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-base/gdm/files/gdm-2.32.0-fix-daemonize-regression.patch')
-rw-r--r--gnome-base/gdm/files/gdm-2.32.0-fix-daemonize-regression.patch126
1 files changed, 0 insertions, 126 deletions
diff --git a/gnome-base/gdm/files/gdm-2.32.0-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-2.32.0-fix-daemonize-regression.patch
deleted file mode 100644
index 2ae7f61..0000000
--- a/gnome-base/gdm/files/gdm-2.32.0-fix-daemonize-regression.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From 7f5104b242e6b36e6143183b14582d362763ff2a Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Tue, 2 Nov 2010 23:16:51 +0100
-Subject: [PATCH 2/6] daemonize so that the boot process can continue
-
-Gentoo bug: #236701
-
-Originally from: Dan Nicholson <dbn.lists@gmail.com>
-
-Fork gdm-binary, except when -nodaemon is used
-
-gdm-binary now forks and the parent terminates, except when the
--nodaemon or --nodaemon options are used. This provides compatibility
-with xdm. Fixes bug #550170.
-
----
- daemon/main.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 64 insertions(+), 0 deletions(-)
-
-diff --git a/daemon/main.c b/daemon/main.c
-index 5b8d66b..191b6e3 100644
---- a/daemon/main.c
-+++ b/daemon/main.c
-@@ -513,6 +513,56 @@ is_debug_set (void)
- return debug;
- }
-
-+static void
-+dup_dev_null (int fd, int flags)
-+{
-+ int nullfd;
-+ int dupfd;
-+
-+ VE_IGNORE_EINTR (nullfd = open ("/dev/null", flags));
-+ if (G_UNLIKELY (nullfd < 0)) {
-+ gdm_fail (_("Cannot open /dev/null: %s!"),
-+ strerror (errno));
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ VE_IGNORE_EINTR (dupfd = dup2 (nullfd, fd));
-+ if (G_UNLIKELY (dupfd < 0)) {
-+ gdm_fail (_("Cannot duplicate /dev/null: %s!"),
-+ strerror (errno));
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ VE_IGNORE_EINTR (close (nullfd));
-+}
-+
-+static void
-+daemonify (void)
-+{
-+ pid_t pid;
-+
-+ pid = fork ();
-+
-+ /* terminate the parent */
-+ if (pid > 0)
-+ exit (EXIT_SUCCESS);
-+
-+ if (G_UNLIKELY (pid < 0)) {
-+ gdm_fail (_("fork () failed: %s!"), strerror (errno));
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ if (G_UNLIKELY (setsid () < 0)) {
-+ gdm_fail (_("setsid () failed: %s!"), strerror (errno));
-+ exit (EXIT_FAILURE);
-+ }
-+
-+ /* reopen stdin, stdout, stderr with /dev/null */
-+ dup_dev_null (STDIN_FILENO, O_RDONLY);
-+ dup_dev_null (STDOUT_FILENO, O_RDWR);
-+ dup_dev_null (STDERR_FILENO, O_RDWR);
-+}
-+
- int
- main (int argc,
- char **argv)
-@@ -523,14 +573,17 @@ main (int argc,
- DBusGConnection *connection;
- GError *error;
- int ret;
-+ int i;
- gboolean res;
- gboolean xdmcp_enabled;
- GdmSignalHandler *signal_handler;
- static gboolean do_timed_exit = FALSE;
- static gboolean print_version = FALSE;
- static gboolean fatal_warnings = FALSE;
-+ static gboolean no_daemon = FALSE;
- static GOptionEntry entries [] = {
- { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
-+ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
- { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
- { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
-
-@@ -547,6 +600,14 @@ main (int argc,
-
- g_type_init ();
-
-+ /* preprocess the arguments to support the xdm style
-+ * -nodaemon option
-+ */
-+ for (i = 0; i < argc; i++) {
-+ if (strcmp (argv[i], "-nodaemon") == 0)
-+ argv[i] = "--nodaemon";
-+ }
-+
- context = g_option_context_new (_("GNOME Display Manager"));
- g_option_context_add_main_entries (context, entries, NULL);
- g_option_context_set_ignore_unknown_options (context, TRUE);
-@@ -617,6 +678,9 @@ main (int argc,
- exit (-1);
- }
-
-+ if (no_daemon == FALSE)
-+ daemonify ();
-+
- /* pid file */
- delete_pid ();
- write_pid ();
---
-1.7.3.1
-