X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=miscutils%2Frunlevel.c;h=0b2098564595d178518aec9ef1240fe3bad8df7a;hb=d72e804e6db1bd6eb2417961004b4fe33aba9384;hp=dfa846f81b2255a0757c53c6d79e9c257334938c;hpb=62d7acc97efe6a4c3307918c51efee7acb0e9c30;p=oweals%2Fbusybox.git diff --git a/miscutils/runlevel.c b/miscutils/runlevel.c index dfa846f81..0b2098564 100644 --- a/miscutils/runlevel.c +++ b/miscutils/runlevel.c @@ -1,43 +1,67 @@ +/* vi: set sw=4 ts=4: */ /* - * runlevel Prints out the previous and the current runlevel. + * Prints out the previous and the current runlevel. * - * Version: @(#)runlevel 1.20 16-Apr-1997 MvS + * Version: @(#)runlevel 1.20 16-Apr-1997 MvS * - * This file is part of the sysvinit suite, - * Copyright 1991-1997 Miquel van Smoorenburg. + * This file is part of the sysvinit suite, + * Copyright 1991-1997 Miquel van Smoorenburg. * - * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. + * Licensed under GPLv2 or later, see file LICENSE in this source tree. * - * initially busyboxified by Bernhard Fischer + * initially busyboxified by Bernhard Reutner-Fischer */ +//config:config RUNLEVEL +//config: bool "runlevel (518 bytes)" +//config: default y +//config: depends on FEATURE_UTMP +//config: help +//config: find the current and previous system runlevel. +//config: +//config: This applet uses utmp but does not rely on busybox supporing +//config: utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc. -#include -#include -#include -#include +//applet:IF_RUNLEVEL(APPLET_NOEXEC(runlevel, runlevel, BB_DIR_SBIN, BB_SUID_DROP, runlevel)) -#include "busybox.h" +//kbuild:lib-$(CONFIG_RUNLEVEL) += runlevel.o -int runlevel_main(int argc, char *argv[]) +//usage:#define runlevel_trivial_usage +//usage: "[FILE]" +//usage:#define runlevel_full_usage "\n\n" +//usage: "Find the current and previous system runlevel\n" +//usage: "\n" +//usage: "If no utmp FILE exists or if no runlevel record can be found,\n" +//usage: "print \"unknown\"" +//usage: +//usage:#define runlevel_example_usage +//usage: "$ runlevel /var/run/utmp\n" +//usage: "N 2" + +#include "libbb.h" + +int runlevel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int runlevel_main(int argc UNUSED_PARAM, char **argv) { - struct utmp *ut; - char prev; - - if (argc > 1) utmpname(argv[1]); - - setutent(); - while ((ut = getutent()) != NULL) { - if (ut->ut_type == RUN_LVL) { - prev = ut->ut_pid / 256; - if (prev == 0) prev = 'N'; - printf("%c %c\n", prev, ut->ut_pid % 256); - endutent(); - return (0); + struct utmpx *ut; + char prev; + + if (argv[1]) utmpxname(argv[1]); + + setutxent(); + while ((ut = getutxent()) != NULL) { + if (ut->ut_type == RUN_LVL) { + prev = ut->ut_pid / 256; + if (prev == 0) prev = 'N'; + printf("%c %c\n", prev, ut->ut_pid % 256); + if (ENABLE_FEATURE_CLEAN_UP) + endutxent(); + return 0; + } } - } - printf("unknown\n"); - endutent(); - return (1); -} + puts("unknown"); + if (ENABLE_FEATURE_CLEAN_UP) + endutxent(); + return 1; +}