agora inbox for pgsql-hackers@postgresql.org  
help / color / mirror / Atom feed
[PATCH 26/33] v15 doc review: Rework compression options of pg_receivewal - d62bcc8b07f921bad105c7a826702c117ea7be58
144+ messages / 2 participants
[nested] [flat]

* [PATCH 26/33] v15 doc review: Rework compression options of pg_receivewal - d62bcc8b07f921bad105c7a826702c117ea7be58
@ 2021-12-29 22:37  Justin Pryzby <pryzbyj@telsasoft.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Justin Pryzby @ 2021-12-29 22:37 UTC (permalink / raw)

---
 doc/src/sgml/ref/pg_receivewal.sgml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/sgml/ref/pg_receivewal.sgml b/doc/src/sgml/ref/pg_receivewal.sgml
index c1d9401c597..f38d6f47878 100644
--- a/doc/src/sgml/ref/pg_receivewal.sgml
+++ b/doc/src/sgml/ref/pg_receivewal.sgml
@@ -268,7 +268,7 @@ PostgreSQL documentation
       <listitem>
        <para>
         Enables compression of write-ahead logs using the specified method.
-        Supported values <literal>gzip</literal>, <literal>lz4</literal>
+        Supported values are <literal>gzip</literal>, <literal>lz4</literal>
         (if <productname>PostgreSQL</productname> was compiled with
         <option>--with-lz4</option>), and <literal>none</literal>.
        </para>
-- 
2.17.1


--924gEkU1VlJlwnwX
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0027-v15-doc-review-Add-replication-command-READ_REPLICAT.patch"



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread

* [PATCH v2 1/2] Add a binary to test getopt_long()
@ 2026-07-22 03:55  Japin Li <japinli@hotmail.com>
  0 siblings, 0 replies; 144+ messages in thread

From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw)

---
 src/bin/Makefile                            |  1 +
 src/bin/getopt_long_test/Makefile           | 26 +++++++++++++++++++++
 src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 src/bin/getopt_long_test/Makefile
 create mode 100644 src/bin/getopt_long_test/getopt_long_test.c

diff --git a/src/bin/Makefile b/src/bin/Makefile
index 538af88a523..b25305f9db5 100644
--- a/src/bin/Makefile
+++ b/src/bin/Makefile
@@ -14,6 +14,7 @@ top_builddir = ../..
 include $(top_builddir)/src/Makefile.global
 
 SUBDIRS = \
+	getopt_long_test \
 	initdb \
 	pg_amcheck \
 	pg_archivecleanup \
diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile
new file mode 100644
index 00000000000..f7de6ef872c
--- /dev/null
+++ b/src/bin/getopt_long_test/Makefile
@@ -0,0 +1,26 @@
+PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function"
+PGAPPICON = win32
+
+subdir = src/bin/getopt_long_test
+top_builddir = ../../..
+include $(top_builddir)/src/Makefile.global
+
+PG_CPPFLAGS += -I$(top_srcdir)/src/port
+
+OBJS = \
+	$(WIN32RES) \
+	getopt_long.o \
+	getopt_long_test.o
+
+all: getopt_long_test
+
+getopt_long_test: $(OBJS)
+	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
+
+getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global
+
+getopt_long.c:
+	ln -s $(top_srcdir)/src/port/getopt_long.c .
+
+clean distclean:
+	rm -f getopt_long_test$(X) $(OBJS) getopt_long.c
diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c
new file mode 100644
index 00000000000..4abd042bbaa
--- /dev/null
+++ b/src/bin/getopt_long_test/getopt_long_test.c
@@ -0,0 +1,25 @@
+
+#include "postgres.h"
+
+#include "getopt_long.h"
+
+int
+main(int argc, char **argv)
+{
+	int c;
+	const char		*shortopts = ":f:";
+	struct option	 longopts[] = {
+		{"log-filename", required_argument, NULL, 'f'},
+		{NULL, 0, NULL, 0},
+	};
+
+	while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+	{
+		if (c == ':')
+			fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]);
+		else if (c == '?')
+			fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]);
+	}
+
+	return 0;
+}
-- 
2.53.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch



^ permalink  raw  reply  [nested|flat] 144+ messages in thread


end of thread, other threads:[~2026-07-22 03:55 UTC | newest]

Thread overview: 144+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-12-29 22:37 [PATCH 26/33] v15 doc review: Rework compression options of pg_receivewal - d62bcc8b07f921bad105c7a826702c117ea7be58 Justin Pryzby <pryzbyj@telsasoft.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>
2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox