From: Eric Wong <e@80x24.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Eric Sunshine <sunshine@sunshineco.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: [PATCH 1/2] mailinfo: extract is_from_line from mailsplit
Date: Sun, 24 Jul 2016 03:15:18 +0000 [thread overview]
Message-ID: <20160724031518.GB32480@starla> (raw)
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
next prev parent reply other threads:[~2016-07-24 3:15 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-22 22:47 [PATCH] format-patch: escape "From " lines recognized by mailsplit Eric Wong
2016-07-23 8:59 ` Johannes Schindelin
2016-07-24 3:14 ` Eric Wong
2016-07-24 3:15 ` Eric Wong [this message]
2016-07-24 7:37 ` [PATCH 1/2] mailinfo: extract is_from_line from mailsplit Andreas Schwab
2016-07-24 8:05 ` Johannes Schindelin
2016-07-24 8:13 ` Andreas Schwab
2016-07-25 18:03 ` Junio C Hamano
2016-07-24 3:15 ` [PATCH 2/2] format-patch: escape "From " lines recognized by mailsplit Eric Wong
2016-07-24 7:37 ` Johannes Schindelin
2016-07-24 15:30 ` Jeff King
2016-07-24 7:11 ` [PATCH] " Junio C Hamano
2016-07-24 10:58 ` Eric Wong
2016-07-24 15:51 ` Junio C Hamano
2016-07-25 8:43 ` Eric Wong
2016-07-25 17:33 ` Junio C Hamano
2016-07-25 20:49 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160724031518.GB32480@starla \
--to=e@80x24.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.