patches/glibc/ports-2.13/300-nscd-one-fork.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
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