Christian Weisgerber <[email protected]> wrote:

> > maybe_recoverable should execute this code:
> > 
> >     if (*interdir_made)
> >       return RECOVER_NO;
> > 
> >     switch (e)
> >       {
> >       case ELOOP:
>
> The problem turns out to be very straightforward: On FreeBSD, the
> open() call returns -1 with errno=EMLINK.  This is documented
> behavior in FreeBSD's open(2) man page:
>
>   [EMLINK]           O_NOFOLLOW was specified and the target is a symbolic
>                      link.
>
> Adding EMLINK to the ELOOP case in maybe_recoverable fixes this (and
> doesn't break any other regression tests).

The POSIX standard requires errno to be ELOOP in this case.

Jörg

-- 
 EMail:[email protected] (home) Jörg Schilling D-13353 Berlin
       [email protected]                (uni)  
       [email protected] (work) Blog: 
http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily

Reply via email to