| Message ID | 20251114232625.1788701-2-simon.barth@gmx.de |
|---|---|
| State | New |
| Headers |
Return-Path: <newlib-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 19550385840B for <patchwork@sourceware.org>; Fri, 14 Nov 2025 23:27:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 19550385840B Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.de header.i=simon.barth@gmx.de header.a=rsa-sha256 header.s=s31663417 header.b=defgoddf X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id 99FB03858D1E for <newlib@sourceware.org>; Fri, 14 Nov 2025 23:26:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 99FB03858D1E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 99FB03858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763162790; cv=none; b=DxFw6FRn5E5P1lAb2NkpxBBZQXZEqEeyJI81Zg5nQjKImfauoEEjm7ZWQ1NEJ3H9xXXGgBEtn4eqYZ6fEKUoQyM1IMBiHNMOBb0KOo3hmahkXC6NomTlTaDs6Dze/bPsjz5g2vDzf0mA9qGHg5UKmZDI4ZA7GuWwbU2ticx6CeM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763162790; c=relaxed/simple; bh=lvmurpMAnlIV+h2sgAf9Tx5VANl9WjyuPoHucJBK3IY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=cIqH8FOYRRIUUniXaCPSzLCbRgkluf3bqZrwjWuyePERwxyyvD3B1cziJCgpVzqVltL7MsiWMtZzMR2pz87ORg5kW+jdZCkg2RwIrenFLPpQ5w95JElFw4RYQSRzZKCgGGIYRhQWWbdHL5pX1PLX3A+2pOGiFBTC9qygJkPnHfI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 99FB03858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1763162788; x=1763767588; i=simon.barth@gmx.de; bh=BcH3dfV5p9IrH99Vk/mzqPfZxHrnePMCHHai1XUG7pM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=defgoddf6GIhtHSPSr8lxzdpqf4wK963ezL6sydP5JXCsHBxCplFC37MxD3PWEc9 8IB28l+3S5Cy2FIGMbvp8IWdRCsvsnJbOAVR6y2F9DgF4ddQhg9DW8Db6U4EHw3cd HKi/ocCtPY61600pZyB2ozGeHYmlFcZX1Y1JF/8nfhASHPLncMkuBz4LRN4XK2U+3 bOEUJ0M5coy/FaT1WRTQVxijySMCBmCjjv5RERy1Ae4LPb9oJclUtUz3/mSXnsSDl wQ/mgikuZK0sQxjvu/65dmEHgm8ntvBQbxN6w1s704AdjsvF+ahf/AnYrgDCHTYLi Ca1zCn+vcS27HJLZrA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost ([212.114.181.217]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N2mBQ-1wKdeZ3i1M-014dEd; Sat, 15 Nov 2025 00:26:27 +0100 From: Simon Barth <simon.barth@gmx.de> To: newlib@sourceware.org Cc: Simon Barth <simon.barth@gmx.de> Subject: [PATCH v2 1/2] libc: Make string.h POSIX.1-2024 compliant Date: Sat, 15 Nov 2025 00:26:24 +0100 Message-ID: <20251114232625.1788701-2-simon.barth@gmx.de> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251114232625.1788701-1-simon.barth@gmx.de> References: <20251114232625.1788701-1-simon.barth@gmx.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: <Simon.Barth@gmx.de> X-Provags-ID: V03:K1:q2WxzkGbrAF+2tF2AH5P36qYz2XUViloStOFoFXMYQm1f5M2UBI QHE/ekrjehvON95zvGof8ZzSq3n6nHnGghsylbSTuzPiUHbQeRgHjZGxRwpyNYRTXA+Y7NR n1ct9U/5vyCiG8YeaYw7ZjTB0thukYmgXsHhIHfQJNUJEr8WdQMuOI+abFl+jaTGBAiYAbA ev+v2giZ+nyl9vMvOCdng== UI-OutboundReport: notjunk:1;M01:P0:l2PaRhYdOS8=;Js8Jiu6MT6qj4OAiUOuet/5JOA0 IIMaPMaqFnvU7bwuoztns060mmxNmcB/zV74TN7Rri9GtkadPS2LqHgJK3yJrBDMnF35r9Wiz 99RUqJoUhzKFyrJMQL/QlGqIzGRHumkZ5fC/tCNHOgLNuM4p8Fyo9McDdWBwQtMFUtlxH8/n3 EUJSUmXvJKl/1QZa3FHtvmMsWrmEA/fSfUPCQkFJIzwnLYtq7YXrmssSYMIHbEHXPjpzbdlvI 2lX0+yzn+EVHaYaVzejaZVthszyWYFK//3Qh3/UNP091IC/6DAYH3y9040S/T+o5A1hmFodzo LimYtqTjUYOdTxctx3v1JfC4XKNWNxr91D3FGVIlyunIA7TseN/YrshjIyTFd15mJyPtp94cQ 1cUYOvLNefkw1J20NfvIpwoXykCdnTjqGPJk9TgSkP1aeLD8p7hekuox1wXavzQPaI5gl1+P7 YcFvI0uPrfyX0n5J2t7BEhtOkSp2Nm2tKuC3Rf6eHU0TsFXIS2Zc0znl3YkoQP9A5KVjQE6MM +rC5471Vlg+T3EN3dzoIq6TjcLSlQHZ4xBw6QQlO1EXiCguNmiLmBSPTOmFNH+GYng5+eKlwB SOsp0skh5vnScZy5YMP59p1iq+VKnmE3WIqChLqOjBoGHHtCOmHVywPa85/pgsKXxYXxJJqBy rNr38/O+wn7viHCvX0oT3GXDyl2Ipk7mmlxW00tpcokKbFkRNmYHbc1QKNsO3VBu8gfx9aoAG keuSVh3ECGc++QudMEnFuWpGWDF2pw+epXAHIl6RZi6Yx5OP3xzNTa2rDzftl/sye+J3CA2oT /IgcDlAZfVDkMHcBYLHeSRjkSx1vgJiv/BCoq+ytQpKvD25dlV06Y4jqxqSQd3vSBlauWN5fE Coe13FM3BEyD6bOAS/b8f5QrH+2qaUt6dT6q2XxivHkSzZw3rbFt3Dkip6ZA6TiVkX3FErwpM Zqfxuq3wYmlonJbwnJngYjRqDkejuq37b0ghzjAdoYFu1EWgxEbmbJjXPcrQo8oduWYxyi06r 0JMEV3Oglv1XUydmWKS7gKVtuLZMZkfwJpLIccojhqunKyN6hsQIQgfP5UsF/WHl/7sZUnkzo oT2EBzNYB46VKxUiCEa5B43n6t8CwOlkq0rDRW2QSYG8ePwsMnzYYTKy+Gz761PTpxnYqhZH9 DKRIOvT24rE482yQVTJfnAEgrk3Nbn7qU6KeatF0UyKZiiS/jPvubVf2j8MxzbqQitIKTXXIp SifEKxx/nhoAaGLxCWor2DsfhEE7hI/RSJ5xyzkhfddcQVnz0MeysSQAdObx+kpEGHFqahZDz 52LfmBdDyXgHW4sbLoWEFiRuivLjP2eYXT1bKeLzTNtGAVQWKm44uDQUrclXbB/8npglpi4tu KsYo2G0uLmwEe47HE0WyVNsjjTGHiKXH17uaIKhmXp4Q4E8SjwGa4c8SFXyE1zdn6r7fdC9bQ 42Ktj+nh4xhxkbEjhNW81e5itW3TJbj0/PxebrAIQsdNk1+mXWicLnG794ljgEE2lnvEld+yR WKOpID36srat9YmteaJUVaApBm7ikyVtneKHP5y3uNVqnJvSK+2oz9WX85Mjf+qjTrXAuAfV/ luzgZQl1j5FTmxKZLaRs0RIw9jbHda12IOqlXTkSyqGpJrIc7n4YdU8qC8V6bvfDacng1Njwn eLEymaRNsjVwjb17zLbFyqgTk1AWFtK3rY9ikF638e1kH2a59B0TabDAnqlwd+fWRI/3JvW0o x/tW7Ne3GYeTifL/2O0UPK0URS0laMx5XhW3uYgMz3s0HHbSOuqxPrR2V0Kij9UDlH/3/xKGq MliT9+slwBFcthtPlCmF927Y9v5e6kVPuEZ7Z2DcR/rGwA4FR1dHdirNH/zWJXS+COVHhy6yT opyFpyvZNlYbKHGZqbQ8wV60pY+Km4gqJKcaUn2WPrwoMcUIzvLatHaZLFM+4Gr5jvgW+asnq ol9QgoGW4jJEKYpUDPa2exqQngP5XtrvlXgOgCy+gYe3H6gPDXVnUlpp3lUSOJVQ+FQf3o9Br uEE5L8Z1M8qe3l1GQ3kynY+KbVfSicz50odwWEc0IXsvNE9Xl/9+26ZzkPlaecchlT6kadUFb Iz+mpzs5Jz3ZSWlShSzRj1mflQSdn16UJ7CRJziwlksZJdMKRB4VJMzPKlvivRL+LCshdFdR6 AFatT2x6SMtJUNwMeVUy+ey5NEvhzKLUsP/kMEiZm7k+wpA4IE62rsMLS5DJqJzeUpfvi3LVD xHPfJBPqqFTqgdv3NMx3jc3/VBzqKf6CyHzHevUfHXOpyiLF9QW/55KGtg/jIFLpqPueN3Ch0 x/MkCk4cE6SO8a/+tt4yv73NlvumZf5miLPARwiyFTKsQKWghNgYjODs5KmROP5IxCiR3IyLw 4UBUy4BuZmgl2uHFsdCwvmsE9b5pvOySbOI4ry8KXMGgxfNzYAR7y91p3YJ1kpvo1y1LBK0tJ 4f+/0wjU6v8k9fsb+LXQiYL9APHsUraUu8BoZ1NTVyNFq8aIN7eOqGUZnsUae9fNsWugI+XPv VtVEd0ryjPYapVn/t9VrNiPftIULPbixxvt39Ja2986GfdMcAWJ39Eqg4F739tV7bsjHffjTK vu5frASXDIO6XBTYf29Xpa3rdaqnsYkVnmvIAiATUkqdldxXopBjo1LKtCA+6C/KhJv3DsrxT ar58N2eIrMG7DyvZMd5ROS54I328wg0IYiMBcIdRgUdzK/VsJKgw9pFMSmsHuVwzR1nhRI5rS yzPfvjyVEk0n77nHO9avTYkoGlk10YceHsN3zW7BvgTBog38v4RcF8NNOcsG2/+jGe5f6cVGl 79bD4exnucBzYY3eu4JU7F3V1y/mAXl4hKi8uAvyvNEU4IHwDEXBxFb0RzIeRSEZEpWAFIJgG gQ3Y2oz50lOjvJibHriosrTZ4VNr5OzB4FMUu1q9okk7Ozq+1tSqUhEYhN8VZWlmRejHSFqBs W51iEgP511PL62kEsFg4X1kHSG5NOkKq/XsTqtBT9p3bejNUyzcx41eUa7OXn9ZHrmpRT7RsX kNzLxbTr4B4zBEtwSS9LrE2O7PDJiBZW9TYefufHeSJjw2NPOAJC4MFtQ459PrqdUG9JZx65A /LjM3zCy1GA2LB8qyp0gKCWC0RARGLK4rPribhYSKWBTO4XXYZEuvrNcltHn70/BKb8IUXL8X BsGfO9xgrKBU0MGiEHbM22ViFwQb3oICa79JfIjczIiAShi9HFizU2hmXwNWi2CL601Vib6kl HhbcEd1TIAl6Kglyzn4yMxJrJUMg5EK291+qM6RAM+dwA/z1gs19HawwyPRpWMuPP/dnmy3ym eUJ5IITGI4Lt18B4X8JiIrwZ2p9r/8hXFkEXtLx8AGgmDMpbB6Oru17zulxnqoNHHnWyFLgSJ fA3ZVarLK4jPNljwY1WogicdOHmY70aNWomofN70ufdRSB++E7KGLD2gD4+hjQ0X1itj8IiOR 0AlJRMH53y6xm6UOld4J3HYUhwMo+nEg2sPFIqiz3W+M1FF7rqmEEKaccm0GuyRmdaIzv7Fal E8BZGwAAyASqumK2SrGdgZKqczsRKuicXrnTxDikQMpZ+fmiI1FAvMI1STi3GrUiv4YEYccsO rz/rc2+ZZqIwsZoyCQHPidd3LcOrVl45+I+5TGHRWT27weQj4sV1ya6C9/xWCPOR+moB/NOvl pkTGuQ2rPWdZE2lWF6O+XI+7eLvzf3Cn5tXKegtgfKhD/s+7nux5BIWN+u6PXXzHtLa601oe+ V8y1PuMSomYmh5a7OV4jceiXFKDYn9bbEDeTAOAU+yf1agwEeMgtpar8GYr1inBX1mLhXsXdf IdMpP2b/s5s9lZMznlpRN0EKLRF/vNawwz+EOCi+dBxQ4QVgIqCrwD1x8+1kz53EcRwf20r20 8+jri44GJ/F2mPX6kgvZAbmNG+gXybMRWATS+i1CJdq7ej8709hIrm5hB8+1K4EoTck/UmzH9 wVtjsYFEb/OWdIMw7SzT8cSB4+41UWvt1kdTCwYg+TMcyoeb54pmx3+z16543knLfRqjkYiXk 0dwHjJ+Cy/6S0ApVBxIRMgVRUhYXHmg/AEm8CJ061UOfSDMSTPSbKADWXquzzTq830OlHtTAz KdJeXzLXVpzSQ2kdqAphzlEzBXx9ibY31z98olciXlfIgsZD0f2ZlIGcp0iZR/UR8YRRmBv2f GLeLwmXcYkwtb6duU0cBowGX1R+QLf6FWwwJEMROcBjlfmgUkaC9vn/93xFNdGhbWvTMvqyzR v3ojav87kOP7uk0yvkNmbDSUFk/ar3h+8N3+Ua2rsK4rEr4OmYoAuGBNYSh9woD6B79diGbo2 IhxBQh4f2aF0InRRH7T9PUwXIW5lQVjot84MM9j2+9z/cuRAPQIIrRHTmRw0TOn18C/jrFoR3 SiIrQhmb4LKcwAYH3AJ0WPiUyh9dohhXOObGCds5g7iGQWp3Cx84PTVXj01d7iKTVg7OOfmad L8CuWFHzq32YEVzm+4KUgRt/8+dyHnqVlFGnUMXMeCVe0xk4NkccSlmHEbWLeeVYgEgOCEomG LisQjc+tUWys0lWKuQrq2ssqi9uPjhwNLblw/XWZAHAfIzmsNQCvVvQVZ7sA6PYBvFLzK95Oi g30xAKuNKH7dMnygRudnAvyrO/8NwSV/ZzK/3IHRyKQ2il/1rIFK6ZnoiK3wSwCDFp8NK/e6B S9g1tSQlre5+z86upax0ve4XMml5WBzGZJF/LrRFvAeAuupZRhz0hfiA2/o426HI+jQxSn99v pt4tcDFjffhaEIMw1A4jBI1AkCZf5ZdJ27cVx6yWJiqfrcCb4lK3k70x/546gujS1ViJWVP3j wKgYtrOqqqsL4FbxIbaCh8SOPgUozeGd3IDQpIUUdtZBU2F3jvKRGs2JssRgs77ZfjGfFL/XN YoeDAOBs5BkQou7GU2ftHFV5BMHOXbmxby8a3ETVuPRqLDoyn+lz2KNmaTqfXIHZCsycwxvzJ DCsjTSZETNQceXU1CzL6bK03ZoJpm3Rx7O/j6QFxX5EKLigfBQL0r27N3U5a58ks85mD/uzCI e7X+sYv97pSpnxiVqRz/yZQrjcQ1/YqK2A5weiB9W2O4Zv1kyYtqpz3biTIgZ8GxrfBHxGrLI kE/MBeNVXH0T2YLOkjQleo5bHU0Xts6yrqYDqzZ+ZwpsmM1Kzw32BYY3Wd2g== X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, 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 X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list <newlib.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/newlib>, <mailto:newlib-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/newlib/> List-Post: <mailto:newlib@sourceware.org> List-Help: <mailto:newlib-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/newlib>, <mailto:newlib-request@sourceware.org?subject=subscribe> Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
Improve POSIX.1-2024 conformity and docs
|
|
Commit Message
Simon Barth
Nov. 14, 2025, 11:26 p.m. UTC
POSIX.1-2024 added strlcpy, strlcat, and memmem to strings.h. Previously these functions were only available as parts of BSD or GNU extensions. Fix the header so that the symbol are visible for either the right extensions, or for POSIX.1-2024. --- newlib/libc/include/string.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
Comments
Simon Barth wrote: > POSIX.1-2024 added strlcpy, strlcat, and memmem to strings.h. Previously these functions were only available as parts of BSD or GNU extensions. > Fix the header so that the symbol are visible for either the right extensions, or for POSIX.1-2024. This is a pedantic comment, but technically these functions do not have to be guarded behind feature test macros at all. Functions beginning with 'str' or 'mem' in <string.h> are in implementation-reserved namespace. I believe this provision goes back to C89. You can see it in a C17 draft at https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf#nameddest=subsection.7.31.13 POSIX has always done the same: https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_02_02 As an example, POSIX provides that Annex K's string functions need not be guarded behind the __STDC_WANT_LIB_EXT1__ feature test macro.
Hi, On Sun, Nov 16, 2025 at 03:46:34AM +0000, John Scott wrote: > Simon Barth wrote: > > POSIX.1-2024 added strlcpy, strlcat, and memmem to strings.h. Previously these functions were only available as parts of BSD or GNU extensions. > > Fix the header so that the symbol are visible for either the right extensions, or for POSIX.1-2024. > > This is a pedantic comment, but technically these functions do not have to be guarded behind feature test macros at all. Functions beginning with 'str' or 'mem' in <string.h> are in implementation-reserved namespace. I believe this provision goes back to C89. > You can see it in a C17 draft at https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf#nameddest=subsection.7.31.13 > POSIX has always done the same: https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_02_02 > > As an example, POSIX provides that Annex K's string functions need not be guarded behind the __STDC_WANT_LIB_EXT1__ feature test macro. I understand that according to this, an implementation of the C library is free to add functions with any of the prefixes 'str' or 'mem' to <string.h>. Are you proposing to _unguard_ all functions in <string.h> that match those criteria? Cheers, Simon
On 2025-11-15 20:46, John Scott wrote: > Simon Barth wrote: >> POSIX.1-2024 added strlcpy, strlcat, and memmem to strings.h. Previously these functions were only available as parts of BSD or GNU extensions. >> Fix the header so that the symbol are visible for either the right extensions, or for POSIX.1-2024. > > This is a pedantic comment, but technically these functions do not have to be guarded behind feature test macros at all. Functions beginning with 'str' or 'mem' in <string.h> are in implementation-reserved namespace. I believe this provision goes back to C89. > You can see it in a C17 draft at https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf#nameddest=subsection.7.31.13 This is qualified in the WD derived from C2023 (which adds prefix "wcs"): https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3685.pdf#page=511 "7.35.18 String handling <string.h> 1 Function names that begin with str, mem, or wcs and a lowercase letter are potentially reserved identifiers and may be added to the declarations in the <string.h> header. 2 Suppressing the macro definitions of memchr, strchr, strpbrk, strrchr, or strstr to access the corresponding actual function is an obsolescent feature." > POSIX has always done the same: > https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_02_02 "2.2.2 The Name Space All identifiers in this volume of POSIX.1-2024, except environ, are defined in at least one of the headers, as shown in XBD 14. Headers. When [XSI] _XOPEN_SOURCE or _POSIX_C_SOURCE is defined, each header defines or declares some identifiers, potentially conflicting with identifiers used by the application. The set of identifiers visible to the application consists of precisely those identifiers from the header pages of the included headers, as well as additional identifiers reserved for the implementation. In addition, some headers may make visible identifiers from other headers as indicated on the relevant header pages. ... Implementations may add symbols to the headers shown in the following table, provided the identifiers for those symbols either: 1. Begin with the corresponding reserved prefixes in the table, or ... Header Prefix Suffix Complete Name ... <string.h> str[a-z], mem[a-z], wcs[a-z]" excludes unguarded (str|mem|wcs)[^a-z] and may be extended by any header which is defined to, or as implemented, includes <string.h>. > As an example, POSIX provides that Annex K's string functions need not be guarded behind the __STDC_WANT_LIB_EXT1__ feature test macro.
On Nov 15 00:26, Simon Barth wrote: > POSIX.1-2024 added strlcpy, strlcat, and memmem to strings.h. Previously > these functions were only available as parts of BSD or GNU extensions. > > Fix the header so that the symbol are visible for either the right > extensions, or for POSIX.1-2024. > --- > newlib/libc/include/string.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h > index 32199c027..3e66ec3dd 100644 > --- a/newlib/libc/include/string.h > +++ b/newlib/libc/include/string.h > @@ -68,10 +68,12 @@ void * memccpy (void *__restrict, const void *__restrict, int, size_t); > #endif > #if __GNU_VISIBLE > void * mempcpy (void *, const void *, size_t); > -void * memmem (const void *, size_t, const void *, size_t); > void * memrchr (const void *, int, size_t); > void * rawmemchr (const void *, int); > #endif > +#if __GNU_VISIBLE || __POSIX_VISIBLE >= 202405 > +void * memmem (const void *, size_t, const void *, size_t); > +#endif > #if __POSIX_VISIBLE >= 200809 > char *stpcpy (char *__restrict, const char *__restrict); > char *stpncpy (char *__restrict, const char *__restrict, size_t); > @@ -111,7 +113,7 @@ int __xpg_strerror_r (int, char *, size_t); > /* Reentrant version of strerror. */ > char * _strerror_r (struct _reent *, int, int, int *); > > -#if __BSD_VISIBLE > +#if __BSD_VISIBLE || __POSIX_VISIBLE >= 202405L > size_t strlcat (char *, const char *, size_t); > size_t strlcpy (char *, const char *, size_t); > #endif > -- > 2.51.2 I pushed this patch as is, but if you follow up with another patch removing the guards, that would be fine. Thanks, Corinna
diff --git a/newlib/libc/include/string.h b/newlib/libc/include/string.h index 32199c027..3e66ec3dd 100644 --- a/newlib/libc/include/string.h +++ b/newlib/libc/include/string.h @@ -68,10 +68,12 @@ void * memccpy (void *__restrict, const void *__restrict, int, size_t); #endif #if __GNU_VISIBLE void * mempcpy (void *, const void *, size_t); -void * memmem (const void *, size_t, const void *, size_t); void * memrchr (const void *, int, size_t); void * rawmemchr (const void *, int); #endif +#if __GNU_VISIBLE || __POSIX_VISIBLE >= 202405 +void * memmem (const void *, size_t, const void *, size_t); +#endif #if __POSIX_VISIBLE >= 200809 char *stpcpy (char *__restrict, const char *__restrict); char *stpncpy (char *__restrict, const char *__restrict, size_t); @@ -111,7 +113,7 @@ int __xpg_strerror_r (int, char *, size_t); /* Reentrant version of strerror. */ char * _strerror_r (struct _reent *, int, int, int *); -#if __BSD_VISIBLE +#if __BSD_VISIBLE || __POSIX_VISIBLE >= 202405L size_t strlcat (char *, const char *, size_t); size_t strlcpy (char *, const char *, size_t); #endif