Browse Source

Make mailsplit and mailinfo strip whitespace from the start of the input

Signed-off-by: Simon Sasburg <Simon.Sasburg@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Simon Sasburg 17 years ago committed by Junio C Hamano
parent
commit
f88a545a94
  1. 6
      builtin-mailinfo.c
  2. 6
      builtin-mailsplit.c
  3. 3
      t/t5100/sample.mbox

6
builtin-mailinfo.c

@ -915,6 +915,7 @@ static void handle_info(void) @@ -915,6 +915,7 @@ static void handle_info(void)
static int mailinfo(FILE *in, FILE *out, int ks, const char *encoding,
const char *msg, const char *patch)
{
int peek;
keep_subject = ks;
metainfo_charset = encoding;
fin = in;
@ -935,6 +936,11 @@ static int mailinfo(FILE *in, FILE *out, int ks, const char *encoding, @@ -935,6 +936,11 @@ static int mailinfo(FILE *in, FILE *out, int ks, const char *encoding,
p_hdr_data = xcalloc(MAX_HDR_PARSED, sizeof(char *));
s_hdr_data = xcalloc(MAX_HDR_PARSED, sizeof(char *));

do {
peek = fgetc(in);
} while (isspace(peek));
ungetc(peek, in);

/* process the email header */
while (read_one_header_line(line, sizeof(line), fin))
check_header(line, sizeof(line), p_hdr_data, 1);

6
builtin-mailsplit.c

@ -164,6 +164,7 @@ static int split_mbox(const char *file, const char *dir, int allow_bare, @@ -164,6 +164,7 @@ static int split_mbox(const char *file, const char *dir, int allow_bare,
{
char name[PATH_MAX];
int ret = -1;
int peek;

FILE *f = !strcmp(file, "-") ? stdin : fopen(file, "r");
int file_done = 0;
@ -173,6 +174,11 @@ static int split_mbox(const char *file, const char *dir, int allow_bare, @@ -173,6 +174,11 @@ static int split_mbox(const char *file, const char *dir, int allow_bare,
goto out;
}

do {
peek = fgetc(f);
} while (isspace(peek));
ungetc(peek, f);

if (fgets(buf, sizeof(buf), f) == NULL) {
/* empty stdin is OK */
if (f != stdin) {

3
t/t5100/sample.mbox

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Date: Fri, 9 Jun 2006 00:44:16 -0700

Loading…
Cancel
Save