agora inbox for pgsql-hackers@postgresql.orghelp / color / mirror / Atom feed
[PATCH 3/5] Move conversion of a "historic" to MVCC snapshot to a separate function. 144+ messages / 2 participants [nested] [flat]
* [PATCH 3/5] Move conversion of a "historic" to MVCC snapshot to a separate function. @ 2025-12-09 18:44 Antonin Houska <ah@cybertec.at> 0 siblings, 0 replies; 144+ messages in thread From: Antonin Houska @ 2025-12-09 18:44 UTC (permalink / raw) The conversion is now handled by SnapBuildMVCCFromHistoric(). REPACK CONCURRENTLY will also need it. --- src/backend/commands/cluster.c | 8 ++- src/backend/replication/logical/snapbuild.c | 57 +++++++++++++++++---- src/backend/utils/time/snapmgr.c | 3 +- src/include/replication/snapbuild.h | 1 + src/include/utils/snapmgr.h | 1 + 5 files changed, 53 insertions(+), 17 deletions(-) diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 3afab656cd9..89f0b03a31c 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -70,8 +70,7 @@ typedef struct static bool cluster_rel_recheck(RepackCommand cmd, Relation OldHeap, Oid indexOid, Oid userid, int options); -static void rebuild_relation(RepackCommand cmd, - Relation OldHeap, Relation index, bool verbose); +static void rebuild_relation(Relation OldHeap, Relation index, bool verbose); static void copy_table_data(Relation NewHeap, Relation OldHeap, Relation OldIndex, bool verbose, bool *pSwapToastByContent, TransactionId *pFreezeXid, MultiXactId *pCutoffMulti); @@ -415,7 +414,7 @@ cluster_rel(RepackCommand cmd, Relation OldHeap, Oid indexOid, TransferPredicateLocksToHeapRelation(OldHeap); /* rebuild_relation does all the dirty work */ - rebuild_relation(cmd, OldHeap, index, verbose); + rebuild_relation(OldHeap, index, verbose); /* rebuild_relation closes OldHeap, and index if valid */ out: @@ -629,8 +628,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal) * On exit, they are closed, but locks on them are not released. */ static void -rebuild_relation(RepackCommand cmd, - Relation OldHeap, Relation index, bool verbose) +rebuild_relation(Relation OldHeap, Relation index, bool verbose) { Oid tableOid = RelationGetRelid(OldHeap); Oid accessMethod = OldHeap->rd_rel->relam; diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index 6e18baa33cb..34bdd987478 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -440,10 +440,7 @@ Snapshot SnapBuildInitialSnapshot(SnapBuild *builder) { Snapshot snap; - TransactionId xid; TransactionId safeXid; - TransactionId *newxip; - int newxcnt = 0; Assert(XactIsoLevel == XACT_REPEATABLE_READ); Assert(builder->building_full_snapshot); @@ -485,7 +482,33 @@ SnapBuildInitialSnapshot(SnapBuild *builder) MyProc->xmin = snap->xmin; - /* allocate in transaction context */ + /* Convert the historic snapshot to MVCC snapshot. */ + return SnapBuildMVCCFromHistoric(snap, true); +} + +/* + * Turn a historic MVCC snapshot into an ordinary MVCC snapshot. + * + * Unlike a regular (non-historic) MVCC snapshot, the 'xip' array of this + * snapshot contains not only running main transactions, but also their + * subtransactions. On the other hand, 'subxip' will usually be empty. This + * difference does not affect the result of XidInMVCCSnapshot() because it + * searches both in 'xip' and 'subxip'. + * + * Pass true for 'in_place' if you don't care about modifying the source + * snapshot. If you need a new instance, and one that was allocated as a + * single chunk of memory, pass false. + */ +Snapshot +SnapBuildMVCCFromHistoric(Snapshot snapshot, bool in_place) +{ + TransactionId xid; + TransactionId *oldxip = snapshot->xip; + uint32 oldxcnt = snapshot->xcnt; + TransactionId *newxip; + int newxcnt = 0; + Snapshot result; + newxip = (TransactionId *) palloc(sizeof(TransactionId) * GetMaxSnapshotXidCount()); @@ -495,7 +518,7 @@ SnapBuildInitialSnapshot(SnapBuild *builder) * classical snapshot by marking all non-committed transactions as * in-progress. This can be expensive. */ - for (xid = snap->xmin; NormalTransactionIdPrecedes(xid, snap->xmax);) + for (xid = snapshot->xmin; NormalTransactionIdPrecedes(xid, snapshot->xmax);) { void *test; @@ -503,7 +526,7 @@ SnapBuildInitialSnapshot(SnapBuild *builder) * Check whether transaction committed using the decoding snapshot * meaning of ->xip. */ - test = bsearch(&xid, snap->xip, snap->xcnt, + test = bsearch(&xid, snapshot->xip, snapshot->xcnt, sizeof(TransactionId), xidComparator); if (test == NULL) @@ -520,11 +543,25 @@ SnapBuildInitialSnapshot(SnapBuild *builder) } /* adjust remaining snapshot fields as needed */ - snap->snapshot_type = SNAPSHOT_MVCC; - snap->xcnt = newxcnt; - snap->xip = newxip; + snapshot->xcnt = newxcnt; + snapshot->xip = newxip; + + if (in_place) + result = snapshot; + else + { + result = CopySnapshot(snapshot); + + /* Restore the original values so the source is intact. */ + snapshot->xip = oldxip; + snapshot->xcnt = oldxcnt; + + /* newxip has been copied */ + pfree(newxip); + } + result->snapshot_type = SNAPSHOT_MVCC; - return snap; + return result; } /* diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c index 24f73a49d27..886060305f5 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -213,7 +213,6 @@ typedef struct ExportedSnapshot static List *exportedSnapshots = NIL; /* Prototypes for local functions */ -static Snapshot CopySnapshot(Snapshot snapshot); static void UnregisterSnapshotNoOwner(Snapshot snapshot); static void FreeSnapshot(Snapshot snapshot); static void SnapshotResetXmin(void); @@ -604,7 +603,7 @@ SetTransactionSnapshot(Snapshot sourcesnap, VirtualTransactionId *sourcevxid, * The copy is palloc'd in TopTransactionContext and has initial refcounts set * to 0. The returned snapshot has the copied flag set. */ -static Snapshot +Snapshot CopySnapshot(Snapshot snapshot) { Snapshot newsnap; diff --git a/src/include/replication/snapbuild.h b/src/include/replication/snapbuild.h index 44031dcf6e3..6d4d2d1814c 100644 --- a/src/include/replication/snapbuild.h +++ b/src/include/replication/snapbuild.h @@ -73,6 +73,7 @@ extern void FreeSnapshotBuilder(SnapBuild *builder); extern void SnapBuildSnapDecRefcount(Snapshot snap); extern Snapshot SnapBuildInitialSnapshot(SnapBuild *builder); +extern Snapshot SnapBuildMVCCFromHistoric(Snapshot snapshot, bool in_place); extern const char *SnapBuildExportSnapshot(SnapBuild *builder); extern void SnapBuildClearExportedSnapshot(void); extern void SnapBuildResetExportedSnapshotState(void); diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h index 604c1f90216..f65f83c85cd 100644 --- a/src/include/utils/snapmgr.h +++ b/src/include/utils/snapmgr.h @@ -63,6 +63,7 @@ extern Snapshot GetTransactionSnapshot(void); extern Snapshot GetLatestSnapshot(void); extern void SnapshotSetCommandId(CommandId curcid); +extern Snapshot CopySnapshot(Snapshot snapshot); extern Snapshot GetCatalogSnapshot(Oid relid); extern Snapshot GetNonHistoricCatalogSnapshot(Oid relid); extern void InvalidateCatalogSnapshot(void); -- 2.47.3 --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=v27-0004-Add-CONCURRENTLY-option-to-REPACK-command.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 -- 2025-12-09 18:44 [PATCH 3/5] Move conversion of a "historic" to MVCC snapshot to a separate function. Antonin Houska <ah@cybertec.at> 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