- gid = grp->gr_gid;
-
- /* Find the selected user (if appropriate) */
- if (whichApp==TRUE) {
- pwd = getpwnam(*argv);
- if (pwd == NULL) {
- fprintf(stderr, "%s: Unknown user name: %s\n", invocationName, *argv);
- exit( FALSE);
- }
- uid = pwd->pw_uid;
+
+ if (whichApp == CHMOD_APP) {
+ theMode = *argv;
+ } else {
+
+ /* Find the selected group */
+ if (whichApp == CHGRP_APP) {
+ groupName = *argv;
+ gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */
+ if (groupName == p)
+ gid = my_getgrnam(groupName);
+ if (gid == -1)
+ goto bad_group;
+ } else {
+ groupName = strchr(*argv, '.');
+ if (groupName == NULL)
+ groupName = strchr(*argv, ':');
+ if (groupName) {
+ *groupName++ = '\0';
+ gid = strtoul(groupName, &p, 10);
+ if (groupName == p)
+ gid = my_getgrnam(groupName);
+ if (gid == -1)
+ goto bad_group;
+ } else
+ gid = -1;
+ }
+
+
+ /* Find the selected user (if appropriate) */
+ if (whichApp == CHOWN_APP) {
+ uid = strtoul(*argv, &p, 10); /* if numeric ... */
+ if (*argv == p)
+ uid = my_getpwnam(*argv);
+ if (uid == -1) {
+ fatalError( "%s: unknown user name: %s\n",
+ invocationName, *argv);
+ }
+ }