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.96) (envelope-from ) id 1w7GlC-0058Jz-1t for pgsql-committers@arkaria.postgresql.org; Mon, 30 Mar 2026 17:50:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7GlB-005HmG-0N for pgsql-committers@arkaria.postgresql.org; Mon, 30 Mar 2026 17:50:45 +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.96) (envelope-from ) id 1w7Gkx-005GwA-0a for pgsql-committers@lists.postgresql.org; Mon, 30 Mar 2026 17:50:31 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w7Gkt-000000022HV-1ZOs for pgsql-committers@lists.postgresql.org; Mon, 30 Mar 2026 17:50:31 +0000 Received: from gemulon.postgresql.org ([2001:4800:3e1:1::198]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7Gks-006s1U-1R for pgsql-committers@lists.postgresql.org; Mon, 30 Mar 2026 17:50:26 +0000 Received: from localhost ([127.0.0.1] helo=gemulon.postgresql.org) by gemulon.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7Gkr-002BNj-1M for pgsql-committers@lists.postgresql.org; Mon, 30 Mar 2026 17:50:26 +0000 Content-Type: multipart/mixed; boundary="===============1952070331440292246==" MIME-Version: 1.0 From: Heikki Linnakangas To: pgsql-committers@lists.postgresql.org Subject: pgsql: Invent a variant of getopt(3) that is thread-safe X-Auto-Response-Suppress: All Auto-Submitted: auto-generated Message-Id: Date: Mon, 30 Mar 2026 17:50:26 +0000 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============1952070331440292246== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 SW52ZW50IGEgdmFyaWFudCBvZiBnZXRvcHQoMykgdGhhdCBpcyB0aHJlYWQtc2FmZQoKVGhlIHN0 YW5kYXJkIGdldG9wdCgzKSBmdW5jdGlvbiBpcyBub3QgcmUtZW50cmFudCBub3IgdGhyZWFkLXNh ZmUuClRoYXQncyBPSyBmb3IgY3VycmVudCB1c2FnZSwgYnV0IGl0J3Mgb25lIG1vcmUgbGl0dGxl IHRoaW5nIHdlIG5lZWQgdG8KY2hhbmdlIGluIG9yZGVyIHRvIG1ha2UgdGhlIHNlcnZlciBtdWx0 aS10aHJlYWRlZC4KClRoZXJlJ3Mgbm8gc3RhbmRhcmQgZ2V0b3B0X3IoKSBmdW5jdGlvbiBvbiBh bnkgcGxhdGZvcm0sIEkgcHJlc3VtZQpiZWNhdXNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYXJl IHVzdWFsbHkgcGFyc2VkIGVhcmx5IHdoZW4geW91IHN0YXJ0CmEgcHJvZ3JhbSwgYmVmb3JlIGxh dW5jaGluZyBhbnkgdGhyZWFkcywgc28gdGhlcmUgaXNuJ3QgbXVjaCBuZWVkIGZvcgppdC4gSG93 ZXZlciwgd2UgY2FsbCBpdCBhdCBiYWNrZW5kIHN0YXJ0dXAgdG8gcGFyc2Ugb3B0aW9ucyBmcm9t IHRoZQpzdGFydHVwIHBhY2tldC4gQmVjYXVzZSB0aGVyZSdzIG5vIHN0YW5kYXJkLCB3ZSdyZSBm cmVlIHRvIGRlZmluZSBvdXIKb3duLgoKVGhlIHBnX2dldG9wdF9zdGFydC9uZXh0KCkgaW1wbGVt ZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIG9sZCBnZXRvcHQKaW1wbGVtZW50YXRpb24sIEkganVz dCBnYXRoZXJlZCBhbGwgdGhlIHN0YXRlIHZhcmlhYmxlcyB0byBhIHN0cnVjdC4KVGhlIG5vbi1y ZS1lbnRyYW50IGdldG9wdCgpIGZ1bmN0aW9uIGlzIG5vdyBhIHdyYXBwZXIgYXJvdW5kIHRoZQpy ZS1lbnRyYW50IHZhcmlhbnQsIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgZ2V0b3B0KDMp LgpnZXRvcHRfbG9uZygpIGlzIG5vdCB1c2VkIGluIHRoZSBzZXJ2ZXIsIHNvIHdlIGRvbid0IG5l ZWQgdG8gcHJvdmlkZSBhCnJlLWVudHJhbnQgdmFyaWFudCBvZiB0aGF0LgoKUmV2aWV3ZWQtYnk6 IFBldGVyIEVpc2VudHJhdXQgPHBldGVyQGVpc2VudHJhdXQub3JnPgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2QxZGE1ZjBlLTBkNjgtNDdjOS1hODgy LWViMjJmNDYyNzUyZkBpa2kuZmkKCkJyYW5jaAotLS0tLS0KbWFzdGVyCgpEZXRhaWxzCi0tLS0t LS0KaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvcGcvY29tbWl0ZGlmZi9mZDhlM2Y3Y2VlZWQ4 YjAxNTVlMTI0YTBkYTRlYzZhNGZiNTNlYzFmCgpNb2RpZmllZCBGaWxlcwotLS0tLS0tLS0tLS0t LQpzcmMvaW5jbHVkZS9wb3J0L3BnX2dldG9wdF9jdHguaCB8ICAzOSArKysrKysrKysrKwpzcmMv cG9ydC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCnNyYy9wb3J0L2dldG9wdC5jICAg ICAgICAgICAgICAgIHwgIDkxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCnNyYy9wb3J0L21l c29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKc3JjL3BvcnQvcGdfZ2V0b3B0X2N0eC5jICAg ICAgICAgfCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCnNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IHwgICAxICsKNiBmaWxlcyBjaGFuZ2VkLCAxOTkg aW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgo= --===============1952070331440292246==--