Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1udcPg-00APYo-TI for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Jul 2025 22:21:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1udcPf-00CXo8-E8 for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Jul 2025 22:21:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1udcPe-00CXny-VH for pgsql-hackers@lists.postgresql.org; Sun, 20 Jul 2025 22:21:43 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1udcPc-008qqo-0S for pgsql-hackers@postgresql.org; Sun, 20 Jul 2025 22:21:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1753050098; bh=tTzbY3LtNrVWfKVONdx7nAs5BfxpfRanfNPt7wzHxCY=; h=Date:From:To:Subject:Message-ID:From; b=Oj0JKwmfl3+4BdKlXUnG2OxjLe7CTQ+f5Wwn+w+76pJu6v3bmsgTS+LOPD/pxdrVQ ysYHKCnTFCl4DlVJDAdDvp/X2NO5uOL6OF/cmS2QfvxR7uBrrC3GrDaeEX5hjA/CK0 CEUsjIxUXlPUjUvfHALmQkmDZrv6v+SkkGaWtTwjcHp/kwHE1ezIZKtINtffMgi8KK EjE/kU9m7NUeQp2vPLqAcufHthacyGExxHTkaBY7C8yPXp3N4GNyEWeM6MV684lx6q 7CkQnP5PQGIA0Z/5cT/Dtsxt+NOOgVYvy9oPGYzOZIRiyEmv9YeSmhMPA6KB/SdxPL v2oCELyfXRwZQ== Received: from mail.postgrespro.ru (webmail-slave-mstn.l.postgrespro.ru [192.168.2.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.mityugov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 6458060196 for ; Mon, 21 Jul 2025 01:21:38 +0300 (MSK) MIME-Version: 1.0 Date: Mon, 21 Jul 2025 01:21:38 +0300 From: Dmitry Mityugov To: pgsql-hackers@postgresql.org Subject: [PATCH] Use strchr() to search for a single character Message-ID: <9c1beea6c7a5e9fb6677f26620f1f257@postgrespro.ru> X-Sender: d.mityugov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_a514447d66eec16a699262e9ec54fc6c" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/07/20 21:09:00 #27640149 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_a514447d66eec16a699262e9ec54fc6c Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Code in src/port/pgmkdirp.c uses strstr() to find a single character in a string, but strstr() seems to be too generic for this job. Another function, strchr(), might be better suited for this purpose, because it is optimized to search for exactly one character in a string. In addition, if strchr() is used, the compiler doesn't have to generate a terminating \0 byte for the substring, producing slightly smaller code. I'm attaching the patch. Regards, Dmitry --=_a514447d66eec16a699262e9ec54fc6c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Use-strchr-to-search-for-a-single-character.patch Content-Disposition: attachment; filename=0001-Use-strchr-to-search-for-a-single-character.patch; size=1028 RnJvbTogRG1pdHJ5IE1pdHl1Z292IDxkLm1pdHl1Z292QHBvc3RncmVzcHJvLnJ1PgpEYXRlOiBN b24sIDIxIEp1bCAyMDI1IDAwOjUwOjM1ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gVXNlIHN0cmNo cigpIHRvIHNlYXJjaCBmb3IgYSBzaW5nbGUgY2hhcmFjdGVyCgpDb2RlIGluIHNyYy9wb3J0L3Bn bWtkaXJwLmMgdXNlcyBzdHJzdHIoKSB0byBmaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBhCnN0 cmluZywgYnV0IHN0cnN0cigpIHNlZW1zIHRvIGJlIHRvbyBnZW5lcmljIGZvciB0aGlzIGpvYi4g QW5vdGhlciBmdW5jdGlvbiwKc3RyY2hyKCksIG1pZ2h0IGJlIGJldHRlciBzdWl0ZWQgZm9yIHRo aXMgcHVycG9zZSwgYmVjYXVzZSBpdCBpcyBvcHRpbWl6ZWQgdG8Kc2VhcmNoIGZvciBleGFjdGx5 IG9uZSBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuIEluIGFkZGl0aW9uLCBpZiBzdHJjaHIoKSBpcyB1 c2VkLAp0aGUgY29tcGlsZXIgZG9lc24ndCBoYXZlIHRvIGdlbmVyYXRlIGEgdGVybWluYXRpbmcg XDAgYnl0ZSBmb3IgdGhlIHN1YnN0cmluZywKcHJvZHVjaW5nIHNsaWdodGx5IHNtYWxsZXIgY29k ZS4KLS0tCiBzcmMvcG9ydC9wZ21rZGlycC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdta2RpcnAu YyBiL3NyYy9wb3J0L3BnbWtkaXJwLmMKaW5kZXggZDk0MzU1OTc2MGQuLjdkN2NlYTRkZDBlIDEw MDY0NAotLS0gYS9zcmMvcG9ydC9wZ21rZGlycC5jCisrKyBiL3NyYy9wb3J0L3BnbWtkaXJwLmMK QEAgLTczLDcgKzczLDcgQEAgcGdfbWtkaXJfcChjaGFyICpwYXRoLCBpbnQgb21vZGUpCiAJCWlm IChwWzBdID09ICcvJyAmJiBwWzFdID09ICcvJykKIAkJewogCQkJLyogbmV0d29yayBkcml2ZSAq LwotCQkJcCA9IHN0cnN0cihwICsgMiwgIi8iKTsKKwkJCXAgPSBzdHJjaHIocCArIDIsICcvJyk7 CiAJCQlpZiAocCA9PSBOVUxMKQogCQkJewogCQkJCWVycm5vID0gRUlOVkFMOwotLSAKMi41MC4x Cgo= --=_a514447d66eec16a699262e9ec54fc6c--