diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-19 22:15:20 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-19 22:15:20 +0200 |
commit | 91d7ee31f766a13595c1042d375f8374f2c3675f (patch) | |
tree | d9c1e4f669feb59e81527b2b0386699ea8e9d164 /TODO | |
parent | 4a96617095f40e3cfcf148a8a7d5d83f71079aa1 (diff) | |
download | busybox-w32-91d7ee31f766a13595c1042d375f8374f2c3675f.tar.gz busybox-w32-91d7ee31f766a13595c1042d375f8374f2c3675f.tar.bz2 busybox-w32-91d7ee31f766a13595c1042d375f8374f2c3675f.zip |
tweak TODO file
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 118 |
1 files changed, 10 insertions, 108 deletions
@@ -1,5 +1,8 @@ | |||
1 | Busybox TODO | 1 | Busybox TODO |
2 | 2 | ||
3 | Harvest patches from | ||
4 | http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/busybox/ | ||
5 | |||
3 | Stuff that needs to be done. This is organized by who plans to get around to | 6 | Stuff that needs to be done. This is organized by who plans to get around to |
4 | doing it eventually, but that doesn't mean they "own" the item. If you want to | 7 | doing it eventually, but that doesn't mean they "own" the item. If you want to |
5 | do one of these bounce an email off the person it's listed under to see if they | 8 | do one of these bounce an email off the person it's listed under to see if they |
@@ -9,9 +12,6 @@ between your work and theirs. But otherwise, all of these are fair game. | |||
9 | Rob Landley suggested this: | 12 | Rob Landley suggested this: |
10 | Implement bb_realpath() that can handle NULL on non-glibc. | 13 | Implement bb_realpath() that can handle NULL on non-glibc. |
11 | 14 | ||
12 | Remove obsolete _() wrapper crud for internationalization we don't do. | ||
13 | Figure out where we need utf8 support, and add it. | ||
14 | |||
15 | sh | 15 | sh |
16 | The command shell situation is a mess. We have two different | 16 | The command shell situation is a mess. We have two different |
17 | shells that don't really share any code, and the "standalone shell" doesn't | 17 | shells that don't really share any code, and the "standalone shell" doesn't |
@@ -31,7 +31,7 @@ Rob Landley suggested this: | |||
31 | How much internationalization should we do? | 31 | How much internationalization should we do? |
32 | 32 | ||
33 | The low hanging fruit is UTF-8 character set support. We should do this. | 33 | The low hanging fruit is UTF-8 character set support. We should do this. |
34 | (Vodz pointed out the shell's cmdedit as needing work here. What else?) | 34 | See TODO_unicode file. |
35 | 35 | ||
36 | We also have lots of hardwired english text messages. Consolidating this | 36 | We also have lots of hardwired english text messages. Consolidating this |
37 | into some kind of message table not only makes translation easier, but | 37 | into some kind of message table not only makes translation easier, but |
@@ -59,6 +59,7 @@ Rob Landley suggested this: | |||
59 | Turning libbb into a real dll is another possibility, especially if libbb | 59 | Turning libbb into a real dll is another possibility, especially if libbb |
60 | could export some of the other library interfaces we've already more or less | 60 | could export some of the other library interfaces we've already more or less |
61 | got the code for (like zlib). | 61 | got the code for (like zlib). |
62 | |||
62 | buildroot - Make a "dogfood" option | 63 | buildroot - Make a "dogfood" option |
63 | Busybox 1.1 will be capable of replacing most gnu packages for real world | 64 | Busybox 1.1 will be capable of replacing most gnu packages for real world |
64 | use, such as developing software or in a live CD. It needs wider testing. | 65 | use, such as developing software or in a live CD. It needs wider testing. |
@@ -78,22 +79,25 @@ Rob Landley suggested this: | |||
78 | 79 | ||
79 | One example of an existing system that does this already is Firmware Linux: | 80 | One example of an existing system that does this already is Firmware Linux: |
80 | http://www.landley.net/code/firmware | 81 | http://www.landley.net/code/firmware |
82 | |||
81 | initramfs | 83 | initramfs |
82 | Busybox should have a sample initramfs build script. This depends on | 84 | Busybox should have a sample initramfs build script. This depends on |
83 | bbsh, mdev, and switch_root. | 85 | bbsh, mdev, and switch_root. |
86 | |||
84 | mkdep | 87 | mkdep |
85 | Write a mkdep that doesn't segfault if there's a directory it doesn't | 88 | Write a mkdep that doesn't segfault if there's a directory it doesn't |
86 | have permission to read, isn't based on manually editing the output of | 89 | have permission to read, isn't based on manually editing the output of |
87 | lexx and yacc, doesn't make such a mess under include/config, etc. | 90 | lexx and yacc, doesn't make such a mess under include/config, etc. |
91 | |||
88 | Group globals into unions of structures. | 92 | Group globals into unions of structures. |
89 | Go through and turn all the global and static variables into structures, | 93 | Go through and turn all the global and static variables into structures, |
90 | and have all those structures be in a big union shared between processes, | 94 | and have all those structures be in a big union shared between processes, |
91 | so busybox uses less bss. (This is a big win on nommu machines.) See | 95 | so busybox uses less bss. (This is a big win on nommu machines.) See |
92 | sed.c and mdev.c for examples. | 96 | sed.c and mdev.c for examples. |
97 | |||
93 | Go through bugs.busybox.net and close out all of that somehow. | 98 | Go through bugs.busybox.net and close out all of that somehow. |
94 | This one's open to everybody, but I'll wind up doing it... | 99 | This one's open to everybody, but I'll wind up doing it... |
95 | 100 | ||
96 | |||
97 | Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: | 101 | Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: |
98 | New debug options: | 102 | New debug options: |
99 | -Wlarger-than-127 | 103 | -Wlarger-than-127 |
@@ -177,40 +181,6 @@ Memory Allocation | |||
177 | call free might also be optimized out by the compiler if written right, so | 181 | call free might also be optimized out by the compiler if written right, so |
178 | we can yank those #ifdefs too, and generally clean up the code. | 182 | we can yank those #ifdefs too, and generally clean up the code. |
179 | --- | 183 | --- |
180 | Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS | ||
181 | |||
182 | In busybox 1.0 and earlier, configuration was done by CONFIG_SYMBOLS | ||
183 | that were either defined or undefined to indicate whether the symbol was | ||
184 | selected in the .config file. They were used with #ifdefs, ala: | ||
185 | |||
186 | #ifdef CONFIG_SYMBOL | ||
187 | if (other_test) { | ||
188 | do_code(); | ||
189 | } | ||
190 | #endif | ||
191 | |||
192 | In 1.1, we have new ENABLE_SYMBOLS which are always defined (as 0 or 1), | ||
193 | meaning you can still use them for preprocessor tests by replacing | ||
194 | "#ifdef CONFIG_SYMBOL" with "#if ENABLE_SYMBOL". But more importantly, we | ||
195 | can use them as a true or false test in normal C code: | ||
196 | |||
197 | if (ENABLE_SYMBOL && other_test) { | ||
198 | do_code(); | ||
199 | } | ||
200 | |||
201 | (Optimizing away if() statements that resolve to a constant value | ||
202 | is known as "dead code elimination", an optimization so old and simple that | ||
203 | Turbo Pascal for DOS did it twenty years ago. Even modern mini-compilers | ||
204 | like the Tiny C Compiler (tcc) and the Small Device C Compiler (SDCC) | ||
205 | perform dead code elimination.) | ||
206 | |||
207 | Right now, busybox.h is #including both "config.h" (defining the | ||
208 | CONFIG_SYMBOLS) and "bb_config.h" (defining the ENABLE_SYMBOLS). At some | ||
209 | point in the future, it would be nice to wean ourselves off of the | ||
210 | CONFIG versions. (Among other things, some defective build environments | ||
211 | leak the Linux kernel's CONFIG_SYMBOLS into the system's standard #include | ||
212 | files. We've experienced collisions before.) | ||
213 | --- | ||
214 | FEATURE_CLEAN_UP | 184 | FEATURE_CLEAN_UP |
215 | This is more an unresolved issue than a to-do item. More thought is needed. | 185 | This is more an unresolved issue than a to-do item. More thought is needed. |
216 | 186 | ||
@@ -266,12 +236,7 @@ Minor stuff: | |||
266 | --- | 236 | --- |
267 | unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. | 237 | unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. |
268 | --- | 238 | --- |
269 | support start-stop-daemon -d <chdir-path> | 239 | support start-stop-daemon -d <chdir-path> |
270 | |||
271 | Code cleanup: | ||
272 | |||
273 | Replace deprecated functions. | ||
274 | |||
275 | --- | 240 | --- |
276 | vdprintf() -> similar sized functionality | 241 | vdprintf() -> similar sized functionality |
277 | --- | 242 | --- |
@@ -296,8 +261,6 @@ vdprintf() -> similar sized functionality | |||
296 | The first step would to generate a file/matrix what is already archived | 261 | The first step would to generate a file/matrix what is already archived |
297 | (also IPV6) | 262 | (also IPV6) |
298 | 263 | ||
299 | * ntpdate/ntpd (see ntpclient and openntp for examples) | ||
300 | |||
301 | * implement 'at' | 264 | * implement 'at' |
302 | 265 | ||
303 | * rpcbind (former portmap) or equivalent | 266 | * rpcbind (former portmap) or equivalent |
@@ -311,64 +274,3 @@ vdprintf() -> similar sized functionality | |||
311 | most likely there is more | 274 | most likely there is more |
312 | 275 | ||
313 | * even more support for statistics: mpstat, iostat, powertop.... | 276 | * even more support for statistics: mpstat, iostat, powertop.... |
314 | |||
315 | |||
316 | Unicode work needed: | ||
317 | |||
318 | Unicode support uses libc multibyte functions if LOCALE_SUPPORT is on | ||
319 | (in this case, the code will also support many more encodings), | ||
320 | or uses a limited subset of re-implemented multibyte functions | ||
321 | which only understand "one byte == one char" and unicode. | ||
322 | This is useful if you build against uclibc with locale support disabled. | ||
323 | |||
324 | Unicode-dependent applets must call check_unicode_in_env() when they | ||
325 | begin executing. | ||
326 | |||
327 | Applet code may conditionalize on UNICODE_SUPPORT in order to use | ||
328 | more efficient code if unicode support is not requested. | ||
329 | |||
330 | Available functions (if you need more, implement them in libbb/unicode.c | ||
331 | so that they work without LOCALE_SUPPORT too): | ||
332 | |||
333 | int bb_mbstrlen(str) - multibyte-aware strlen | ||
334 | size_t mbstowcs(wdest, src, n) | ||
335 | size_t wcstombs(dest, wsrc, n) | ||
336 | size_t wcrtomb(str, wc, wstate) | ||
337 | int iswspace(wc) | ||
338 | int iswalnum(wc) | ||
339 | int iswpunct(wc) | ||
340 | |||
341 | Applets which only need to align columns on screen correctly: | ||
342 | |||
343 | ls - already done, use source as an example | ||
344 | df | ||
345 | dumpleases | ||
346 | lsmod | ||
347 | |||
348 | Applets which need to account for Unicode chars | ||
349 | while processing the output: | ||
350 | |||
351 | [un]expand | ||
352 | fold | ||
353 | man | ||
354 | watch | ||
355 | cut (-b and -c are currently the same, needs fixing) | ||
356 | |||
357 | These applets need to ensure that unicode input | ||
358 | is handled correctly (say, <unicode><backspace> sequence): | ||
359 | |||
360 | getty, login | ||
361 | rm -i | ||
362 | unzip (overwrite prompt) | ||
363 | |||
364 | Viewers/editors are more difficult (many cases to get right). | ||
365 | libbb/lineedit.c is an example how to do it: | ||
366 | |||
367 | less, most, ed, vi | ||
368 | awk | ||
369 | [ef]grep | ||
370 | sed | ||
371 | |||
372 | Probably needs some specialized work: | ||
373 | |||
374 | loadkeys | ||