ntpd: and real handling for -N, show usage w/o options; trim text
function old new delta ntp_init 317 348 +31 bb_msg_you_must_be_root - 17 +17 xsocket 66 76 +10 changepath 195 194 -1 bb_msg_perm_denied_are_you_root 35 34 -1 send_tree 355 353 -2 count_lines 74 72 -2 must_be_root 17 - -17 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 2/4 up/down: 58/-23) Total: 35 bytes text data bss dec hexfilename 832873 441 7548 840862 cd49ebusybox_old 832839 441 7548 840828 cd47cbusybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
18221506e5
commit
b2e5fc35eb
@ -1474,6 +1474,7 @@ extern const char bb_msg_write_error[];
|
|||||||
extern const char bb_msg_unknown[];
|
extern const char bb_msg_unknown[];
|
||||||
extern const char bb_msg_can_not_create_raw_socket[];
|
extern const char bb_msg_can_not_create_raw_socket[];
|
||||||
extern const char bb_msg_perm_denied_are_you_root[];
|
extern const char bb_msg_perm_denied_are_you_root[];
|
||||||
|
extern const char bb_msg_you_must_be_root[];
|
||||||
extern const char bb_msg_requires_arg[];
|
extern const char bb_msg_requires_arg[];
|
||||||
extern const char bb_msg_invalid_arg[];
|
extern const char bb_msg_invalid_arg[];
|
||||||
extern const char bb_msg_standard_input[];
|
extern const char bb_msg_standard_input[];
|
||||||
|
@ -3219,6 +3219,9 @@
|
|||||||
"\n -n Do not daemonize" \
|
"\n -n Do not daemonize" \
|
||||||
"\n -g Set system time even if offset is > 1000 sec" \
|
"\n -g Set system time even if offset is > 1000 sec" \
|
||||||
"\n -q Quit after clock is set" \
|
"\n -q Quit after clock is set" \
|
||||||
|
/* -N exists for mostly compat reasons, thus Not essential to inform */ \
|
||||||
|
/* the user that it exists: user may use nice as well */ \
|
||||||
|
/* "\n -N Run at high priority" */ \
|
||||||
"\n -l Run as server on port 123" \
|
"\n -l Run as server on port 123" \
|
||||||
"\n -p PEER Obtain time from PEER (may be repeated)" \
|
"\n -p PEER Obtain time from PEER (may be repeated)" \
|
||||||
|
|
||||||
|
@ -28,7 +28,8 @@ const char bb_msg_write_error[] ALIGN1 = "write error";
|
|||||||
const char bb_msg_read_error[] ALIGN1 = "read error";
|
const char bb_msg_read_error[] ALIGN1 = "read error";
|
||||||
const char bb_msg_unknown[] ALIGN1 = "(unknown)";
|
const char bb_msg_unknown[] ALIGN1 = "(unknown)";
|
||||||
const char bb_msg_can_not_create_raw_socket[] ALIGN1 = "can't create raw socket";
|
const char bb_msg_can_not_create_raw_socket[] ALIGN1 = "can't create raw socket";
|
||||||
const char bb_msg_perm_denied_are_you_root[] ALIGN1 = "permission denied. (are you root?)";
|
const char bb_msg_perm_denied_are_you_root[] ALIGN1 = "permission denied (are you root?)";
|
||||||
|
const char bb_msg_you_must_be_root[] ALIGN1 = "you must be root";
|
||||||
const char bb_msg_requires_arg[] ALIGN1 = "%s requires an argument";
|
const char bb_msg_requires_arg[] ALIGN1 = "%s requires an argument";
|
||||||
const char bb_msg_invalid_arg[] ALIGN1 = "invalid argument '%s' to '%s'";
|
const char bb_msg_invalid_arg[] ALIGN1 = "invalid argument '%s' to '%s'";
|
||||||
const char bb_msg_standard_input[] ALIGN1 = "standard input";
|
const char bb_msg_standard_input[] ALIGN1 = "standard input";
|
||||||
|
@ -388,7 +388,7 @@ int FAST_FUNC xsocket(int domain, int type, int protocol)
|
|||||||
if (domain == AF_PACKET) s = "PACKET";
|
if (domain == AF_PACKET) s = "PACKET";
|
||||||
if (domain == AF_NETLINK) s = "NETLINK";
|
if (domain == AF_NETLINK) s = "NETLINK";
|
||||||
IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";)
|
IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";)
|
||||||
bb_perror_msg_and_die("socket(AF_%s)", s);
|
bb_perror_msg_and_die("socket(AF_%s,%d,%d)", s, type, protocol);
|
||||||
#else
|
#else
|
||||||
bb_perror_msg_and_die("socket");
|
bb_perror_msg_and_die("socket");
|
||||||
#endif
|
#endif
|
||||||
|
@ -118,9 +118,9 @@ int crontab_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
if (sanitize_env_if_suid()) { /* Clears dangerous stuff, sets PATH */
|
if (sanitize_env_if_suid()) { /* Clears dangerous stuff, sets PATH */
|
||||||
/* run by non-root? */
|
/* Run by non-root */
|
||||||
if (opt_ler & (OPT_u|OPT_c))
|
if (opt_ler & (OPT_u|OPT_c))
|
||||||
bb_error_msg_and_die("only root can use -c or -u");
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt_ler & OPT_u) {
|
if (opt_ler & OPT_u) {
|
||||||
|
@ -7,7 +7,9 @@
|
|||||||
*/
|
*/
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
#include <netinet/ip.h> /* For IPTOS_LOWDELAY definition */
|
#include <netinet/ip.h> /* For IPTOS_LOWDELAY definition */
|
||||||
|
#ifndef IPTOS_LOWDELAY
|
||||||
|
# define IPTOS_LOWDELAY 0x10
|
||||||
|
#endif
|
||||||
#ifndef IP_PKTINFO
|
#ifndef IP_PKTINFO
|
||||||
# error "Sorry, your kernel has to support IP_PKTINFO"
|
# error "Sorry, your kernel has to support IP_PKTINFO"
|
||||||
#endif
|
#endif
|
||||||
@ -161,10 +163,11 @@ enum {
|
|||||||
OPT_n = (1 << 0),
|
OPT_n = (1 << 0),
|
||||||
OPT_g = (1 << 1),
|
OPT_g = (1 << 1),
|
||||||
OPT_q = (1 << 2),
|
OPT_q = (1 << 2),
|
||||||
|
OPT_N = (1 << 3),
|
||||||
/* Insert new options above this line. */
|
/* Insert new options above this line. */
|
||||||
/* Non-compat options: */
|
/* Non-compat options: */
|
||||||
OPT_p = (1 << 3),
|
OPT_p = (1 << 4),
|
||||||
OPT_l = (1 << 4),
|
OPT_l = (1 << 5) * ENABLE_FEATURE_NTPD_SERVER,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -877,16 +880,18 @@ static NOINLINE void ntp_init(char **argv)
|
|||||||
/* tzset(); - why? it's called automatically when needed, no? */
|
/* tzset(); - why? it's called automatically when needed, no? */
|
||||||
|
|
||||||
if (getuid())
|
if (getuid())
|
||||||
bb_error_msg_and_die("need root privileges");
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
|
|
||||||
peers = NULL;
|
peers = NULL;
|
||||||
opt_complementary = "dd:p::"; /* d: counter, p: list */
|
opt_complementary = "dd:p::"; /* d: counter, p: list */
|
||||||
opts = getopt32(argv,
|
opts = getopt32(argv,
|
||||||
"ngq" /* compat */
|
"ngqN" /* compat */
|
||||||
"p:"IF_FEATURE_NTPD_SERVER("l") /* NOT compat */
|
"p:"IF_FEATURE_NTPD_SERVER("l") /* NOT compat */
|
||||||
"d" /* compat */
|
"d" /* compat */
|
||||||
"46aAbLNx", /* compat, ignored */
|
"46aAbLx", /* compat, ignored */
|
||||||
&peers, &G.verbose);
|
&peers, &G.verbose);
|
||||||
|
if (!(opts & (OPT_p|OPT_l)))
|
||||||
|
bb_show_usage();
|
||||||
#if ENABLE_FEATURE_NTPD_SERVER
|
#if ENABLE_FEATURE_NTPD_SERVER
|
||||||
G.listen_fd = -1;
|
G.listen_fd = -1;
|
||||||
if (opts & OPT_l) {
|
if (opts & OPT_l) {
|
||||||
@ -903,6 +908,9 @@ static NOINLINE void ntp_init(char **argv)
|
|||||||
logmode = LOGMODE_NONE;
|
logmode = LOGMODE_NONE;
|
||||||
bb_daemonize(DAEMON_DEVNULL_STDIO);
|
bb_daemonize(DAEMON_DEVNULL_STDIO);
|
||||||
}
|
}
|
||||||
|
/* I hesitate to set -20 prio. -15 should be high enough for timekeeping */
|
||||||
|
if (opts & OPT_N)
|
||||||
|
setpriority(PRIO_PROCESS, 0, -15);
|
||||||
|
|
||||||
/* Set some globals */
|
/* Set some globals */
|
||||||
{
|
{
|
||||||
|
@ -239,7 +239,7 @@ int tcpudpsvd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
client = 0;
|
client = 0;
|
||||||
if ((getuid() == 0) && !(opts & OPT_u)) {
|
if ((getuid() == 0) && !(opts & OPT_u)) {
|
||||||
xfunc_exitcode = 100;
|
xfunc_exitcode = 100;
|
||||||
bb_error_msg_and_die("-U ssluser must be set when running as root");
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
}
|
}
|
||||||
if (opts & OPT_u)
|
if (opts & OPT_u)
|
||||||
if (!uidgid_get(&sslugid, ssluser, 1)) {
|
if (!uidgid_get(&sslugid, ssluser, 1)) {
|
||||||
|
@ -835,7 +835,7 @@ common_traceroute_main(int op, char **argv)
|
|||||||
* probe (e.g., on a multi-homed host).
|
* probe (e.g., on a multi-homed host).
|
||||||
*/
|
*/
|
||||||
if (getuid() != 0)
|
if (getuid() != 0)
|
||||||
bb_error_msg_and_die("you must be root to use -s");
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
}
|
}
|
||||||
if (op & OPT_WAITTIME)
|
if (op & OPT_WAITTIME)
|
||||||
waittime = xatou_range(waittime_str, 1, 24 * 60 * 60);
|
waittime = xatou_range(waittime_str, 1, 24 * 60 * 60);
|
||||||
|
@ -1801,8 +1801,6 @@ static int match_opt(const char *fs_opt, const char *O_opt)
|
|||||||
|
|
||||||
// Parse options, if necessary parse fstab/mtab, and call singlemount for
|
// Parse options, if necessary parse fstab/mtab, and call singlemount for
|
||||||
// each directory to be mounted.
|
// each directory to be mounted.
|
||||||
static const char must_be_root[] ALIGN1 = "you must be root";
|
|
||||||
|
|
||||||
int mount_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int mount_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int mount_main(int argc UNUSED_PARAM, char **argv)
|
int mount_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
@ -1871,7 +1869,7 @@ int mount_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
// argument when we get it.
|
// argument when we get it.
|
||||||
if (argv[1]) {
|
if (argv[1]) {
|
||||||
if (nonroot)
|
if (nonroot)
|
||||||
bb_error_msg_and_die(must_be_root);
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
mtpair->mnt_fsname = argv[0];
|
mtpair->mnt_fsname = argv[0];
|
||||||
mtpair->mnt_dir = argv[1];
|
mtpair->mnt_dir = argv[1];
|
||||||
mtpair->mnt_type = fstype;
|
mtpair->mnt_type = fstype;
|
||||||
@ -1888,7 +1886,7 @@ int mount_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
i = parse_mount_options(cmdopts, NULL); // FIXME: should be "long", not "int"
|
i = parse_mount_options(cmdopts, NULL); // FIXME: should be "long", not "int"
|
||||||
if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags
|
if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags
|
||||||
bb_error_msg_and_die(must_be_root);
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
|
|
||||||
// If we have a shared subtree flag, don't worry about fstab or mtab.
|
// If we have a shared subtree flag, don't worry about fstab or mtab.
|
||||||
if (ENABLE_FEATURE_MOUNT_FLAGS
|
if (ENABLE_FEATURE_MOUNT_FLAGS
|
||||||
@ -1947,7 +1945,7 @@ int mount_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
// No, mount -a won't mount anything,
|
// No, mount -a won't mount anything,
|
||||||
// even user mounts, for mere humans
|
// even user mounts, for mere humans
|
||||||
if (nonroot)
|
if (nonroot)
|
||||||
bb_error_msg_and_die(must_be_root);
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
|
|
||||||
// Does type match? (NULL matches always)
|
// Does type match? (NULL matches always)
|
||||||
if (!match_fstype(mtcur, fstype))
|
if (!match_fstype(mtcur, fstype))
|
||||||
@ -2012,7 +2010,7 @@ int mount_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
// fstab must have "users" or "user"
|
// fstab must have "users" or "user"
|
||||||
l = parse_mount_options(mtcur->mnt_opts, NULL);
|
l = parse_mount_options(mtcur->mnt_opts, NULL);
|
||||||
if (!(l & MOUNT_USERS))
|
if (!(l & MOUNT_USERS))
|
||||||
bb_error_msg_and_die(must_be_root);
|
bb_error_msg_and_die(bb_msg_you_must_be_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mount the last thing we found
|
// Mount the last thing we found
|
||||||
|
Loading…
Reference in New Issue
Block a user