diff options
| author | Stefan Hoffmann <stefan991@gmail.com> | 2014-03-06 23:20:29 +0100 |
|---|---|---|
| committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-03-13 17:18:44 -0300 |
| commit | ce31410c7953a19421a2f2df2d3e6654601da930 (patch) | |
| tree | d07b8af604b81c6323ba5dc405fcdd7f9397abf6 /src/os | |
| parent | 6fd9f090fc66c3ba38dc07ea6c982c3124735f32 (diff) | |
| download | rneovim-ce31410c7953a19421a2f2df2d3e6654601da930.tar.gz rneovim-ce31410c7953a19421a2f2df2d3e6654601da930.tar.bz2 rneovim-ce31410c7953a19421a2f2df2d3e6654601da930.zip | |
moved mch_get_user_name() and mch_get_uname() into os/users.c
Diffstat (limited to 'src/os')
| -rw-r--r-- | src/os/os.h | 2 | ||||
| -rw-r--r-- | src/os/users.c | 29 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/os/os.h b/src/os/os.h index 87323fb025..d94f8bdc57 100644 --- a/src/os/os.h +++ b/src/os/os.h @@ -14,5 +14,7 @@ const char *mch_getenv(const char *name); int mch_setenv(const char *name, const char *value, int overwrite); char *mch_getenvname_at_index(size_t index); int mch_get_usernames(garray_T *usernames); +int mch_get_user_name(char *s, size_t len); +int mch_get_uname(uid_t uid, char *s, size_t len); #endif diff --git a/src/os/users.c b/src/os/users.c index b392118f1b..fa8971be61 100644 --- a/src/os/users.c +++ b/src/os/users.c @@ -55,3 +55,32 @@ int mch_get_usernames(garray_T *users) return OK; } +/* + * Insert user name in s[len]. + * Return OK if a name found. + */ +int mch_get_user_name(char *s, size_t len) +{ + return mch_get_uname(getuid(), s, len); +} + +/* + * Insert user name for "uid" in s[len]. + * Return OK if a name found. + * If the name is not found, write the uid into s[len] and return FAIL. + */ +int mch_get_uname(uid_t uid, char *s, size_t len) +{ +#if defined(HAVE_PWD_H) && defined(HAVE_GETPWUID) + struct passwd *pw; + + if ((pw = getpwuid(uid)) != NULL + && pw->pw_name != NULL && *(pw->pw_name) != NUL) { + vim_strncpy((char_u *)s, (char_u *)pw->pw_name, len - 1); + return OK; + } +#endif + snprintf(s, len, "%d", (int)uid); + return FAIL; // a number is not a name +} + |