@@ -393,6 +393,19 @@ static void add_rfc2047(struct strbuf *sb, const char *line, size_t len,
393
393
strbuf_addstr (sb , "?=" );
394
394
}
395
395
396
+ static const char * show_ident_date (const struct ident_split * ident ,
397
+ enum date_mode mode )
398
+ {
399
+ unsigned long date = 0 ;
400
+ int tz = 0 ;
401
+
402
+ if (ident -> date_begin && ident -> date_end )
403
+ date = strtoul (ident -> date_begin , NULL , 10 );
404
+ if (ident -> tz_begin && ident -> tz_end )
405
+ tz = strtol (ident -> tz_begin , NULL , 10 );
406
+ return show_date (date , tz , mode );
407
+ }
408
+
396
409
void pp_user_info (const struct pretty_print_context * pp ,
397
410
const char * what , struct strbuf * sb ,
398
411
const char * line , const char * encoding )
@@ -401,12 +414,10 @@ void pp_user_info(const struct pretty_print_context *pp,
401
414
struct strbuf mail ;
402
415
struct ident_split ident ;
403
416
int linelen ;
404
- char * line_end , * date ;
417
+ char * line_end ;
405
418
const char * mailbuf , * namebuf ;
406
419
size_t namelen , maillen ;
407
420
int max_length = 78 ; /* per rfc2822 */
408
- unsigned long time ;
409
- int tz ;
410
421
411
422
if (pp -> fmt == CMIT_FMT_ONELINE )
412
423
return ;
@@ -438,8 +449,6 @@ void pp_user_info(const struct pretty_print_context *pp,
438
449
strbuf_add (& name , namebuf , namelen );
439
450
440
451
namelen = name .len + mail .len + 3 ; /* ' ' + '<' + '>' */
441
- time = strtoul (ident .date_begin , & date , 10 );
442
- tz = strtol (date , NULL , 10 );
443
452
444
453
if (pp -> fmt == CMIT_FMT_EMAIL ) {
445
454
strbuf_addstr (sb , "From: " );
@@ -472,13 +481,16 @@ void pp_user_info(const struct pretty_print_context *pp,
472
481
473
482
switch (pp -> fmt ) {
474
483
case CMIT_FMT_MEDIUM :
475
- strbuf_addf (sb , "Date: %s\n" , show_date (time , tz , pp -> date_mode ));
484
+ strbuf_addf (sb , "Date: %s\n" ,
485
+ show_ident_date (& ident , pp -> date_mode ));
476
486
break ;
477
487
case CMIT_FMT_EMAIL :
478
- strbuf_addf (sb , "Date: %s\n" , show_date (time , tz , DATE_RFC2822 ));
488
+ strbuf_addf (sb , "Date: %s\n" ,
489
+ show_ident_date (& ident , DATE_RFC2822 ));
479
490
break ;
480
491
case CMIT_FMT_FULLER :
481
- strbuf_addf (sb , "%sDate: %s\n" , what , show_date (time , tz , pp -> date_mode ));
492
+ strbuf_addf (sb , "%sDate: %s\n" , what ,
493
+ show_ident_date (& ident , pp -> date_mode ));
482
494
break ;
483
495
default :
484
496
/* notin' */
@@ -688,8 +700,6 @@ static size_t format_person_part(struct strbuf *sb, char part,
688
700
{
689
701
/* currently all placeholders have same length */
690
702
const int placeholder_len = 2 ;
691
- int tz ;
692
- unsigned long date = 0 ;
693
703
struct ident_split s ;
694
704
const char * name , * mail ;
695
705
size_t maillen , namelen ;
@@ -716,30 +726,23 @@ static size_t format_person_part(struct strbuf *sb, char part,
716
726
if (!s .date_begin )
717
727
goto skip ;
718
728
719
- date = strtoul (s .date_begin , NULL , 10 );
720
-
721
729
if (part == 't' ) { /* date, UNIX timestamp */
722
730
strbuf_add (sb , s .date_begin , s .date_end - s .date_begin );
723
731
return placeholder_len ;
724
732
}
725
733
726
- /* parse tz */
727
- tz = strtoul (s .tz_begin + 1 , NULL , 10 );
728
- if (* s .tz_begin == '-' )
729
- tz = - tz ;
730
-
731
734
switch (part ) {
732
735
case 'd' : /* date */
733
- strbuf_addstr (sb , show_date ( date , tz , dmode ));
736
+ strbuf_addstr (sb , show_ident_date ( & s , dmode ));
734
737
return placeholder_len ;
735
738
case 'D' : /* date, RFC2822 style */
736
- strbuf_addstr (sb , show_date ( date , tz , DATE_RFC2822 ));
739
+ strbuf_addstr (sb , show_ident_date ( & s , DATE_RFC2822 ));
737
740
return placeholder_len ;
738
741
case 'r' : /* date, relative */
739
- strbuf_addstr (sb , show_date ( date , tz , DATE_RELATIVE ));
742
+ strbuf_addstr (sb , show_ident_date ( & s , DATE_RELATIVE ));
740
743
return placeholder_len ;
741
744
case 'i' : /* date, ISO 8601 */
742
- strbuf_addstr (sb , show_date ( date , tz , DATE_ISO8601 ));
745
+ strbuf_addstr (sb , show_ident_date ( & s , DATE_ISO8601 ));
743
746
return placeholder_len ;
744
747
}
745
748
0 commit comments