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