X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=miscutils%2Fadjtimex.c;h=c1718e9094fec5054a5c2a47acae45cf39d3bfb3;hb=9b70f197b4dd5be47c5d0d4479525efe012964ee;hp=04ba5636fc469674b02593410f4870f4e1bcf2b2;hpb=72089cf6b4a77214ec4fd21d5ee5bf56958781cb;p=oweals%2Fbusybox.git diff --git a/miscutils/adjtimex.c b/miscutils/adjtimex.c index 04ba5636f..c1718e909 100644 --- a/miscutils/adjtimex.c +++ b/miscutils/adjtimex.c @@ -1,6 +1,6 @@ /* vi: set sw=4 ts=4: */ /* - * adjtimex.c - read, and possibly modify, the Linux kernel `timex' variables. + * adjtimex.c - read, and possibly modify, the Linux kernel 'timex' variables. * * Originally written: October 1997 * Last hack: March 2001 @@ -18,7 +18,7 @@ //config: Adjtimex reads and optionally sets adjustment parameters for //config: the Linux clock adjustment algorithm. -//applet:IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_ADJTIMEX(APPLET_NOFORK(adjtimex, adjtimex, BB_DIR_SBIN, BB_SUID_DROP, adjtimex)) //kbuild:lib-$(CONFIG_ADJTIMEX) += adjtimex.o @@ -90,13 +90,15 @@ int adjtimex_main(int argc UNUSED_PARAM, char **argv) unsigned opt; char *opt_o, *opt_f, *opt_p, *opt_t; struct timex txc; - int i, ret; + int ret; const char *descript; - opt_complementary = "=0"; /* no valid non-option parameters */ - opt = getopt32(argv, "qo:f:p:t:", - &opt_o, &opt_f, &opt_p, &opt_t); - txc.modes = 0; + memset(&txc, 0, sizeof(txc)); + + opt = getopt32(argv, "^" "qo:f:p:t:" + "\0" "=0"/*no valid non-option args*/, + &opt_o, &opt_f, &opt_p, &opt_t + ); //if (opt & 0x1) // -q if (opt & 0x2) { // -o txc.offset = xatol(opt_o); @@ -115,15 +117,19 @@ int adjtimex_main(int argc UNUSED_PARAM, char **argv) txc.modes |= ADJ_TICK; } - ret = adjtimex(&txc); + /* It's NOFORK applet because the code is very simple: + * just some printf. No opens, no allocs. + * If you need to make it more complex, feel free to downgrade to NOEXEC + */ - if (ret < 0) { + ret = adjtimex(&txc); + if (ret < 0) bb_perror_nomsg_and_die(); - } if (!(opt & OPT_quiet)) { const char *sep; const char *name; + int i; printf( " mode: %d\n" @@ -132,8 +138,9 @@ int adjtimex_main(int argc UNUSED_PARAM, char **argv) " maxerror: %ld\n" " esterror: %ld\n" " status: %d (", - txc.modes, txc.offset, txc.freq, txc.maxerror, - txc.esterror, txc.status); + txc.modes, txc.offset, txc.freq, txc.maxerror, + txc.esterror, txc.status + ); /* representative output of next code fragment: * "PLL | PPSTIME" @@ -159,9 +166,11 @@ int adjtimex_main(int argc UNUSED_PARAM, char **argv) " time.tv_sec: %ld\n" " time.tv_usec: %ld\n" " return value: %d (%s)\n", - txc.constant, - txc.precision, txc.tolerance, txc.tick, - (long)txc.time.tv_sec, (long)txc.time.tv_usec, ret, descript); + txc.constant, + txc.precision, txc.tolerance, txc.tick, + (long)txc.time.tv_sec, (long)txc.time.tv_usec, + ret, descript + ); } return 0;