diff options
author | Ron Yorston <rmy@pobox.com> | 2017-07-24 11:40:28 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2017-07-24 12:03:28 +0100 |
commit | 60411636073cdc08e8005f0de00098e6dd00eaf5 (patch) | |
tree | 58673b64af1e663280be81f798c8f66ce116d1dd /libbb | |
parent | eeceafbc5c4caf513c6d92b7d71ecb0ccd89a3f8 (diff) | |
parent | b72f1ef17b97802d33f0ac522f64bea0f65442c5 (diff) | |
download | busybox-w32-60411636073cdc08e8005f0de00098e6dd00eaf5.tar.gz busybox-w32-60411636073cdc08e8005f0de00098e6dd00eaf5.tar.bz2 busybox-w32-60411636073cdc08e8005f0de00098e6dd00eaf5.zip |
Merge branch 'busybox' into merge
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/Config.src | 286 | ||||
-rw-r--r-- | libbb/common_bufsiz.c | 46 | ||||
-rw-r--r-- | libbb/parse_config.c | 2 | ||||
-rw-r--r-- | libbb/u_signal_names.c | 4 | ||||
-rw-r--r-- | libbb/xfuncs_printf.c | 34 |
5 files changed, 190 insertions, 182 deletions
diff --git a/libbb/Config.src b/libbb/Config.src index 16c79dbf0..9da8b65ee 100644 --- a/libbb/Config.src +++ b/libbb/Config.src | |||
@@ -11,14 +11,14 @@ choice | |||
11 | prompt "Buffer allocation policy" | 11 | prompt "Buffer allocation policy" |
12 | default FEATURE_BUFFERS_USE_MALLOC | 12 | default FEATURE_BUFFERS_USE_MALLOC |
13 | help | 13 | help |
14 | There are 3 ways BusyBox can handle buffer allocations: | 14 | There are 3 ways BusyBox can handle buffer allocations: |
15 | - Use malloc. This costs code size for the call to xmalloc. | 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 | 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. | 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 | 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 | 19 | MMU (and OS support), but wastes runtime RAM for uCLinux. This |
20 | behavior was the only one available for BusyBox versions 0.48 and | 20 | behavior was the only one available for BusyBox versions 0.48 and |
21 | earlier. | 21 | earlier. |
22 | 22 | ||
23 | config FEATURE_BUFFERS_USE_MALLOC | 23 | config FEATURE_BUFFERS_USE_MALLOC |
24 | bool "Allocate with Malloc" | 24 | bool "Allocate with Malloc" |
@@ -36,52 +36,52 @@ config PASSWORD_MINLEN | |||
36 | default 6 | 36 | default 6 |
37 | range 5 32 | 37 | range 5 32 |
38 | help | 38 | help |
39 | Minimum allowable password length. | 39 | Minimum allowable password length. |
40 | 40 | ||
41 | config MD5_SMALL | 41 | config MD5_SMALL |
42 | int "MD5: Trade bytes for speed (0:fast, 3:slow)" | 42 | int "MD5: Trade bytes for speed (0:fast, 3:slow)" |
43 | default 1 # all "fast or small" options default to small | 43 | default 1 # all "fast or small" options default to small |
44 | range 0 3 | 44 | range 0 3 |
45 | help | 45 | help |
46 | Trade binary size versus speed for the md5sum algorithm. | 46 | Trade binary size versus speed for the md5sum algorithm. |
47 | Approximate values running uClibc and hashing | 47 | Approximate values running uClibc and hashing |
48 | linux-2.4.4.tar.bz2 were: | 48 | linux-2.4.4.tar.bz2 were: |
49 | user times (sec) text size (386) | 49 | value user times (sec) text size (386) |
50 | 0 (fastest) 1.1 6144 | 50 | 0 (fastest) 1.1 6144 |
51 | 1 1.4 5392 | 51 | 1 1.4 5392 |
52 | 2 3.0 5088 | 52 | 2 3.0 5088 |
53 | 3 (smallest) 5.1 4912 | 53 | 3 (smallest) 5.1 4912 |
54 | 54 | ||
55 | config SHA3_SMALL | 55 | config SHA3_SMALL |
56 | int "SHA3: Trade bytes for speed (0:fast, 1:slow)" | 56 | int "SHA3: Trade bytes for speed (0:fast, 1:slow)" |
57 | default 1 # all "fast or small" options default to small | 57 | default 1 # all "fast or small" options default to small |
58 | range 0 1 | 58 | range 0 1 |
59 | help | 59 | help |
60 | Trade binary size versus speed for the sha3sum algorithm. | 60 | Trade binary size versus speed for the sha3sum algorithm. |
61 | SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate): | 61 | SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate): |
62 | 64-bit x86: +270 bytes of code, 45% faster | 62 | 64-bit x86: +270 bytes of code, 45% faster |
63 | 32-bit x86: +450 bytes of code, 75% faster | 63 | 32-bit x86: +450 bytes of code, 75% faster |
64 | 64 | ||
65 | config FEATURE_FAST_TOP | 65 | config FEATURE_FAST_TOP |
66 | bool "Faster /proc scanning code (+100 bytes)" | 66 | bool "Faster /proc scanning code (+100 bytes)" |
67 | default n # all "fast or small" options default to small | 67 | default n # all "fast or small" options default to small |
68 | help | 68 | help |
69 | This option makes top and ps ~20% faster (or 20% less CPU hungry), | 69 | This option makes top and ps ~20% faster (or 20% less CPU hungry), |
70 | but code size is slightly bigger. | 70 | but code size is slightly bigger. |
71 | 71 | ||
72 | config FEATURE_ETC_NETWORKS | 72 | config FEATURE_ETC_NETWORKS |
73 | bool "Support /etc/networks" | 73 | bool "Support /etc/networks" |
74 | default n | 74 | default n |
75 | help | 75 | help |
76 | Enable support for network names in /etc/networks. This is | 76 | Enable support for network names in /etc/networks. This is |
77 | a rarely used feature which allows you to use names | 77 | a rarely used feature which allows you to use names |
78 | instead of IP/mask pairs in route command. | 78 | instead of IP/mask pairs in route command. |
79 | 79 | ||
80 | config FEATURE_EDITING | 80 | config FEATURE_EDITING |
81 | bool "Command line editing" | 81 | bool "Command line editing" |
82 | default y | 82 | default y |
83 | help | 83 | help |
84 | Enable line editing (mainly for shell command line). | 84 | Enable line editing (mainly for shell command line). |
85 | 85 | ||
86 | config FEATURE_EDITING_MAX_LEN | 86 | config FEATURE_EDITING_MAX_LEN |
87 | int "Maximum length of input" | 87 | int "Maximum length of input" |
@@ -89,17 +89,17 @@ config FEATURE_EDITING_MAX_LEN | |||
89 | default 1024 | 89 | default 1024 |
90 | depends on FEATURE_EDITING | 90 | depends on FEATURE_EDITING |
91 | help | 91 | help |
92 | Line editing code uses on-stack buffers for storage. | 92 | Line editing code uses on-stack buffers for storage. |
93 | You may want to decrease this parameter if your target machine | 93 | You may want to decrease this parameter if your target machine |
94 | benefits from smaller stack usage. | 94 | benefits from smaller stack usage. |
95 | 95 | ||
96 | config FEATURE_EDITING_VI | 96 | config FEATURE_EDITING_VI |
97 | bool "vi-style line editing commands" | 97 | bool "vi-style line editing commands" |
98 | default n | 98 | default n |
99 | depends on FEATURE_EDITING | 99 | depends on FEATURE_EDITING |
100 | help | 100 | help |
101 | Enable vi-style line editing. In shells, this mode can be | 101 | Enable vi-style line editing. In shells, this mode can be |
102 | turned on and off with "set -o vi" and "set +o vi". | 102 | turned on and off with "set -o vi" and "set +o vi". |
103 | 103 | ||
104 | config FEATURE_EDITING_HISTORY | 104 | config FEATURE_EDITING_HISTORY |
105 | int "History size" | 105 | int "History size" |
@@ -108,29 +108,29 @@ config FEATURE_EDITING_HISTORY | |||
108 | default 255 | 108 | default 255 |
109 | depends on FEATURE_EDITING | 109 | depends on FEATURE_EDITING |
110 | help | 110 | help |
111 | Specify command history size (0 - disable). | 111 | Specify command history size (0 - disable). |
112 | 112 | ||
113 | config FEATURE_EDITING_SAVEHISTORY | 113 | config FEATURE_EDITING_SAVEHISTORY |
114 | bool "History saving" | 114 | bool "History saving" |
115 | default y | 115 | default y |
116 | depends on FEATURE_EDITING | 116 | depends on FEATURE_EDITING |
117 | help | 117 | help |
118 | Enable history saving in shells. | 118 | Enable history saving in shells. |
119 | 119 | ||
120 | config FEATURE_EDITING_SAVE_ON_EXIT | 120 | config FEATURE_EDITING_SAVE_ON_EXIT |
121 | bool "Save history on shell exit, not after every command" | 121 | bool "Save history on shell exit, not after every command" |
122 | default n | 122 | default n |
123 | depends on FEATURE_EDITING_SAVEHISTORY | 123 | depends on FEATURE_EDITING_SAVEHISTORY |
124 | help | 124 | help |
125 | Save history on shell exit, not after every command. | 125 | Save history on shell exit, not after every command. |
126 | 126 | ||
127 | config FEATURE_REVERSE_SEARCH | 127 | config FEATURE_REVERSE_SEARCH |
128 | bool "Reverse history search" | 128 | bool "Reverse history search" |
129 | default y | 129 | default y |
130 | depends on FEATURE_EDITING | 130 | depends on FEATURE_EDITING |
131 | help | 131 | help |
132 | Enable readline-like Ctrl-R combination for reverse history search. | 132 | Enable readline-like Ctrl-R combination for reverse history search. |
133 | Increases code by about 0.5k. | 133 | Increases code by about 0.5k. |
134 | 134 | ||
135 | config FEATURE_TAB_COMPLETION | 135 | config FEATURE_TAB_COMPLETION |
136 | bool "Tab completion" | 136 | bool "Tab completion" |
@@ -147,237 +147,237 @@ config FEATURE_EDITING_FANCY_PROMPT | |||
147 | default y | 147 | default y |
148 | depends on FEATURE_EDITING | 148 | depends on FEATURE_EDITING |
149 | help | 149 | help |
150 | Setting this option allows for prompts to use things like \w and | 150 | Setting this option allows for prompts to use things like \w and |
151 | \$ and escape codes. | 151 | \$ and escape codes. |
152 | 152 | ||
153 | config FEATURE_EDITING_ASK_TERMINAL | 153 | config FEATURE_EDITING_ASK_TERMINAL |
154 | bool "Query cursor position from terminal" | 154 | bool "Query cursor position from terminal" |
155 | default n | 155 | default n |
156 | depends on FEATURE_EDITING | 156 | depends on FEATURE_EDITING |
157 | help | 157 | help |
158 | Allow usage of "ESC [ 6 n" sequence. Terminal answers back with | 158 | Allow usage of "ESC [ 6 n" sequence. Terminal answers back with |
159 | current cursor position. This information is used to make line | 159 | current cursor position. This information is used to make line |
160 | editing more robust in some cases. | 160 | editing more robust in some cases. |
161 | If you are not sure whether your terminals respond to this code | 161 | If you are not sure whether your terminals respond to this code |
162 | correctly, or want to save on code size (about 400 bytes), | 162 | correctly, or want to save on code size (about 400 bytes), |
163 | then do not turn this option on. | 163 | then do not turn this option on. |
164 | 164 | ||
165 | config LOCALE_SUPPORT | 165 | config LOCALE_SUPPORT |
166 | bool "Enable locale support (system needs locale for this to work)" | 166 | bool "Enable locale support (system needs locale for this to work)" |
167 | default n | 167 | default n |
168 | help | 168 | help |
169 | Enable this if your system has locale support and you would like | 169 | Enable this if your system has locale support and you would like |
170 | busybox to support locale settings. | 170 | busybox to support locale settings. |
171 | 171 | ||
172 | config UNICODE_SUPPORT | 172 | config UNICODE_SUPPORT |
173 | bool "Support Unicode" | 173 | bool "Support Unicode" |
174 | default y | 174 | default y |
175 | help | 175 | help |
176 | This makes various applets aware that one byte is not | 176 | This makes various applets aware that one byte is not |
177 | one character on screen. | 177 | one character on screen. |
178 | 178 | ||
179 | Busybox aims to eventually work correctly with Unicode displays. | 179 | Busybox aims to eventually work correctly with Unicode displays. |
180 | Any older encodings are not guaranteed to work. | 180 | Any older encodings are not guaranteed to work. |
181 | Probably by the time when busybox will be fully Unicode-clean, | 181 | Probably by the time when busybox will be fully Unicode-clean, |
182 | other encodings will be mainly of historic interest. | 182 | other encodings will be mainly of historic interest. |
183 | 183 | ||
184 | config UNICODE_USING_LOCALE | 184 | config UNICODE_USING_LOCALE |
185 | bool "Use libc routines for Unicode (else uses internal ones)" | 185 | bool "Use libc routines for Unicode (else uses internal ones)" |
186 | default n | 186 | default n |
187 | depends on UNICODE_SUPPORT && LOCALE_SUPPORT | 187 | depends on UNICODE_SUPPORT && LOCALE_SUPPORT |
188 | help | 188 | help |
189 | With this option on, Unicode support is implemented using libc | 189 | With this option on, Unicode support is implemented using libc |
190 | routines. Otherwise, internal implementation is used. | 190 | routines. Otherwise, internal implementation is used. |
191 | Internal implementation is smaller. | 191 | Internal implementation is smaller. |
192 | 192 | ||
193 | config FEATURE_CHECK_UNICODE_IN_ENV | 193 | config FEATURE_CHECK_UNICODE_IN_ENV |
194 | bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables" | 194 | bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables" |
195 | default n | 195 | default n |
196 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE | 196 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE |
197 | help | 197 | help |
198 | With this option on, Unicode support is activated | 198 | With this option on, Unicode support is activated |
199 | only if locale-related variables have the value of the form | 199 | only if locale-related variables have the value of the form |
200 | "xxxx.utf8" | 200 | "xxxx.utf8" |
201 | 201 | ||
202 | Otherwise, Unicode support will be always enabled and active. | 202 | Otherwise, Unicode support will be always enabled and active. |
203 | 203 | ||
204 | config SUBST_WCHAR | 204 | config SUBST_WCHAR |
205 | int "Character code to substitute unprintable characters with" | 205 | int "Character code to substitute unprintable characters with" |
206 | depends on UNICODE_SUPPORT | 206 | depends on UNICODE_SUPPORT |
207 | default 63 | 207 | default 63 |
208 | help | 208 | help |
209 | Typical values are 63 for '?' (works with any output device), | 209 | Typical values are 63 for '?' (works with any output device), |
210 | 30 for ASCII substitute control code, | 210 | 30 for ASCII substitute control code, |
211 | 65533 (0xfffd) for Unicode replacement character. | 211 | 65533 (0xfffd) for Unicode replacement character. |
212 | 212 | ||
213 | config LAST_SUPPORTED_WCHAR | 213 | config LAST_SUPPORTED_WCHAR |
214 | int "Range of supported Unicode characters" | 214 | int "Range of supported Unicode characters" |
215 | depends on UNICODE_SUPPORT | 215 | depends on UNICODE_SUPPORT |
216 | default 767 | 216 | default 767 |
217 | help | 217 | help |
218 | Any character with Unicode value bigger than this is assumed | 218 | Any character with Unicode value bigger than this is assumed |
219 | to be non-printable on output device. Many applets replace | 219 | to be non-printable on output device. Many applets replace |
220 | such characters with substitution character. | 220 | such characters with substitution character. |
221 | 221 | ||
222 | The idea is that many valid printable Unicode chars | 222 | The idea is that many valid printable Unicode chars |
223 | nevertheless are not displayed correctly. Think about | 223 | nevertheless are not displayed correctly. Think about |
224 | combining charachers, double-wide hieroglyphs, obscure | 224 | combining charachers, double-wide hieroglyphs, obscure |
225 | characters in dozens of ancient scripts... | 225 | characters in dozens of ancient scripts... |
226 | Many terminals, terminal emulators, xterms etc will fail | 226 | Many terminals, terminal emulators, xterms etc will fail |
227 | to handle them correctly. Choose the smallest value | 227 | to handle them correctly. Choose the smallest value |
228 | which suits your needs. | 228 | which suits your needs. |
229 | 229 | ||
230 | Typical values are: | 230 | Typical values are: |
231 | 126 - ASCII only | 231 | 126 - ASCII only |
232 | 767 (0x2ff) - there are no combining chars in [0..767] range | 232 | 767 (0x2ff) - there are no combining chars in [0..767] range |
233 | (the range includes Latin 1, Latin Ext. A and B), | 233 | (the range includes Latin 1, Latin Ext. A and B), |
234 | code is ~700 bytes smaller for this case. | 234 | code is ~700 bytes smaller for this case. |
235 | 4351 (0x10ff) - there are no double-wide chars in [0..4351] range, | 235 | 4351 (0x10ff) - there are no double-wide chars in [0..4351] range, |
236 | code is ~300 bytes smaller for this case. | 236 | code is ~300 bytes smaller for this case. |
237 | 12799 (0x31ff) - nearly all non-ideographic characters are | 237 | 12799 (0x31ff) - nearly all non-ideographic characters are |
238 | available in [0..12799] range, including | 238 | available in [0..12799] range, including |
239 | East Asian scripts like katakana, hiragana, hangul, | 239 | East Asian scripts like katakana, hiragana, hangul, |
240 | bopomofo... | 240 | bopomofo... |
241 | 0 - off, any valid printable Unicode character will be printed. | 241 | 0 - off, any valid printable Unicode character will be printed. |
242 | 242 | ||
243 | config UNICODE_COMBINING_WCHARS | 243 | config UNICODE_COMBINING_WCHARS |
244 | bool "Allow zero-width Unicode characters on output" | 244 | bool "Allow zero-width Unicode characters on output" |
245 | default n | 245 | default n |
246 | depends on UNICODE_SUPPORT | 246 | depends on UNICODE_SUPPORT |
247 | help | 247 | help |
248 | With this option off, any Unicode char with width of 0 | 248 | With this option off, any Unicode char with width of 0 |
249 | is substituted on output. | 249 | is substituted on output. |
250 | 250 | ||
251 | config UNICODE_WIDE_WCHARS | 251 | config UNICODE_WIDE_WCHARS |
252 | bool "Allow wide Unicode characters on output" | 252 | bool "Allow wide Unicode characters on output" |
253 | default n | 253 | default n |
254 | depends on UNICODE_SUPPORT | 254 | depends on UNICODE_SUPPORT |
255 | help | 255 | help |
256 | With this option off, any Unicode char with width > 1 | 256 | With this option off, any Unicode char with width > 1 |
257 | is substituted on output. | 257 | is substituted on output. |
258 | 258 | ||
259 | config UNICODE_BIDI_SUPPORT | 259 | config UNICODE_BIDI_SUPPORT |
260 | bool "Bidirectional character-aware line input" | 260 | bool "Bidirectional character-aware line input" |
261 | default n | 261 | default n |
262 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE | 262 | depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE |
263 | help | 263 | help |
264 | With this option on, right-to-left Unicode characters | 264 | With this option on, right-to-left Unicode characters |
265 | are treated differently on input (e.g. cursor movement). | 265 | are treated differently on input (e.g. cursor movement). |
266 | 266 | ||
267 | config UNICODE_NEUTRAL_TABLE | 267 | config UNICODE_NEUTRAL_TABLE |
268 | bool "In bidi input, support non-ASCII neutral chars too" | 268 | bool "In bidi input, support non-ASCII neutral chars too" |
269 | default n | 269 | default n |
270 | depends on UNICODE_BIDI_SUPPORT | 270 | depends on UNICODE_BIDI_SUPPORT |
271 | help | 271 | help |
272 | In most cases it's enough to treat only ASCII non-letters | 272 | In most cases it's enough to treat only ASCII non-letters |
273 | (i.e. punctuation, numbers and space) as characters | 273 | (i.e. punctuation, numbers and space) as characters |
274 | with neutral directionality. | 274 | with neutral directionality. |
275 | With this option on, more extensive (and bigger) table | 275 | With this option on, more extensive (and bigger) table |
276 | of neutral chars will be used. | 276 | of neutral chars will be used. |
277 | 277 | ||
278 | config UNICODE_PRESERVE_BROKEN | 278 | config UNICODE_PRESERVE_BROKEN |
279 | bool "Make it possible to enter sequences of chars which are not Unicode" | 279 | bool "Make it possible to enter sequences of chars which are not Unicode" |
280 | default n | 280 | default n |
281 | depends on UNICODE_SUPPORT | 281 | depends on UNICODE_SUPPORT |
282 | help | 282 | help |
283 | With this option on, on line-editing input (such as used by shells) | 283 | With this option on, on line-editing input (such as used by shells) |
284 | invalid UTF-8 bytes are not substituted with the selected | 284 | invalid UTF-8 bytes are not substituted with the selected |
285 | substitution character. | 285 | substitution character. |
286 | For example, this means that entering 'l', 's', ' ', 0xff, [Enter] | 286 | For example, this means that entering 'l', 's', ' ', 0xff, [Enter] |
287 | at shell prompt will list file named 0xff (single char name | 287 | at shell prompt will list file named 0xff (single char name |
288 | with char value 255), not file named '?'. | 288 | with char value 255), not file named '?'. |
289 | 289 | ||
290 | config FEATURE_NON_POSIX_CP | 290 | config FEATURE_NON_POSIX_CP |
291 | bool "Non-POSIX, but safer, copying to special nodes" | 291 | bool "Non-POSIX, but safer, copying to special nodes" |
292 | default y | 292 | default y |
293 | help | 293 | help |
294 | With this option, "cp file symlink" will delete symlink | 294 | With this option, "cp file symlink" will delete symlink |
295 | and create a regular file. This does not conform to POSIX, | 295 | and create a regular file. This does not conform to POSIX, |
296 | but prevents a symlink attack. | 296 | but prevents a symlink attack. |
297 | Similarly, "cp file device" will not send file's data | 297 | Similarly, "cp file device" will not send file's data |
298 | to the device. (To do that, use "cat file >device") | 298 | to the device. (To do that, use "cat file >device") |
299 | 299 | ||
300 | config FEATURE_VERBOSE_CP_MESSAGE | 300 | config FEATURE_VERBOSE_CP_MESSAGE |
301 | bool "Give more precise messages when copy fails (cp, mv etc)" | 301 | bool "Give more precise messages when copy fails (cp, mv etc)" |
302 | default n | 302 | default n |
303 | help | 303 | help |
304 | Error messages with this feature enabled: | 304 | Error messages with this feature enabled: |
305 | 305 | ||
306 | $ cp file /does_not_exist/file | 306 | $ cp file /does_not_exist/file |
307 | cp: cannot create '/does_not_exist/file': Path does not exist | 307 | cp: cannot create '/does_not_exist/file': Path does not exist |
308 | $ cp file /vmlinuz/file | 308 | $ cp file /vmlinuz/file |
309 | cp: cannot stat '/vmlinuz/file': Path has non-directory component | 309 | cp: cannot stat '/vmlinuz/file': Path has non-directory component |
310 | 310 | ||
311 | If this feature is not enabled, they will be, respectively: | 311 | If this feature is not enabled, they will be, respectively: |
312 | 312 | ||
313 | cp: cannot create '/does_not_exist/file': No such file or directory | 313 | cp: cannot create '/does_not_exist/file': No such file or directory |
314 | cp: cannot stat '/vmlinuz/file': Not a directory | 314 | cp: cannot stat '/vmlinuz/file': Not a directory |
315 | 315 | ||
316 | This will cost you ~60 bytes. | 316 | This will cost you ~60 bytes. |
317 | 317 | ||
318 | config FEATURE_USE_SENDFILE | 318 | config FEATURE_USE_SENDFILE |
319 | bool "Use sendfile system call" | 319 | bool "Use sendfile system call" |
320 | default y | 320 | default y |
321 | select PLATFORM_LINUX | 321 | select PLATFORM_LINUX |
322 | help | 322 | help |
323 | When enabled, busybox will use the kernel sendfile() function | 323 | When enabled, busybox will use the kernel sendfile() function |
324 | instead of read/write loops to copy data between file descriptors | 324 | instead of read/write loops to copy data between file descriptors |
325 | (for example, cp command does this a lot). | 325 | (for example, cp command does this a lot). |
326 | If sendfile() doesn't work, copying code falls back to read/write | 326 | If sendfile() doesn't work, copying code falls back to read/write |
327 | loop. sendfile() was originally implemented for faster I/O | 327 | loop. sendfile() was originally implemented for faster I/O |
328 | from files to sockets, but since Linux 2.6.33 it was extended | 328 | from files to sockets, but since Linux 2.6.33 it was extended |
329 | to work for many more file types. | 329 | to work for many more file types. |
330 | 330 | ||
331 | config FEATURE_COPYBUF_KB | 331 | config FEATURE_COPYBUF_KB |
332 | int "Copy buffer size, in kilobytes" | 332 | int "Copy buffer size, in kilobytes" |
333 | range 1 1024 | 333 | range 1 1024 |
334 | default 4 | 334 | default 4 |
335 | help | 335 | help |
336 | Size of buffer used by cp, mv, install, wget etc. | 336 | Size of buffer used by cp, mv, install, wget etc. |
337 | Buffers which are 4 kb or less will be allocated on stack. | 337 | Buffers which are 4 kb or less will be allocated on stack. |
338 | Bigger buffers will be allocated with mmap, with fallback to 4 kb | 338 | Bigger buffers will be allocated with mmap, with fallback to 4 kb |
339 | stack buffer if mmap fails. | 339 | stack buffer if mmap fails. |
340 | 340 | ||
341 | config FEATURE_SKIP_ROOTFS | 341 | config FEATURE_SKIP_ROOTFS |
342 | bool "Skip rootfs in mount table" | 342 | bool "Skip rootfs in mount table" |
343 | default y | 343 | default y |
344 | help | 344 | help |
345 | Ignore rootfs entry in mount table. | 345 | Ignore rootfs entry in mount table. |
346 | 346 | ||
347 | In Linux, kernel has a special filesystem, rootfs, which is initially | 347 | In Linux, kernel has a special filesystem, rootfs, which is initially |
348 | mounted on /. It contains initramfs data, if kernel is configured | 348 | mounted on /. It contains initramfs data, if kernel is configured |
349 | to have one. Usually, another file system is mounted over / early | 349 | to have one. Usually, another file system is mounted over / early |
350 | in boot process, and therefore most tools which manipulate | 350 | in boot process, and therefore most tools which manipulate |
351 | mount table, such as df, will skip rootfs entry. | 351 | mount table, such as df, will skip rootfs entry. |
352 | 352 | ||
353 | However, some systems do not mount anything on /. | 353 | However, some systems do not mount anything on /. |
354 | If you need to configure busybox for one of these systems, | 354 | If you need to configure busybox for one of these systems, |
355 | you may find it useful to turn this option off to make df show | 355 | you may find it useful to turn this option off to make df show |
356 | initramfs statistics. | 356 | initramfs statistics. |
357 | 357 | ||
358 | Otherwise, choose Y. | 358 | Otherwise, choose Y. |
359 | 359 | ||
360 | config MONOTONIC_SYSCALL | 360 | config MONOTONIC_SYSCALL |
361 | bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" | 361 | bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" |
362 | default y | 362 | default y |
363 | select PLATFORM_LINUX | 363 | select PLATFORM_LINUX |
364 | help | 364 | help |
365 | Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring | 365 | Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring |
366 | time intervals (time, ping, traceroute etc need this). | 366 | time intervals (time, ping, traceroute etc need this). |
367 | Probably requires Linux 2.6+. If not selected, gettimeofday | 367 | Probably requires Linux 2.6+. If not selected, gettimeofday |
368 | will be used instead (which gives wrong results if date/time | 368 | will be used instead (which gives wrong results if date/time |
369 | is reset). | 369 | is reset). |
370 | 370 | ||
371 | config IOCTL_HEX2STR_ERROR | 371 | config IOCTL_HEX2STR_ERROR |
372 | bool "Use ioctl names rather than hex values in error messages" | 372 | bool "Use ioctl names rather than hex values in error messages" |
373 | default y | 373 | default y |
374 | help | 374 | help |
375 | Use ioctl names rather than hex values in error messages | 375 | Use ioctl names rather than hex values in error messages |
376 | (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this | 376 | (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this |
377 | saves about 1400 bytes. | 377 | saves about 1400 bytes. |
378 | 378 | ||
379 | config FEATURE_HWIB | 379 | config FEATURE_HWIB |
380 | bool "Support infiniband HW" | 380 | bool "Support infiniband HW" |
381 | default y | 381 | default y |
382 | help | 382 | help |
383 | Support for printing infiniband addresses in network applets. | 383 | Support for printing infiniband addresses in network applets. |
diff --git a/libbb/common_bufsiz.c b/libbb/common_bufsiz.c index f1124ba0e..6bc6d7bc9 100644 --- a/libbb/common_bufsiz.c +++ b/libbb/common_bufsiz.c | |||
@@ -10,35 +10,35 @@ | |||
10 | //config: bool "Use the end of BSS page" | 10 | //config: bool "Use the end of BSS page" |
11 | //config: default n | 11 | //config: default n |
12 | //config: help | 12 | //config: help |
13 | //config: Attempt to reclaim a small unused part of BSS. | 13 | //config: Attempt to reclaim a small unused part of BSS. |
14 | //config: | 14 | //config: |
15 | //config: Executables have the following parts: | 15 | //config: Executables have the following parts: |
16 | //config: = read-only executable code and constants, also known as "text" | 16 | //config: = read-only executable code and constants, also known as "text" |
17 | //config: = read-write data | 17 | //config: = read-write data |
18 | //config: = non-initialized (zeroed on demand) data, also known as "bss" | 18 | //config: = non-initialized (zeroed on demand) data, also known as "bss" |
19 | //config: | 19 | //config: |
20 | //config: At link time, "text" is padded to a full page. At runtime, all "text" | 20 | //config: At link time, "text" is padded to a full page. At runtime, all "text" |
21 | //config: pages are mapped RO and executable. | 21 | //config: pages are mapped RO and executable. |
22 | //config: | 22 | //config: |
23 | //config: "Data" starts on the next page boundary, but is not padded | 23 | //config: "Data" starts on the next page boundary, but is not padded |
24 | //config: to a full page at the end. "Bss" starts wherever "data" ends. | 24 | //config: to a full page at the end. "Bss" starts wherever "data" ends. |
25 | //config: At runtime, "data" pages are mapped RW and they are file-backed | 25 | //config: At runtime, "data" pages are mapped RW and they are file-backed |
26 | //config: (this includes a small portion of "bss" which may live in the last | 26 | //config: (this includes a small portion of "bss" which may live in the last |
27 | //config: partial page of "data"). | 27 | //config: partial page of "data"). |
28 | //config: Pages which are fully in "bss" are mapped to anonymous memory. | 28 | //config: Pages which are fully in "bss" are mapped to anonymous memory. |
29 | //config: | 29 | //config: |
30 | //config: "Bss" end is usually not page-aligned. There is an unused space | 30 | //config: "Bss" end is usually not page-aligned. There is an unused space |
31 | //config: in the last page. Linker marks its start with the "_end" symbol. | 31 | //config: in the last page. Linker marks its start with the "_end" symbol. |
32 | //config: | 32 | //config: |
33 | //config: This option will attempt to use that space for bb_common_bufsiz1[] | 33 | //config: This option will attempt to use that space for bb_common_bufsiz1[] |
34 | //config: array. If it fits after _end, it will be used, and COMMON_BUFSIZE | 34 | //config: array. If it fits after _end, it will be used, and COMMON_BUFSIZE |
35 | //config: will be enlarged from its guaranteed minimum size of 1 kbyte. | 35 | //config: will be enlarged from its guaranteed minimum size of 1 kbyte. |
36 | //config: This may require recompilation a second time, since value of _end | 36 | //config: This may require recompilation a second time, since value of _end |
37 | //config: is known only after final link. | 37 | //config: is known only after final link. |
38 | //config: | 38 | //config: |
39 | //config: If you are getting a build error like this: | 39 | //config: If you are getting a build error like this: |
40 | //config: appletlib.c:(.text.main+0xd): undefined reference to '_end' | 40 | //config: appletlib.c:(.text.main+0xd): undefined reference to '_end' |
41 | //config: disable this option. | 41 | //config: disable this option. |
42 | 42 | ||
43 | //kbuild:lib-y += common_bufsiz.o | 43 | //kbuild:lib-y += common_bufsiz.o |
44 | 44 | ||
diff --git a/libbb/parse_config.c b/libbb/parse_config.c index 408439766..307ae2cd2 100644 --- a/libbb/parse_config.c +++ b/libbb/parse_config.c | |||
@@ -13,7 +13,7 @@ | |||
13 | ////config: bool "Uniform config file parser debugging applet: parse" | 13 | ////config: bool "Uniform config file parser debugging applet: parse" |
14 | ////config: default n | 14 | ////config: default n |
15 | ////config: help | 15 | ////config: help |
16 | ////config: Typical usage of parse API: | 16 | ////config: Typical usage of parse API: |
17 | ////config: char *t[3]; | 17 | ////config: char *t[3]; |
18 | ////config: parser_t *p = config_open(filename); | 18 | ////config: parser_t *p = config_open(filename); |
19 | ////config: while (config_read(p, t, 3, 0, delimiters, flags)) { // 1..3 tokens | 19 | ////config: while (config_read(p, t, 3, 0, delimiters, flags)) { // 1..3 tokens |
diff --git a/libbb/u_signal_names.c b/libbb/u_signal_names.c index b49714f2a..bf984a44e 100644 --- a/libbb/u_signal_names.c +++ b/libbb/u_signal_names.c | |||
@@ -11,8 +11,8 @@ | |||
11 | //config: bool "Support RTMIN[+n] and RTMAX[-n] signal names" | 11 | //config: bool "Support RTMIN[+n] and RTMAX[-n] signal names" |
12 | //config: default y | 12 | //config: default y |
13 | //config: help | 13 | //config: help |
14 | //config: Support RTMIN[+n] and RTMAX[-n] signal names | 14 | //config: Support RTMIN[+n] and RTMAX[-n] signal names |
15 | //config: in kill, killall etc. This costs ~250 bytes. | 15 | //config: in kill, killall etc. This costs ~250 bytes. |
16 | 16 | ||
17 | #include "libbb.h" | 17 | #include "libbb.h" |
18 | 18 | ||
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 1b11caf6b..f569b0263 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c | |||
@@ -344,20 +344,28 @@ void FAST_FUNC xsetenv(const char *key, const char *value) | |||
344 | */ | 344 | */ |
345 | void FAST_FUNC bb_unsetenv(const char *var) | 345 | void FAST_FUNC bb_unsetenv(const char *var) |
346 | { | 346 | { |
347 | char *tp = strchr(var, '='); | 347 | char onstack[128 - 16]; /* smaller stack setup code on x86 */ |
348 | 348 | char *tp; | |
349 | if (!tp) { | 349 | |
350 | unsetenv(var); | 350 | tp = strchr(var, '='); |
351 | return; | 351 | if (tp) { |
352 | /* In case var was putenv'ed, we can't replace '=' | ||
353 | * with NUL and unsetenv(var) - it won't work, | ||
354 | * env is modified by the replacement, unsetenv | ||
355 | * sees "VAR" instead of "VAR=VAL" and does not remove it! | ||
356 | * Horror :( | ||
357 | */ | ||
358 | unsigned sz = tp - var; | ||
359 | if (sz < sizeof(onstack)) { | ||
360 | ((char*)mempcpy(onstack, var, sz))[0] = '\0'; | ||
361 | tp = NULL; | ||
362 | var = onstack; | ||
363 | } else { | ||
364 | /* unlikely: very long var name */ | ||
365 | var = tp = xstrndup(var, sz); | ||
366 | } | ||
352 | } | 367 | } |
353 | 368 | unsetenv(var); | |
354 | /* In case var was putenv'ed, we can't replace '=' | ||
355 | * with NUL and unsetenv(var) - it won't work, | ||
356 | * env is modified by the replacement, unsetenv | ||
357 | * sees "VAR" instead of "VAR=VAL" and does not remove it! | ||
358 | * horror :( */ | ||
359 | tp = xstrndup(var, tp - var); | ||
360 | unsetenv(tp); | ||
361 | free(tp); | 369 | free(tp); |
362 | } | 370 | } |
363 | 371 | ||