Move locale, unicode, and "use sendfile?" options to library tuning
[oweals/busybox.git] / libbb / Config.src
1 #
2 # For a description of the syntax of this configuration file,
3 # see scripts/kbuild/config-language.txt.
4 #
5
6 menu "Busybox Library Tuning"
7
8 INSERT
9
10 config PASSWORD_MINLEN
11         int "Minimum password length"
12         default 6
13         range 5 32
14         help
15           Minimum allowable password length.
16
17 config MD5_SMALL
18         int "MD5: Trade bytes for speed (0:fast, 3:slow)"
19         default 1  # all "fast or small" options default to small
20         range 0 3
21         help
22           Trade binary size versus speed for the md5sum algorithm.
23           Approximate values running uClibc and hashing
24           linux-2.4.4.tar.bz2 were:
25                             user times (sec)  text size (386)
26           0 (fastest)         1.1                6144
27           1                   1.4                5392
28           2                   3.0                5088
29           3 (smallest)        5.1                4912
30
31 config SHA3_SMALL
32         int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
33         default 1  # all "fast or small" options default to small
34         range 0 1
35         help
36           Trade binary size versus speed for the sha3sum algorithm.
37           SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
38           64-bit x86: +270 bytes of code, 45% faster
39           32-bit x86: +450 bytes of code, 75% faster
40
41 config FEATURE_FAST_TOP
42         bool "Faster /proc scanning code (+100 bytes)"
43         default n  # all "fast or small" options default to small
44         help
45           This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
46           but code size is slightly bigger.
47
48 config FEATURE_ETC_NETWORKS
49         bool "Support for /etc/networks"
50         default n
51         help
52           Enable support for network names in /etc/networks. This is
53           a rarely used feature which allows you to use names
54           instead of IP/mask pairs in route command.
55
56 config FEATURE_USE_TERMIOS
57         bool "Use termios to manipulate the screen"
58         default y
59         depends on MORE || TOP || POWERTOP
60         help
61           This option allows utilities such as 'more' and 'top' to determine
62           the size of the screen. If you leave this disabled, your utilities
63           that display things on the screen will be especially primitive and
64           will be unable to determine the current screen size, and will be
65           unable to move the cursor.
66
67 config FEATURE_EDITING
68         bool "Command line editing"
69         default y
70         help
71           Enable line editing (mainly for shell command line).
72
73 config FEATURE_EDITING_MAX_LEN
74         int "Maximum length of input"
75         range 128 8192
76         default 1024
77         depends on FEATURE_EDITING
78         help
79           Line editing code uses on-stack buffers for storage.
80           You may want to decrease this parameter if your target machine
81           benefits from smaller stack usage.
82
83 config FEATURE_EDITING_VI
84         bool "vi-style line editing commands"
85         default n
86         depends on FEATURE_EDITING
87         help
88           Enable vi-style line editing. In shells, this mode can be
89           turned on and off with "set -o vi" and "set +o vi".
90
91 config FEATURE_EDITING_HISTORY
92         int "History size"
93         # Don't allow way too big values here, code uses fixed "char *history[N]" struct member
94         range 0 9999
95         default 255
96         depends on FEATURE_EDITING
97         help
98           Specify command history size (0 - disable).
99
100 config FEATURE_EDITING_SAVEHISTORY
101         bool "History saving"
102         default y
103         depends on FEATURE_EDITING
104         help
105           Enable history saving in shells.
106
107 config FEATURE_EDITING_SAVE_ON_EXIT
108         bool "Save history on shell exit, not after every command"
109         default n
110         depends on FEATURE_EDITING_SAVEHISTORY
111         help
112           Save history on shell exit, not after every command.
113
114 config FEATURE_REVERSE_SEARCH
115         bool "Reverse history search"
116         default y
117         depends on FEATURE_EDITING
118         help
119           Enable readline-like Ctrl-R combination for reverse history search.
120           Increases code by about 0.5k.
121
122 config FEATURE_TAB_COMPLETION
123         bool "Tab completion"
124         default y
125         depends on FEATURE_EDITING
126         help
127           Enable tab completion.
128
129 config FEATURE_USERNAME_COMPLETION
130         bool "Username completion"
131         default n
132         depends on FEATURE_TAB_COMPLETION
133         help
134           Enable username completion.
135
136 config FEATURE_EDITING_FANCY_PROMPT
137         bool "Fancy shell prompts"
138         default y
139         depends on FEATURE_EDITING
140         help
141           Setting this option allows for prompts to use things like \w and
142           \$ and escape codes.
143
144 config FEATURE_EDITING_ASK_TERMINAL
145         bool "Query cursor position from terminal"
146         default n
147         depends on FEATURE_EDITING
148         help
149           Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
150           current cursor position. This information is used to make line
151           editing more robust in some cases.
152           If you are not sure whether your terminals respond to this code
153           correctly, or want to save on code size (about 400 bytes),
154           then do not turn this option on.
155
156 config LOCALE_SUPPORT
157         bool "Enable locale support (system needs locale for this to work)"
158         default n
159         help
160           Enable this if your system has locale support and you would like
161           busybox to support locale settings.
162
163 config UNICODE_SUPPORT
164         bool "Support Unicode"
165         default y
166         help
167           This makes various applets aware that one byte is not
168           one character on screen.
169
170           Busybox aims to eventually work correctly with Unicode displays.
171           Any older encodings are not guaranteed to work.
172           Probably by the time when busybox will be fully Unicode-clean,
173           other encodings will be mainly of historic interest.
174
175 config UNICODE_USING_LOCALE
176         bool "Use libc routines for Unicode (else uses internal ones)"
177         default n
178         depends on UNICODE_SUPPORT && LOCALE_SUPPORT
179         help
180           With this option on, Unicode support is implemented using libc
181           routines. Otherwise, internal implementation is used.
182           Internal implementation is smaller.
183
184 config FEATURE_CHECK_UNICODE_IN_ENV
185         bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
186         default n
187         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
188         help
189           With this option on, Unicode support is activated
190           only if locale-related variables have the value of the form
191           "xxxx.utf8"
192
193           Otherwise, Unicode support will be always enabled and active.
194
195 config SUBST_WCHAR
196         int "Character code to substitute unprintable characters with"
197         depends on UNICODE_SUPPORT
198         default 63
199         help
200           Typical values are 63 for '?' (works with any output device),
201           30 for ASCII substitute control code,
202           65533 (0xfffd) for Unicode replacement character.
203
204 config LAST_SUPPORTED_WCHAR
205         int "Range of supported Unicode characters"
206         depends on UNICODE_SUPPORT
207         default 767
208         help
209           Any character with Unicode value bigger than this is assumed
210           to be non-printable on output device. Many applets replace
211           such characters with substitution character.
212
213           The idea is that many valid printable Unicode chars
214           nevertheless are not displayed correctly. Think about
215           combining charachers, double-wide hieroglyphs, obscure
216           characters in dozens of ancient scripts...
217           Many terminals, terminal emulators, xterms etc will fail
218           to handle them correctly. Choose the smallest value
219           which suits your needs.
220
221           Typical values are:
222           126 - ASCII only
223           767 (0x2ff) - there are no combining chars in [0..767] range
224                         (the range includes Latin 1, Latin Ext. A and B),
225                         code is ~700 bytes smaller for this case.
226           4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
227                         code is ~300 bytes smaller for this case.
228           12799 (0x31ff) - nearly all non-ideographic characters are
229                         available in [0..12799] range, including
230                         East Asian scripts like katakana, hiragana, hangul,
231                         bopomofo...
232           0 - off, any valid printable Unicode character will be printed.
233
234 config UNICODE_COMBINING_WCHARS
235         bool "Allow zero-width Unicode characters on output"
236         default n
237         depends on UNICODE_SUPPORT
238         help
239           With this option off, any Unicode char with width of 0
240           is substituted on output.
241
242 config UNICODE_WIDE_WCHARS
243         bool "Allow wide Unicode characters on output"
244         default n
245         depends on UNICODE_SUPPORT
246         help
247           With this option off, any Unicode char with width > 1
248           is substituted on output.
249
250 config UNICODE_BIDI_SUPPORT
251         bool "Bidirectional character-aware line input"
252         default n
253         depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE
254         help
255           With this option on, right-to-left Unicode characters
256           are treated differently on input (e.g. cursor movement).
257
258 config UNICODE_NEUTRAL_TABLE
259         bool "In bidi input, support non-ASCII neutral chars too"
260         default n
261         depends on UNICODE_BIDI_SUPPORT
262         help
263           In most cases it's enough to treat only ASCII non-letters
264           (i.e. punctuation, numbers and space) as characters
265           with neutral directionality.
266           With this option on, more extensive (and bigger) table
267           of neutral chars will be used.
268
269 config UNICODE_PRESERVE_BROKEN
270         bool "Make it possible to enter sequences of chars which are not Unicode"
271         default n
272         depends on UNICODE_SUPPORT
273         help
274           With this option on, on line-editing input (such as used by shells)
275           invalid UTF-8 bytes are not substituted with the selected
276           substitution character.
277           For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
278           at shell prompt will list file named 0xff (single char name
279           with char value 255), not file named '?'.
280
281 config FEATURE_NON_POSIX_CP
282         bool "Non-POSIX, but safer, copying to special nodes"
283         default y
284         help
285           With this option, "cp file symlink" will delete symlink
286           and create a regular file. This does not conform to POSIX,
287           but prevents a symlink attack.
288           Similarly, "cp file device" will not send file's data
289           to the device. (To do that, use "cat file >device")
290
291 config FEATURE_VERBOSE_CP_MESSAGE
292         bool "Give more precise messages when copy fails (cp, mv etc)"
293         default n
294         help
295           Error messages with this feature enabled:
296             $ cp file /does_not_exist/file
297             cp: cannot create '/does_not_exist/file': Path does not exist
298             $ cp file /vmlinuz/file
299             cp: cannot stat '/vmlinuz/file': Path has non-directory component
300           If this feature is not enabled, they will be, respectively:
301             cp: cannot create '/does_not_exist/file': No such file or directory
302             cp: cannot stat '/vmlinuz/file': Not a directory
303           This will cost you ~60 bytes.
304
305 config FEATURE_USE_SENDFILE
306         bool "Use sendfile system call"
307         default y
308         select PLATFORM_LINUX
309         help
310           When enabled, busybox will use the kernel sendfile() function
311           instead of read/write loops to copy data between file descriptors
312           (for example, cp command does this a lot).
313           If sendfile() doesn't work, copying code falls back to read/write
314           loop. sendfile() was originally implemented for faster I/O
315           from files to sockets, but since Linux 2.6.33 it was extended
316           to work for many more file types.
317
318 config FEATURE_COPYBUF_KB
319         int "Copy buffer size, in kilobytes"
320         range 1 1024
321         default 4
322         help
323           Size of buffer used by cp, mv, install, wget etc.
324           Buffers which are 4 kb or less will be allocated on stack.
325           Bigger buffers will be allocated with mmap, with fallback to 4 kb
326           stack buffer if mmap fails.
327
328 config FEATURE_SKIP_ROOTFS
329         bool "Skip rootfs in mount table"
330         default y
331         help
332           Ignore rootfs entry in mount table.
333
334           In Linux, kernel has a special filesystem, rootfs, which is initially
335           mounted on /. It contains initramfs data, if kernel is configured
336           to have one. Usually, another file system is mounted over / early
337           in boot process, and therefore most tools which manipulate
338           mount table, such as df, will skip rootfs entry.
339
340           However, some systems do not mount anything on /.
341           If you need to configure busybox for one of these systems,
342           you may find it useful to turn this option off to make df show
343           initramfs statistics.
344
345           Otherwise, choose Y.
346
347 config MONOTONIC_SYSCALL
348         bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
349         default y
350         select PLATFORM_LINUX
351         help
352           Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
353           time intervals (time, ping, traceroute etc need this).
354           Probably requires Linux 2.6+. If not selected, gettimeofday
355           will be used instead (which gives wrong results if date/time
356           is reset).
357
358 config IOCTL_HEX2STR_ERROR
359         bool "Use ioctl names rather than hex values in error messages"
360         default y
361         help
362           Use ioctl names rather than hex values in error messages
363           (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
364           saves about 1400 bytes.
365
366 config FEATURE_HWIB
367         bool "Support infiniband HW"
368         default y
369         help
370           Support for printing infiniband addresses in
371           network applets.
372
373 endmenu