X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=miscutils%2Fwatchdog.c;h=58a6065536f1d5c5b4da7ae28e38269eaaa69719;hb=5bc3f05a23ce7347c51c78c616c19f60bf3b805a;hp=b1167dc90c8a4eb2b4a36dafdc59ec3f00bc166f;hpb=cde8f53c6054d35e1ec327bb2952aebeadc9ae48;p=oweals%2Fbusybox.git diff --git a/miscutils/watchdog.c b/miscutils/watchdog.c index b1167dc90..58a606553 100644 --- a/miscutils/watchdog.c +++ b/miscutils/watchdog.c @@ -4,20 +4,7 @@ * * Copyright (C) 2003 Paul Mundt * - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. */ #include @@ -33,33 +20,27 @@ static unsigned int timer_duration = 30; /* Watchdog file descriptor */ static int fd; -static void watchdog_shutdown(int unused) +static void watchdog_shutdown(int ATTRIBUTE_UNUSED unused) { write(fd, "V", 1); /* Magic */ close(fd); exit(0); } -extern int watchdog_main(int argc, char **argv) +int watchdog_main(int argc, char **argv) { - int opt; - while ((opt = getopt(argc, argv, "t:")) > 0) { - switch (opt) { - case 't': - timer_duration = bb_xgetlarg(optarg, 10, 0, INT_MAX); - break; - default: - bb_show_usage(); - } - } + char *t_arg; + unsigned long flags; + flags = bb_getopt_ulflags(argc, argv, "t:", &t_arg); + if (flags & 1) + timer_duration = bb_xgetlarg(t_arg, 10, 0, INT_MAX); /* We're only interested in the watchdog device .. */ if (optind < argc - 1 || argc == 1) bb_show_usage(); - if (daemon(0, 1) < 0) - bb_perror_msg_and_die("Failed forking watchdog daemon"); + bb_xdaemon(0, 1); signal(SIGHUP, watchdog_shutdown); signal(SIGINT, watchdog_shutdown); @@ -67,7 +48,7 @@ extern int watchdog_main(int argc, char **argv) fd = bb_xopen(argv[argc - 1], O_WRONLY); while (1) { - /* + /* * Make sure we clear the counter before sleeping, as the counter value * is undefined at this point -- PFM */