diff options
Diffstat (limited to 'src/udev/udevadm-control.c')
-rw-r--r-- | src/udev/udevadm-control.c | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c deleted file mode 100644 index 6f8e96a123..0000000000 --- a/src/udev/udevadm-control.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2005-2011 Kay Sievers <kay@vrfy.org> - * - * 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 - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include <errno.h> -#include <getopt.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "time-util.h" -#include "udev-util.h" -#include "udev.h" - -static void print_help(void) { - printf("%s control COMMAND\n\n" - "Control the udev daemon.\n\n" - " -h --help Show this help\n" - " --version Show package version\n" - " -e --exit Instruct the daemon to cleanup and exit\n" - " -l --log-priority=LEVEL Set the udev log level for the daemon\n" - " -s --stop-exec-queue Do not execute events, queue only\n" - " -S --start-exec-queue Execute events, flush queue\n" - " -R --reload Reload rules and databases\n" - " -p --property=KEY=VALUE Set a global property for all events\n" - " -m --children-max=N Maximum number of children\n" - " --timeout=SECONDS Maximum time to block for a reply\n" - , program_invocation_short_name); -} - -static int adm_control(struct udev *udev, int argc, char *argv[]) { - _cleanup_udev_ctrl_unref_ struct udev_ctrl *uctrl = NULL; - int timeout = 60; - int rc = 1, c; - - static const struct option options[] = { - { "exit", no_argument, NULL, 'e' }, - { "log-priority", required_argument, NULL, 'l' }, - { "stop-exec-queue", no_argument, NULL, 's' }, - { "start-exec-queue", no_argument, NULL, 'S' }, - { "reload", no_argument, NULL, 'R' }, - { "reload-rules", no_argument, NULL, 'R' }, /* alias for -R */ - { "property", required_argument, NULL, 'p' }, - { "env", required_argument, NULL, 'p' }, /* alias for -p */ - { "children-max", required_argument, NULL, 'm' }, - { "timeout", required_argument, NULL, 't' }, - { "help", no_argument, NULL, 'h' }, - {} - }; - - if (getuid() != 0) { - log_error("root privileges required"); - return 1; - } - - uctrl = udev_ctrl_new(udev); - if (uctrl == NULL) - return 2; - - while ((c = getopt_long(argc, argv, "el:sSRp:m:h", options, NULL)) >= 0) - switch (c) { - case 'e': - if (udev_ctrl_send_exit(uctrl, timeout) < 0) - rc = 2; - else - rc = 0; - break; - case 'l': { - int i; - - i = util_log_priority(optarg); - if (i < 0) { - log_error("invalid number '%s'", optarg); - return rc; - } - if (udev_ctrl_send_set_log_level(uctrl, util_log_priority(optarg), timeout) < 0) - rc = 2; - else - rc = 0; - break; - } - case 's': - if (udev_ctrl_send_stop_exec_queue(uctrl, timeout) < 0) - rc = 2; - else - rc = 0; - break; - case 'S': - if (udev_ctrl_send_start_exec_queue(uctrl, timeout) < 0) - rc = 2; - else - rc = 0; - break; - case 'R': - if (udev_ctrl_send_reload(uctrl, timeout) < 0) - rc = 2; - else - rc = 0; - break; - case 'p': - if (strchr(optarg, '=') == NULL) { - log_error("expect <KEY>=<value> instead of '%s'", optarg); - return rc; - } - if (udev_ctrl_send_set_env(uctrl, optarg, timeout) < 0) - rc = 2; - else - rc = 0; - break; - case 'm': { - char *endp; - int i; - - i = strtoul(optarg, &endp, 0); - if (endp[0] != '\0' || i < 1) { - log_error("invalid number '%s'", optarg); - return rc; - } - if (udev_ctrl_send_set_children_max(uctrl, i, timeout) < 0) - rc = 2; - else - rc = 0; - break; - } - case 't': { - usec_t s; - int seconds; - int r; - - r = parse_sec(optarg, &s); - if (r < 0) - return log_error_errno(r, "Failed to parse timeout value '%s'.", optarg); - - if (((s + USEC_PER_SEC - 1) / USEC_PER_SEC) > INT_MAX) - log_error("Timeout value is out of range."); - else { - seconds = s != USEC_INFINITY ? (int) ((s + USEC_PER_SEC - 1) / USEC_PER_SEC) : INT_MAX; - timeout = seconds; - rc = 0; - } - break; - } - case 'h': - print_help(); - rc = 0; - break; - } - - if (optind < argc) - log_error("Extraneous argument: %s", argv[optind]); - else if (optind == 1) - log_error("Option missing"); - return rc; -} - -const struct udevadm_cmd udevadm_control = { - .name = "control", - .cmd = adm_control, - .help = "Control the udev daemon", -}; |