#include "rsync.h"
-#ifdef HAVE_GETGROUPS
-# if !defined(GETGROUPS_T)
+#if HAVE_GETGROUPS
+# ifndef GETGROUPS_T
# define GETGROUPS_T gid_t
# endif
#endif
static int map_uid(int id, char *name)
{
uid_t uid;
- if (uid != 0 && name_to_uid(name, &uid))
+ if (id != 0 && name_to_uid(name, &uid))
return uid;
return id;
}
static int map_gid(int id, char *name)
{
gid_t gid;
- if (gid != 0 && name_to_gid(name, &gid))
+ if (id != 0 && name_to_gid(name, &gid))
return gid;
return id;
}
static int is_in_group(gid_t gid)
{
-#ifdef HAVE_GETGROUPS
+#if HAVE_GETGROUPS
static gid_t last_in = GID_NONE, last_out;
static int ngroups = -2;
static GETGROUPS_T *gidset;
int id2 = name ? map_uid(id, name) : id;
struct idlist *node;
- node = add_to_list(&uidlist, id, name, map_uid(id, name));
+ node = add_to_list(&uidlist, id, name, id2);
if (verbose > 3) {
rprintf(FINFO, "uid %d(%s) maps to %d\n",