Grr, why is it that these problems always crop up late on a Friday
afternoon just when you should by rights be heading to the pub?

I'm using IPC::Open3 (indirectly, via Parallel::Jobs) to fork to a
Kerberos rsh process.  (Well, actually I've hacked IPC::Open3 to take
'-' as the command so that it forks to a Perl child first, which then
runs rsh via one of system/exec/open, it doesn't really matter which.)

It all works fine, *except* when Kerberos authentication fails, since
Kerberos rsh in its wonderfulness decided that it would be a good idea
to suppress the normal error messages explaining why authentication
failed whenever STDERR is not a tty, as checked by isatty(3).
IPC::Open3 has ensured that rsh's STDERR is connected to a pipe at
this point, you see.  Not only that, but on failure rsh always sets
exit codes to 1, rather than being vaguely sensible and having a
different exit code for different types of error.

So if anyone can come up with a way of distinguishing between things
like 'Ticket expired' and 'Permission denied', by subverting the
isatty test somehow (can you fake a tty?) or other means, I'd be
really grateful to hear about it, because this is going to be whizzing
around inside my head while I'm trying to get a peaceful pint.  Bah.

Adam

Reply via email to