git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 01/12] parse-options: stop when encounter a non-option

From
Bo Yang <struggleyb.nku@gmail.com>
Date
Jun 26, 2010, 13:27 UTC
Message-ID
<1277558857-23103-2-git-send-email-struggleyb.nku@gmail.com>
In-Reply-To
<1277558857-23103-1-git-send-email-struggleyb.nku@gmail.com>

Since we need to support the syntax like: -L n1,m1 path1 -L n2,m2 path2.

So, make the parse-options API not stop with a non-option, but report the status and go on parsing the following.

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
---
 parse-options.c |    3 ++-
 parse-options.h |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/parse-options.c b/parse-options.c
index 0fa79bc..cbb49d3 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -374,7 +374,7 @@ int parse_options_step(struct parse_opt_ctx_t *ctx,
 			if (parse_nodash_opt(ctx, arg, options) == 0)
 				continue;
 			if (ctx->flags & PARSE_OPT_STOP_AT_NON_OPTION)
-				break;
+				return PARSE_OPT_NON_OPTION;
 			ctx->out[ctx->cpidx++] = ctx->argv[0];
 			continue;
 		}
@@ -456,6 +456,7 @@ int parse_options(int argc, const char **argv, const char *prefix,
 	switch (parse_options_step(&ctx, options, usagestr)) {
 	case PARSE_OPT_HELP:
 		exit(129);
+	case PARSE_OPT_NON_OPTION:
 	case PARSE_OPT_DONE:
 		break;
 	default: /* PARSE_OPT_UNKNOWN */
diff --git a/parse-options.h b/parse-options.h
index 7435cdb..407697a 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -161,7 +161,8 @@ extern NORETURN void usage_msg_opt(const char *msg,
 enum {
 	PARSE_OPT_HELP = -1,
 	PARSE_OPT_DONE,
-	PARSE_OPT_UNKNOWN
+	PARSE_OPT_NON_OPTION,
+	PARSE_OPT_UNKNOWN,
 };
 
 /*
-- 
1.7.1.577.g36cf0.dirty
Previous: Bo YangNext: Bo Yang
Message 2 of 19 in “The first version of line level log browser”
  1. 00/12 The first version of line level log browserBo Yang, Jun 26, 2010
  2. 01/12 parse-options: stop when encounter a non-optionBo Yang, Jun 26, 2010
  3. 02/12 parse-options: add two helper functionsBo Yang, Jun 26, 2010
  4. Junio C HamanoJun 27, 2010
  5. Bo YangJun 30, 2010
  6. 03/12 add the basic data structure for line level historyBo Yang, Jun 26, 2010
  7. Junio C HamanoJun 27, 2010
  8. Bo YangJun 30, 2010
  9. 04/12 parse the -L optionsBo Yang, Jun 26, 2010
  10. 05/12 export three functions from diff.cBo Yang, Jun 26, 2010
  11. 06/12 add range clone functionsBo Yang, Jun 26, 2010
  12. Junio C HamanoJun 27, 2010
  13. 07/12 map/take range to parentBo Yang, Jun 26, 2010
  14. 08/12 print the line logBo Yang, Jun 26, 2010
  15. Ramkumar RamachandraJun 27, 2010
  16. 09/12 map/print ranges along traversing the history topologicallyBo Yang, Jun 26, 2010
  17. 10/12 add --always-print optionBo Yang, Jun 26, 2010
  18. 11/12 add two test casesBo Yang, Jun 26, 2010
  19. 12/12 some document updateBo Yang, Jun 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.