Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: No pipefail option?

On Oct 7, 10:25am, Peter Stephenson wrote:
} I haven't yet quite worked out why it's not possible to detect the point
} at which the job is finished and examine the state at that point, so I
} can't comment further, but I might look again and ask stupid questions.

I don't remember clearly all the details, but it's some combination of:

- because external jobs can exit and be reaped in arbitrary order, even
  in a pipeline, the job table is used to keep track of which position
  in the array to update

- jobs that run in the current shell don't have a complete job table entry
  [cf. all the gyrations to suspend/background a loop] and aren't "reaped"
  in the same code path as external jobs, so the wrong array position (or
  none at all) may get updated

- the incorrect update depends on whether the external job exited AND got
  reaped before the current-shell job has completed, because of the way
  reaping updates the job table, so correctness is unpredictable

- complex commands "in the current shell" may have external subjobs that
  need a separate pipestatus (this applies only at end of a pipeline)

Messages sorted by: Reverse Date, Date, Thread, Author