From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 47077 invoked by alias); 3 Sep 2015 21:34:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 47058 invoked by uid 89); 3 Sep 2015 21:34:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_20,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-io0-f172.google.com Received: from mail-io0-f172.google.com (HELO mail-io0-f172.google.com) (209.85.223.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 03 Sep 2015 21:34:48 +0000 Received: by iofh134 with SMTP id h134so3238265iof.0; Thu, 03 Sep 2015 14:34:46 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.107.137.69 with SMTP id l66mr477324iod.60.1441316086578; Thu, 03 Sep 2015 14:34:46 -0700 (PDT) Received: by 10.79.25.132 with HTTP; Thu, 3 Sep 2015 14:34:46 -0700 (PDT) In-Reply-To: <20150902150317.GA8007@troutmask.apl.washington.edu> References: <20150901181627.GA55465@troutmask.apl.washington.edu> <20150901181837.GA55508@troutmask.apl.washington.edu> <55E62694.5000207@charter.net> <20150902150317.GA8007@troutmask.apl.washington.edu> Date: Thu, 03 Sep 2015 21:58:00 -0000 Message-ID: Subject: Re: [Fortran, committed] XFAIL read_dir.f90 on FreeBSD From: Janne Blomqvist To: Steve Kargl Cc: Jerry DeLisle , Fortran List , GCC Patches Content-Type: multipart/mixed; boundary=001a113ecb8a5a347c051ede8d76 X-SW-Source: 2015-09/txt/msg00315.txt.bz2 --001a113ecb8a5a347c051ede8d76 Content-Type: text/plain; charset=UTF-8 Content-length: 2552 On Wed, Sep 2, 2015 at 6:03 PM, Steve Kargl wrote: > On Wed, Sep 02, 2015 at 11:30:07AM +0300, Janne Blomqvist wrote: >> On Wed, Sep 2, 2015 at 1:28 AM, Jerry DeLisle 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. Probably. Anyway, it's no big deal to fix it and shouldn't have any negative side effects, so I committed the attached patch as obvious. testsuite: 2015-09-04 Janne Blomqvist * gfortran.dg/read_dir.f90: Delete empty directory when closing rather than calling rmdir, cleanup if open fails. libgfortran: 2015-09-04 Janne Blomqvist * io/unix.h (delete_file): Remove prototype. * io/unix.c (delete_file): Remove function. * io/close.c (st_close): Replace delete_file and unlink with remove. * io/open.c (already_open): Replace unlink with remove. >> 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". Hmm, Ok. Reading the POSIX spec for read() http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html it seems it's allowed, but not required for an implementation to return data when reading from a directory fd. The portable would be to use readdir(). -- Janne Blomqvist --001a113ecb8a5a347c051ede8d76 Content-Type: text/plain; charset=US-ASCII; name="unlink2remove.diff" Content-Disposition: attachment; filename="unlink2remove.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ie4pvfib0 Content-length: 3738 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcmVhZF9k aXIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci5m OTAKaW5kZXggMGUyOGY5Zi4uNDAwOWVkNiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci5mOTAKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci5mOTAKQEAgLTcsMTMgKzcs MTQgQEAgcHJvZ3JhbSBidWcKICAgIGludGVnZXIgaW9zCiAgICBjYWxsIHN5 c3RlbSgnWyAtZCBqdW5rby5kaXIgXSB8fCBta2RpciBqdW5rby5kaXInKQog ICAgb3Blbih1bml0PTEwLCBmaWxlPSdqdW5rby5kaXInLGlvc3RhdD1pb3Ms YWN0aW9uPSdyZWFkJyxhY2Nlc3M9J3N0cmVhbScpCi0gICBpZiAoaW9zLm5l LjApIGNhbGwgYWJvcnQKKyAgIGlmIChpb3MubmUuMCkgdGhlbgorICAgICAg Y2FsbCBzeXN0ZW0oJ3JtZGlyIGp1bmtvLmRpcicpCisgICAgICBjYWxsIGFi b3J0CisgICBlbmQgaWYKICAgIHJlYWQoMTAsIGlvc3RhdD1pb3MpIGMKICAg IGlmIChpb3MubmUuMjEpIHRoZW4gCi0gICAgICBjbG9zZSgxMCkKLSAgICAg IGNhbGwgc3lzdGVtKCdybWRpciBqdW5rby5kaXInKQorICAgICAgY2xvc2Uo MTAsIHN0YXR1cz0nZGVsZXRlJykKICAgICAgIGNhbGwgYWJvcnQKICAgIGVu ZCBpZgotICAgY2xvc2UoMTApCi0gICBjYWxsIHN5c3RlbSgncm1kaXIganVu a28uZGlyJykKKyAgIGNsb3NlKDEwLCBzdGF0dXM9J2RlbGV0ZScpCiBlbmQg cHJvZ3JhbSBidWcKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2lvL2Nsb3Nl LmMgYi9saWJnZm9ydHJhbi9pby9jbG9zZS5jCmluZGV4IDM4ODU1ZWUuLjFl MTA5OTMgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL2Nsb3NlLmMKKysr IGIvbGliZ2ZvcnRyYW4vaW8vY2xvc2UuYwpAQCAtODAsNyArODAsNyBAQCBz dF9jbG9zZSAoc3RfcGFyYW1ldGVyX2Nsb3NlICpjbHApCiAJICBpZiAoc3Rh dHVzID09IENMT1NFX0RFTEVURSkKICAgICAgICAgICAgIHsKICNpZiBIQVZF X1VOTElOS19PUEVOX0ZJTEUKLQkgICAgICBkZWxldGVfZmlsZSAodSk7CisJ ICAgICAgcmVtb3ZlICh1LT5maWxlbmFtZSk7CiAjZWxzZQogCSAgICAgIHBh dGggPSBzdHJkdXAgKHUtPmZpbGVuYW1lKTsKICNlbmRpZgpAQCAtOTIsNyAr OTIsNyBAQCBzdF9jbG9zZSAoc3RfcGFyYW1ldGVyX2Nsb3NlICpjbHApCiAj aWYgIUhBVkVfVU5MSU5LX09QRU5fRklMRQogICAgICAgaWYgKHBhdGggIT0g TlVMTCkKIAl7Ci0JICB1bmxpbmsgKHBhdGgpOworCSAgcmVtb3ZlIChwYXRo KTsKIAkgIGZyZWUgKHBhdGgpOwogCX0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv bGliZ2ZvcnRyYW4vaW8vb3Blbi5jIGIvbGliZ2ZvcnRyYW4vaW8vb3Blbi5j CmluZGV4IDQ2NTRkZTIuLjYzMGJjYTYgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0 cmFuL2lvL29wZW4uYworKysgYi9saWJnZm9ydHJhbi9pby9vcGVuLmMKQEAg LTY2NCw3ICs2NjQsNyBAQCBhbHJlYWR5X29wZW4gKHN0X3BhcmFtZXRlcl9v cGVuICpvcHAsIGdmY191bml0ICogdSwgdW5pdF9mbGFncyAqIGZsYWdzKQog IAogI2lmICFIQVZFX1VOTElOS19PUEVOX0ZJTEUKICAgICAgIGlmICh1LT5m aWxlbmFtZSAmJiB1LT5mbGFncy5zdGF0dXMgPT0gU1RBVFVTX1NDUkFUQ0gp Ci0JdW5saW5rICh1LT5maWxlbmFtZSk7CisJcmVtb3ZlICh1LT5maWxlbmFt ZSk7CiAjZW5kaWYKICAgICAgZnJlZSAodS0+ZmlsZW5hbWUpOwogICAgICB1 LT5maWxlbmFtZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9p by91bml4LmMgYi9saWJnZm9ydHJhbi9pby91bml4LmMKaW5kZXggZmQ1ZjI3 Ny4uNTM4NWQ4YiAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vdW5peC5j CisrKyBiL2xpYmdmb3J0cmFuL2lvL3VuaXguYwpAQCAtMTcxNiwxNiArMTcx Niw2IEBAIGZsdXNoX2FsbF91bml0cyAodm9pZCkKIH0KIAogCi0vKiBkZWxl dGVfZmlsZSgpLS0gR2l2ZW4gYSB1bml0IHN0cnVjdHVyZSwgZGVsZXRlIHRo ZSBmaWxlIGFzc29jaWF0ZWQKLSAqIHdpdGggdGhlIHVuaXQuICBSZXR1cm5z IG5vbnplcm8gaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcuICovCi0KLWludAot ZGVsZXRlX2ZpbGUgKGdmY191bml0ICogdSkKLXsKLSAgcmV0dXJuIHVubGlu ayAodS0+ZmlsZW5hbWUpOwotfQotCi0KIC8qIGZpbGVfZXhpc3RzKCktLSBS ZXR1cm5zIG5vbnplcm8gaWYgdGhlIGN1cnJlbnQgZmlsZW5hbWUgZXhpc3Rz IG9uCiAgKiB0aGUgc3lzdGVtICovCiAKZGlmZiAtLWdpdCBhL2xpYmdmb3J0 cmFuL2lvL3VuaXguaCBiL2xpYmdmb3J0cmFuL2lvL3VuaXguaAppbmRleCA3 OGE0MWY3Li5kMWFhNzVkIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pby91 bml4LmgKKysrIGIvbGliZ2ZvcnRyYW4vaW8vdW5peC5oCkBAIC0xNDEsOSAr MTQxLDYgQEAgaW50ZXJuYWxfcHJvdG8oY29tcGFyZV9maWxlX2ZpbGVuYW1l KTsKIGV4dGVybiBnZmNfdW5pdCAqZmluZF9maWxlIChjb25zdCBjaGFyICpm aWxlLCBnZmNfY2hhcmxlbl90eXBlIGZpbGVfbGVuKTsKIGludGVybmFsX3By b3RvKGZpbmRfZmlsZSk7CiAKLWV4dGVybiBpbnQgZGVsZXRlX2ZpbGUgKGdm Y191bml0ICopOwotaW50ZXJuYWxfcHJvdG8oZGVsZXRlX2ZpbGUpOwotCiBl eHRlcm4gaW50IGZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpmaWxlLCBnZmNf Y2hhcmxlbl90eXBlIGZpbGVfbGVuKTsKIGludGVybmFsX3Byb3RvKGZpbGVf ZXhpc3RzKTsKIAo= --001a113ecb8a5a347c051ede8d76--