aboutsummaryrefslogtreecommitdiff
path: root/src/os/users.c
diff options
context:
space:
mode:
authorStefan Hoffmann <stefan991@gmail.com>2014-03-06 23:20:29 +0100
committerThiago de Arruda <tpadilha84@gmail.com>2014-03-13 17:18:44 -0300
commitce31410c7953a19421a2f2df2d3e6654601da930 (patch)
treed07b8af604b81c6323ba5dc405fcdd7f9397abf6 /src/os/users.c
parent6fd9f090fc66c3ba38dc07ea6c982c3124735f32 (diff)
downloadrneovim-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/users.c')
-rw-r--r--src/os/users.c29
1 files changed, 29 insertions, 0 deletions
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
+}
+