X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_utils.c;h=d605631088069907664ced7b6d8e94ea5eed8fd7;hb=561d4c5a3a66830ecfb92fdfd7ccee19cf01c2a7;hp=5cdfb1421d5d7e6fed15dde7e22a3b6dca08954f;hpb=821d0ec803a72841f173739f5b713fe847edab75;p=elogind.git diff --git a/udev_utils.c b/udev_utils.c index 5cdfb1421..d60563108 100644 --- a/udev_utils.c +++ b/udev_utils.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -89,9 +90,11 @@ int udev_init_device(struct udevice *udev, const char* devpath, const char *subs } } - udev->mode = 0660; - strcpy(udev->owner, "root"); - strcpy(udev->group, "root"); + if (udev->type == DEV_BLOCK || udev->type == DEV_CLASS) { + udev->mode = 0660; + strcpy(udev->owner, "root"); + strcpy(udev->group, "root"); + } return 0; } @@ -105,6 +108,41 @@ void udev_cleanup_device(struct udevice *udev) list_del(&name_loop->node); free(name_loop); } + list_for_each_entry_safe(name_loop, temp_loop, &udev->run_list, node) { + list_del(&name_loop->node); + free(name_loop); + } +} + +int string_is_true(const char *str) +{ + if (strcasecmp(str, "true") == 0) + return 1; + if (strcasecmp(str, "yes") == 0) + return 1; + if (strcasecmp(str, "1") == 0) + return 1; + return 0; +} + +int log_priority(const char *priority) +{ + char *endptr; + int prio; + + prio = strtol(priority, &endptr, 10); + if (endptr[0] == '\0') + return prio; + if (strncasecmp(priority, "err", 3) == 0) + return LOG_ERR; + if (strcasecmp(priority, "info") == 0) + return LOG_INFO; + if (strcasecmp(priority, "debug") == 0) + return LOG_DEBUG; + if (string_is_true(priority)) + return LOG_ERR; + + return 0; } int kernel_release_satisfactory(unsigned int version, unsigned int patchlevel, unsigned int sublevel)