X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibudev%2Flibudev-util.c;h=93e78d5d0798865ca03c9f9af39f4fa959343ce8;hb=a56ba6158b9649e01226dfaf3ff7082c82571090;hp=c940e06f71952b3a66cc468dc4c42700751612ce;hpb=57d0e6b2731ab695d14b7cf496832ba416cc43d3;p=elogind.git diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index c940e06f7..93e78d5d0 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -77,70 +77,6 @@ int util_delete_path(struct udev *udev, const char *path) 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 = 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_GETPW_R_SIZE_MAX); - char *buf = NULL; - - 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 "[/]" format */ int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value) @@ -203,6 +139,7 @@ int util_resolve_subsys_kernel(struct udev *udev, const char *string, udev_device_unref(dev); return 0; } + ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const char *syspath, char *value, size_t size) { char path[UTIL_PATH_SIZE]; @@ -417,7 +354,7 @@ uint64_t util_string_bloom64(const char *str) ssize_t print_kmsg(const char *fmt, ...) { - int fd; + _cleanup_close_ int fd = -1; va_list ap; char text[1024]; ssize_t len; @@ -435,7 +372,7 @@ ssize_t print_kmsg(const char *fmt, ...) ret = write(fd, text, len); if (ret < 0) - ret = -errno; - close(fd); + return -errno; + return ret; }