aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.h2
-rw-r--r--lib/xwrap.c14
-rw-r--r--toys/posix/id.c14
3 files changed, 16 insertions, 14 deletions
diff --git a/lib/lib.h b/lib/lib.h
index a0a1c316..e5d4a1d3 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -111,6 +111,8 @@ char *xrealpath(char *path);
void xchdir(char *path);
void xmkpath(char *path, int mode);
void xsetuid(uid_t uid);
+struct passwd *xgetpwuid(uid_t uid);
+struct group *xgetgrgid(gid_t gid);
char *xreadlink(char *name);
long xparsetime(char *arg, long units, long *fraction);
void xpidfile(char *name);
diff --git a/lib/xwrap.c b/lib/xwrap.c
index 98b4300e..71ea9209 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -399,6 +399,20 @@ void xsetuid(uid_t uid)
if (setuid(uid)) perror_exit("xsetuid");
}
+struct passwd *xgetpwuid(uid_t uid)
+{
+ struct passwd *pwd = getpwuid(uid);
+ if (!pwd) error_exit(NULL);
+ return pwd;
+}
+
+struct group *xgetgrgid(gid_t gid)
+{
+ struct group *group = getgrgid(gid);
+ if (!group) error_exit(NULL);
+ return group;
+}
+
// This can return null (meaning file not found). It just won't return null
// for memory allocation reasons.
char *xreadlink(char *name)
diff --git a/toys/posix/id.c b/toys/posix/id.c
index dbcf9a15..f40f6c1b 100644
--- a/toys/posix/id.c
+++ b/toys/posix/id.c
@@ -52,20 +52,6 @@ static void showid(char *header, unsigned u, char *s)
printf("%s%u(%s)", header, u, s);
}
-struct passwd *xgetpwuid(uid_t uid)
-{
- struct passwd *pwd = getpwuid(uid);
- if (!pwd) error_exit(NULL);
- return pwd;
-}
-
-struct group *xgetgrgid(gid_t gid)
-{
- struct group *group = getgrgid(gid);
- if (!group) error_exit(NULL);
- return group;
-}
-
void do_id(char *username)
{
int flags, i, ngroups, cmd_groups = toys.which->name[0] == 'g';