/**
* SECTION:libudev-util
* @short_description: utils
+ *
+ * Utilities useful when dealing with devices and device node names.
*/
int util_delete_path(struct udev *udev, const char *path)
if (pw != NULL)
return pw->pw_uid;
if (errno == 0 || errno == ENOENT || errno == ESRCH)
- err(udev, "specified user '%s' unknown\n", user);
+ udev_err(udev, "specified user '%s' unknown\n", user);
else
- err(udev, "error resolving user '%s': %m\n", user);
+ udev_err(udev, "error resolving user '%s': %m\n", user);
return 0;
}
buflen *= 2;
continue;
} else if (errno == 0 || errno == ENOENT || errno == ESRCH) {
- err(udev, "specified group '%s' unknown\n", group);
+ udev_err(udev, "specified group '%s' unknown\n", group);
} else {
- err(udev, "error resolving group '%s': %m\n", group);
+ udev_err(udev, "error resolving group '%s': %m\n", group);
}
break;
}
util_strscpy(result, maxsize, val);
else
result[0] = '\0';
- dbg(udev, "value '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result);
+ udev_dbg(udev, "value '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result);
} else {
size_t l;
char *s;
l = util_strpcpyl(&s, maxsize, udev_device_get_syspath(dev), NULL);
if (attr != NULL)
util_strpcpyl(&s, l, "/", attr, NULL);
- dbg(udev, "path '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result);
+ udev_dbg(udev, "path '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result);
}
udev_device_unref(dev);
return 0;
return 0;
return ts_usec(&ts);
}
+
+ssize_t print_kmsg(const char *fmt, ...)
+{
+ int fd;
+ va_list ap;
+ char text[1024];
+ ssize_t len;
+ ssize_t ret;
+
+ fd = open("/dev/kmsg", O_WRONLY|O_NOCTTY|O_CLOEXEC);
+ if (fd < 0)
+ return -errno;
+
+ len = snprintf(text, sizeof(text), "<30>systemd-udevd[%u]: ", getpid());
+
+ va_start(ap, fmt);
+ len += vsnprintf(text + len, sizeof(text) - len, fmt, ap);
+ va_end(ap);
+
+ ret = write(fd, text, len);
+ if (ret < 0)
+ ret = -errno;
+ close(fd);
+ return ret;
+}