From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cygnus.enyo.de (cygnus.enyo.de [79.140.189.114]) by sourceware.org (Postfix) with ESMTPS id ADB653858C2B for ; Sat, 14 Oct 2023 08:52:26 +0000 (GMT) ARC-Filter: OpenARC Filter v1.0.0 sourceware.org ADB653858C2B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=79.140.189.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697273548; cv=none; b=cHtQGEg0c2TpGGEpBXzOz9dFOOEUxzXkJlGww0vQu6ajG/vSr7y61n7dQN9lElLj8NSYTRgITrlD3r4DwtvT5AOp8/e3WpdFy3oWtWTa/9QuxRMTFBxc/kMSqaGuLbUnd16uJKNYVBk7Mhm5OP6yNu8sPH4fDqI9YFL36qgofJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697273548; c=relaxed/simple; bh=smrUMNNNsKgN7MJg1aeeB1cma8PIncdVkJzWJQq+rV8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=BQDjFwIrUKLZVdPxS/OfBeaQkrNsDO35kGarTG8v9Z0xzt0WDo73tp710x2k3WOxCQZxahvicuKpCndhfMaoKRViJCfJ/tuSfhwUn9/OXaJQtqccTZqV1yQfjyhrRA/aYs81EJs+epdngjq77bl3Ttu2WYoOx2LycjMSFAk1kqI= ARC-Authentication-Results: i=1; server2.sourceware.org DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ADB653858C2B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=deneb.enyo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=deneb.enyo.de Received: from [172.17.203.2] (port=47395 helo=deneb.enyo.de) by albireo.enyo.de ([172.17.140.2]) with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) id 1qraNk-005VUC-AW; Sat, 14 Oct 2023 08:52:25 +0000 Received: from fw by deneb.enyo.de with local (Exim 4.96) (envelope-from ) id 1qraNl-0005pY-0r; Sat, 14 Oct 2023 10:52:25 +0200 From: Florian Weimer To: Joe Simmons-Talbott Cc: libc-alpha@sourceware.org Subject: Re: [PATCH v2 1/2] posix/group_member: Add group_member2 with error return. References: <20231013151034.725257-1-josimmon@redhat.com> <20231013151034.725257-2-josimmon@redhat.com> Date: Sat, 14 Oct 2023 10:52:25 +0200 In-Reply-To: <20231013151034.725257-2-josimmon@redhat.com> (Joe Simmons-Talbott's message of "Fri, 13 Oct 2023 11:10:25 -0400") Message-ID: <875y39mvqu.fsf@mid.deneb.enyo.de> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_NONE,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: * Joe Simmons-Talbott: > index 22422b1f9f..6064eb7264 100644 > --- a/posix/group_member.c > +++ b/posix/group_member.c > @@ -16,6 +16,8 @@ > License along with the GNU C Library; if not, see > . */ > > +#include > +#include > #include > #include > #include > @@ -47,3 +49,33 @@ __group_member (gid_t gid) > return 0; > } > weak_alias (__group_member, group_member) > + > +int > +__group_member2 (gid_t gid) > +{ > + int n; > + gid_t *groups; > + struct scratch_buffer buf; > + scratch_buffer_init (&buf); > + > + n = __getgroups (0, NULL); > + if (!scratch_buffer_set_array_size (&buf, n, sizeof (*groups))) > + { > + errno = ENOMEM; > + return -1; > + } > + groups = buf.data; > + > + n = __getgroups (n, groups); > + > + while (n-- > 0) > + if (groups[n] == gid) > + { > + scratch_buffer_free (&buf); > + return 1; > + } > + > + scratch_buffer_free (&buf); > + return 0; > +} > +weak_alias (__group_member2, group_member2) This three-state return value (0/1/-1) is very difficult to deal with for programmers, especially since we are coming from a boolean interface. I'm not sure if this kind of interface is a good idea.