X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Futilities.cc;h=98dc090f9199fdffdec52e402c7f1d0917888577;hb=56b81ea7962e678deadcdf12387e68726d0fa262;hp=e73cee02103a432739afabc3e55bb1ea27842d76;hpb=96f6656551860c40c746c1946a4e4cb131e1f4a4;p=platform%2Fupstream%2Fglog.git diff --git a/src/utilities.cc b/src/utilities.cc index e73cee0..98dc090 100644 --- a/src/utilities.cc +++ b/src/utilities.cc @@ -47,6 +47,12 @@ #ifdef HAVE_SYSLOG_H # include #endif +#ifdef HAVE_UNISTD_H +# include // For geteuid. +#endif +#ifdef HAVE_PWD_H +# include +#endif #include "base/googleinit.h" @@ -268,7 +274,7 @@ pid_t GetTID() { // If gettid() could not be used, we use one of the following. #if defined OS_LINUX return getpid(); // Linux: getpid returns thread ID when gettid is absent -#elif defined OS_WINDOWS || defined OS_CYGWIN +#elif defined OS_WINDOWS && !defined OS_CYGWIN return GetCurrentThreadId(); #else // If none of the techniques above worked, we use pthread_self(). @@ -299,8 +305,24 @@ static void MyUserNameInitializer() { if (user != NULL) { g_my_user_name = user; } else { - g_my_user_name = "invalid-user"; +#if defined(HAVE_PWD_H) && defined(HAVE_UNISTD_H) + struct passwd pwd; + struct passwd* result = NULL; + char buffer[1024] = {'\0'}; + uid_t uid = geteuid(); + int pwuid_res = getpwuid_r(uid, &pwd, buffer, sizeof(buffer), &result); + if (pwuid_res == 0) { + g_my_user_name = pwd.pw_name; + } else { + snprintf(buffer, sizeof(buffer), "uid%d", uid); + g_my_user_name = buffer; + } +#endif + if (g_my_user_name.empty()) { + g_my_user_name = "invalid-user"; + } } + } REGISTER_MODULE_INITIALIZER(utilities, MyUserNameInitializer());