mailinfo: move check_header() after the helpers it uses
This way, we can lose a forward decl for decode_header(). Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
Oct 14, 2015 at 17:44 UTC
4f0f9d46c72f049c80c7cec0f321429ac2e49d11
1 file changed
+67
-68
builtin/mailinfo.c
+67
-68
@@ -284,7 +284,6 @@ static void cleanup_space(struct strbuf *sb)
284
}
285
}
286
287
-static void decode_header(struct strbuf *line);
287
static const char *header[MAX_HDR_PARSED] = {
288
"From","Subject","Date",
289
};
@@ -312,73 +311,6 @@ static int is_format_patch_separator(const char *line, int len)
311
return !memcmp(SAMPLE + (cp - line), cp, strlen(SAMPLE) - (cp - line));
312
}
313
315
-static int check_header(const struct strbuf *line,
316
- struct strbuf *hdr_data[], int overwrite)
317
-{
318
- int i, ret = 0, len;
319
- struct strbuf sb = STRBUF_INIT;
320
- /* search for the interesting parts */
321
- for (i = 0; header[i]; i++) {
322
- int len = strlen(header[i]);
323
- if ((!hdr_data[i] || overwrite) && cmp_header(line, header[i])) {
324
- /* Unwrap inline B and Q encoding, and optionally
325
- * normalize the meta information to utf8.
326
- */
327
- strbuf_add(&sb, line->buf + len + 2, line->len - len - 2);
328
- decode_header(&sb);
329
- handle_header(&hdr_data[i], &sb);
330
- ret = 1;
331
- goto check_header_out;
332
- }
333
- }
334
-
335
- /* Content stuff */
336
- if (cmp_header(line, "Content-Type")) {
337
- len = strlen("Content-Type: ");
338
- strbuf_add(&sb, line->buf + len, line->len - len);
339
- decode_header(&sb);
340
- strbuf_insert(&sb, 0, "Content-Type: ", len);
341
- handle_content_type(&sb);
342
- ret = 1;
343
- goto check_header_out;
344
- }
345
- if (cmp_header(line, "Content-Transfer-Encoding")) {
346
- len = strlen("Content-Transfer-Encoding: ");
347
- strbuf_add(&sb, line->buf + len, line->len - len);
348
- decode_header(&sb);
349
- handle_content_transfer_encoding(&sb);
350
- ret = 1;
351
- goto check_header_out;
352
- }
353
- if (cmp_header(line, "Message-Id")) {
354
- len = strlen("Message-Id: ");
355
- strbuf_add(&sb, line->buf + len, line->len - len);
356
- decode_header(&sb);
357
- handle_message_id(&sb);
358
- ret = 1;
359
- goto check_header_out;
360
- }
361
-
362
- /* for inbody stuff */
363
- if (starts_with(line->buf, ">From") && isspace(line->buf[5])) {
364
- ret = is_format_patch_separator(line->buf + 1, line->len - 1);
365
- goto check_header_out;
366
- }
367
- if (starts_with(line->buf, "[PATCH]") && isspace(line->buf[7])) {
368
- for (i = 0; header[i]; i++) {
369
- if (!strcmp("Subject", header[i])) {
370
- handle_header(&hdr_data[i], line);
371
- ret = 1;
372
- goto check_header_out;
373
- }
374
- }
375
- }
376
-
377
-check_header_out:
378
- strbuf_release(&sb);
379
- return ret;
380
-}
381
-
314
static struct strbuf *decode_q_segment(const struct strbuf *q_seg, int rfc2047)
315
{
316
const char *in = q_seg->buf;
@@ -539,6 +471,73 @@ release_return:
471
strbuf_release(&piecebuf);
472
}
473
474
+static int check_header(const struct strbuf *line,
475
+ struct strbuf *hdr_data[], int overwrite)
476
+{
477
+ int i, ret = 0, len;
478
+ struct strbuf sb = STRBUF_INIT;
479
+ /* search for the interesting parts */
480
+ for (i = 0; header[i]; i++) {
481
+ int len = strlen(header[i]);
482
+ if ((!hdr_data[i] || overwrite) && cmp_header(line, header[i])) {
483
+ /* Unwrap inline B and Q encoding, and optionally
484
+ * normalize the meta information to utf8.
485
+ */
486
+ strbuf_add(&sb, line->buf + len + 2, line->len - len - 2);
487
+ decode_header(&sb);
488
+ handle_header(&hdr_data[i], &sb);
489
+ ret = 1;
490
+ goto check_header_out;
491
+ }
492
+ }
493
+
494
+ /* Content stuff */
495
+ if (cmp_header(line, "Content-Type")) {
496
+ len = strlen("Content-Type: ");
497
+ strbuf_add(&sb, line->buf + len, line->len - len);
498
+ decode_header(&sb);
499
+ strbuf_insert(&sb, 0, "Content-Type: ", len);
500
+ handle_content_type(&sb);
501
+ ret = 1;
502
+ goto check_header_out;
503
+ }
504
+ if (cmp_header(line, "Content-Transfer-Encoding")) {
505
+ len = strlen("Content-Transfer-Encoding: ");
506
+ strbuf_add(&sb, line->buf + len, line->len - len);
507
+ decode_header(&sb);
508
+ handle_content_transfer_encoding(&sb);
509
+ ret = 1;
510
+ goto check_header_out;
511
+ }
512
+ if (cmp_header(line, "Message-Id")) {
513
+ len = strlen("Message-Id: ");
514
+ strbuf_add(&sb, line->buf + len, line->len - len);
515
+ decode_header(&sb);
516
+ handle_message_id(&sb);
517
+ ret = 1;
518
+ goto check_header_out;
519
+ }
520
+
521
+ /* for inbody stuff */
522
+ if (starts_with(line->buf, ">From") && isspace(line->buf[5])) {
523
+ ret = is_format_patch_separator(line->buf + 1, line->len - 1);
524
+ goto check_header_out;
525
+ }
526
+ if (starts_with(line->buf, "[PATCH]") && isspace(line->buf[7])) {
527
+ for (i = 0; header[i]; i++) {
528
+ if (!strcmp("Subject", header[i])) {
529
+ handle_header(&hdr_data[i], line);
530
+ ret = 1;
531
+ goto check_header_out;
532
+ }
533
+ }
534
+ }
535
+
536
+check_header_out:
537
+ strbuf_release(&sb);
538
+ return ret;
539
+}
540
+
541
static void decode_transfer_encoding(struct strbuf *line)
542
{
543
struct strbuf *ret;