X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudevadm-test.c;h=a9f9cafc0b0fda1f5c971384c5666eb79381284a;hb=051dfe8708e394a64e8ef6c281228763481ad32c;hp=f22a2c32cc7c4c0447d218ea32a5163ba49ff649;hpb=d5a89d7dc17a5ba5cf4fc71f82963c5c94a31c3d;p=elogind.git diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index f22a2c32c..a9f9cafc0 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -30,6 +30,7 @@ #include #include "udev.h" +#include "udev-util.h" static int adm_test(struct udev *udev, int argc, char *argv[]) { @@ -37,13 +38,13 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) char filename[UTIL_PATH_SIZE]; const char *action = "add"; const char *syspath = NULL; - struct udev_event *event = NULL; - struct udev_device *dev = NULL; - struct udev_rules *rules = NULL; struct udev_list_entry *entry; + _cleanup_udev_rules_unref_ struct udev_rules *rules = NULL; + _cleanup_udev_device_unref_ struct udev_device *dev = NULL; + _cleanup_udev_event_unref_ struct udev_event *event = NULL; sigset_t mask, sigmask_orig; int err; - int rc = 0; + int rc = 0, c; static const struct option options[] = { { "action", required_argument, NULL, 'a' }, @@ -54,23 +55,17 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) log_debug("version %s\n", VERSION); - for (;;) { - int option; - - option = getopt_long(argc, argv, "a:s:N:fh", options, NULL); - if (option == -1) - break; - - switch (option) { + while((c = getopt_long(argc, argv, "a:N:h", options, NULL)) >= 0) + switch (c) { case 'a': action = optarg; break; case 'N': - if (strcmp (optarg, "early") == 0) { + if (streq (optarg, "early")) { resolve_names = 1; - } else if (strcmp (optarg, "late") == 0) { + } else if (streq (optarg, "late")) { resolve_names = 0; - } else if (strcmp (optarg, "never") == 0) { + } else if (streq (optarg, "never")) { resolve_names = -1; } else { fprintf(stderr, "resolve-names must be early, late or never\n"); @@ -80,15 +75,18 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) break; case 'h': printf("Usage: udevadm test OPTIONS \n" - " --action= set action string\n" - " --help\n\n"); + " -a,--action=ACTION set action string\n" + " -N,--resolve-names=early|late|never when to resolve names\n" + " -h,--help print this help string\n" + "\n"); exit(EXIT_SUCCESS); - default: + case '?': exit(EXIT_FAILURE); + default: + assert_not_reached("Unknown option"); } - } - syspath = argv[optind]; + syspath = argv[optind]; if (syspath == NULL) { fprintf(stderr, "syspath parameter missing\n"); rc = 2; @@ -157,9 +155,6 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) out: if (event != NULL && event->fd_signal >= 0) close(event->fd_signal); - udev_event_unref(event); - udev_device_unref(dev); - udev_rules_unref(rules); udev_builtin_exit(udev); return rc; }