From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id A45C938A8170; Mon, 19 Dec 2022 10:51:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A45C938A8170 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,255,1665475200"; d="diff'?scan'208";a="90044784" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 19 Dec 2022 02:51:23 -0800 IronPort-SDR: UXPH5IS7eaN2EJujaljZ7VmN/i4P6tVeZohR1+mofaRuK0epxs84ki+UBI6rxr4YKl6qbpzKDz mm/pVzaZtN1HRQnuBgyCZ8EeOxVQWQjuZVOIMB0Rg6SJZUK5VURwj35B70wR6d98ZDBN+Fwe7W ypHVfb2kV8tc3/j8GRMtsn0BHe3c3GiSoU3rAESDEopWU0PAvo66gp3YxZRjfa5Lsk370JSxn0 7IUu7grRMk3iv7KlyNuzPPwGdykwd5ua0smHJE8EuPRd3NOGrVkeelUnRkPibgWoA8F4R8NVNO JW8= Content-Type: multipart/mixed; boundary="------------bj0pSp9OymT0Yp2F4QMqsWFt" Message-ID: Date: Mon, 19 Dec 2022 11:51:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [Patch] gfortran.dg/read_dir.f90: Make PASS on Windows Content-Language: en-US From: Tobias Burnus To: gcc-patches , fortran , Jerry D , NightStrike References: <345db222-b459-6a2b-c8c4-c49808979594@codesourcery.com> In-Reply-To: <345db222-b459-6a2b-c8c4-c49808979594@codesourcery.com> X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------bj0pSp9OymT0Yp2F4QMqsWFt Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 19.12.22 10:26, Tobias Burnus wrote: > And here is a more light-wight variant, suggested by Nightstrike: > > Using '.' instead of creating a new directory - and checking for > __WIN32__ instead for __MINGW32__. > > The only downside of this variant is that it does not check whether > "close(10,status=3D'delete')" will delete a directory without failing wit= h > an error. =E2=80=93 If the latter makes sense, I think a follow-up check = should > be added to ensure the directory has indeed been removed by 'close'. I have now updated the heavy version. The #if check moved to C as those macros aren't set in Fortran. (That's now https://gcc.gnu.org/PR108175 - I thought that there was a PR before, but I couldn't find any.) Additionally, on Windows the '.' directory is now opened - avoiding issues with POSIX functions (and the requirement to use '#include ' etc.). - As OPEN already fails, there is no point in checking for the rest. On the non-Windows side, there is now a check that 'CLOSE' with status=3D'delete' indeed has deleted the directory. > Thoughts about which variant is better? Other suggestions or comments? ^- comments? > PS: On my x86-64 Linux, OPEN works but READ fails with EISDIR/errno =3D= =3D 21. And thanks to Nightstrike for testing, suggestions and reporting the issue at the first place. > On 19.12.22 10:09, Tobias Burnus wrote: >> As discussed in #gfortran IRC, on Windows opening a directory fails >> with EACCESS. >> (It works under Cygwin - nightstrike was so kind to test this.) >> >> Additionally, '[ -d dir ] || mkdir dir' is also not very portable. >> >> Hence, I use an auxiliary C file calling the POSIX functions and >> expect a fail for non-Cygwin windows. >> >> Comments? Suggestions? - If there aren't any, I plan to commit it >> as obvious tomorrow. I don't have a strong preference for the one-file/'.'/smaller solutions vs the two-file/mkdir/close-'delete' solution, but I am slightly inclined to the the one that tests more. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------bj0pSp9OymT0Yp2F4QMqsWFt Content-Type: text/x-patch; charset="UTF-8"; name="fix-read_dir-v2.diff" Content-Disposition: attachment; filename="fix-read_dir-v2.diff" Content-Transfer-Encoding: base64 Z2ZvcnRyYW4uZGcvcmVhZF9kaXIuZjkwOiBNYWtlIFBBU1Mgb24gV2luZG93cwoKT24gbm9u LUN5Z3dpbiBXaW5kb3dzLCB1c2UgJy4nIGFuZCBleHBlY3QgdGhlIGRvY3VtZW50ZWQgZmFp bCB3aGVuIG9wZW5pbmcKYSBkaXJlY3RvcnkgKEVBQ0NFU1MpLiAgQXMgZ2ZvcnRyYW4gZG9l cyBub3Qgc2V0IF9fV0lOMzJfXyB0aGlzIGNoZWNrIGlzCmRvbmUgb24gdGhlIEMgc2lkZS4g KE9uIF9fQ1lHV0lOX18sIF9fV0lOMzJfXyBpcyBub3Qgc2V0IC0gYnV0IHRvIG1ha2UgaXQK Y2xlYXIsICFfX0NZR1dJTl9fIGlzIHVzZWQgaW4gI2lmLikKCk9uIG5vbi1XaW5kb3dzLCBy ZXBsYWNlIHRoZSAnY2FsbCBzeXN0ZW0nIHNoZWxsIGNhbGwgYnkgdGhlIFBPU0lYIGZ1bmN0 aW9ucwpzdGF0L21rZGlyL3JtZGlyIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eSwgZXNwZWNp YWxseSBvbiBlbWJlZGRlZCBzeXN0ZW1zOwphZGRpdGlvbmFsbHkgYWRkIHNvbWUgbW9yZSBj aGVja3MuIEluIHBhcnRpY3VsYXIsIGNvbmZpcm0gdGhhdCAnY2xvc2UnIHdpdGgKc3RhdHVz PSdkZWxldGUnIGluZGVlZCBkZWxldGVkIHRoZSBkaXJlY3RvcnkuCgpnY2MvdGVzdHN1aXRl L0NoYW5nZUxvZzoKCgkqIGdmb3J0cmFuLmRnL3JlYWRfZGlyLWF1eC5jOiBOZXc7IHByb3Zp ZGVzIG15X21rZGlyLCBteV9ybWRpciwKCW15X3ZlcmlmeV9ub3RfZXhpc3RzIGFuZCBleHBl Y3Rfb3Blbl90b19mYWlsLgoJKiBnZm9ydHJhbi5kZy9yZWFkX2Rpci5mOTA6IENhbGwgdGhv c2U7IGV4cGVjdCB0aGF0IG9wZW5pbmcgYQoJZGlyZWN0b3J5IGZhaWxzIG9uIFdpbmRvd3Mu CgogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci1hdXguYyB8IDY4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L3JlYWRfZGlyLmY5MCAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKy0tLQogMiBmaWxl cyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3JlYWRfZGlyLWF1eC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci1hdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMzA3YjQ0NDcyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3JlYWRfZGlyLWF1eC5jCkBAIC0wLDAgKzEsNjgg QEAKKyNpZiBkZWZpbmVkKF9fV0lOMzJfXykgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKKyAg LyogTW9zdGx5IHNraXAgb24gV2luZG93cywgY2YuIG1haW4gZmlsZSB3aHkuICovCisKK2lu dCBleHBlY3Rfb3Blbl90b19mYWlsICgpIHsgcmV0dXJuIDE7IH0KKwordm9pZCBteV92ZXJp Znlfbm90X2V4aXN0cyAoY29uc3QgY2hhciAqZGlyKSB7IH0KK3ZvaWQgbXlfbWtkaXIgKGNv bnN0IGNoYXIgKmRpcikgeyB9Cit2b2lkIG15X3JtZGlyIChjb25zdCBjaGFyICpkaXIpIHsg fQorCisjZWxzZQorCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8qIEZvciBta2RpciArIHBl cm1pc3Npb24gYml0cy4gICovCisjaW5jbHVkZSA8dW5pc3RkLmg+ICAvKiBGb3Igcm1kaXIu ICAqLworI2luY2x1ZGUgPGVycm5vLmg+ICAvKiBGb3IgZXJybm8uICAqLworI2luY2x1ZGUg PHN0ZGlvLmg+ICAvKiBGb3IgcGVycm9yLiAgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4gIC8q IEZvciBhYm9ydC4gICovCisgCisKK2ludCBleHBlY3Rfb3Blbl90b19mYWlsICgpIHsgcmV0 dXJuIDA7IH0KKwordm9pZAorbXlfdmVyaWZ5X25vdF9leGlzdHMgKGNvbnN0IGNoYXIgKmRp cikKK3sKKyAgc3RydWN0IHN0YXQgcGF0aF9zdGF0OworICBpbnQgZXJyID0gc3RhdCAoZGly LCAmcGF0aF9zdGF0KTsKKyAgaWYgKGVyciAmJiBlcnJubyA9PSBFTk9FTlQpCisgICAgcmV0 dXJuOyAgLyogT0sgKi8KKyAgaWYgKGVycikKKyAgICBwZXJyb3IgKCJteV92ZXJpZnlfbm90 X2V4aXN0cyIpOworICBlbHNlCisgICAgcHJpbnRmICgibXlfdmVyaWZ5X25vdF9leGlzdHM6 IHBhdGhuYW1lICVzIHN0aWxsIGV4aXN0c1xuIiwgZGlyKTsKKyAgYWJvcnQgKCk7CisgfQor Cit2b2lkCitteV9ta2RpciAoY29uc3QgY2hhciAqZGlyKQoreworICBpbnQgZXJyOworICBz dHJ1Y3Qgc3RhdCBwYXRoX3N0YXQ7CisKKyAgLyogQ2hlY2sgd2hldGhlciAnZGlyJyBleGlz dHMgYW5kIGlzIGEgZGlyZWN0b3J5LiAgKi8KKyAgZXJyID0gc3RhdCAoZGlyLCAmcGF0aF9z dGF0KTsKKyAgaWYgKGVyciAmJiBlcnJubyAhPSBFTk9FTlQpCisgICAgeworICAgICAgcGVy cm9yICgibXlfbWtkaXI6IGZhaWxlZCB0byBjYWxsIHN0YXQgZm9yIGRpcmVjdG9yeSIpOwor ICAgICAgYWJvcnQgKCk7CisgICAgfQorICBpZiAoZXJyID09IDAgJiYgIVNfSVNESVIgKHBh dGhfc3RhdC5zdF9tb2RlKSkKKyAgICB7CisgICAgICBwcmludGYgKCJteV9ta2RpcjogcGF0 aG5hbWUgJXMgaXMgbm90IGEgZGlyZWN0b3J5XG4iLCBkaXIpOworICAgICAgYWJvcnQgKCk7 CisgICAgfQorCisgIGVyciA9IG1rZGlyIChkaXIsIFNfSVJXWFUgfCBTX0lSR1JQIHwgU19J WEdSUCB8IFNfSVJPVEggfCBTX0lYT1RIKTsKKyAgaWYgKGVyciAhPSAwKQorICAgIHsKKyAg ICAgIHBlcnJvciAoIm15X21rZGlyOiBmYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSIpOwor ICAgICAgYWJvcnQgKCk7CisgICAgfSAgICAKK30KKwordm9pZAorbXlfcm1kaXIgKGNvbnN0 IGNoYXIgKmRpcikKK3sKKyAgcm1kaXIgKGRpcik7Cit9CisKKyNlbmRpZiAgLyogIWRlZmlu ZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pICovCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3JlYWRfZGlyLmY5MCBiL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvcmVhZF9kaXIuZjkwCmluZGV4IGM3ZGRjNTFmYjkwLi4yNzc4MjEwZjA3 OSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci5mOTAK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9yZWFkX2Rpci5mOTAKQEAgLTEsMjAg KzEsNjQgQEAKICEgeyBkZy1kbyBydW4gfQorISB7IGRnLWFkZGl0aW9uYWwtc291cmNlcyBy ZWFkX2Rpci1hdXguYyB9CishCiAhIFBSNjczNjcKKwogcHJvZ3JhbSBidWcKKyAgIHVzZSBp c29fY19iaW5kaW5nCiAgICBpbXBsaWNpdCBub25lCisKKyAgIGludGVyZmFjZQorICAgICBp bnRlZ2VyKGNfaW50KSBmdW5jdGlvbiBleHBlY3Rfb3Blbl90b19mYWlsICgpIGJpbmQoQykK KyAgICAgICBpbXBvcnQKKyAgICAgZW5kCisgICAgIHN1YnJvdXRpbmUgbXlfdmVyaWZ5X25v dF9leGlzdHMocykgYmluZChDKQorICAgICAgICEgQWJvcnRzIGlmIHRoZSBwYXNzZWQgcGF0 aG5hbWUgKHN0aWxsKSBleGlzdHMKKyAgICAgICBpbXBvcnQKKyAgICAgICBjaGFyYWN0ZXIo bGVuPTEsa2luZD1jX2NoYXIpIDo6IHMoKikKKyAgICAgZW5kIHN1YnJvdXRpbmUKKyAgICAg c3Vicm91dGluZSBteV9ta2RpcihzKSBiaW5kKEMpCisgICAgICAgISBDYWxsIFBPU0lYJ3Mg bWtkaXIgLSBhbmQgaWdub3JlIGZhaWxzIGR1ZSB0bworICAgICAgICEgZXhpc3RpbmcgZGly ZWN0b3JpZXMgYnV0IGZhaWwgb3RoZXJ3aXNlCisgICAgICAgaW1wb3J0CisgICAgICAgY2hh cmFjdGVyKGxlbj0xLGtpbmQ9Y19jaGFyKSA6OiBzKCopCisgICAgIGVuZCBzdWJyb3V0aW5l CisgICAgIHN1YnJvdXRpbmUgbXlfcm1kaXIocykgYmluZChDKQorICAgICAgICEgQ2FsbCBQ T1NJWCdzIHJtZGlyIC0gYW5kIGlnbm9yZSBmYWlscworICAgICAgIGltcG9ydAorICAgICAg IGNoYXJhY3RlcihsZW49MSxraW5kPWNfY2hhcikgOjogcygqKQorICAgICBlbmQgc3Vicm91 dGluZQorICAgZW5kIGludGVyZmFjZQorCisgICBjaGFyYWN0ZXIobGVuPSopLCBwYXJhbWV0 ZXIgOjogc2RpciA9ICJqdW5rby5kaXIiCisgICBjaGFyYWN0ZXIobGVuPSosa2luZD1jX2No YXIpLCBwYXJhbWV0ZXIgOjogY19zZGlyID0gc2RpciAvLyBjX251bGxfY2hhcgorCiAgICBj aGFyYWN0ZXIobGVuPTEpIDo6IGMKLSAgIGNoYXJhY3RlcihsZW49MjU2KSA6OiBtZXNzYWdl CiAgICBpbnRlZ2VyIGlvcwotICAgY2FsbCBzeXN0ZW0oJ1sgLWQganVua28uZGlyIF0gfHwg bWtkaXIganVua28uZGlyJykKLSAgIG9wZW4odW5pdD0xMCwgZmlsZT0nanVua28uZGlyJyxp b3N0YXQ9aW9zLGFjdGlvbj0ncmVhZCcsYWNjZXNzPSdzdHJlYW0nKQorCisgICBpZiAoZXhw ZWN0X29wZW5fdG9fZmFpbCAoKSAvPSAwKSB0aGVuCisgICAgICAhIFdpbmRvd3MgaXMgZG9j dW1lbnRlZCB0byBmYWlsIHdpdGggRUFDQ0VTUyB3aGVuIHRyeWluZyB0byBvcGVuIGEKKyAg ICAgICEgZGlyZWN0b3J5LiBIb3dldmVyLCB0YXJnZXQgbWFjcm9zIHN1Y2ggYXMgX19XSU4z Ml9fIGFyZSBub3QgZGVmaW5lZAorICAgICAgISBpbiBGb3J0cmFuOyBoZW5jZSwgd2UgdXNl IGEgZGV0b3VyIHZpYSB0aGlzIEMgZnVuY3Rpb24uCisgICAgICAhIENoZWNrIGZvciAnLicg d2hpY2ggaXMgYSBrbm93bi10by1leGlzdCBkaXJlY3Rvcnk6CisgICAgICBvcGVuKHVuaXQ9 MTAsIGZpbGU9Jy4nLGlvc3RhdD1pb3MsYWN0aW9uPSdyZWFkJyxhY2Nlc3M9J3N0cmVhbScp CisgICAgICBpZiAoaW9zID09IDApICYKKyAgICAgICAgICBzdG9wIDMgICEgRXJyb3I6IG9w ZW4gdG8gZmFpbCAoRUFDQ0VTUykKKyAgICAgICBzdG9wIDAgICEgT0sKKyAgIGVuZGlmCisK KyAgIGNhbGwgbXlfbWtkaXIoY19zZGlyKQorICAgb3Blbih1bml0PTEwLCBmaWxlPXNkaXIs aW9zdGF0PWlvcyxhY3Rpb249J3JlYWQnLGFjY2Vzcz0nc3RyZWFtJykKKwogICAgaWYgKGlv cy5uZS4wKSB0aGVuCi0gICAgICBjYWxsIHN5c3RlbSgncm1kaXIganVua28uZGlyJykKKyAg ICAgIGNhbGwgbXlfcm1kaXIoY19zZGlyKQogICAgICAgU1RPUCAxCiAgICBlbmQgaWYKICAg IHJlYWQoMTAsIGlvc3RhdD1pb3MpIGMKLSAgIGlmIChpb3MubmUuMjEuYW5kLmlvcy5uZS4w KSB0aGVuIAorICAgaWYgKGlvcy5uZS4yMS5hbmQuaW9zLm5lLjApIHRoZW4gICEgRUlTRElS IGhhcyBvZnRlbiB0aGUgdmFsdWUgMjEKICAgICAgIGNsb3NlKDEwLCBzdGF0dXM9J2RlbGV0 ZScpCisgICAgICBjYWxsIG15X3ZlcmlmeV9ub3RfZXhpc3RzKGNfc2RpcikKICAgICAgIFNU T1AgMgogICAgZW5kIGlmCiAgICBjbG9zZSgxMCwgc3RhdHVzPSdkZWxldGUnKQorICAgY2Fs bCBteV92ZXJpZnlfbm90X2V4aXN0cyhjX3NkaXIpCiBlbmQgcHJvZ3JhbSBidWcK --------------bj0pSp9OymT0Yp2F4QMqsWFt--