From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 6E2CE3904EC6 for ; Tue, 28 Jun 2022 14:55:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6E2CE3904EC6 Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-488-NF8MTpW9NBOLlHtCKDlioA-1; Tue, 28 Jun 2022 10:55:50 -0400 X-MC-Unique: NF8MTpW9NBOLlHtCKDlioA-1 Received: by mail-qv1-f69.google.com with SMTP id w18-20020a0ce112000000b0046e7f2c5a06so12534664qvk.0 for ; Tue, 28 Jun 2022 07:55:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=aKGgohaFxXZ7jEU7bDyvn0nCe70z9xCgF2sfsCuqVuc=; b=LhtIwg5N2StB5Wpv/WEWYyRLVg3JOCsK+LUby5ZvqTKdkFHytEMUaoMN4oLIi3uVIt GEhy/BiH4/EnbeY2azUPRaLhTHU+6hfyB+6y17OmXLliRpxcW6WR8oiSVYAJjHfBqvZi QEh67Vh9/rFnCe5qdDBGJyJmA+1ZvPaDXeD8/LEHoPWhR2MCAYDblHl+M4XYhGLWzQEN 1/VAu0yX3m91xBOS+bPAtoXmIqCdwgoKk1M2v97pxOWgdSmbULSBgjw+17wNRJWDzwOi fUr2lyxO0H1BYGLKTbpvE3waqlRqAZHXi8BXJJQ+VkCRdX0DSHC6AhIz/uHcvRkIIR7w huaw== X-Gm-Message-State: AJIora80HTnw2nFo1M/Qzwt27EMHwbFakbxRWVAL5ayRJn7quewHwchu sW68WqCJhm7OswNj61rkh8d1cx4o3btAT3sYhcBau5Wq/5j0y/xf+zY4MRNPN57WT3JtZqF0Tdy xUPiMXAmUWeDW6rM9kqmPU9/Hrf2+xUg= X-Received: by 2002:ac8:57cc:0:b0:305:1fc6:b0cb with SMTP id w12-20020ac857cc000000b003051fc6b0cbmr13484543qta.427.1656428150235; Tue, 28 Jun 2022 07:55:50 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t+e3WLKJaoRBWiJe/yE0UvMvLl/tSY5E4vzRL2+6hlOC8W/Fq7MDN4uuHA7XR0CiFXTfloR1XEmMCsIoZBk3s= X-Received: by 2002:ac8:57cc:0:b0:305:1fc6:b0cb with SMTP id w12-20020ac857cc000000b003051fc6b0cbmr13484516qta.427.1656428149911; Tue, 28 Jun 2022 07:55:49 -0700 (PDT) MIME-Version: 1.0 References: <20220628111212.206509-1-jwakely@redhat.com> In-Reply-To: <20220628111212.206509-1-jwakely@redhat.com> From: Jonathan Wakely Date: Tue, 28 Jun 2022 15:55:39 +0100 Message-ID: Subject: Re: [committed] libstdc++: Improve directory iterator abstractions for openat To: Jonathan Wakely Cc: "libstdc++" , gcc Patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000079723205e2833b5f" X-Spam-Status: No, score=-13.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jun 2022 14:55:53 -0000 --00000000000079723205e2833b5f Content-Type: text/plain; charset="UTF-8" On Tue, 28 Jun 2022 at 15:24, Jonathan Wakely via Libstdc++ wrote: > --- a/libstdc++-v3/src/filesystem/dir-common.h > +++ b/libstdc++-v3/src/filesystem/dir-common.h > @@ -25,6 +25,7 @@ > #ifndef _GLIBCXX_DIR_COMMON_H > #define _GLIBCXX_DIR_COMMON_H 1 > > +#include // uint32_t > #include // strcmp > #include > #if _GLIBCXX_FILESYSTEM_IS_WINDOWS > @@ -91,12 +92,50 @@ is_permission_denied_error(int e) > > struct _Dir_base > { > + // As well as the full pathname (including the directory iterator's path) > + // this type contains a file descriptor for a directory and a second pathname > + // relative to that directory. The file descriptor and relative pathname > + // can be used with POSIX openat and unlinkat. > + struct _At_path > + { > + // No file descriptor given, so interpret the pathname relative to the CWD. > + _At_path(const char* p) noexcept I forgot to consistently use the char_type alias to support wchar_t paths on Windows. Fixed by the attached patch. Tested x86_64-linux and x86_64-mingw32, pushed to trunk. --00000000000079723205e2833b5f Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l4yaj4va0 Y29tbWl0IGJiMWYyNjZhN2Q2MDJmZmVlNGEwNzBmNTg2MzUxYmRmYWZjYjYxNTAKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBUdWUgSnVuIDI4IDEy OjU2OjE5IDIwMjIKCiAgICBsaWJzdGRjKys6IEZpeCBmaWxlc3lzdGVtIGJ1aWxkIGZvciBXaW5k b3dzCiAgICAKICAgIEkgb25seSBoYWxmIHJlbWVtYmVyZWQgdG8gdXNlIGNoYXJfdHlwZSBpbnN0 ZWFkIG9mIGNoYXIgZm9yIGZpbGVzeXN0ZW0KICAgIHBhdGhzLCBzbyB0aGF0IGl0IHdvcmtzIHdp dGggd2NoYXJfdCBvbiBXaW5kb3dzLiBUaGlzIGZpeGVzIHRoZQogICAgYm9vdHN0cmFwIGZhaWx1 cmUuCiAgICAKICAgIGxpYnN0ZGMrKy12My9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAgICAgKiBz cmMvZmlsZXN5c3RlbS9kaXItY29tbW9uLmggKF9EaXJfYmFzZTo6X0F0X3BhdGgpOgogICAgICAg ICAgICBVc2UgY2hhcl90eXBlIGNvbnNpc3RlbnRseSBmb3IgcGF0aHMuCgpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3NyYy9maWxlc3lzdGVtL2Rpci1jb21tb24uaCBiL2xpYnN0ZGMrKy12My9z cmMvZmlsZXN5c3RlbS9kaXItY29tbW9uLmgKaW5kZXggNDg0NGIxYWM0NTMuLjIyOGZhYjU1YWZi IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2ZpbGVzeXN0ZW0vZGlyLWNvbW1vbi5oCisr KyBiL2xpYnN0ZGMrKy12My9zcmMvZmlsZXN5c3RlbS9kaXItY29tbW9uLmgKQEAgLTk5LDE4ICs5 OSwyMiBAQCBzdHJ1Y3QgX0Rpcl9iYXNlCiAgIHN0cnVjdCBfQXRfcGF0aAogICB7CiAgICAgLy8g Tm8gZmlsZSBkZXNjcmlwdG9yIGdpdmVuLCBzbyBpbnRlcnByZXQgdGhlIHBhdGhuYW1lIHJlbGF0 aXZlIHRvIHRoZSBDV0QuCi0gICAgX0F0X3BhdGgoY29uc3QgY2hhciogcCkgbm9leGNlcHQKKyAg ICBfQXRfcGF0aChjb25zdCBwb3NpeDo6Y2hhcl90eXBlKiBwKSBub2V4Y2VwdAogICAgIDogcGF0 aG5hbWUocCksIGRpcl9mZChmZGN3ZCgpKSwgb2Zmc2V0KDApCiAgICAgeyB9CiAKLSAgICBfQXRf cGF0aChpbnQgZmQsIGNvbnN0IGNoYXIqIHAsIHNpemVfdCBvZmZzZXQpIG5vZXhjZXB0CisgICAg X0F0X3BhdGgoaW50IGZkLCBjb25zdCBwb3NpeDo6Y2hhcl90eXBlKiBwLCBzaXplX3Qgb2Zmc2V0 KSBub2V4Y2VwdAogICAgIDogcGF0aG5hbWUocCksIGRpcl9mZChmZCksIG9mZnNldChvZmZzZXQp CiAgICAgeyB9CiAKLSAgICBjb25zdCBjaGFyKiBwYXRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1 cm4gcGF0aG5hbWU7IH0KKyAgICBjb25zdCBwb3NpeDo6Y2hhcl90eXBlKgorICAgIHBhdGgoKSBj b25zdCBub2V4Y2VwdCB7IHJldHVybiBwYXRobmFtZTsgfQogCi0gICAgaW50IGRpcigpIGNvbnN0 IG5vZXhjZXB0IHsgcmV0dXJuIGRpcl9mZDsgfQotICAgIGNvbnN0IGNoYXIqIHBhdGhfYXRfZGly KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcGF0aG5hbWUgKyBvZmZzZXQ7IH0KKyAgICBpbnQK KyAgICBkaXIoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBkaXJfZmQ7IH0KKworICAgIGNvbnN0 IHBvc2l4OjpjaGFyX3R5cGUqCisgICAgcGF0aF9hdF9kaXIoKSBjb25zdCBub2V4Y2VwdCB7IHJl dHVybiBwYXRobmFtZSArIG9mZnNldDsgfQogCiAgIHByaXZhdGU6CiAgICAgY29uc3QgcG9zaXg6 OmNoYXJfdHlwZSogcGF0aG5hbWU7IC8vIEZ1bGwgcGF0aCByZWxhdGl2ZSB0byBDV0QuCg== --00000000000079723205e2833b5f--