bool gid_set:1;
bool uid_set:1;
- bool todo:1;
+ bool todo_user:1;
+ bool todo_group:1;
} Item;
static char *arg_root = NULL;
if (dst < 0)
return dst;
- r = copy_bytes(src, dst);
+ r = copy_bytes(src, dst, (off_t) -1);
if (r < 0)
goto fail;
* duplicate entries. */
i = hashmap_get(groups, gr->gr_name);
- if (i && i->todo) {
+ if (i && i->todo_group) {
r = -EEXIST;
goto finish;
}
while ((pw = fgetpwent(original))) {
i = hashmap_get(users, pw->pw_name);
- if (i && i->todo) {
+ if (i && i->todo_user) {
r = -EEXIST;
goto finish;
}
p = getpwuid(uid);
if (p)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
errno = 0;
if (g) {
if (!streq(g->gr_name, name))
return 0;
- } else if (errno != 0)
+ } else if (!IN_SET(errno, 0, ENOENT))
return -errno;
}
z = hashmap_get(database_user, i->name);
if (z) {
log_debug("User %s already exists.", i->name);
- i->uid = PTR_TO_GID(z);
+ i->uid = PTR_TO_UID(z);
i->uid_set = true;
return 0;
}
i->description = strdup(p->pw_gecos);
return 0;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if user %s already exists: %m", i->name);
return -errno;
}
log_error("User %s already exists in shadow database, but not in user database.", i->name);
return -EBADMSG;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if user %s already exists in shadow database: %m", i->name);
return -errno;
}
if (r < 0)
return log_oom();
- i->todo = true;
+ i->todo_user = true;
log_info("Creating user %s (%s) with uid " UID_FMT " and gid " GID_FMT ".", i->name, strna(i->description), i->uid, i->gid);
return 0;
g = getgrgid(gid);
if (g)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
errno = 0;
p = getpwuid((uid_t) gid);
if (p)
return 0;
- if (errno != 0)
+ if (!IN_SET(errno, 0, ENOENT))
return -errno;
}
i->gid_set = true;
return 0;
}
- if (errno != 0) {
+ if (!IN_SET(errno, 0, ENOENT)) {
log_error("Failed to check if group %s already exists: %m", i->name);
return -errno;
}
if (r < 0)
return log_oom();
- i->todo = true;
+ i->todo_group = true;
log_info("Creating group %s with gid " GID_FMT ".", i->name, i->gid);
return 0;