patches/glibc/ports-2.13/300-nscd-one-fork.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 17:54:21 2011 +0200 (2011-07-17)
changeset 2888 dd71df95903a
permissions -rw-r--r--
cc/gcc: pass the companion libs prefix to cc_core

In case of canadian-cross, the companion libraries are not the same for
the core cc (they run on 'build') as they are for the final cc (they run
on 'host').

Prepare for this differentiation (coming later), while retaining the
current behavior (to use the same compblibs).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2438
     1
only fork one to assist in stop-start-daemon assumptions about daemon behavior
yann@2438
     2
yann@2438
     3
http://bugs.gentoo.org/190785
yann@2438
     4
yann@2438
     5
diff -durN glibc-2.13.orig/nscd/nscd.c glibc-2.13/nscd/nscd.c
yann@2438
     6
--- glibc-2.13.orig/nscd/nscd.c	2009-02-06 21:10:27.000000000 +0100
yann@2438
     7
+++ glibc-2.13/nscd/nscd.c	2009-11-13 00:50:24.000000000 +0100
yann@2438
     8
@@ -182,6 +182,9 @@
yann@2438
     9
       if (pid != 0)
yann@2438
    10
 	exit (0);
yann@2438
    11
 
yann@2438
    12
+       if (write_pid (_PATH_NSCDPID) < 0)
yann@2438
    13
+	dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
yann@2438
    14
+
yann@2438
    15
       int nullfd = open (_PATH_DEVNULL, O_RDWR);
yann@2438
    16
       if (nullfd != -1)
yann@2438
    17
 	{
yann@2438
    18
@@ -231,12 +234,6 @@
yann@2438
    19
 	for (i = min_close_fd; i < getdtablesize (); i++)
yann@2438
    20
 	  close (i);
yann@2438
    21
 
yann@2438
    22
-      pid = fork ();
yann@2438
    23
-      if (pid == -1)
yann@2438
    24
-	error (EXIT_FAILURE, errno, _("cannot fork"));
yann@2438
    25
-      if (pid != 0)
yann@2438
    26
-	exit (0);
yann@2438
    27
-
yann@2438
    28
       setsid ();
yann@2438
    29
 
yann@2438
    30
       if (chdir ("/") != 0)
yann@2438
    31
@@ -245,9 +242,6 @@
yann@2438
    32
 
yann@2438
    33
       openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);
yann@2438
    34
 
yann@2438
    35
-      if (write_pid (_PATH_NSCDPID) < 0)
yann@2438
    36
-	dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
yann@2438
    37
-
yann@2438
    38
       if (!init_logfile ())
yann@2438
    39
 	dbg_log (_("Could not create log file"));
yann@2438
    40