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

[PATCH 1/2] mailinfo: extract is_from_line from mailsplit

From
EWEric Wong <e@80x24.org>
Date
Jul 24, 2016, 03:15 UTC
Message-ID
<20160724031518.GB32480@starla>
In-Reply-To
<20160724031409.GA32480@starla>

We will be reusing is_from_line for quoting format-patch output in the next commit.

Suggested-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Eric Wong <e@80x24.org>
---
 builtin/mailsplit.c | 32 +-------------------------------
 mailinfo.c          | 31 +++++++++++++++++++++++++++++++
 mailinfo.h          |  1 +
 3 files changed, 33 insertions(+), 31 deletions(-)
diff --git a/builtin/mailsplit.c b/builtin/mailsplit.c
index 3068168..bb8f9c9 100644
--- a/builtin/mailsplit.c
+++ b/builtin/mailsplit.c
@@ -8,41 +8,11 @@
 #include "builtin.h"
 #include "string-list.h"
 #include "strbuf.h"
+#include "mailinfo.h"
 
 static const char git_mailsplit_usage[] =
 "git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [(<mbox>|<Maildir>)...]";
 
-static int is_from_line(const char *line, int len)
-{
-	const char *colon;
-
-	if (len < 20 || memcmp("From ", line, 5))
-		return 0;
-
-	colon = line + len - 2;
-	line += 5;
-	for (;;) {
-		if (colon < line)
-			return 0;
-		if (*--colon == ':')
-			break;
-	}
-
-	if (!isdigit(colon[-4]) ||
-	    !isdigit(colon[-2]) ||
-	    !isdigit(colon[-1]) ||
-	    !isdigit(colon[ 1]) ||
-	    !isdigit(colon[ 2]))
-		return 0;
-
-	/* year */
-	if (strtol(colon+3, NULL, 10) <= 90)
-		return 0;
-
-	/* Ok, close enough */
-	return 1;
-}
-
 static struct strbuf buf = STRBUF_INIT;
 static int keep_cr;
 static int mboxrd;
diff --git a/mailinfo.c b/mailinfo.c
index 9f19ca1..0ebd953 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -1035,3 +1035,34 @@ void clear_mailinfo(struct mailinfo *mi)
 
 	strbuf_release(&mi->log_message);
 }
+
+int is_from_line(const char *line, int len)
+{
+	const char *colon;
+
+	if (len < 20 || memcmp("From ", line, 5))
+		return 0;
+
+	colon = line + len - 2;
+	line += 5;
+	for (;;) {
+		if (colon < line)
+			return 0;
+		if (*--colon == ':')
+			break;
+	}
+
+	if (!isdigit(colon[-4]) ||
+	    !isdigit(colon[-2]) ||
+	    !isdigit(colon[-1]) ||
+	    !isdigit(colon[ 1]) ||
+	    !isdigit(colon[ 2]))
+		return 0;
+
+	/* year */
+	if (strtol(colon+3, NULL, 10) <= 90)
+		return 0;
+
+	/* Ok, close enough */
+	return 1;
+}
diff --git a/mailinfo.h b/mailinfo.h
index 93776a7..c1430a0 100644
--- a/mailinfo.h
+++ b/mailinfo.h
@@ -37,5 +37,6 @@ struct mailinfo {
 extern void setup_mailinfo(struct mailinfo *);
 extern int mailinfo(struct mailinfo *, const char *msg, const char *patch);
 extern void clear_mailinfo(struct mailinfo *);
+int is_from_line(const char *line, int len);
 
 #endif /* MAILINFO_H */
-- 
EW
Previous: Eric WongNext: Andreas Schwab
Message 4 of 17 in “format-patch: escape "From " lines recognized by mailsplit”
  1. format-patch: escape "From " lines recognized by mailsplitEric Wong, Jul 22, 2016
  2. Johannes SchindelinJul 23, 2016
  3. Eric WongJul 24, 2016
  4. 1/2 mailinfo: extract is_from_line from mailsplitEric Wong, Jul 24, 2016
  5. Andreas SchwabJul 24, 2016
  6. Johannes SchindelinJul 24, 2016
  7. Andreas SchwabJul 24, 2016
  8. Junio C HamanoJul 25, 2016
  9. 2/2 format-patch: escape "From " lines recognized by mailsplitEric Wong, Jul 24, 2016
  10. Johannes SchindelinJul 24, 2016
  11. Jeff KingJul 24, 2016
  12. Junio C HamanoJul 24, 2016
  13. Eric WongJul 24, 2016
  14. Junio C HamanoJul 24, 2016
  15. Eric WongJul 25, 2016
  16. Junio C HamanoJul 25, 2016
  17. Eric WongJul 25, 2016

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.