about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Fleischer <cgit@cryptocrack.de>2015-03-05 12:58:12 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2015-03-05 15:54:47 +0100
commit3cb8e762780cb4bd8dc9d330d549e36d65ad4335 (patch)
tree0bcfe991b4b50f4df2e98f6b61bfd6a66681d6f1
parentRemove leading newline characters from tag messages (diff)
downloadcgit-pink-3cb8e762780cb4bd8dc9d330d549e36d65ad4335.tar.gz
cgit-pink-3cb8e762780cb4bd8dc9d330d549e36d65ad4335.zip
Drop return value from parse_user()
In commit 936295c (Simplify commit and tag parsing, 2015-03-03), the
commit and tag parsing code was refactored. This broke tag messages in
ui-tag since the line after the tagger header was erroneously skipped.
Rework parse_user() and skip the line manually outside parse_user().

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
-rw-r--r--parsing.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/parsing.c b/parsing.c
index dcaf2b3..f903c7c 100644
--- a/parsing.c
+++ b/parsing.c
@@ -69,13 +69,12 @@ static char *substr(const char *head, const char *tail)
 	return buf;
 }
 
-static const char *parse_user(const char *t, char **name, char **email, unsigned long *date)
+static void parse_user(const char *t, char **name, char **email, unsigned long *date)
 {
-	const char *line_end = strchrnul(t, '\n');
 	struct ident_split ident;
 	unsigned email_len;
 
-	if (!split_ident_line(&ident, t, line_end - t)) {
+	if (!split_ident_line(&ident, t, strchrnul(t, '\n') - t)) {
 		*name = substr(ident.name_begin, ident.name_end);
 
 		email_len = ident.mail_end - ident.mail_begin;
@@ -85,11 +84,6 @@ static const char *parse_user(const char *t, char **name, char **email, unsigned
 		if (ident.date_begin)
 			*date = strtoul(ident.date_begin, NULL, 10);
 	}
-
-	if (*line_end)
-		return line_end + 1;
-	else
-		return line_end;
 }
 
 #ifdef NO_ICONV
@@ -152,13 +146,15 @@ struct commitinfo *cgit_parse_commit(struct commit *commit)
 		p += sha1hex_len + 1;
 
 	if (p && skip_prefix(p, "author ", &p)) {
-		p = parse_user(p, &ret->author, &ret->author_email,
+		parse_user(p, &ret->author, &ret->author_email,
 			&ret->author_date);
+		p = next_header_line(p);
 	}
 
 	if (p && skip_prefix(p, "committer ", &p)) {
-		p = parse_user(p, &ret->committer, &ret->committer_email,
+		parse_user(p, &ret->committer, &ret->committer_email,
 			&ret->committer_date);
+		p = next_header_line(p);
 	}
 
 	if (p && skip_prefix(p, "encoding ", &p)) {
@@ -211,7 +207,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag)
 
 	for (p = data; !end_of_header(p); p = next_header_line(p)) {
 		if (skip_prefix(p, "tagger ", &p)) {
-			p = parse_user(p, &ret->tagger, &ret->tagger_email,
+			parse_user(p, &ret->tagger, &ret->tagger_email,
 				&ret->tagger_date);
 		}
 	}
ass='logmsg'> 2022-02-19Handle errors from editFn, etc.June McEnroe 2022-02-19Reimplement text macrosJune McEnroe 2022-02-19Factor out input handling to input.cJune McEnroe 2022-02-19Factor out window management to window.cJune McEnroe 2022-02-19Enable -Wmissing-prototypesJune McEnroe In other words, warn when a function is missing static. I don't see why this isn't in -Wextra. 2022-02-19Fix edit.[ch] license notice additional permissionsJune McEnroe 2022-02-19Run line editing testsJune McEnroe I know, it feels wrong. 2022-02-18Implement new line editing "library"June McEnroe Losing tab complete and text macros, for now. This new implementation works on an instance of a struct and does not interact with the rest of catgirl, making it possible to copy into another project. Unlike existing line editing libraries, this one is entirely abstract and can be rendered externally. My goal with this library is to be able to implement vi mode. Since it operates on struct instances rather than globals, it might also be possible to give catgirl separate line editing buffers for each window, which would be a nice UX improvement. 2022-02-18Simplify cursor positioning in inputJune McEnroe Do some extra work by adding the portion before the cursor to the input window twice, but simplify the interaction with the split point. This fixes the awkward behaviour when moving the cursor across colour codes where the code would be partially interpreted up to the cursor. 2022-02-18Fix M-f orderingJune McEnroe 2022-02-12Move sandman build to scripts/MakefileJune McEnroe 2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe 2022-02-12Copy RPP defines from oconfigureJune McEnroe