Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
mailinfo: ignore blanks after in-body headers.
author
Junio C Hamano
<junkio@cox.net>
Sat, 17 Jun 2006 23:58:51 +0000
(16:58 -0700)
committer
Junio C Hamano
<junkio@cox.net>
Sun, 18 Jun 2006 00:05:36 +0000
(17:05 -0700)
[jc: this is based on Eric's patch but also fixes up the parsed
subject headers].
Signed-off-by: Junio C Hamano <junkio@cox.net>
mailinfo.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
2662dbf
)
diff --git
a/mailinfo.c
b/mailinfo.c
index 0ccd490082455590f11e44cda5ce199dd56b9ed9..d9b74f30de32194a34e234314a8d28063344f9a1 100644
(file)
--- a/
mailinfo.c
+++ b/
mailinfo.c
@@
-243,11
+243,20
@@
static int eatspace(char *line)
#define SEEN_BOGUS_UNIX_FROM 010
#define SEEN_PREFIX 020
#define SEEN_BOGUS_UNIX_FROM 010
#define SEEN_PREFIX 020
-/* First lines of body can have From:, Date:, and Subject: */
+/* First lines of body can have From:, Date:, and Subject:
or empty
*/
static void handle_inbody_header(int *seen, char *line)
{
if (*seen & SEEN_PREFIX)
return;
static void handle_inbody_header(int *seen, char *line)
{
if (*seen & SEEN_PREFIX)
return;
+ if (isspace(*line)) {
+ char *cp;
+ for (cp = line + 1; *cp; cp++) {
+ if (!isspace(*cp))
+ break;
+ }
+ if (!*cp)
+ return;
+ }
if (!memcmp(">From", line, 5) && isspace(line[5])) {
if (!(*seen & SEEN_BOGUS_UNIX_FROM)) {
*seen |= SEEN_BOGUS_UNIX_FROM;
if (!memcmp(">From", line, 5) && isspace(line[5])) {
if (!(*seen & SEEN_BOGUS_UNIX_FROM)) {
*seen |= SEEN_BOGUS_UNIX_FROM;
@@
-316,6
+325,7
@@
static char *cleanup_subject(char *subject)
}
break;
}
}
break;
}
+ eatspace(subject);
return subject;
}
}
return subject;
}
}
@@
-422,9
+432,7
@@
static int read_one_header_line(char *line, int sz, FILE *in)
if (fgets(line + ofs, sz - ofs, in) == NULL)
break;
len = eatspace(line + ofs);
if (fgets(line + ofs, sz - ofs, in) == NULL)
break;
len = eatspace(line + ofs);
- if (len == 0)
- break;
- if (!is_rfc2822_header(line)) {
+ if ((len == 0) || !is_rfc2822_header(line)) {
/* Re-add the newline */
line[ofs + len] = '\n';
line[ofs + len + 1] = '\0';
/* Re-add the newline */
line[ofs + len] = '\n';
line[ofs + len + 1] = '\0';
@@
-764,10
+772,8
@@
static void handle_body(void)
{
int seen = 0;
{
int seen = 0;
- if (line[0] || fgets(line, sizeof(line), stdin) != NULL) {
- handle_commit_msg(&seen);
- handle_patch();
- }
+ handle_commit_msg(&seen);
+ handle_patch();
fclose(patchfile);
if (!patch_lines) {
fprintf(stderr, "No patch found\n");
fclose(patchfile);
if (!patch_lines) {
fprintf(stderr, "No patch found\n");