> >>
> >> Weird, the pipe trick should be very portable, unless there are signals
> >> involved.
> >> Try changing the
> >> fpread(...) to
> >>
> >> // pseudo code:
> >> repeat
> >> if fpread(...) = -1 then
> >> not_signalled := errno = EINTR;
> >> else
> >> not_signalled := true;
> >> until not_signalled;
> >>
> >> and hope the loop doesn't get tight. but fpread should block in any case
> >
> > It's the assumptio that fpread returns EINTR. That is a a linuxism I
> > guess.
> >
> > It returns ESysEAGAIN.
> >
> > I'm currently patching all these occurances when pipe related.
> 
> EAGAIN is only used for Non-blocking IO. The provided EINTR loop is
> correct for Linux,Solaris,Tru64 and UnixWare.

The FreeBSD read(2) manpage also says that it is for nonblocking.

I'll see what Stevens says about this tonight.



_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to