diff options
author | Anthony G. Basile <blueness@gentoo.org> | 2014-09-18 18:46:21 -0400 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2014-09-18 18:46:21 -0400 |
commit | 15f72fb47214133818a9b20ad4d4cb3d8c4fa508 (patch) | |
tree | 07ca3c178e549b9679a75d8ab8abb28aa4a5dc2f /src/libudev/libudev-util.c | |
parent | 1e446d862a89ba3475a9df516a9e57a590e9fcd8 (diff) |
src/shared: import upstream code needed for recent commits
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'src/libudev/libudev-util.c')
-rw-r--r-- | src/libudev/libudev-util.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index 6268a8a4a7..00dc6e157e 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -48,107 +48,6 @@ * Utilities useful when dealing with devices and device node names. */ -int util_delete_path(struct udev *udev, const char *path) -{ - char p[UTIL_PATH_SIZE]; - char *pos; - int err = 0; - - if (path[0] == '/') - while(path[1] == '/') - path++; - strscpy(p, sizeof(p), path); - pos = strrchr(p, '/'); - if (pos == p || pos == NULL) - return 0; - - for (;;) { - *pos = '\0'; - pos = strrchr(p, '/'); - - /* don't remove the last one */ - if ((pos == p) || (pos == NULL)) - break; - - err = rmdir(p); - if (err < 0) { - if (errno == ENOENT) - err = 0; - break; - } - } - return err; -} - -uid_t util_lookup_user(struct udev *udev, const char *user) -{ - char *endptr; - struct passwd pwbuf; - struct passwd *pw; - uid_t uid; - size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); - char *buf; - - if (buflen == -1) - buflen = 1024; - buf = alloca(buflen); - if (streq(user, "root")) - return 0; - uid = strtoul(user, &endptr, 10); - if (endptr[0] == '\0') - return uid; - - errno = getpwnam_r(user, &pwbuf, buf, buflen, &pw); - if (pw != NULL) - return pw->pw_uid; - if (errno == 0 || errno == ENOENT || errno == ESRCH) - udev_err(udev, "specified user '%s' unknown\n", user); - else - udev_err(udev, "error resolving user '%s': %m\n", user); - return 0; -} - -gid_t util_lookup_group(struct udev *udev, const char *group) -{ - char *endptr; - struct group grbuf; - struct group *gr; - gid_t gid = 0; - size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); - char *buf = NULL; - - if (buflen == -1) - buflen = 1024; - if (streq(group, "root")) - return 0; - gid = strtoul(group, &endptr, 10); - if (endptr[0] == '\0') - return gid; - gid = 0; - for (;;) { - char *newbuf; - - newbuf = realloc(buf, buflen); - if (!newbuf) - break; - buf = newbuf; - errno = getgrnam_r(group, &grbuf, buf, buflen, &gr); - if (gr != NULL) { - gid = gr->gr_gid; - } else if (errno == ERANGE) { - buflen *= 2; - continue; - } else if (errno == 0 || errno == ENOENT || errno == ESRCH) { - udev_err(udev, "specified group '%s' unknown\n", group); - } else { - udev_err(udev, "error resolving group '%s': %m\n", group); - } - break; - } - free(buf); - return gid; -} - /* handle "[<SUBSYSTEM>/<KERNEL>]<attribute>" format */ int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value) |