[libvirt] [PATCH 1/2] Add virGetUserDirectoryByUID to retrieve users homedir based on UID.

dwalsh at redhat.com dwalsh at redhat.com
Tue Jul 30 19:55:44 UTC 2013


From: Dan Walsh <dwalsh at redhat.com>

This function is needed for virt-login-shell.  Also modify virGirUserDirectory
to use the new function, to simplify the code.
---
 src/libvirt_private.syms | 1 +
 src/util/virutil.c       | 9 +++++++--
 src/util/virutil.h       | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index d9615ea..201b2cb 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2044,6 +2044,7 @@ virGetUnprivSGIOSysfsPath;
 virGetUserCacheDirectory;
 virGetUserConfigDirectory;
 virGetUserDirectory;
+virGetUserDirectoryByUID;
 virGetUserID;
 virGetUserName;
 virGetUserRuntimeDirectory;
diff --git a/src/util/virutil.c b/src/util/virutil.c
index adcdb3c..99812ca 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -750,13 +750,18 @@ static char *virGetGroupEnt(gid_t gid)
     return ret;
 }
 
-char *virGetUserDirectory(void)
+char *virGetUserDirectoryByUID(uid_t uid)
 {
     char *ret;
-    virGetUserEnt(geteuid(), NULL, NULL, &ret);
+    virGetUserEnt(uid, NULL, NULL, &ret);
     return ret;
 }
 
+char *virGetUserDirectory(void)
+{
+    return virGetUserDirectoryByUID(geteuid());
+}
+
 static char *virGetXDGDirectory(const char *xdgenvname, const char *xdgdefdir)
 {
     const char *path = getenv(xdgenvname);
diff --git a/src/util/virutil.h b/src/util/virutil.h
index 526c610..4b06992 100644
--- a/src/util/virutil.h
+++ b/src/util/virutil.h
@@ -111,6 +111,7 @@ static inline int getgid (void) { return 0; }
 char *virGetHostname(void);
 
 char *virGetUserDirectory(void);
+char *virGetUserDirectoryByUID(uid_t uid);
 char *virGetUserConfigDirectory(void);
 char *virGetUserCacheDirectory(void);
 char *virGetUserRuntimeDirectory(void);
-- 
1.8.3.1




More information about the libvir-list mailing list