From 08d7ab195fd4a9807a1cd69ea01591dfa30afd3c Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 13 Oct 2015 10:36:52 +0000 Subject: [PATCH] mingw: use domain information for default email When a user is registered in a Windows domain, it is really easy to obtain the email address. So let's do that. Suggested by Lutz Roeder. Signed-off-by: Johannes Schindelin --- compat/mingw.c | 5 +++++ compat/mingw.h | 2 ++ git-compat-util.h | 4 ++++ ident.c | 4 +++- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/compat/mingw.c b/compat/mingw.c index 3510ed378f..07e8a09bfa 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1856,6 +1856,11 @@ static char *get_extended_user_info(enum EXTENDED_NAME_FORMAT type) return NULL; } +char *mingw_query_user_email(void) +{ + return get_extended_user_info(NameUserPrincipal); +} + struct passwd *getpwuid(int uid) { static unsigned initialized; diff --git a/compat/mingw.h b/compat/mingw.h index f8a2969658..48d2e9e574 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -422,6 +422,8 @@ int mingw_offset_1st_component(const char *path); #define PATH_SEP ';' extern const char *program_data_config(void); #define git_program_data_config program_data_config +extern char *mingw_query_user_email(void); +#define query_user_email mingw_query_user_email #ifndef __MINGW64_VERSION_MAJOR #define PRIuMAX "I64u" #define PRId64 "I64d" diff --git a/git-compat-util.h b/git-compat-util.h index 0deb1c4c33..f50c5e824a 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -379,6 +379,10 @@ static inline char *git_find_last_dir_sep(const char *path) #define git_program_data_config() NULL #endif +#ifndef query_user_email +#define query_user_email() NULL +#endif + #if defined(__HP_cc) && (__HP_cc >= 61000) #define NORETURN __attribute__((noreturn)) #define NORETURN_PTR diff --git a/ident.c b/ident.c index daf7e1ea83..2400263a7c 100644 --- a/ident.c +++ b/ident.c @@ -168,7 +168,9 @@ const char *ident_default_email(void) strbuf_addstr(&git_default_email, email); committer_ident_explicitly_given |= IDENT_MAIL_GIVEN; author_ident_explicitly_given |= IDENT_MAIL_GIVEN; - } else + } else if ((email = query_user_email()) && email[0]) + strbuf_addstr(&git_default_email, email); + else copy_email(xgetpwuid_self(&default_email_is_bogus), &git_default_email, &default_email_is_bogus); strbuf_trim(&git_default_email);