*/
#include "libbb.h"
-#include <features.h>
+//#include <features.h>
#include <assert.h>
#ifndef _PATH_SHADOW
int ngroups;
gid_t *group_list = getgrouplist_internal(&ngroups, user, gid);
- if (!group_list)
- return -1;
-
ngroups = setgroups(ngroups, group_list);
free(group_list);
return ngroups;
}
-/* TODO: uclibc needs this ported to it! */
int getgrouplist(const char *user, gid_t gid, gid_t *groups, int *ngroups)
{
int ngroups_old = *ngroups;
i = 0;
do {
- p = ((char *) ((struct passwd *) data)) + pw_off[i];
+ p = (char *) data + pw_off[i];
if ((i & 6) ^ 2) { /* i!=2 and i!=3 */
*((char **) p) = line;
end_of_buf = ((struct group *) data)->gr_name; /* Evil hack! */
i = 0;
do {
- p = ((char *) ((struct group *) data)) + gr_off[i];
+ p = (char *) data + gr_off[i];
if (i < 2) {
*((char **) p) = line;
offsetof(struct spwd, sp_flag) /* 8 - not a char ptr */
};
-static int bb__parsespent(void *data, char * line)
+static int bb__parsespent(void *data, char *line)
{
char *endptr;
char *p;
int i;
i = 0;
- do {
- p = ((char *) ((struct spwd *) data)) + sp_off[i];
+ while (1) {
+ p = (char *) data + sp_off[i];
if (i < 2) {
*((char **) p) = line;
line = strchr(line, ':');
break;
}
} else {
- *((long *) p) = (long) strtoul(line, &endptr, 10);
+ *((long *) p) = strtoul(line, &endptr, 10);
if (endptr == line) {
- *((long *) p) = ((i != 8) ? -1L : ((long)(~0UL)));
+ *((long *) p) = (i != 8) ? -1L : (long)(~0UL);
}
line = endptr;
}
- *line++ = 0;
+ *line++ = '\0';
++i;
- } while (1);
+ }
return EINVAL;
}