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. 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? Unfortunately the __linux__ define isn't available since the switch to cpp (IIRC there is a PR for that), so it's not that straightforward to check which platform one runs on. -- Janne Blomqvist