Deleted Added
full compact
pw_group.c (285396) pw_group.c (285398)
1/*-
2 * Copyright (C) 1996
3 * David L. Nugent. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#ifndef lint
28static const char rcsid[] =
1/*-
2 * Copyright (C) 1996
3 * David L. Nugent. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#ifndef lint
28static const char rcsid[] =
29 "$FreeBSD: head/usr.sbin/pw/pw_group.c 285396 2015-07-11 17:01:08Z bapt $";
29 "$FreeBSD: head/usr.sbin/pw/pw_group.c 285398 2015-07-11 18:09:27Z bapt $";
30#endif /* not lint */
31
32#include <ctype.h>
33#include <err.h>
34#include <termios.h>
35#include <stdbool.h>
36#include <unistd.h>
37#include <grp.h>

--- 60 unchanged lines hidden (view full) ---

98
99 if (quiet)
100 return (next);
101 printf("%u\n", next);
102
103 return (EXIT_SUCCESS);
104}
105
30#endif /* not lint */
31
32#include <ctype.h>
33#include <err.h>
34#include <termios.h>
35#include <stdbool.h>
36#include <unistd.h>
37#include <grp.h>

--- 60 unchanged lines hidden (view full) ---

98
99 if (quiet)
100 return (next);
101 printf("%u\n", next);
102
103 return (EXIT_SUCCESS);
104}
105
106static int
107pw_groupshow(const char *name, long id, struct group *fakegroup)
108{
109 struct group *grp = NULL;
110
111 if (id < 0 && name == NULL && !conf.all)
112 errx(EX_DATAERR, "groupname or id or '-a' required");
113
114 if (conf.all) {
115 SETGRENT();
116 while ((grp = GETGRENT()) != NULL)
117 print_group(grp);
118 ENDGRENT();
119
120 return (EXIT_SUCCESS);
121 }
122
123 grp = (name != NULL) ? GETGRNAM(name) : GETGRGID(id);
124 if (grp == NULL) {
125 if (conf.force) {
126 grp = fakegroup;
127 } else {
128 if (name == NULL)
129 errx(EX_DATAERR, "unknown gid `%ld'", id);
130 errx(EX_DATAERR, "unknown group `%s'", name);
131 }
132 }
133
134 return (print_group(grp));
135}
136
106int
107pw_group(int mode, char *name, long id, struct cargs * args)
108{
109 int rc;
110 struct carg *arg;
111 struct group *grp = NULL;
112 int grmembers = 0;
113 char **members = NULL;

--- 5 unchanged lines hidden (view full) ---

119 "*",
120 -1,
121 NULL
122 };
123
124 if (mode == M_NEXT)
125 return (pw_groupnext(cnf, conf.quiet));
126
137int
138pw_group(int mode, char *name, long id, struct cargs * args)
139{
140 int rc;
141 struct carg *arg;
142 struct group *grp = NULL;
143 int grmembers = 0;
144 char **members = NULL;

--- 5 unchanged lines hidden (view full) ---

150 "*",
151 -1,
152 NULL
153 };
154
155 if (mode == M_NEXT)
156 return (pw_groupnext(cnf, conf.quiet));
157
158 if (mode == M_PRINT)
159 return (pw_groupshow(name, id, &fakegroup));
160
127 if (mode == M_LOCK || mode == M_UNLOCK)
128 errx(EX_USAGE, "'lock' command is not available for groups");
129
161 if (mode == M_LOCK || mode == M_UNLOCK)
162 errx(EX_USAGE, "'lock' command is not available for groups");
163
130 if (mode == M_PRINT && getarg(args, 'a')) {
131 SETGRENT();
132 while ((grp = GETGRENT()) != NULL)
133 print_group(grp);
134 ENDGRENT();
135 return EXIT_SUCCESS;
136 }
137 if (id < 0 && name == NULL)
138 errx(EX_DATAERR, "group name or id required");
139
140 grp = (name != NULL) ? GETGRNAM(name) : GETGRGID(id);
141
164 if (id < 0 && name == NULL)
165 errx(EX_DATAERR, "group name or id required");
166
167 grp = (name != NULL) ? GETGRNAM(name) : GETGRGID(id);
168
142 if (mode == M_UPDATE || mode == M_DELETE || mode == M_PRINT) {
169 if (mode == M_UPDATE || mode == M_DELETE) {
143 if (name == NULL && grp == NULL) /* Try harder */
144 grp = GETGRGID(id);
145
146 if (grp == NULL) {
170 if (name == NULL && grp == NULL) /* Try harder */
171 grp = GETGRGID(id);
172
173 if (grp == NULL) {
147 if (mode == M_PRINT && getarg(args, 'F')) {
148 char *fmems[1];
149 fmems[0] = NULL;
150 fakegroup.gr_name = name ? name : "nogroup";
151 fakegroup.gr_gid = (gid_t) id;
152 fakegroup.gr_mem = fmems;
153 return print_group(&fakegroup);
154 }
155 if (name == NULL)
156 errx(EX_DATAERR, "unknown group `%s'", name);
157 else
158 errx(EX_DATAERR, "unknown group `%ld'", id);
159 }
160 if (name == NULL) /* Needed later */
161 name = grp->gr_name;
162

--- 263 unchanged lines hidden ---
174 if (name == NULL)
175 errx(EX_DATAERR, "unknown group `%s'", name);
176 else
177 errx(EX_DATAERR, "unknown group `%ld'", id);
178 }
179 if (name == NULL) /* Needed later */
180 name = grp->gr_name;
181

--- 263 unchanged lines hidden ---