On Wed, Sep 02, 2015 at 11:30:07AM +0300, Janne Blomqvist wrote:
> On Wed, Sep 2, 2015 at 1:28 AM, Jerry DeLisle <jvdeli...@charter.net> wrote:
> > On 09/01/2015 11:18 AM, Steve Kargl wrote:
> >> On Tue, Sep 01, 2015 at 11:16:27AM -0700, Steve Kargl wrote:
> >>>     open(unit=10, 
> >>> file='junko.dir',iostat=ios,action='read',access='stream')
> >>>     if (ios.ne.0) call abort
> >>>     read(10, iostat=ios) c
> >>> -   if (ios.ne.21) call abort
> >>> +   if (ios.ne.21) then
> >>> +      close(10)
> >>
> >> I forgot to mention that 'close(10, status="delete')' does not
> >> work on a directory.  Should it?
> >>
> >>> +      call system('rmdir junko.dir')
> >>> +      call abort
> >>> +   end if
> >>> +   close(10)
> >>>     call system('rmdir junko.dir')
> >>
> >
> > Thanks for the touch up Steve.  I suspect other OS's will not work either.  
> > I
> > assumed close with Status="delete" would not work on a directory.
> 
> That's because libgfortran uses unlink(2), which only works for files,
> not directories. One could change that to use remove(3), which works
> for both.

I suspect people who create directories and then 
want to delete them will use SYSTEM or the 
standard conforming equivalent.

> Also, I suspect the reason why it fails on freebsd is that errno
> EISDIR is not 21 there. Perhaps one should just check for ios /= 0?

I checked.  FreeBSD's EISDIR is 21; howevr, ios == 0 in this
case.  I haven't looked too deep.  FreeBSD is probably
adhering to the unix philosophy of "everything is a file".   

-- 
Steve

Reply via email to