Lines Matching +full:- +full:grp

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
30 * newgrp -- change to a new group
37 #include <grp.h>
83 while ((ch = getopt(argc, argv, "-l")) != -1) { in main()
85 case '-': /* Obsolescent */ in main()
93 argc -= optind; in main()
125 fprintf(stderr, "usage: newgrp [-l] [group]\n"); in usage()
135 initres = initgroups(pwd->pw_name, pwd->pw_gid); in restoregrps()
136 setres = setgid(pwd->pw_gid); in restoregrps()
152 struct group *grp; in addgroup() local
159 if ((grp = getgrnam(grpname)) == NULL) in addgroup()
161 (grp = getgrgid((gid_t)lgid)) == NULL ) { in addgroup()
171 if (pwd->pw_gid == grp->gr_gid) in addgroup()
173 for (p = grp->gr_mem; *p != NULL; p++) in addgroup()
174 if (strcmp(*p, pwd->pw_name) == 0) { in addgroup()
178 if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) { in addgroup()
182 cryptpw = crypt(pass, grp->gr_passwd); in addgroup()
183 if (cryptpw == NULL || strcmp(grp->gr_passwd, cryptpw) != 0) { in addgroup()
198 if (grp->gr_gid != egid && inarray(grp->gr_gid, grps, ngrps)) { in addgroup()
200 if (grps[i] == grp->gr_gid) in addgroup()
202 ngrps--; in addgroup()
203 memmove(&grps[i], &grps[i + 1], (ngrps - i) * sizeof(gid_t)); in addgroup()
214 if (setgid(grp->gr_gid)) { in addgroup()
220 grps[0] = grp->gr_gid; in addgroup()
223 if (egid != grp->gr_gid && !inarray(egid, grps, ngrps)) { in addgroup()
254 * again; this performs the same steps as su(1)'s -l option.
263 shell = pwd->pw_shell; in loginshell()
266 if (chdir(pwd->pw_dir) < 0) { in loginshell()
267 warn("%s", pwd->pw_dir); in loginshell()
280 setusercontext(lc, pwd, pwd->pw_uid, in loginshell()
283 setenv("USER", pwd->pw_name, 1); in loginshell()
285 setenv("HOME", pwd->pw_dir, 1); in loginshell()
291 if (asprintf(args, "-%s", shell) < 0) in loginshell()
304 shell = pwd->pw_shell; in doshell()