summaryrefslogtreecommitdiff
path: root/src/chgrp.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1994-07-01 16:53:29 +0000
committerJim Meyering <jim@meyering.net>1994-07-01 16:53:29 +0000
commit4eb8e70031e17d1d06f9670b2b06aaea08321e61 (patch)
tree6048b1681b5a723911bc6204392d2dc652640cad /src/chgrp.c
parenta32610143c47068efb501354407ae8c2d0d8e6cd (diff)
downloadcoreutils-4eb8e70031e17d1d06f9670b2b06aaea08321e61.tar.xz
.
Diffstat (limited to 'src/chgrp.c')
-rw-r--r--src/chgrp.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/chgrp.c b/src/chgrp.c
index 74438ef93..cac9383d5 100644
--- a/src/chgrp.c
+++ b/src/chgrp.c
@@ -53,6 +53,7 @@ struct group *getgrnam ();
int lstat ();
+char *group_member ();
char *savedir ();
char *xmalloc ();
char *xrealloc ();
@@ -208,9 +209,22 @@ change_file_group (file, group)
describe_change (file, 1);
if (chown (file, file_stats.st_uid, group))
{
- if (force_silent == 0)
- error (0, errno, "%s", file);
errors = 1;
+ if (force_silent == 0)
+ {
+ /* Give a more specific message. Some systems set errno
+ to EPERM for both `inaccessible file' and `user not a member
+ of the specified group' errors. */
+ if (errno == EPERM && !group_member (group))
+ {
+ error (0, errno, "you are not a member of group `%s'",
+ groupname);
+ }
+ else
+ {
+ error (0, errno, "%s", file);
+ }
+ }
}
}
else if (verbose && changes_only == 0)