From 94c78aa0b91f2150bd038866addf3d0ee69474a8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 12 Oct 2021 13:23:29 +0200 Subject: [PATCH] config system: move some options closer to relevalnt tool subdirectories Signed-off-by: Denys Vlasenko --- coreutils/Config.src | 19 ++++- coreutils/df.c | 20 +++++ libbb/Config.src | 185 ++++++++++++++---------------------------- mailutils/Config.src | 4 +- networking/Config.src | 26 ++++++ procps/Config.src | 9 +- 6 files changed, 132 insertions(+), 131 deletions(-) diff --git a/coreutils/Config.src b/coreutils/Config.src index 1bded03a6..6c9e47551 100644 --- a/coreutils/Config.src +++ b/coreutils/Config.src @@ -5,10 +5,6 @@ menu "Coreutils" -INSERT - -comment "Common options" - config FEATURE_VERBOSE bool "Support verbose options (usually -v) for various applets" default y @@ -17,6 +13,19 @@ config FEATURE_VERBOSE Also enables long option (--verbose) if it exists. Without this option, -v is accepted but ignored. +comment "Common options for date and touch" + +config FEATURE_TIMEZONE + bool "Allow timezone in dates" + default y + depends on DESKTOP + help + Permit the use of timezones when parsing user-provided data + strings, e.g. '1996-04-09 12:45:00 -0500'. + + This requires support for the '%z' extension to strptime() which + may not be available in all implementations. + comment "Common options for cp and mv" depends on CP || MV @@ -37,4 +46,6 @@ config FEATURE_HUMAN_READABLE help Allow df, du, and ls to have human readable output. +INSERT + endmenu diff --git a/coreutils/df.c b/coreutils/df.c index 9f8b3a71e..176aa079f 100644 --- a/coreutils/df.c +++ b/coreutils/df.c @@ -32,6 +32,26 @@ //config: -a Show all filesystems //config: -i Inodes //config: -B Blocksize +//config: +//config:config FEATURE_SKIP_ROOTFS +//config: bool "Skip rootfs in mount table" +//config: default y +//config: depends on DF +//config: help +//config: Ignore rootfs entry in mount table. +//config: +//config: In Linux, kernel has a special filesystem, rootfs, which is initially +//config: mounted on /. It contains initramfs data, if kernel is configured +//config: to have one. Usually, another file system is mounted over / early +//config: in boot process, and therefore most tools which manipulate +//config: mount table, such as df, will skip rootfs entry. +//config: +//config: However, some systems do not mount anything on /. +//config: If you need to configure busybox for one of these systems, +//config: you may find it useful to turn this option off to make df show +//config: initramfs statistics. +//config: +//config: Otherwise, choose Y. //applet:IF_DF(APPLET_NOEXEC(df, df, BB_DIR_BIN, BB_SUID_DROP, df)) diff --git a/libbb/Config.src b/libbb/Config.src index 58c5fad50..24b31fad9 100644 --- a/libbb/Config.src +++ b/libbb/Config.src @@ -61,32 +61,73 @@ config SHA3_SMALL 64-bit x86: +270 bytes of code, 45% faster 32-bit x86: +450 bytes of code, 75% faster -config FEATURE_FAST_TOP - bool "Faster /proc scanning code (+100 bytes)" - default n # all "fast or small" options default to small +config FEATURE_NON_POSIX_CP + bool "Non-POSIX, but safer, copying to special nodes" + default y help - This option makes top and ps ~20% faster (or 20% less CPU hungry), - but code size is slightly bigger. + With this option, "cp file symlink" will delete symlink + and create a regular file. This does not conform to POSIX, + but prevents a symlink attack. + Similarly, "cp file device" will not send file's data + to the device. (To do that, use "cat file >device") -config FEATURE_ETC_NETWORKS - bool "Support /etc/networks" +config FEATURE_VERBOSE_CP_MESSAGE + bool "Give more precise messages when copy fails (cp, mv etc)" default n help - Enable support for network names in /etc/networks. This is - a rarely used feature which allows you to use names - instead of IP/mask pairs in route command. + Error messages with this feature enabled: -config FEATURE_ETC_SERVICES - bool "Consult /etc/services even for well-known ports" - default n + $ cp file /does_not_exist/file + cp: cannot create '/does_not_exist/file': Path does not exist + $ cp file /vmlinuz/file + cp: cannot stat '/vmlinuz/file': Path has non-directory component + + If this feature is not enabled, they will be, respectively: + + cp: cannot create '/does_not_exist/file': No such file or directory + cp: cannot stat '/vmlinuz/file': Not a directory + + This will cost you ~60 bytes. + +config FEATURE_USE_SENDFILE + bool "Use sendfile system call" + default y help - Look up e.g. "telnet" and "http" in /etc/services file - instead of assuming ports 23 and 80. - This is almost never necessary (everybody uses standard ports), - and it makes sense to avoid reading this file. - If you disable this option, in the cases where port is explicitly - specified as a service name (e.g. "telnet HOST PORTNAME"), - it will still be looked up in /etc/services. + When enabled, busybox will use the kernel sendfile() function + instead of read/write loops to copy data between file descriptors + (for example, cp command does this a lot). + If sendfile() doesn't work, copying code falls back to read/write + loop. sendfile() was originally implemented for faster I/O + from files to sockets, but since Linux 2.6.33 it was extended + to work for many more file types. + +config FEATURE_COPYBUF_KB + int "Copy buffer size, in kilobytes" + range 1 1024 + default 4 + help + Size of buffer used by cp, mv, install, wget etc. + Buffers which are 4 kb or less will be allocated on stack. + Bigger buffers will be allocated with mmap, with fallback to 4 kb + stack buffer if mmap fails. + +config MONOTONIC_SYSCALL + bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" + default y + help + Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring + time intervals (time, ping, traceroute etc need this). + Probably requires Linux 2.6+. If not selected, gettimeofday + will be used instead (which gives wrong results if date/time + is reset). + +config IOCTL_HEX2STR_ERROR + bool "Use ioctl names rather than hex values in error messages" + default y + help + Use ioctl names rather than hex values in error messages + (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this + saves about 1400 bytes. config FEATURE_EDITING bool "Command line editing" @@ -302,107 +343,3 @@ config UNICODE_PRESERVE_BROKEN For example, this means that entering 'l', 's', ' ', 0xff, [Enter] at shell prompt will list file named 0xff (single char name with char value 255), not file named '?'. - -config FEATURE_NON_POSIX_CP - bool "Non-POSIX, but safer, copying to special nodes" - default y - help - With this option, "cp file symlink" will delete symlink - and create a regular file. This does not conform to POSIX, - but prevents a symlink attack. - Similarly, "cp file device" will not send file's data - to the device. (To do that, use "cat file >device") - -config FEATURE_VERBOSE_CP_MESSAGE - bool "Give more precise messages when copy fails (cp, mv etc)" - default n - help - Error messages with this feature enabled: - - $ cp file /does_not_exist/file - cp: cannot create '/does_not_exist/file': Path does not exist - $ cp file /vmlinuz/file - cp: cannot stat '/vmlinuz/file': Path has non-directory component - - If this feature is not enabled, they will be, respectively: - - cp: cannot create '/does_not_exist/file': No such file or directory - cp: cannot stat '/vmlinuz/file': Not a directory - - This will cost you ~60 bytes. - -config FEATURE_USE_SENDFILE - bool "Use sendfile system call" - default y - help - When enabled, busybox will use the kernel sendfile() function - instead of read/write loops to copy data between file descriptors - (for example, cp command does this a lot). - If sendfile() doesn't work, copying code falls back to read/write - loop. sendfile() was originally implemented for faster I/O - from files to sockets, but since Linux 2.6.33 it was extended - to work for many more file types. - -config FEATURE_COPYBUF_KB - int "Copy buffer size, in kilobytes" - range 1 1024 - default 4 - help - Size of buffer used by cp, mv, install, wget etc. - Buffers which are 4 kb or less will be allocated on stack. - Bigger buffers will be allocated with mmap, with fallback to 4 kb - stack buffer if mmap fails. - -config FEATURE_SKIP_ROOTFS - bool "Skip rootfs in mount table" - default y - help - Ignore rootfs entry in mount table. - - In Linux, kernel has a special filesystem, rootfs, which is initially - mounted on /. It contains initramfs data, if kernel is configured - to have one. Usually, another file system is mounted over / early - in boot process, and therefore most tools which manipulate - mount table, such as df, will skip rootfs entry. - - However, some systems do not mount anything on /. - If you need to configure busybox for one of these systems, - you may find it useful to turn this option off to make df show - initramfs statistics. - - Otherwise, choose Y. - -config MONOTONIC_SYSCALL - bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" - default y - help - Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring - time intervals (time, ping, traceroute etc need this). - Probably requires Linux 2.6+. If not selected, gettimeofday - will be used instead (which gives wrong results if date/time - is reset). - -config IOCTL_HEX2STR_ERROR - bool "Use ioctl names rather than hex values in error messages" - default y - help - Use ioctl names rather than hex values in error messages - (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this - saves about 1400 bytes. - -config FEATURE_HWIB - bool "Support infiniband HW" - default y - help - Support for printing infiniband addresses in network applets. - -config FEATURE_TIMEZONE - bool "Allow timezone in dates" - default y - depends on DESKTOP - help - Permit the use of timezones when parsing user-provided data - strings, e.g. '1996-04-09 12:45:00 -0500'. - - This requires support for the '%z' extension to strptime() which - may not be available in all implementations. diff --git a/mailutils/Config.src b/mailutils/Config.src index 6d47163e4..b3a3e506d 100644 --- a/mailutils/Config.src +++ b/mailutils/Config.src @@ -1,7 +1,5 @@ menu "Mail Utilities" -INSERT - config FEATURE_MIME_CHARSET string "Default charset" default "us-ascii" @@ -9,4 +7,6 @@ config FEATURE_MIME_CHARSET help Default charset of the message. +INSERT + endmenu diff --git a/networking/Config.src b/networking/Config.src index 04d644bc9..0942645c3 100644 --- a/networking/Config.src +++ b/networking/Config.src @@ -46,6 +46,32 @@ config VERBOSE_RESOLUTION_ERRORS "can't resolve 'hostname.com'" and want to know more. This may increase size of your executable a bit. +config FEATURE_ETC_NETWORKS + bool "Support /etc/networks" + default n + help + Enable support for network names in /etc/networks. This is + a rarely used feature which allows you to use names + instead of IP/mask pairs in route command. + +config FEATURE_ETC_SERVICES + bool "Consult /etc/services even for well-known ports" + default n + help + Look up e.g. "telnet" and "http" in /etc/services file + instead of assuming ports 23 and 80. + This is almost never necessary (everybody uses standard ports), + and it makes sense to avoid reading this file. + If you disable this option, in the cases where port is explicitly + specified as a service name (e.g. "telnet HOST PORTNAME"), + it will still be looked up in /etc/services. + +config FEATURE_HWIB + bool "Support infiniband HW" + default y + help + Support for printing infiniband addresses in network applets. + config FEATURE_TLS_SHA1 bool "In TLS code, support ciphers which use deprecated SHA1" depends on TLS diff --git a/procps/Config.src b/procps/Config.src index 2b1b8ab11..7fcce98c5 100644 --- a/procps/Config.src +++ b/procps/Config.src @@ -5,7 +5,12 @@ menu "Process Utilities" -INSERT +config FEATURE_FAST_TOP + bool "Faster /proc scanning code (+100 bytes)" + default n # all "fast or small" options default to small + help + This option makes top and ps ~20% faster (or 20% less CPU hungry), + but code size is slightly bigger. config FEATURE_SHOW_THREADS bool "Support thread display in ps/pstree/top" @@ -15,4 +20,6 @@ config FEATURE_SHOW_THREADS Enables the ps -T option, showing of threads in pstree, and 'h' command in top. +INSERT + endmenu