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

[PATCH 2/3] sequencer: factor out todo command name parsing

From
PGPhillip Wood via GitGitGadget <gitgitgadget@gmail.com>
Date
Jun 25, 2019, 10:11 UTC
Message-ID
<ebe8a2b3a1638e8457b1b703b8c4890a9b8904a0.1561457483.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.275.git.gitgitgadget@gmail.com>
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Factor out the code that parses the name of the command at the start of each line in the todo file into it's own function so that it can be used in the next commit.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
 sequencer.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/sequencer.c b/sequencer.c
index 919e3153f5..793f86bf9a 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2076,6 +2076,18 @@ const char *todo_item_get_arg(struct todo_list *todo_list,
 	return todo_list->buf.buf + item->arg_offset;
 }
 
+static int is_command(enum todo_command command, const char **bol)
+{
+	const char *str = todo_command_info[command].str;
+	const char nick = todo_command_info[command].c;
+	const char *p = *bol + 1;
+
+	return skip_prefix(*bol, str, bol) ||
+		((nick && **bol == nick) &&
+		 (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r' || !*p) &&
+		 (*bol = p));
+}
+
 static int parse_insn_line(struct repository *r, struct todo_item *item,
 			   const char *buf, const char *bol, char *eol)
 {
@@ -2097,12 +2109,7 @@ static int parse_insn_line(struct repository *r, struct todo_item *item,
 	}
 
 	for (i = 0; i < TODO_COMMENT; i++)
-		if (skip_prefix(bol, todo_command_info[i].str, &bol)) {
-			item->command = i;
-			break;
-		} else if ((bol + 1 == eol || bol[1] == ' ' || bol[1] == '\t') &&
-			   *bol == todo_command_info[i].c) {
-			bol++;
+		if (is_command(i, &bol)) {
 			item->command = i;
 			break;
 		}
-- 
gitgitgadget
Previous: Phillip Wood via GitGitGadgetNext: René Scharfe
Message 3 of 17 in “Wip/quieter sequencer status parsing”
  1. 0/3 Wip/quieter sequencer status parsingPhillip Wood via GitGitGadget, Jun 25, 2019
  2. 1/3 sequencer: always allow tab after command namePhillip Wood via GitGitGadget, Jun 25, 2019
  3. 2/3 sequencer: factor out todo command name parsingPhillip Wood via GitGitGadget, Jun 25, 2019
  4. René ScharfeJun 25, 2019
  5. Phillip WoodJun 25, 2019
  6. 3/3 status: do not report errors in sequencer/todoPhillip Wood via GitGitGadget, Jun 25, 2019
  7. Johannes SchindelinJun 25, 2019
  8. Junio C HamanoJun 25, 2019
  9. Phillip WoodJun 26, 2019
  10. Phillip WoodJul 1, 2019
  11. Phillip WoodJun 25, 2019
  12. 0/3 Quieter sequencer status parsingPhillip Wood via GitGitGadget, Jun 27, 2019
  13. 1/3 sequencer: always allow tab after command namePhillip Wood via GitGitGadget, Jun 27, 2019
  14. Junio C HamanoJun 27, 2019
  15. 2/3 sequencer: factor out todo command name parsingPhillip Wood via GitGitGadget, Jun 27, 2019
  16. Junio C HamanoJun 27, 2019
  17. 3/3 status: do not report errors in sequencer/todoPhillip Wood via GitGitGadget, Jun 27, 2019

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.