X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudevadm.c;h=e14b3ca27c0248f9c063a38f13e65f1e872a7846;hp=224ece0bb707ccf3e01360506887c1d656979390;hb=2a73e0d39a9bec82c3800071e375d27164727e71;hpb=3e2147858f21943d5f4a781c60f33ac22c6096ed diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 224ece0bb..e14b3ca27 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2009 Kay Sievers + * Copyright (C) 2007-2012 Kay Sievers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,23 +25,11 @@ #include "udev.h" -static bool debug; - void udev_main_log(struct udev *udev, int priority, const char *file, int line, const char *fn, const char *format, va_list args) { - if (debug) { - fprintf(stderr, "%s: ", fn); - vfprintf(stderr, format, args); - } else { - va_list args2; - - va_copy(args2, args); - vfprintf(stderr, format, args2); - va_end(args2); - vsyslog(priority, format, args); - } + log_metav(priority, file, line, fn, format, args); } static int adm_version(struct udev *udev, int argc, char *argv[]) @@ -49,12 +37,14 @@ static int adm_version(struct udev *udev, int argc, char *argv[]) printf("%s\n", VERSION); return 0; } + static const struct udevadm_cmd udevadm_version = { .name = "version", .cmd = adm_version, }; static int adm_help(struct udev *udev, int argc, char *argv[]); + static const struct udevadm_cmd udevadm_help = { .name = "help", .cmd = adm_help, @@ -66,6 +56,7 @@ static const struct udevadm_cmd *udevadm_cmds[] = { &udevadm_settle, &udevadm_control, &udevadm_monitor, + &udevadm_hwdb, &udevadm_test, &udevadm_test_builtin, &udevadm_version, @@ -77,7 +68,7 @@ static int adm_help(struct udev *udev, int argc, char *argv[]) unsigned int i; fprintf(stderr, "Usage: udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]\n"); - for (i = 0; i < ARRAY_SIZE(udevadm_cmds); i++) + for (i = 0; i < ELEMENTSOF(udevadm_cmds); i++) if (udevadm_cmds[i]->help != NULL) printf(" %-12s %s\n", udevadm_cmds[i]->name, udevadm_cmds[i]->help); fprintf(stderr, "\n"); @@ -86,12 +77,9 @@ static int adm_help(struct udev *udev, int argc, char *argv[]) static int run_command(struct udev *udev, const struct udevadm_cmd *cmd, int argc, char *argv[]) { - if (cmd->debug) { - debug = true; - if (udev_get_log_priority(udev) < LOG_INFO) - udev_set_log_priority(udev, LOG_INFO); - } - info(udev, "calling: %s\n", cmd->name); + if (cmd->debug) + log_set_max_level(LOG_DEBUG); + log_debug("calling: %s\n", cmd->name); return cmd->cmd(udev, argc, argv); } @@ -112,9 +100,10 @@ int main(int argc, char *argv[]) if (udev == NULL) goto out; - udev_log_init("udevadm"); + log_parse_environment(); + log_open(); udev_set_log_fn(udev, udev_main_log); - udev_selinux_init(udev); + label_init("/dev"); for (;;) { int option; @@ -125,9 +114,8 @@ int main(int argc, char *argv[]) switch (option) { case 'd': - debug = true; - if (udev_get_log_priority(udev) < LOG_INFO) - udev_set_log_priority(udev, LOG_INFO); + log_set_max_level(LOG_DEBUG); + udev_set_log_priority(udev, LOG_DEBUG); break; case 'h': rc = adm_help(udev, argc, argv); @@ -141,13 +129,12 @@ int main(int argc, char *argv[]) } command = argv[optind]; - info(udev, "runtime dir '%s'\n", udev_get_run_path(udev)); - if (command != NULL) - for (i = 0; i < ARRAY_SIZE(udevadm_cmds); i++) { - if (strcmp(udevadm_cmds[i]->name, command) == 0) { + for (i = 0; i < ELEMENTSOF(udevadm_cmds); i++) { + if (streq(udevadm_cmds[i]->name, command)) { argc -= optind; argv += optind; + /* we need '0' here to reset the internal state */ optind = 0; rc = run_command(udev, udevadm_cmds[i], argc, argv); goto out; @@ -158,8 +145,8 @@ int main(int argc, char *argv[]) adm_help(udev, argc, argv); rc = 2; out: - udev_selinux_exit(udev); + label_finish(); udev_unref(udev); - udev_log_close(); + log_close(); return rc; }