wall: fix OSX getgrouplist, gid_t* vs int*

This was the compiler warning:

term-utils/wall.c:156:39: warning: passing 'gid_t *const' (aka 'unsigned int *const') to
parameter of type 'int *' converts between pointers to integer types with different sign
[-Wpointer-sign]
        rc = getgrouplist(login, pw->pw_gid, buf->groups, &ngroups);
                                             ^~~~~~~~~~~
/usr/include/unistd.h:653:43: note: passing argument to parameter here
int      getgrouplist(const char *, int, int *, int *);
                                              ^

Reported-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2017-06-14 11:53:43 +02:00
parent bda267627e
commit 098a75a18b
1 changed files with 7 additions and 1 deletions

View File

@ -102,7 +102,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
struct group_workspace {
gid_t requested_group;
int ngroups;
/* getgrouplist() on OSX takes int* not gid_t* */
#ifdef __APPLE__
int *groups;
#else
gid_t *groups;
#endif
};
static gid_t get_group_gid(const char *optarg)
@ -162,7 +168,7 @@ static int is_gr_member(const char *login, const struct group_workspace *buf)
}
for (; ngroups >= 0; --ngroups) {
if (buf->requested_group == buf->groups[ngroups])
if (buf->requested_group == (gid_t) buf->groups[ngroups])
return 1;
}