| #ifndef IDENT_H |
| #define IDENT_H |
| |
| #include "string-list.h" |
| |
| struct ident_split { |
| const char *name_begin; |
| const char *name_end; |
| const char *mail_begin; |
| const char *mail_end; |
| const char *date_begin; |
| const char *date_end; |
| const char *tz_begin; |
| const char *tz_end; |
| }; |
| |
| #define IDENT_STRICT 1 |
| #define IDENT_NO_DATE 2 |
| #define IDENT_NO_NAME 4 |
| |
| enum want_ident { |
| WANT_BLANK_IDENT, |
| WANT_AUTHOR_IDENT, |
| WANT_COMMITTER_IDENT |
| }; |
| |
| const char *ident_default_name(void); |
| const char *ident_default_email(void); |
| /* |
| * Prepare an ident to fall back on if the user didn't configure it. |
| */ |
| void prepare_fallback_ident(const char *name, const char *email); |
| void reset_ident_date(void); |
| /* |
| * Signals an success with 0, but time part of the result may be NULL |
| * if the input lacks timestamp and zone |
| */ |
| int split_ident_line(struct ident_split *, const char *, int); |
| |
| /* |
| * Given a commit or tag object buffer and the commit or tag headers, replaces |
| * the idents in the headers with their canonical versions using the mailmap mechanism. |
| */ |
| void apply_mailmap_to_header(struct strbuf *, const char **, struct string_list *); |
| |
| /* |
| * Compare split idents for equality or strict ordering. Note that we |
| * compare only the ident part of the line, ignoring any timestamp. |
| * |
| * Because there are two fields, we must choose one as the primary key; we |
| * currently arbitrarily pick the email. |
| */ |
| int ident_cmp(const struct ident_split *, const struct ident_split *); |
| |
| const char *git_author_info(int); |
| const char *git_committer_info(int); |
| const char *fmt_ident(const char *name, const char *email, |
| enum want_ident whose_ident, |
| const char *date_str, int); |
| const char *fmt_name(enum want_ident); |
| |
| int committer_ident_sufficiently_given(void); |
| int author_ident_sufficiently_given(void); |
| |
| struct config_context; |
| int git_ident_config(const char *, const char *, const struct config_context *, |
| void *); |
| |
| #endif |