diff options
author | Eric Andersen <andersen@codepoet.org> | 2004-09-02 23:11:53 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2004-09-02 23:11:53 +0000 |
commit | 7b08cdd98cdf99b0d2bd622566e9288d44b17529 (patch) | |
tree | 0b42cbdf6af0a15ec66d8923a184730ef98abca2 | |
parent | 45a0513a64f10b4d437e5b261f6b53f8e75e064b (diff) | |
download | busybox-w32-7b08cdd98cdf99b0d2bd622566e9288d44b17529.tar.gz busybox-w32-7b08cdd98cdf99b0d2bd622566e9288d44b17529.tar.bz2 busybox-w32-7b08cdd98cdf99b0d2bd622566e9288d44b17529.zip |
No longer needed
-rw-r--r-- | libbb/my_getpwnamegid.c | 55 | ||||
-rw-r--r-- | patches/id_groups_alias.patch | 314 |
2 files changed, 0 insertions, 369 deletions
diff --git a/libbb/my_getpwnamegid.c b/libbb/my_getpwnamegid.c deleted file mode 100644 index d1457900e..000000000 --- a/libbb/my_getpwnamegid.c +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * Utility routines. | ||
4 | * | ||
5 | * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | #include <stdio.h> | ||
23 | #include <string.h> | ||
24 | #include "libbb.h" | ||
25 | #include "pwd_.h" | ||
26 | #include "grp_.h" | ||
27 | |||
28 | |||
29 | |||
30 | /* gets a gid given a user name */ | ||
31 | long my_getpwnamegid(const char *name) | ||
32 | { | ||
33 | struct group *mygroup; | ||
34 | struct passwd *myuser; | ||
35 | |||
36 | myuser=getpwnam(name); | ||
37 | if (myuser==NULL) | ||
38 | bb_error_msg_and_die("unknown user name: %s", name); | ||
39 | |||
40 | mygroup = getgrgid(myuser->pw_gid); | ||
41 | if (mygroup==NULL) | ||
42 | bb_error_msg_and_die("unknown gid %ld", (long)myuser->pw_gid); | ||
43 | |||
44 | return mygroup->gr_gid; | ||
45 | } | ||
46 | |||
47 | |||
48 | /* END CODE */ | ||
49 | /* | ||
50 | Local Variables: | ||
51 | c-file-style: "linux" | ||
52 | c-basic-offset: 4 | ||
53 | tab-width: 4 | ||
54 | End: | ||
55 | */ | ||
diff --git a/patches/id_groups_alias.patch b/patches/id_groups_alias.patch deleted file mode 100644 index 3dadae0ce..000000000 --- a/patches/id_groups_alias.patch +++ /dev/null | |||
@@ -1,314 +0,0 @@ | |||
1 | Index: coreutils/Config.in | ||
2 | =================================================================== | ||
3 | RCS file: /var/cvs/busybox/coreutils/Config.in,v | ||
4 | retrieving revision 1.24 | ||
5 | diff -u -r1.24 Config.in | ||
6 | --- a/coreutils/Config.in 15 Mar 2004 08:28:19 -0000 1.24 | ||
7 | +++ b/coreutils/Config.in 1 May 2004 11:39:04 -0000 | ||
8 | @@ -218,6 +218,14 @@ | ||
9 | help | ||
10 | id displays the current user and group ID names. | ||
11 | |||
12 | +config CONFIG_FEATURE_ID_GROUPS_ALIAS | ||
13 | + bool " Support 'groups' as alias to 'id -Gn'" | ||
14 | + default y | ||
15 | + depends on CONFIG_ID | ||
16 | + help | ||
17 | + Print the groups a user is in. This is an alias to 'id -Gn' on | ||
18 | + most systems. | ||
19 | + | ||
20 | config CONFIG_INSTALL | ||
21 | bool "install" | ||
22 | default n | ||
23 | Index: coreutils/id.c | ||
24 | =================================================================== | ||
25 | RCS file: /var/cvs/busybox/coreutils/id.c,v | ||
26 | retrieving revision 1.24 | ||
27 | diff -u -r1.24 id.c | ||
28 | --- a/coreutils/id.c 15 Mar 2004 08:28:20 -0000 1.24 | ||
29 | +++ b/coreutils/id.c 1 May 2004 11:39:05 -0000 | ||
30 | @@ -3,6 +3,8 @@ | ||
31 | * Mini id implementation for busybox | ||
32 | * | ||
33 | * Copyright (C) 2000 by Randolph Chung <tausq@debian.org> | ||
34 | + * Copyright (C) 2004 by Tony J. White <tjw@tjw.org> | ||
35 | + * Copyright (C) 2004 by Glenn McGrath <bug1@iinet.net.au> | ||
36 | * | ||
37 | * This program is free software; you can redistribute it and/or modify | ||
38 | * it under the terms of the GNU General Public License as published by | ||
39 | @@ -20,7 +22,6 @@ | ||
40 | * | ||
41 | */ | ||
42 | |||
43 | -/* BB_AUDIT SUSv3 _NOT_ compliant -- option -G is not currently supported. */ | ||
44 | |||
45 | #include "busybox.h" | ||
46 | #include <stdio.h> | ||
47 | @@ -33,78 +34,153 @@ | ||
48 | #include <flask_util.h> | ||
49 | #endif | ||
50 | |||
51 | -#define JUST_USER 1 | ||
52 | -#define JUST_GROUP 2 | ||
53 | -#define PRINT_REAL 4 | ||
54 | -#define NAME_NOT_NUMBER 8 | ||
55 | +#define ID_OPT_JUST_USER 1 | ||
56 | +#define ID_OPT_JUST_GROUP 2 | ||
57 | +#define ID_OPT_ALL_GROUPS 4 | ||
58 | +#define ID_OPT_PRINT_REAL 8 | ||
59 | +#define ID_OPT_NAME_NOT_NUMBER 16 | ||
60 | + | ||
61 | +static void print_groups(unsigned long flags, const char sep) | ||
62 | +{ | ||
63 | + gid_t gids[64]; | ||
64 | + int gid_count; | ||
65 | + int i; | ||
66 | + | ||
67 | + gid_count = getgroups(64, gids); | ||
68 | + | ||
69 | + for (i = 0; i < gid_count; i++) { | ||
70 | + struct group *tmp_grp; | ||
71 | + | ||
72 | + if (i != 0) { | ||
73 | + putchar(sep); | ||
74 | + } | ||
75 | + tmp_grp = getgrgid(gids[i]); | ||
76 | + if (flags & ID_OPT_NAME_NOT_NUMBER) { | ||
77 | + if (tmp_grp == NULL) { | ||
78 | + continue; | ||
79 | + } | ||
80 | + printf("%s", tmp_grp->gr_name); | ||
81 | + } else { | ||
82 | + printf("%u", gids[i]); | ||
83 | + if (!(flags & ID_OPT_ALL_GROUPS)) { | ||
84 | + if (tmp_grp == NULL) { | ||
85 | + continue; | ||
86 | + } | ||
87 | + printf("(%s)", tmp_grp->gr_name); | ||
88 | + } | ||
89 | + } | ||
90 | + } | ||
91 | +} | ||
92 | |||
93 | extern int id_main(int argc, char **argv) | ||
94 | { | ||
95 | - char user[9], group[9]; | ||
96 | - long pwnam, grnam; | ||
97 | - int uid, gid; | ||
98 | - int flags; | ||
99 | + struct group *grp; | ||
100 | + struct passwd *usr; | ||
101 | + unsigned long flags; | ||
102 | + uid_t uid; | ||
103 | + uid_t gid; | ||
104 | + uid_t euid; | ||
105 | + uid_t egid; | ||
106 | #ifdef CONFIG_SELINUX | ||
107 | int is_flask_enabled_flag = is_flask_enabled(); | ||
108 | #endif | ||
109 | |||
110 | - flags = bb_getopt_ulflags(argc, argv, "ugrn"); | ||
111 | + bb_opt_complementaly = "u~gG:g~uG:G~ug:~n"; | ||
112 | + flags = bb_getopt_ulflags(argc, argv, "ugGrn"); | ||
113 | |||
114 | - if (((flags & (JUST_USER | JUST_GROUP)) == (JUST_USER | JUST_GROUP)) | ||
115 | - || (argc > optind + 1) | ||
116 | - ) { | ||
117 | + /* Check one and only one context option was given */ | ||
118 | + if ((flags & 0x80000000UL) || | ||
119 | + (flags & (ID_OPT_PRINT_REAL | ID_OPT_ALL_GROUPS)) || | ||
120 | + ((flags & (ID_OPT_PRINT_REAL | ID_OPT_NAME_NOT_NUMBER)) == | ||
121 | + (ID_OPT_PRINT_REAL | ID_OPT_NAME_NOT_NUMBER))) { | ||
122 | bb_show_usage(); | ||
123 | } | ||
124 | |||
125 | +#ifdef CONFIG_FEATURE_ID_GROUPS_ALIAS | ||
126 | + /* groups command is an alias for 'id -Gn' */ | ||
127 | + if (bb_applet_name[0] == 'g') { | ||
128 | + flags |= (ID_OPT_ALL_GROUPS + ID_OPT_NAME_NOT_NUMBER); | ||
129 | + } | ||
130 | +#endif | ||
131 | + | ||
132 | + uid = getuid(); | ||
133 | + gid = getgid(); | ||
134 | + euid = geteuid(); | ||
135 | + egid = getegid(); | ||
136 | + | ||
137 | + if (flags & ID_OPT_PRINT_REAL) { | ||
138 | + euid = uid; | ||
139 | + egid = gid; | ||
140 | + } | ||
141 | + | ||
142 | if (argv[optind] == NULL) { | ||
143 | - if (flags & PRINT_REAL) { | ||
144 | - uid = getuid(); | ||
145 | - gid = getgid(); | ||
146 | - } else { | ||
147 | - uid = geteuid(); | ||
148 | - gid = getegid(); | ||
149 | - } | ||
150 | - my_getpwuid(user, uid); | ||
151 | + usr = getpwuid(euid); | ||
152 | + grp = getgrgid(egid); | ||
153 | } else { | ||
154 | - safe_strncpy(user, argv[optind], sizeof(user)); | ||
155 | - gid = my_getpwnamegid(user); | ||
156 | + usr = getpwnam(argv[optind]); | ||
157 | + grp = getgrnam(argv[optind]); | ||
158 | } | ||
159 | - my_getgrgid(group, gid); | ||
160 | |||
161 | - pwnam=my_getpwnam(user); | ||
162 | - grnam=my_getgrnam(group); | ||
163 | + if (usr == NULL) { | ||
164 | + bb_perror_msg_and_die("cannot find user name"); | ||
165 | + } | ||
166 | + if (grp == NULL) { | ||
167 | + bb_perror_msg_and_die("cannot find group name"); | ||
168 | + } | ||
169 | |||
170 | - if (flags & (JUST_GROUP | JUST_USER)) { | ||
171 | - char *s = group; | ||
172 | - if (flags & JUST_USER) { | ||
173 | - s = user; | ||
174 | - grnam = pwnam; | ||
175 | + if (flags & ID_OPT_JUST_USER) { | ||
176 | + if (flags & ID_OPT_NAME_NOT_NUMBER) { | ||
177 | + printf("%s", grp->gr_name); | ||
178 | + } else { | ||
179 | + printf("%u", euid); | ||
180 | } | ||
181 | - if (flags & NAME_NOT_NUMBER) { | ||
182 | - puts(s); | ||
183 | + } | ||
184 | + else if (flags & ID_OPT_JUST_GROUP) { | ||
185 | + if (flags & ID_OPT_NAME_NOT_NUMBER) { | ||
186 | + printf("%s", grp->gr_name); | ||
187 | } else { | ||
188 | - printf("%ld\n", grnam); | ||
189 | + printf("%u", egid); | ||
190 | } | ||
191 | + } | ||
192 | + else if (flags & ID_OPT_ALL_GROUPS) { | ||
193 | + print_groups(flags, ' '); | ||
194 | } else { | ||
195 | -#ifdef CONFIG_SELINUX | ||
196 | - printf("uid=%ld(%s) gid=%ld(%s)", pwnam, user, grnam, group); | ||
197 | - if(is_flask_enabled_flag) | ||
198 | - { | ||
199 | - security_id_t mysid = getsecsid(); | ||
200 | - char context[80]; | ||
201 | - int len = sizeof(context); | ||
202 | - context[0] = '\0'; | ||
203 | - if(security_sid_to_context(mysid, context, &len)) | ||
204 | - strcpy(context, "unknown"); | ||
205 | - printf(" context=%s\n", context); | ||
206 | - } | ||
207 | - else | ||
208 | - printf("\n"); | ||
209 | -#else | ||
210 | - printf("uid=%ld(%s) gid=%ld(%s)\n", pwnam, user, grnam, group); | ||
211 | -#endif | ||
212 | + printf("uid=%u(%s) gid=%u(%s)", uid, usr->pw_name, gid, grp->gr_name); | ||
213 | + if (uid != euid) { | ||
214 | + struct passwd *eusr; | ||
215 | + printf(" euid=%u", euid); | ||
216 | + eusr = getpwuid(euid); | ||
217 | + if (eusr != NULL) { | ||
218 | + printf("(%s)", eusr->pw_name); | ||
219 | + } | ||
220 | + } | ||
221 | + if (gid != egid) { | ||
222 | + struct group *egrp; | ||
223 | + printf(" egid=%u", egid); | ||
224 | + egrp = getgrgid(egid); | ||
225 | + if (egrp != NULL) { | ||
226 | + printf("(%s)", egrp->gr_name); | ||
227 | + } | ||
228 | + } | ||
229 | + printf(" groups="); | ||
230 | + print_groups(flags, ','); | ||
231 | + } | ||
232 | |||
233 | +#ifdef CONFIG_SELINUX | ||
234 | + if (is_flask_enabled_flag) | ||
235 | + { | ||
236 | + security_id_t mysid = getsecsid(); | ||
237 | + char context[80]; | ||
238 | + int len = sizeof(context); | ||
239 | + | ||
240 | + context[0] = '\0'; | ||
241 | + if (security_sid_to_context(mysid, len, &len)) { | ||
242 | + strcpy(context, "unknown"); | ||
243 | + } | ||
244 | + printf(" context=%s", context); | ||
245 | } | ||
246 | +#endif | ||
247 | |||
248 | + putchar('\n'); | ||
249 | bb_fflush_stdout_and_exit(0); | ||
250 | } | ||
251 | Index: include/applets.h | ||
252 | =================================================================== | ||
253 | RCS file: /var/cvs/busybox/include/applets.h,v | ||
254 | retrieving revision 1.113 | ||
255 | diff -u -r1.113 applets.h | ||
256 | --- a/include/applets.h 6 Apr 2004 16:59:43 -0000 1.113 | ||
257 | +++ b/include/applets.h 1 May 2004 11:39:06 -0000 | ||
258 | @@ -232,6 +232,9 @@ | ||
259 | #ifdef CONFIG_GREP | ||
260 | APPLET(grep, grep_main, _BB_DIR_BIN, _BB_SUID_NEVER) | ||
261 | #endif | ||
262 | +#if defined(CONFIG_FEATURE_ID_GROUPS_ALIAS) | ||
263 | + APPLET(groups, id_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER) | ||
264 | +#endif | ||
265 | #ifdef CONFIG_GUNZIP | ||
266 | APPLET(gunzip, gunzip_main, _BB_DIR_BIN, _BB_SUID_NEVER) | ||
267 | #endif | ||
268 | Index: include/usage.h | ||
269 | =================================================================== | ||
270 | RCS file: /var/cvs/busybox/include/usage.h,v | ||
271 | retrieving revision 1.207 | ||
272 | diff -u -r1.207 usage.h | ||
273 | --- a/include/usage.h 14 Apr 2004 17:59:21 -0000 1.207 | ||
274 | +++ b/include/usage.h 1 May 2004 11:39:10 -0000 | ||
275 | @@ -800,6 +800,16 @@ | ||
276 | "$ grep ^[rR]oo. /etc/passwd\n" \ | ||
277 | "root:x:0:0:root:/root:/bin/bash\n" | ||
278 | |||
279 | +#define groups_trivial_usage \ | ||
280 | + " [USERNAME]" | ||
281 | +#define groups_full_usage \ | ||
282 | + "Print all group names that USERNAME is a member of." | ||
283 | +#define groups_example_usage \ | ||
284 | + "$ groups\n" \ | ||
285 | + "andersen users\n" \ | ||
286 | + "$ groups tjw\n" \ | ||
287 | + "tjw users\n" | ||
288 | + | ||
289 | #define gunzip_trivial_usage \ | ||
290 | "[OPTION]... FILE" | ||
291 | #define gunzip_full_usage \ | ||
292 | @@ -1035,7 +1045,7 @@ | ||
293 | #endif | ||
294 | |||
295 | #define id_trivial_usage \ | ||
296 | - "[OPTIONS]... [USERNAME]" | ||
297 | + "[-Ggu[nr]]] [USERNAME]" | ||
298 | #define id_full_usage \ | ||
299 | "Print information for USERNAME or the current user\n\n" \ | ||
300 | "Options:\n" \ | ||
301 | @@ -1043,10 +1053,11 @@ | ||
302 | "\t-g\tprints only the group ID\n" \ | ||
303 | "\t-u\tprints only the user ID\n" \ | ||
304 | "\t-n\tprint a name instead of a number\n" \ | ||
305 | - "\t-r\tprints the real user ID instead of the effective ID" | ||
306 | + "\t-r\tprints the real user ID instead of the effective ID\n" \ | ||
307 | + "\t-G\tprints all groups the user belongs to" | ||
308 | #define id_example_usage \ | ||
309 | "$ id\n" \ | ||
310 | - "uid=1000(andersen) gid=1000(andersen)\n" | ||
311 | + "uid=1000(andersen) gid=1000(andersen) groups=1000(andersen),100(users)\n" | ||
312 | |||
313 | #ifdef CONFIG_FEATURE_IFCONFIG_SLIP | ||
314 | #define USAGE_SIOCSKEEPALIVE(a) a | ||