agora inbox for pgsql-hackers@postgresql.orghelp / color / mirror / Atom feed
[PATCH v15 4/8] Row pattern recognition patch (planner). 144+ messages / 2 participants [nested] [flat]
* [PATCH v15 4/8] Row pattern recognition patch (planner). @ 2024-03-28 10:30 Tatsuo Ishii <ishii@postgresql.org> 0 siblings, 0 replies; 144+ messages in thread From: Tatsuo Ishii @ 2024-03-28 10:30 UTC (permalink / raw) --- src/backend/optimizer/plan/createplan.c | 24 +++++++++++++++----- src/backend/optimizer/plan/planner.c | 3 +++ src/backend/optimizer/plan/setrefs.c | 27 ++++++++++++++++++++++- src/backend/optimizer/prep/prepjointree.c | 4 ++++ src/include/nodes/plannodes.h | 19 ++++++++++++++++ 5 files changed, 71 insertions(+), 6 deletions(-) diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 5f479fc56c..fe51ad351e 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -287,9 +287,11 @@ static WindowAgg *make_windowagg(List *tlist, Index winref, int ordNumCols, AttrNumber *ordColIdx, Oid *ordOperators, Oid *ordCollations, int frameOptions, Node *startOffset, Node *endOffset, Oid startInRangeFunc, Oid endInRangeFunc, - Oid inRangeColl, bool inRangeAsc, bool inRangeNullsFirst, - List *runCondition, List *qual, bool topWindow, - Plan *lefttree); + Oid inRangeColl, bool inRangeAsc, bool inRangeNullsFirst, List *runCondition, + RPSkipTo rpSkipTo, List *patternVariable, List *patternRegexp, + List *defineClause, + List *defineInitial, + List *qual, bool topWindow, Plan *lefttree); static Group *make_group(List *tlist, List *qual, int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators, Oid *grpCollations, Plan *lefttree); @@ -2699,6 +2701,11 @@ create_windowagg_plan(PlannerInfo *root, WindowAggPath *best_path) wc->inRangeAsc, wc->inRangeNullsFirst, wc->runCondition, + wc->rpSkipTo, + wc->patternVariable, + wc->patternRegexp, + wc->defineClause, + wc->defineInitial, best_path->qual, best_path->topwindow, subplan); @@ -6627,8 +6634,10 @@ make_windowagg(List *tlist, Index winref, int ordNumCols, AttrNumber *ordColIdx, Oid *ordOperators, Oid *ordCollations, int frameOptions, Node *startOffset, Node *endOffset, Oid startInRangeFunc, Oid endInRangeFunc, - Oid inRangeColl, bool inRangeAsc, bool inRangeNullsFirst, - List *runCondition, List *qual, bool topWindow, Plan *lefttree) + Oid inRangeColl, bool inRangeAsc, bool inRangeNullsFirst, List *runCondition, + RPSkipTo rpSkipTo, List *patternVariable, List *patternRegexp, List *defineClause, + List *defineInitial, + List *qual, bool topWindow, Plan *lefttree) { WindowAgg *node = makeNode(WindowAgg); Plan *plan = &node->plan; @@ -6654,6 +6663,11 @@ make_windowagg(List *tlist, Index winref, node->inRangeAsc = inRangeAsc; node->inRangeNullsFirst = inRangeNullsFirst; node->topWindow = topWindow; + node->rpSkipTo = rpSkipTo, + node->patternVariable = patternVariable; + node->patternRegexp = patternRegexp; + node->defineClause = defineClause; + node->defineInitial = defineInitial; plan->targetlist = tlist; plan->lefttree = lefttree; diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 38d070fa00..82c370c4b4 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -869,6 +869,9 @@ subquery_planner(PlannerGlobal *glob, Query *parse, wc->runCondition = (List *) preprocess_expression(root, (Node *) wc->runCondition, EXPRKIND_TARGET); + wc->defineClause = (List *) preprocess_expression(root, + (Node *) wc->defineClause, + EXPRKIND_TARGET); } parse->limitOffset = preprocess_expression(root, parse->limitOffset, diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index 42603dbc7c..f7abb2be96 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -210,7 +210,6 @@ static List *set_windowagg_runcondition_references(PlannerInfo *root, List *runcondition, Plan *plan); - /***************************************************************************** * * SUBPLAN REFERENCES @@ -2455,6 +2454,32 @@ set_upper_references(PlannerInfo *root, Plan *plan, int rtoffset) NRM_EQUAL, NUM_EXEC_QUAL(plan)); + /* + * Modifies an expression tree in each DEFINE clause so that all Var + * nodes's varno refers to OUTER_VAR. + */ + if (IsA(plan, WindowAgg)) + { + WindowAgg *wplan = (WindowAgg *) plan; + + if (wplan->defineClause != NIL) + { + foreach(l, wplan->defineClause) + { + TargetEntry *tle = (TargetEntry *) lfirst(l); + + tle->expr = (Expr *) + fix_upper_expr(root, + (Node *) tle->expr, + subplan_itlist, + OUTER_VAR, + rtoffset, + NRM_EQUAL, + NUM_EXEC_QUAL(plan)); + } + } + } + pfree(subplan_itlist); } diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c index 300691cc4d..3220072a51 100644 --- a/src/backend/optimizer/prep/prepjointree.c +++ b/src/backend/optimizer/prep/prepjointree.c @@ -2147,6 +2147,10 @@ perform_pullup_replace_vars(PlannerInfo *root, if (wc->runCondition != NIL) wc->runCondition = (List *) pullup_replace_vars((Node *) wc->runCondition, rvcontext); + + if (wc->defineClause != NIL) + wc->defineClause = (List *) + pullup_replace_vars((Node *) wc->defineClause, rvcontext); } if (parse->onConflict) { diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index 7f3db5105d..b0e50ae886 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -20,6 +20,7 @@ #include "lib/stringinfo.h" #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" +#include "nodes/parsenodes.h" #include "nodes/primnodes.h" @@ -1096,6 +1097,24 @@ typedef struct WindowAgg /* nulls sort first for in_range tests? */ bool inRangeNullsFirst; + /* Row Pattern Recognition AFTER MACH SKIP clause */ + RPSkipTo rpSkipTo; /* Row Pattern Skip To type */ + + /* Row Pattern PATTERN variable name (list of String) */ + List *patternVariable; + + /* + * Row Pattern RPATTERN regular expression quantifier ('+' or ''. list of + * String) + */ + List *patternRegexp; + + /* Row Pattern DEFINE clause (list of TargetEntry) */ + List *defineClause; + + /* Row Pattern DEFINE variable initial names (list of String) */ + List *defineInitial; + /* * false for all apart from the WindowAgg that's closest to the root of * the plan -- 2.25.1 ----Next_Part(Thu_Mar_28_19_59_25_2024_076)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="v15-0005-Row-pattern-recognition-patch-executor.patch" ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=v2-0002-Fix-optind-handling-inconsistency-in-getopt_long-.patch ^ permalink raw reply [nested|flat] 144+ messages in thread
* [PATCH v2 1/2] Add a binary to test getopt_long() @ 2026-07-22 03:55 Japin Li <japinli@hotmail.com> 0 siblings, 0 replies; 144+ messages in thread From: Japin Li @ 2026-07-22 03:55 UTC (permalink / raw) --- src/bin/Makefile | 1 + src/bin/getopt_long_test/Makefile | 26 +++++++++++++++++++++ src/bin/getopt_long_test/getopt_long_test.c | 25 ++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/bin/getopt_long_test/Makefile create mode 100644 src/bin/getopt_long_test/getopt_long_test.c diff --git a/src/bin/Makefile b/src/bin/Makefile index 538af88a523..b25305f9db5 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -14,6 +14,7 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global SUBDIRS = \ + getopt_long_test \ initdb \ pg_amcheck \ pg_archivecleanup \ diff --git a/src/bin/getopt_long_test/Makefile b/src/bin/getopt_long_test/Makefile new file mode 100644 index 00000000000..f7de6ef872c --- /dev/null +++ b/src/bin/getopt_long_test/Makefile @@ -0,0 +1,26 @@ +PGFILEDESC = "getopt_long_test - test PostgreSQL getopt_long() function" +PGAPPICON = win32 + +subdir = src/bin/getopt_long_test +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +PG_CPPFLAGS += -I$(top_srcdir)/src/port + +OBJS = \ + $(WIN32RES) \ + getopt_long.o \ + getopt_long_test.o + +all: getopt_long_test + +getopt_long_test: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + +getopt_long_test.o: getopt_long_test.c $(top_builddir)/src/Makefile.global + +getopt_long.c: + ln -s $(top_srcdir)/src/port/getopt_long.c . + +clean distclean: + rm -f getopt_long_test$(X) $(OBJS) getopt_long.c diff --git a/src/bin/getopt_long_test/getopt_long_test.c b/src/bin/getopt_long_test/getopt_long_test.c new file mode 100644 index 00000000000..4abd042bbaa --- /dev/null +++ b/src/bin/getopt_long_test/getopt_long_test.c @@ -0,0 +1,25 @@ + +#include "postgres.h" + +#include "getopt_long.h" + +int +main(int argc, char **argv) +{ + int c; + const char *shortopts = ":f:"; + struct option longopts[] = { + {"log-filename", required_argument, NULL, 'f'}, + {NULL, 0, NULL, 0}, + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) + { + if (c == ':') + fprintf(stderr, "option '%s' requires an argument\n", argv[optind - 1]); + else if (c == '?') + fprintf(stderr, "unrecognized option '%s'\n", argv[optind - 1]); + } + + return 0; +} -- 2.53.0 --=-=-= Content-Type: text/x-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 -- 2024-03-28 10:30 [PATCH v15 4/8] Row pattern recognition patch (planner). Tatsuo Ishii <ishii@postgresql.org> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <japinli@hotmail.com> 2026-07-22 03:55 [PATCH v2 1/2] Add a binary to test getopt_long() Japin Li <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