about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-12-07 11:34:47 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-12-07 11:34:47 +0000
commitcefc0d927f11f9749c082d58d65c3e9ac007e8a1 (patch)
treed3d77ce9007d483487ee1548bc37c4eaaeff2fd7 /Src
parentf9bf1dc5580b6065f8b69668440325564be79594 (diff)
downloadzsh-cefc0d927f11f9749c082d58d65c3e9ac007e8a1.tar.gz
zsh-cefc0d927f11f9749c082d58d65c3e9ac007e8a1.tar.xz
zsh-cefc0d927f11f9749c082d58d65c3e9ac007e8a1.zip
24179: use queue_signals() for 24170
24180: back off strerror_r() patch, except for use of temporary var
Diffstat (limited to 'Src')
-rw-r--r--Src/exec.c6
-rw-r--r--Src/utils.c27
2 files changed, 2 insertions, 31 deletions
diff --git a/Src/exec.c b/Src/exec.c
index 6f16b9e87..9695011e3 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -229,7 +229,6 @@ zfork(struct timeval *tv)
 {
     pid_t pid;
     struct timezone dummy_tz;
-    sigset_t signals;
 
     /*
      * Is anybody willing to explain this test?
@@ -240,10 +239,9 @@ zfork(struct timeval *tv)
     }
     if (tv)
 	gettimeofday(tv, &dummy_tz);
-    sigfillset(&signals);
-    signals = signal_block(signals);
+    queue_signals();
     pid = fork();
-    signal_setmask(signals);
+    unqueue_signals();
     if (pid == -1) {
 	zerr("fork failed: %e", errno);
 	return -1;
diff --git a/Src/utils.c b/Src/utils.c
index 7c22a277f..d776d7cb3 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -310,34 +310,7 @@ zerrmsg(FILE *file, const char *fmt, va_list ap)
 		    errflag = 1;
 		    return;
 		}
-#ifdef HAVE_STRERROR_R
-		/*
-		 * There are two incompatible strerror_r()s floating round.
-		 * The GNU extension refuses to copy the message into the
-		 * buffer if it can return a constant string.  To suppress it
-		 * we need to define _XOPEN_SOURCE to 600.  I don't dare do
-		 * this because we're already depending on _GNU_SOURCE.  So
-		 * try to handle both by looking for errno being set (for the
-		 * standard version failing) or errbuf being left untouched
-		 * (for the GNU version).  One presumes that if strerror_r()
-		 * didn't copy anything to errbuf, then it's safe to
-		 * call strerror() to get the string.
-		 *
-		 * This is a mess, but it's about a decade and half
-		 * too late to shirk from messes in the source.
-		 */
-		olderrno = errno;
-		errno = 0;
-		errbuf[0] = '\0';
-		strerror_r(num, errbuf, ERRBUFSIZE);
-		if (errno || errbuf[0] == '\0')
-		    errmsg = strerror(num);
-		else
-		    errmsg = errbuf;
-		errno = olderrno;
-#else
 		errmsg = strerror(num);
-#endif
 		/* If the message is not about I/O problems, it looks better *
 		 * if we uncapitalize the first letter of the message        */
 		if (num == EIO)