+
+uid_t lookup_user(const char *user)
+{
+ struct passwd *pw;
+ uid_t uid = 0;
+
+ errno = 0;
+ pw = getpwnam(user);
+ if (pw == NULL) {
+ if (errno == 0 || errno == ENOENT || errno == ESRCH)
+ err("specified user '%s' unknown", user);
+ else
+ err("error resolving user '%s': %s", user, strerror(errno));
+ } else
+ uid = pw->pw_uid;
+
+ return uid;
+}
+
+extern gid_t lookup_group(const char *group)
+{
+ struct group *gr;
+ gid_t gid = 0;
+
+ errno = 0;
+ gr = getgrnam(group);
+ if (gr == NULL) {
+ if (errno == 0 || errno == ENOENT || errno == ESRCH)
+ err("specified group '%s' unknown", group);
+ else
+ err("error resolving group '%s': %s", group, strerror(errno));
+ } else
+ gid = gr->gr_gid;
+
+ return gid;
+}
+