summaryrefslogtreecommitdiff
path: root/lib/userspec.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1998-03-10 22:49:04 +0000
committerJim Meyering <jim@meyering.net>1998-03-10 22:49:04 +0000
commit7f0867df009907e3a0f5fdbbb634aafb50ef809b (patch)
treec62022fd613f1b315c9138ad9b0a59b34f0ddd05 /lib/userspec.c
parent6354d07ea01c6a47f72ddea990383533bb2bff2d (diff)
downloadcoreutils-7f0867df009907e3a0f5fdbbb634aafb50ef809b.tar.xz
(parse_user_spec) [__DJGPP__]: Make function know
about any arbitrary user and group by pretending to be the user and to belong to the group specified in `spec_arg' argument.
Diffstat (limited to 'lib/userspec.c')
-rw-r--r--lib/userspec.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/userspec.c b/lib/userspec.c
index 2ceb76321..bf51778d7 100644
--- a/lib/userspec.c
+++ b/lib/userspec.c
@@ -153,6 +153,15 @@ parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg)
if (u == NULL && g == NULL)
return "can not omit both user and group";
+#ifdef __DJGPP__
+ /* Pretend that we are the user U whose group is G. This makes
+ pwd and grp functions ``know'' about the UID and GID of these. */
+ if (u && !is_number (u))
+ setenv ("USER", u, 1);
+ if (g && !is_number (g))
+ setenv ("GROUP", g, 1);
+#endif
+
if (u != NULL)
{
pwd = getpwnam (u);