MCPcopy Create free account
hub / github.com/git/git / format_person_part

Function format_person_part

pretty.c:788–867  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

786}
787
788static size_t format_person_part(struct strbuf *sb, char part,
789 const char *msg, int len,
790 struct date_mode dmode)
791{
792 /* currently all placeholders have same length */
793 const int placeholder_len = 2;
794 struct ident_split s;
795 const char *name, *mail;
796 size_t maillen, namelen;
797
798 if (split_ident_line(&s, msg, len) < 0)
799 goto skip;
800
801 name = s.name_begin;
802 namelen = s.name_end - s.name_begin;
803 mail = s.mail_begin;
804 maillen = s.mail_end - s.mail_begin;
805
806 if (part == 'N' || part == 'E' || part == 'L') /* mailmap lookup */
807 mailmap_name(&mail, &maillen, &name, &namelen);
808 if (part == 'n' || part == 'N') { /* name */
809 strbuf_add(sb, name, namelen);
810 return placeholder_len;
811 }
812 if (part == 'e' || part == 'E') { /* email */
813 strbuf_add(sb, mail, maillen);
814 return placeholder_len;
815 }
816 if (part == 'l' || part == 'L') { /* local-part */
817 const char *at = memchr(mail, '@', maillen);
818 if (at)
819 maillen = at - mail;
820 strbuf_add(sb, mail, maillen);
821 return placeholder_len;
822 }
823
824 if (!s.date_begin)
825 goto skip;
826
827 if (part == 't') { /* date, UNIX timestamp */
828 strbuf_add(sb, s.date_begin, s.date_end - s.date_begin);
829 return placeholder_len;
830 }
831
832 switch (part) {
833 case 'd': /* date */
834 strbuf_addstr(sb, show_ident_date(&s, dmode));
835 return placeholder_len;
836 case 'D': /* date, RFC2822 style */
837 strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(RFC2822)));
838 return placeholder_len;
839 case 'r': /* date, relative */
840 strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(RELATIVE)));
841 return placeholder_len;
842 case 'i': /* date, ISO 8601-like */
843 strbuf_addstr(sb, show_ident_date(&s, DATE_MODE(ISO8601)));
844 return placeholder_len;
845 case 'I': /* date, ISO 8601 strict */

Callers 2

format_reflog_personFunction · 0.85
format_commit_oneFunction · 0.85

Calls 5

split_ident_lineFunction · 0.85
mailmap_nameFunction · 0.85
strbuf_addFunction · 0.85
strbuf_addstrFunction · 0.85
show_ident_dateFunction · 0.85

Tested by

no test coverage detected