zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <pws@csr.com>
To: Zsh hackers list <zsh-workers@sunsite.dk>
Subject: Re: Is wait not interruptable?
Date: Mon, 18 Dec 2006 16:12:29 +0000	[thread overview]
Message-ID: <20061218161229.7bbec427.pws@csr.com> (raw)
In-Reply-To: <20061218113953.c19237da.pws@csr.com>

Peter Stephenson <pws@csr.com> wrote:
> > } Surely the right thing to do would be to use a more lenient signal mask
> > } in signal_suspend(), since we know that's a good place for signal
> > } handling---although we might have to queue traps for later execution
> > } unless one of TRAPSASYNC or the wait builtin is in use.
> > 
> > This may be an artifact from before trap queuing was possible, then.  I
> > generally concur with your assessment here.
> 
> I think some rewriting may be in order... There's the vestiges of code
> (trap_queue* variables in signals.c) for queueing traps (as opposed to the
> current method of queueing signals, which necessarily means delaying traps,
> too).  I suggest using that in this case so that signals are handled
> immediately, but traps are queued except for the cases of wait or
> TRAPSASYNC.  This will allow the shell to exit quickly if the signal isn't
> trapped, which is the real problem in this case (and presumably the reason
> for that sigdelset(set, SIGHUP) in signal_suspend_setup()).  To be clear:
> nothing would change except for the handling of signals around the point
> where we're doing nothing but waiting for a child.  (In particular, no
> fiddling with the signal queueing code is needed.)

Here is the implementation, attempting to be minimally invasive.  I won't
check it in immediately (but I'm on holiday from Wednesday so would like
to sort it out by Tuesday evening UK time).  Tests suggest it does what I
think it should.

As I noted in a comment, there's presumably a race when queuing traps since
the signal may already have been delivered by the time we start the trap
queuing.  That's not new (we only queue traps at roughly the point where we
previously blocked signals).  I could move the new queue_traps() before
dont_queue_signals() in the two applicable functions: then traps would be
queued when the previously blocked signals arrive.  I suspect that's a good
thing to do, but (i) it only just occurred to me (ii) it's a slightly
larger change of behaviour, so I haven't done it here.  Discussion welcome,
obviously.

One slight difference is that in zwaitjob() we'll delay traps to wait for
the entire foreground job, not just the first process to exit.  Before, if
there were multiple processes to wait for, we'd have returned from
sigsuspend() after each, and potentially handled signals there.  That seems
a bit hit and miss---it didn't matter which process was actually
finished---so I'm happy with the new behaviour.

The first hunk is separate, to indicate that additional uses of PIDs by
kill may be used if handled by the OS.

I think that with this patch Dave's original problem should go away: even though
the "sleep"s in his example hang on, as discussed in the other half of this thread,
they won't have any effect since the shell will exit immediately when it gets the
(untrapped) SIGTERM.

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.89
diff -u -r1.89 builtins.yo
--- Doc/Zsh/builtins.yo	13 Dec 2006 22:30:38 -0000	1.89
+++ Doc/Zsh/builtins.yo	18 Dec 2006 15:54:06 -0000
@@ -692,6 +692,9 @@
 show if the alternative form corresponds to a signal number.  For example,
 under Linux tt(kill -l IO) and tt(kill -l POLL) both output 29, hence
 tt(kill -IO) and tt(kill -POLL) have the same effect.
+
+Many systems will allow process IDs to be negative to kill a process
+group or zero to kill the current process group.
 )
 findex(let)
 item(tt(let) var(arg) ...)(
Index: Src/jobs.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/jobs.c,v
retrieving revision 1.51
diff -u -r1.51 jobs.c
--- Src/jobs.c	18 Dec 2006 11:16:03 -0000	1.51
+++ Src/jobs.c	18 Dec 2006 15:54:06 -0000
@@ -1141,6 +1141,7 @@
     /* child_block() around this loop in case #ifndef WNOHANG */
     dont_queue_signals();
     child_block();		/* unblocked in signal_suspend() */
+    queue_traps(wait_cmd);
     while (!errflag && (kill(pid, 0) >= 0 || errno != ESRCH)) {
 	if (first)
 	    first = 0;
@@ -1148,7 +1149,7 @@
 	    kill(pid, SIGCONT);
 
 	last_signal = -1;
-	signal_suspend(SIGCHLD, wait_cmd);
+	signal_suspend(SIGCHLD);
 	if (last_signal != SIGCHLD && wait_cmd) {
 	    /* wait command interrupted, but no error: return */
 	    restore_queue_signals(q);
@@ -1156,6 +1157,7 @@
 	}
 	child_block();
     }
+    unqueue_traps();
     child_unblock();
     restore_queue_signals(q);
 
@@ -1177,6 +1179,7 @@
 
     dont_queue_signals();
     child_block();		 /* unblocked during signal_suspend() */
+    queue_traps(wait_cmd);
     if (jn->procs || jn->auxprocs) { /* if any forks were done         */
 	jn->stat |= STAT_LOCKED;
 	if (jn->stat & STAT_CHANGED)
@@ -1184,7 +1187,7 @@
 	while (!errflag && jn->stat &&
 	       !(jn->stat & STAT_DONE) &&
 	       !(interact && (jn->stat & STAT_STOPPED))) {
-	    signal_suspend(SIGCHLD, wait_cmd);
+	    signal_suspend(SIGCHLD);
 	    if (last_signal != SIGCHLD && wait_cmd)
 	    {
 		/* builtin wait interrupted by trapped signal */
@@ -1211,6 +1214,7 @@
 	pipestats[0] = lastval;
 	numpipestats = 1;
     }
+    unqueue_traps();
     child_unblock();
     restore_queue_signals(q);
 
Index: Src/signals.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.c,v
retrieving revision 1.41
diff -u -r1.41 signals.c
--- Src/signals.c	30 May 2006 22:35:03 -0000	1.41
+++ Src/signals.c	18 Dec 2006 15:54:06 -0000
@@ -346,39 +346,10 @@
 static int suspend_longjmp = 0;
 static signal_jmp_buf suspend_jmp_buf;
 #endif
- 
-#if defined(POSIX_SIGNALS) || defined(BSD_SIGNALS)
-static void
-signal_suspend_setup(sigset_t *set, int sig, int wait_cmd)
-{
-    if (isset(TRAPSASYNC)) {
-	sigemptyset(set);
-    } else {
-	sigfillset(set);
-	sigdelset(set, sig);
-#ifdef POSIX_SIGNALS
-	sigdelset(set, SIGHUP);  /* still don't know why we add this? */
-#endif
-	if (wait_cmd)
-	{
-	    /*
-	     * Using "wait" builtin.  We should allow SIGINT and
-	     * execute traps delivered to the shell.
-	     */
-	    int sigtr;
-	    sigdelset(set, SIGINT);
-	    for (sigtr = 1; sigtr <= NSIG; sigtr++) {
-		if (sigtrapped[sigtr] & ~ZSIG_IGNORED)
-		    sigdelset(set, sigtr);
-	    }
-	}
-    }
-}
-#endif
 
 /**/
 int
-signal_suspend(int sig, int wait_cmd)
+signal_suspend(int sig)
 {
     int ret;
  
@@ -388,7 +359,7 @@
     sigset_t oset;
 #endif /* BROKEN_POSIX_SIGSUSPEND */
 
-    signal_suspend_setup(&set, sig, wait_cmd);
+    sigemptyset(&set);
 #ifdef BROKEN_POSIX_SIGSUSPEND
     sigprocmask(SIG_SETMASK, &set, &oset);
     pause();
@@ -400,7 +371,7 @@
 # ifdef BSD_SIGNALS
     sigset_t set;
 
-    signal_suspend_setup(&set, sig, wait_cmd);
+    sigemptyset(&set);
     ret = sigpause(set);
 # else
 #  ifdef SYSV_SIGNALS
@@ -419,7 +390,7 @@
 #  endif /* SYSV_SIGNALS  */
 # endif  /* BSD_SIGNALS   */
 #endif   /* POSIX_SIGNALS */
- 
+
     return ret;
 }
 
@@ -561,18 +532,14 @@
         break;
  
     case SIGHUP:
-        if (sigtrapped[SIGHUP])
-            dotrap(SIGHUP);
-        else {
+        if (!handletrap(SIGHUP)) {
             stopmsg = 1;
             zexit(SIGHUP, 1);
         }
         break;
  
     case SIGINT:
-        if (sigtrapped[SIGINT])
-            dotrap(SIGINT);
-        else {
+        if (!handletrap(SIGINT)) {
 	    if ((isset(PRIVILEGED) || isset(RESTRICTED)) &&
 		isset(INTERACTIVE) && noerrexit < 0)
 		zexit(SIGINT, 1);
@@ -587,19 +554,12 @@
 #ifdef SIGWINCH
     case SIGWINCH:
         adjustwinsize(1);  /* check window size and adjust */
-	if (sigtrapped[SIGWINCH])
-	    dotrap(SIGWINCH);
+	(void) handletrap(SIGWINCH);
         break;
 #endif
 
     case SIGALRM:
-        if (sigtrapped[SIGALRM]) {
-	    int tmout;
-            dotrap(SIGALRM);
-
-	    if ((tmout = getiparam("TMOUT")))
-		alarm(tmout);           /* reset the alarm */
-        } else {
+        if (!handletrap(SIGALRM)) {
 	    int idle = ttyidlegetfn(NULL);
 	    int tmout = getiparam("TMOUT");
 	    if (idle >= 0 && idle < tmout)
@@ -614,7 +574,7 @@
         break;
  
     default:
-        dotrap(sig);
+        (void) handletrap(sig);
         break;
     }   /* end of switch(sig) */
  
@@ -1000,6 +960,96 @@
 	  "BUG: still saved traps outside all function scope");
 }
 
+
+/*
+ * Decide whether a trap needs handling.
+ * If so, see if the trap should be run now or queued.
+ * Return 1 if the trap has been or will be handled.
+ * This only needs to be called in place of dotrap() in the
+ * signal handler, since it's only while waiting for children
+ * to exit that we queue traps.
+ */
+/**/
+static int
+handletrap(int sig)
+{
+    if (!sigtrapped[sig])
+	return 0;
+
+    if (trap_queueing_enabled)
+    {
+	/* Code borrowed from signal queueing */
+	int temp_rear = ++trap_queue_rear % MAX_QUEUE_SIZE;
+
+	DPUTS(temp_rear == trap_queue_front, "BUG: trap queue full");
+	/* If queue is not full... */
+	if (temp_rear != trap_queue_front) {
+	    trap_queue_rear = temp_rear;
+	    trap_queue[trap_queue_rear] = sig;
+	}
+	return 1;
+    }
+
+    dotrap(sig);
+
+    if (sig == SIGALRM)
+    {
+	int tmout;
+	/*
+	 * Reset the alarm.
+	 * It seems slightly more natural to do this when the
+	 * trap is run, rather than when it's queued, since
+	 * the user doesn't see the latter.
+	 */
+	if ((tmout = getiparam("TMOUT")))
+	    alarm(tmout);
+    }
+
+    return 1;
+}
+
+
+/*
+ * Queue traps if they shouldn't be run asynchronously, i.e.
+ * we're not in the wait builtin and TRAPSASYNC isn't set, when
+ * waiting for children to exit.
+ *
+ * Note that unlike signal queuing this should only be called
+ * in single matching pairs and can't be nested.  It is
+ * only needed when waiting for a job or process to finish.
+ *
+ * There is presumably a race setting this up: we shouldn't be running
+ * traps between forking a foreground process and this point, either.
+ */
+/**/
+void
+queue_traps(int wait_cmd)
+{
+    if (!isset(TRAPSASYNC) && !wait_cmd) {
+	/*
+	 * Traps need to be handled synchronously, so
+	 * enable queueing.
+	 */
+	trap_queueing_enabled = 1;
+    }
+}
+
+
+/*
+ * Disable trap queuing and run the traps.
+ */
+/**/
+void
+unqueue_traps(void)
+{
+    trap_queueing_enabled = 0;
+    while (trap_queue_front != trap_queue_rear) {
+	trap_queue_front = (trap_queue_front + 1) % MAX_QUEUE_SIZE;
+	(void) handletrap(trap_queue[trap_queue_front]);
+    }
+}
+
+
 /* Execute a trap function for a given signal, possibly
  * with non-standard sigtrapped & siglists values
  */

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


  parent reply	other threads:[~2006-12-18 16:14 UTC|newest]

Thread overview: 417+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-15 10:04 Dave Yost
2006-12-15 12:05 ` Peter Stephenson
2006-12-15 21:00   ` Peter Stephenson
2006-12-16 21:37     ` Bart Schaefer
2006-12-17 16:00       ` Peter Stephenson
2006-12-17 17:54         ` Bart Schaefer
2006-12-18 11:39           ` Peter Stephenson
2006-12-18 16:09             ` Bart Schaefer
2006-12-18 16:12             ` Peter Stephenson [this message]
2006-12-18 16:37               ` Bart Schaefer
2006-12-18 16:51                 ` Peter Stephenson
  -- strict thread matches above, loose matches on Subject: below --
2015-11-22 17:52 Possibly excessive WARN_CREATE_GLOBAL Bart Schaefer
2015-11-22 18:27 ` Peter Stephenson
2015-11-22 19:04   ` Bart Schaefer
2015-11-22 19:15     ` Peter Stephenson
2015-11-22 20:30       ` Bart Schaefer
2015-11-23 15:49         ` Peter Stephenson
2015-11-24  4:43           ` Bart Schaefer
2015-11-24 10:41             ` Peter Stephenson
2014-08-01  8:20 Possible bug to RPROMPT Felipe G. Silveira
2014-08-04 19:31 ` Bart Schaefer
2014-08-04 19:50   ` Peter Stephenson
2014-08-04 20:50     ` Bart Schaefer
2014-08-05  7:54       ` Bart Schaefer
2014-08-06  7:57         ` Bart Schaefer
2014-08-07  8:36           ` [PATCH] Better prompt width calculations (Re: Possible bug to RPROMPT) Bart Schaefer
2015-04-02 15:46             ` Jun T.
2015-04-02 16:48               ` Bart Schaefer
2014-07-17 12:58 [PATCH] Fix loading of multi-line history entires from disk Augie Fackler
2014-07-17 18:23 ` Bart Schaefer
2014-07-17 19:58   ` Peter Stephenson
2014-07-17 23:56     ` Augie Fackler
2014-07-18  3:08     ` Bart Schaefer
2014-07-18  6:01       ` Bart Schaefer
2014-07-18 18:21         ` Peter Stephenson
2014-07-18 18:21       ` Peter Stephenson
2014-07-17 19:51 ` Peter Stephenson
2014-02-15 20:45 SUGGESTION: Simplify auto-completion, a little mail
2014-02-15 23:15 ` Bart Schaefer
2014-02-15 23:29   ` Peter Stephenson
2014-02-16  3:06     ` Bart Schaefer
2013-07-15 13:35 bug with eval, proc-subst and pipes Stephane Chazelas
2013-07-15 17:06 ` Bart Schaefer
2013-07-15 19:14   ` Re[2]: " Manuel Presnitz
2013-07-15 21:52     ` Bart Schaefer
2013-07-16 20:55   ` Peter Stephenson
2013-07-17  7:00     ` Bart Schaefer
2013-07-17 19:17       ` Peter Stephenson
2013-07-18  3:50         ` Vin Shelton
2013-07-18  8:57           ` Peter Stephenson
2013-07-18  9:22             ` Peter Stephenson
2013-07-18 11:32               ` Peter Stephenson
2013-07-18 11:47                 ` Peter Stephenson
2013-07-19 20:01                 ` Stephane Chazelas
2013-07-19 20:58                   ` Stephane Chazelas
2013-07-20 17:11                     ` Peter Stephenson
2013-07-20 20:25                       ` Stephane Chazelas
2013-07-20 22:55                         ` Peter Stephenson
2013-07-21  9:45                           ` Stephane Chazelas
2013-07-21 12:23                             ` Stephane Chazelas
2013-07-21 19:51                               ` Stephane Chazelas
2013-07-20 20:57                       ` Bart Schaefer
2013-07-20 22:16                         ` Peter Stephenson
2013-07-24 15:39                       ` Peter Stephenson
2013-07-19 21:36                   ` Bart Schaefer
2013-07-19 22:56                     ` Stephane Chazelas
2013-07-18  9:44         ` Stephane Chazelas
2013-07-18 18:08           ` Bart Schaefer
2013-07-18 18:25             ` Bart Schaefer
2012-12-06 19:44 It's time for 5.0.1 Peter Stephenson
2012-12-08 19:54 ` Bart Schaefer
2012-12-09 19:10   ` Peter Stephenson
2012-12-12  8:14     ` Bart Schaefer
2012-12-12  9:56       ` Peter Stephenson
2012-12-12 19:29         ` Bart Schaefer
2012-12-15 18:16           ` Peter Stephenson
2012-12-15 19:26             ` Bart Schaefer
2012-12-15 19:47               ` Peter Stephenson
2012-12-16 20:03   ` Peter Stephenson
2012-12-17  5:59     ` Bart Schaefer
2012-12-17 21:13     ` Axel Beckert
2012-12-18 16:22     ` S. Cowles
2012-12-18 16:44       ` Peter Stephenson
     [not found] <86aadnwtl2.fsf@gmail.com>
2011-06-12 14:22 ` killing suspended jobs makes zsh hang after 47d1215 Bart Schaefer
2011-06-12 14:59   ` Bart Schaefer
2011-06-12 17:02     ` Peter Stephenson
2011-06-12 22:13       ` Bart Schaefer
2011-06-13  0:02     ` Pan Tsu
2011-06-13  1:53       ` Bart Schaefer
2011-06-13 11:07         ` Peter Stephenson
2011-06-13 14:37           ` Bart Schaefer
2011-06-14 18:54             ` Peter Stephenson
2011-06-15  2:59               ` Bart Schaefer
     [not found] <201008311754.27361.joke@seiken.de>
2010-08-31 19:18 ` environment variables Peter Stephenson
2010-09-01 15:25   ` Bart Schaefer
2010-09-01 18:35     ` Peter Stephenson
     [not found] <p.w.stephenson@ntlworld.com>
2006-12-08 21:23 ` PATCH: _firefox Peter Stephenson
2006-12-08 21:28   ` Peter Stephenson
2006-12-08 21:52     ` Clint Adams
2006-12-17 13:32     ` arno.
2010-05-23 19:58 ` ${(q)...} for newline Peter Stephenson
2010-05-23 20:45   ` Peter Stephenson
2010-05-25 13:25     ` Stephane Chazelas
2010-05-25 14:48       ` Peter Stephenson
2010-05-26 19:54         ` Peter Stephenson
2010-05-25 14:00   ` Bart Schaefer
     [not found] <matthi@infodrom.north.de>
2009-11-08 11:49 ` FEATURES description wrong line Maddi Kopfermann
2009-11-08 17:08   ` Bart Schaefer
2009-11-08 19:48     ` Stephane Chazelas
2009-11-08 18:44   ` Peter Stephenson
2009-11-10 15:07     ` Bart Schaefer
2009-11-10 18:09       ` Peter Stephenson
2009-07-12 20:59 zsh 4.3.10 terminates with SIGINT when one types Ctrl-G in emacs under Mac OS X Vincent Lefevre
2009-07-12 21:50 ` Bart Schaefer
2009-07-13  0:43   ` Vincent Lefevre
2009-07-13  2:36     ` Bart Schaefer
2009-07-13 18:39       ` Peter Stephenson
2009-07-16 16:24         ` Vincent Lefevre
2009-07-18  5:29           ` Bart Schaefer
2009-07-18 10:16             ` Vincent Lefevre
2009-07-18 18:16               ` Bart Schaefer
2009-07-19 18:03                 ` Bart Schaefer
2009-07-19 19:15                   ` Bart Schaefer
2009-07-19 20:14                     ` Bart Schaefer
2009-07-19 20:41                       ` Peter Stephenson
2009-07-18 18:35               ` Bart Schaefer
2009-07-18 23:09                 ` Vincent Lefevre
2009-07-19  9:51                   ` Vincent Lefevre
2009-07-19 16:32                     ` Bart Schaefer
2009-07-19 22:24                       ` Vincent Lefevre
2009-07-19 18:31                   ` Bart Schaefer
2009-07-20  8:31                     ` Vincent Lefevre
2009-07-22  2:58                       ` Eric Blake
2009-07-22  8:16                         ` Vincent Lefevre
2009-07-07 21:08 non-interactive set -m Eric Blake
2009-07-08  8:58 ` Peter Stephenson
2009-07-08 13:26   ` Eric Blake
2009-07-08 13:49     ` Peter Stephenson
2009-07-09 14:03       ` Eric Blake
2009-07-09 14:13         ` Peter Stephenson
2009-07-09 16:25           ` Eric Blake
2009-07-09 18:13       ` Eric Blake
2009-07-09 19:36         ` Peter Stephenson
2009-07-09 19:56         ` Peter Stephenson
2009-07-10  3:40           ` Bart Schaefer
2009-07-09 20:23         ` Peter Stephenson
2009-07-09 21:40           ` Eric Blake
2009-07-10  8:58             ` Peter Stephenson
2009-07-10 10:53               ` Peter Stephenson
2009-07-10  3:25           ` Eric Blake
2009-07-10  3:32             ` Eric Blake
2009-07-11 18:57               ` Peter Stephenson
2009-07-11 19:05                 ` Peter Stephenson
2009-07-11 23:16                   ` Eric Blake
2009-07-12 15:01                     ` Peter Stephenson
2009-07-12 18:28                       ` Bart Schaefer
2009-07-12 19:35                         ` Peter Stephenson
2009-07-12 21:19                           ` Bart Schaefer
2009-07-13  1:48                             ` Eric Blake
2009-07-13 13:20                         ` Eric Blake
2009-07-12 14:42                 ` Peter Stephenson
2009-07-01 13:14 zsh bug in . builtin Eric Blake
2009-07-01 14:24 ` Peter Stephenson
2009-07-02 12:01   ` Eric Blake
2009-07-02 13:40     ` Peter Stephenson
2009-07-06 20:39     ` Peter Stephenson
2009-07-05 19:41   ` Bart Schaefer
2009-07-05 20:04     ` Peter Stephenson
2009-03-08  8:21 Modules/attr.c compile error on Mac OS X Taro M
2009-03-08  9:10 ` François Revol
2009-03-08 19:55 ` Peter Stephenson
2009-03-08 21:33   ` Bart Schaefer
2009-03-08 21:51     ` Peter Stephenson
2009-03-08 23:45       ` Bart Schaefer
     [not found] <BD9D2405-AD6A-4336-9C8A-85149165B6B8@gmail.com>
     [not found] ` <090116075615.ZM21871@torch.brasslantern.com>
     [not found]   ` <200901161939.54651.arvidjaar@newmail.ru>
2009-01-16 18:29     ` sourcing a sh file in zsh Bart Schaefer
2009-01-17  3:59       ` Phil Pennock
2009-01-17  5:00         ` Bart Schaefer
2009-01-17  5:55           ` Phil Pennock
2009-01-17 20:15             ` Bart Schaefer
2009-01-19 21:21               ` Phil Pennock
2009-01-20 19:48               ` Peter Stephenson
2009-01-21  4:48                 ` Bart Schaefer
2009-01-24 15:59       ` Andrey Borzenkov
2009-01-24 17:38         ` Peter Stephenson
2009-01-24 20:47           ` Richard Hartmann
2009-01-24 23:26           ` Bart Schaefer
2009-01-25  8:56             ` Andrey Borzenkov
2009-01-25 10:25               ` Richard Hartmann
2009-01-25 10:41                 ` Andrey Borzenkov
2009-01-25 10:51                   ` Richard Hartmann
2009-01-26 23:07                   ` Phil Pennock
2009-01-27  0:51                     ` Richard Hartmann
2009-01-27 16:28                       ` Bart Schaefer
2009-01-25 12:20               ` Bart Schaefer
2009-01-25 18:26                 ` Andrey Borzenkov
2009-01-26  7:51                   ` Bart Schaefer
2009-01-26  9:24                     ` Richard Hartmann
2009-01-26 16:49                     ` Andrey Borzenkov
2009-01-30  4:25                       ` Bart Schaefer
2009-01-31  8:32                         ` Andrey Borzenkov
2009-01-31 20:40                           ` Bart Schaefer
2009-01-31 21:10                             ` Peter Stephenson
2009-01-31 21:39                               ` Bart Schaefer
2009-01-31 23:23                                 ` Peter Stephenson
2009-02-01 18:03                             ` Andrey Borzenkov
2009-02-01 19:20                               ` Bart Schaefer
2009-02-07 15:45                         ` Andrey Borzenkov
2009-02-07 20:18                           ` Bart Schaefer
2009-01-25 21:39             ` Peter Stephenson
2009-01-26  6:18               ` Phil Pennock
2009-01-26 12:21                 ` Peter Stephenson
2009-01-26 23:16                   ` Phil Pennock
2009-01-27  9:50                     ` Peter Stephenson
2009-01-27 10:16                       ` Peter Stephenson
2009-01-27 15:22                         ` Bart Schaefer
2009-01-24 23:11         ` Bart Schaefer
2009-01-25  8:15           ` Richard Hartmann
2009-01-25  8:40           ` Andrey Borzenkov
2009-01-01 16:24 Bug in executable completion: unable to handle .. it $PATH Richard Hartmann
2009-01-01 17:41 ` Vincent Lefevre
2009-01-07 20:09 ` Peter Stephenson
2009-01-07 20:18   ` Bart Schaefer
2009-01-07 20:49     ` Peter Stephenson
2009-01-07 23:22       ` Richard Hartmann
     [not found] <clint@zsh.org>
     [not found] ` <20071011182853.GA19842@scowler.net>
2007-10-11 19:18   ` ZSH (CVS) configure problem? Peter Stephenson
2007-10-11 20:23     ` Clint Adams
2007-10-12  9:09       ` Peter Stephenson
2007-10-12 10:18         ` Peter Stephenson
2008-11-15  0:39 ` unusable fd in tcp_send Clint Adams
2008-11-15 16:32   ` Peter Stephenson
2008-11-15 16:47     ` Clint Adams
     [not found] <20081106150224.GA10992@apartia.fr>
     [not found] ` <081106082517.ZM27477@torch.brasslantern.com>
     [not found]   ` <20081110082152.GA9563@apartia.fr>
     [not found]     ` <20081110142850.0add2680@news01>
2008-11-12 10:52       ` parse error in process substitution Peter Stephenson
2008-11-13 21:00         ` Peter Stephenson
2008-11-13 21:08           ` Mikael Magnusson
2008-11-16  4:10           ` Bart Schaefer
2008-11-16 21:18             ` Peter Stephenson
2008-11-16 21:51               ` Bart Schaefer
2008-11-17 10:10                 ` Peter Stephenson
2008-11-17 15:51                   ` Bart Schaefer
2008-11-17 16:08                 ` Peter Stephenson
2008-11-17 16:51             ` Peter Stephenson
2008-06-07 20:34 PATCH: rewrite of completion matching Peter Stephenson
2008-06-16  7:17 ` Bart Schaefer
2008-06-16 12:54   ` Peter Stephenson
2008-06-16 15:30     ` Bart Schaefer
2008-06-16 16:52       ` Peter Stephenson
2008-06-16 17:49         ` Bart Schaefer
2008-06-17  9:06           ` Peter Stephenson
2008-03-16 14:40 ${a[(i)pattern]} if a=() Stephane Chazelas
2008-03-16 17:20 ` Bart Schaefer
2008-03-16 17:59   ` Bart Schaefer
2008-03-16 18:47     ` Bart Schaefer
2008-03-16 21:57     ` Peter Stephenson
2008-03-16 23:23       ` Stephane Chazelas
2008-03-17  0:59         ` Bart Schaefer
2008-03-18 12:13           ` Peter Stephenson
2008-03-18 15:47             ` Bart Schaefer
2008-03-25 17:24               ` Peter Stephenson
2008-02-23  0:04 PATCH: completion of glob qualifiers Peter Stephenson
2008-02-23  6:06 ` Bart Schaefer
2008-02-23 17:33   ` Peter Stephenson
2008-02-23 18:09   ` Peter Stephenson
2008-11-07 12:38 ` Oliver Kiddle
2008-11-08 23:28   ` Peter Stephenson
     [not found] <20071205200825.148710@gmx.net>
2007-12-06 15:54 ` Bug#451382: i18n is NOT so easy! Clint Adams
2007-12-06 16:08   ` Ismail Dönmez
2007-12-06 16:10     ` Clint Adams
2007-12-07 10:44       ` Peter Stephenson
2007-12-07 14:11         ` Peter Stephenson
2007-12-07 17:15           ` Clint Adams
2007-12-07 17:26             ` Peter Stephenson
2007-12-09 18:01               ` Peter Stephenson
2007-12-09 22:49                 ` Bart Schaefer
2007-12-10  0:06                   ` Peter Stephenson
     [not found]   ` <20071206165612.292830@gmx.net>
2007-12-06 19:06     ` Clint Adams
2007-12-07 10:29       ` Oliver Kiddle
2007-11-09 15:08 delete-whole-word-match fails on words starting with -, patch Mikael Magnusson
2007-11-09 17:06 ` Peter Stephenson
2007-11-09 19:48   ` Peter Stephenson
2007-11-09 22:38     ` Mikael Magnusson
2007-11-10 14:22       ` Peter Stephenson
     [not found] <DD973F2C-E6A0-4FCA-96F5-6C96701DC677@chemistry.ucsc.edu>
     [not found] ` <20071012215906.GA8935@mastermind>
     [not found]   ` <20071012152257.91edf6d3.wgscott@chemistry.ucsc.edu>
2007-10-13 13:30     ` precmd, preexec, and supplied prompt themes Clint Adams
2007-10-13 17:11       ` Bart Schaefer
2007-10-13 19:10         ` Peter Stephenson
2007-10-13 20:47           ` Bart Schaefer
2007-10-13 17:16       ` Peter Stephenson
     [not found]   ` <071012185005.ZM2921@torch.brasslantern.com>
     [not found]     ` <35490.69.3.191.19.1192241340.squirrel@mail.acg.ucsc.edu>
     [not found]       ` <071012202721.ZM13638@torch.brasslantern.com>
     [not found]         ` <20071013135858.18e842df.wgscott@chemistry.ucsc.edu>
     [not found]           ` <071013144046.ZM15536@torch.brasslantern.com>
     [not found]             ` <42409.66.167.127.82.1192312408.squirrel@mail.acg.ucsc.edu>
     [not found]               ` <071013161113.ZM15656@torch.brasslantern.com>
     [not found]                 ` <43237.69.3.24.27.1192318777.squirrel@mail.acg.ucsc.edu>
     [not found]                   ` <071013194931.ZM15792@torch.brasslantern.com>
2007-10-31 11:07                     ` Oliver Kiddle
2007-10-31 14:49                       ` Bart Schaefer
2007-10-31 15:12                         ` Bart Schaefer
     [not found] <zsh-workers+phil.pennock@spodhuis.org>
2007-04-28  7:56 ` PATCH: zsh/regex and =~ Phil Pennock
2007-04-28  8:20   ` Phil Pennock
2007-04-29  0:51   ` Phil Pennock
2007-04-29 15:16   ` Peter Stephenson
2007-04-29 15:28     ` Peter Stephenson
2007-04-29 19:17       ` Phil Pennock
2007-05-01 21:59   ` Peter Stephenson
2007-05-02  0:11     ` Phil Pennock
2007-05-02  2:53       ` Bart Schaefer
2007-05-29  8:56   ` Phil Pennock
2007-01-27 17:07 4.3.2/20061219 -> 4.3.2/20070126 very broken Alexey Tourbin
2007-01-27 17:15 ` Alexey Tourbin
2007-01-27 18:55   ` Peter Stephenson
2007-01-27 23:47     ` Peter Stephenson
2007-01-28 12:04       ` Alexey Tourbin
2007-01-27 19:10   ` Bart Schaefer
     [not found] <schizo@debian.org>
2006-11-18  3:47 ` error code for failure to execute Clint Adams
2006-11-19 19:50   ` Peter Stephenson
2006-11-19 20:02     ` Clint Adams
2006-11-19 21:33       ` Peter Stephenson
2006-10-26 17:39 PATCH: $! on bg Peter Stephenson
2006-10-28 17:51 ` Bart Schaefer
2006-10-29 12:58   ` Peter Stephenson
2006-10-29 17:01     ` Bart Schaefer
2006-10-30 11:38       ` Peter Stephenson
2006-08-19 18:11 zstyle is badly broken as of 20060817 Bart Schaefer
2006-08-20 16:54 ` Peter Stephenson
2006-08-20 20:44   ` Bart Schaefer
2006-08-20 20:53     ` Bart Schaefer
2006-08-20 21:38     ` Peter Stephenson
2006-08-21  5:44       ` Bart Schaefer
2006-08-21 11:39         ` Vincent Lefevre
2006-08-11 20:03 Bug#335481: zsh: zsh/sched waits for next return to prompt even with NOTIFY set Jared K. Sorensen
2006-09-07 19:25 ` Peter Stephenson
2006-09-08  3:18   ` Bart Schaefer
2006-09-08 11:31     ` Peter Stephenson
2006-09-10 15:26       ` Peter Stephenson
2006-07-30 18:00 env -u completion doesn't work when there is a command Vincent Lefevre
2006-07-30 18:36 ` Bart Schaefer
2006-07-30 21:13   ` Peter Stephenson
     [not found] <200607261638.k6QGcE7E010498@news01.csr.com>
     [not found] ` <dc507f4a0607270901r5a4c19f2n20a895b8a831ab3@mail.gmail.com>
     [not found]   ` <060727212432.ZM4920@torch.brasslantern.com>
2006-07-28  9:10     ` Menu-driven version of history-beginning-search-backward Peter Stephenson
2006-07-28 10:08       ` Peter Stephenson
2006-08-01 17:30         ` Peter Stephenson
2006-08-01 20:18           ` Peter Stephenson
2006-08-02  2:49             ` Bart Schaefer
     [not found] <20060529075722.GA28846@sci.fi>
     [not found] ` <200605291532.k4TFWueM011027@pwslaptop.csr.com>
2006-05-30 17:48   ` Vanishing files ? Peter Stephenson
2006-05-30 22:29     ` Peter Stephenson
2006-05-31  1:08       ` Wayne Davison
2006-05-31 14:11       ` Bart Schaefer
     [not found] <EXCHANGE03lhK9atCT1000118c6@exchange03.csr.com>
     [not found] ` <20060228140411.GA2150@prunille.vinc17.org>
2006-02-28 14:19   ` 4.3.1 released Peter Stephenson
2006-02-28 14:30     ` Vincent Lefevre
2006-02-28 14:44       ` Peter Stephenson
2006-03-02 17:59       ` Peter Stephenson
2006-02-28 18:45 ` Bart Schaefer
2006-02-28 23:51   ` Peter Stephenson
2006-03-07 19:48     ` "type punned" warnings Wayne Davison
2006-03-07 20:47       ` Peter Stephenson
2006-03-08 10:27       ` Peter Stephenson
2006-03-08 15:47         ` Peter Stephenson
     [not found] <20050425063521.GA17598@quark.hightek.org>
     [not found] ` <1050425163202.ZM25027@candle.brasslantern.com>
     [not found]   ` <20050426030308.GA21501@quark.hightek.org>
     [not found]     ` <200504261834.j3QIYHSa018951@news01.csr.com>
     [not found]       ` <1050427053638.ZM28743@candle.brasslantern.com>
2005-04-27  9:54         ` localtraps Peter Stephenson
2005-04-27 14:09           ` localtraps Bart Schaefer
2005-05-01 18:54             ` localtraps Vincent Stemen
2005-05-03 10:04               ` localtraps Peter Stephenson
2005-05-03 19:20                 ` yodl and Z shell documentation (was localtraps) Vincent Stemen
     [not found]                   ` <zsh@hightek.org>
2005-05-04  9:26                     ` Peter Stephenson
2005-05-10  9:45                       ` Oliver Kiddle
2005-05-10 14:10                         ` Bart Schaefer
2005-05-10 14:42                           ` Oliver Kiddle
2005-05-10 15:43                             ` Bart Schaefer
2005-05-11  9:59                               ` Oliver Kiddle
2005-05-11 15:09                                 ` Bart Schaefer
2005-05-11 15:21                                   ` Clint Adams
2005-05-04  1:42                 ` localtraps Bart Schaefer
     [not found]           ` <20050507171938.GA51740@quark.hightek.org>
     [not found]             ` <5415.1115631148@csr.com>
2005-05-10 18:46               ` localtraps and signal handling on NetBSD Vincent Stemen
2005-05-13 11:26                 ` Peter Stephenson
2005-05-14  4:33                   ` Vincent Stemen
2005-05-16 10:46                     ` Peter Stephenson
2005-05-17  8:15                       ` Z shell signal handling Vincent Stemen
2005-05-17 15:42                         ` Bart Schaefer
     [not found] <16883.11714.845975.423895@cns-build4.cisco.com>
     [not found] ` <1050123064401.ZM16256@candle.brasslantern.com>
     [not found]   ` <200501241052.j0OAqY3S007966@news01.csr.com>
2005-01-24 16:51     ` Is this a bug for zsh 4.2.3? Bart Schaefer
     [not found]       ` <schaefer@brasslantern.com>
2005-01-24 17:00         ` Peter Stephenson
2005-05-04  9:28         ` localtraps Peter Stephenson
2005-05-04 14:35           ` Compiling without yodl (Re: localtraps) Bart Schaefer
2006-06-17 17:46         ` Recursion error and line numbers Bart Schaefer
2006-06-18 12:38           ` Peter Stephenson
2006-06-18 14:06             ` Bart Schaefer
2006-06-19 10:19               ` Peter Stephenson
2006-07-08 17:58         ` BUG: cmdstack empty Bart Schaefer
2006-07-09 14:44           ` Peter Stephenson
2007-02-10 19:07         ` Quoting problem and crashes with ${(#)var} Bart Schaefer
2007-02-10 22:08           ` Peter Stephenson
2007-02-10 22:10             ` Peter Stephenson
2007-02-13  4:59             ` Bart Schaefer
2007-02-13 21:11               ` Peter Stephenson
2007-02-14  7:48                 ` Bart Schaefer
2007-02-14 10:16                   ` Peter Stephenson
2007-02-14 16:03                     ` Bart Schaefer
2007-02-14 16:19                       ` Peter Stephenson
2007-02-25 23:15                         ` Bart Schaefer
2007-02-26 10:34                           ` Peter Stephenson
2007-02-26 16:13                             ` Bart Schaefer
2007-02-26 16:24                               ` Peter Stephenson
2007-02-26 17:28                                 ` Bart Schaefer
2007-02-26 17:36                                   ` Peter Stephenson
2009-02-06 22:50         ` POSIX and the "&>" operator Bart Schaefer
2009-02-07  0:02           ` Peter Stephenson
2009-02-07  3:51             ` Bart Schaefer
2009-02-07 22:48               ` Peter Stephenson
2009-02-10  2:11           ` Vincent Lefevre
     [not found] <pws@csr.com>
2004-02-25 11:24 ` PATCH: terminfo configuration redux Peter Stephenson
2004-02-25 17:21   ` Bart Schaefer
2004-02-25 17:30     ` Peter Stephenson
2004-02-26 10:37     ` Oliver Kiddle
2004-02-25 18:45   ` peta
2004-02-26 12:52   ` Peter Stephenson
2004-02-27 15:13     ` Felix Rosencrantz
2004-02-27 15:22       ` Peter Stephenson
2004-02-27 16:53         ` Felix Rosencrantz
2004-02-29 19:14           ` Peter Stephenson
2004-03-08 17:29             ` Felix Rosencrantz
2004-03-08 17:39               ` Peter Stephenson
2004-03-09  6:18                 ` Felix Rosencrantz
2004-03-09 12:15                   ` Peter Stephenson
2004-03-10  8:10                     ` Felix Rosencrantz
2004-03-10 11:02                       ` Peter Stephenson
     [not found] ` <200706121751.l5CHpr8D015577@news01.csr.com>
2007-06-12 21:56   ` Calling a zle widget from a function Peter Stephenson
2007-06-12 22:01     ` Peter Stephenson
2007-06-14 13:21       ` Peter Stephenson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061218161229.7bbec427.pws@csr.com \
    --to=pws@csr.com \
    --cc=zsh-workers@sunsite.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).