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 <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2018-10-15 02:47:08 -07:00 committed by Junio C Hamano
parent 564be791f3
commit 501afcb8b0
4 changed files with 14 additions and 0 deletions

View File

@ -1796,6 +1796,11 @@ static char *get_extended_user_info(enum EXTENDED_NAME_FORMAT type)
return NULL; return NULL;
} }
char *mingw_query_user_email(void)
{
return get_extended_user_info(NameUserPrincipal);
}
struct passwd *getpwuid(int uid) struct passwd *getpwuid(int uid)
{ {
static unsigned initialized; static unsigned initialized;

View File

@ -424,6 +424,8 @@ static inline void convert_slashes(char *path)
int mingw_offset_1st_component(const char *path); int mingw_offset_1st_component(const char *path);
#define offset_1st_component mingw_offset_1st_component #define offset_1st_component mingw_offset_1st_component
#define PATH_SEP ';' #define PATH_SEP ';'
extern char *mingw_query_user_email(void);
#define query_user_email mingw_query_user_email
#if !defined(__MINGW64_VERSION_MAJOR) && (!defined(_MSC_VER) || _MSC_VER < 1800) #if !defined(__MINGW64_VERSION_MAJOR) && (!defined(_MSC_VER) || _MSC_VER < 1800)
#define PRIuMAX "I64u" #define PRIuMAX "I64u"
#define PRId64 "I64d" #define PRId64 "I64d"

View File

@ -382,6 +382,10 @@ static inline char *git_find_last_dir_sep(const char *path)
#define find_last_dir_sep git_find_last_dir_sep #define find_last_dir_sep git_find_last_dir_sep
#endif #endif
#ifndef query_user_email
#define query_user_email() NULL
#endif
#if defined(__HP_cc) && (__HP_cc >= 61000) #if defined(__HP_cc) && (__HP_cc >= 61000)
#define NORETURN __attribute__((noreturn)) #define NORETURN __attribute__((noreturn))
#define NORETURN_PTR #define NORETURN_PTR

View File

@ -168,6 +168,9 @@ const char *ident_default_email(void)
strbuf_addstr(&git_default_email, email); strbuf_addstr(&git_default_email, email);
committer_ident_explicitly_given |= IDENT_MAIL_GIVEN; committer_ident_explicitly_given |= IDENT_MAIL_GIVEN;
author_ident_explicitly_given |= IDENT_MAIL_GIVEN; author_ident_explicitly_given |= IDENT_MAIL_GIVEN;
} else if ((email = query_user_email()) && email[0]) {
strbuf_addstr(&git_default_email, email);
free((char *)email);
} else } else
copy_email(xgetpwuid_self(&default_email_is_bogus), copy_email(xgetpwuid_self(&default_email_is_bogus),
&git_default_email, &default_email_is_bogus); &git_default_email, &default_email_is_bogus);