1 |
Busybox TODO |
Busybox TODO |
2 |
|
|
3 |
|
Harvest patches from |
4 |
|
http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/busybox/ |
5 |
|
|
6 |
Stuff that needs to be done. This is organized by who plans to get around to |
Stuff that needs to be done. This is organized by who plans to get around to |
7 |
doing it eventually, but that doesn't mean they "own" the item. If you want to |
doing it eventually, but that doesn't mean they "own" the item. If you want to |
8 |
do one of these bounce an email off the person it's listed under to see if they |
do one of these bounce an email off the person it's listed under to see if they |
12 |
Rob Landley suggested this: |
Rob Landley suggested this: |
13 |
Implement bb_realpath() that can handle NULL on non-glibc. |
Implement bb_realpath() that can handle NULL on non-glibc. |
14 |
|
|
|
Remove obsolete _() wrapper crud for internationalization we don't do. |
|
|
Figure out where we need utf8 support, and add it. |
|
|
|
|
15 |
sh |
sh |
16 |
The command shell situation is a mess. We have two different |
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 |
shells that don't really share any code, and the "standalone shell" doesn't |
31 |
How much internationalization should we do? |
How much internationalization should we do? |
32 |
|
|
33 |
The low hanging fruit is UTF-8 character set support. We should do this. |
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?) |
See TODO_unicode file. |
35 |
|
|
36 |
We also have lots of hardwired english text messages. Consolidating this |
We also have lots of hardwired english text messages. Consolidating this |
37 |
into some kind of message table not only makes translation easier, but |
into some kind of message table not only makes translation easier, but |
59 |
Turning libbb into a real dll is another possibility, especially if libbb |
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 |
could export some of the other library interfaces we've already more or less |
61 |
got the code for (like zlib). |
got the code for (like zlib). |
62 |
|
|
63 |
buildroot - Make a "dogfood" option |
buildroot - Make a "dogfood" option |
64 |
Busybox 1.1 will be capable of replacing most gnu packages for real world |
Busybox 1.1 will be capable of replacing most gnu packages for real world |
65 |
use, such as developing software or in a live CD. It needs wider testing. |
use, such as developing software or in a live CD. It needs wider testing. |
79 |
|
|
80 |
One example of an existing system that does this already is Firmware Linux: |
One example of an existing system that does this already is Firmware Linux: |
81 |
http://www.landley.net/code/firmware |
http://www.landley.net/code/firmware |
82 |
|
|
83 |
initramfs |
initramfs |
84 |
Busybox should have a sample initramfs build script. This depends on |
Busybox should have a sample initramfs build script. This depends on |
85 |
bbsh, mdev, and switch_root. |
bbsh, mdev, and switch_root. |
86 |
|
|
87 |
mkdep |
mkdep |
88 |
Write a mkdep that doesn't segfault if there's a directory it doesn't |
Write a mkdep that doesn't segfault if there's a directory it doesn't |
89 |
have permission to read, isn't based on manually editing the output of |
have permission to read, isn't based on manually editing the output of |
90 |
lexx and yacc, doesn't make such a mess under include/config, etc. |
lexx and yacc, doesn't make such a mess under include/config, etc. |
91 |
|
|
92 |
Group globals into unions of structures. |
Group globals into unions of structures. |
93 |
Go through and turn all the global and static variables into structures, |
Go through and turn all the global and static variables into structures, |
94 |
and have all those structures be in a big union shared between processes, |
and have all those structures be in a big union shared between processes, |
95 |
so busybox uses less bss. (This is a big win on nommu machines.) See |
so busybox uses less bss. (This is a big win on nommu machines.) See |
96 |
sed.c and mdev.c for examples. |
sed.c and mdev.c for examples. |
97 |
|
|
98 |
Go through bugs.busybox.net and close out all of that somehow. |
Go through bugs.busybox.net and close out all of that somehow. |
99 |
This one's open to everybody, but I'll wind up doing it... |
This one's open to everybody, but I'll wind up doing it... |
100 |
|
|
|
|
|
101 |
Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: |
Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: |
102 |
New debug options: |
New debug options: |
103 |
-Wlarger-than-127 |
-Wlarger-than-127 |
126 |
And while we're at it, a new patch filename quoting format is apparently |
And while we're at it, a new patch filename quoting format is apparently |
127 |
coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 |
coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 |
128 |
--- |
--- |
|
ar |
|
|
Write support! |
|
|
--- |
|
129 |
stty / catv |
stty / catv |
130 |
stty's visible() function and catv's guts are identical. Merge them into |
stty's visible() function and catv's guts are identical. Merge them into |
131 |
an appropriate libbb function. |
an appropriate libbb function. |
181 |
call free might also be optimized out by the compiler if written right, so |
call free might also be optimized out by the compiler if written right, so |
182 |
we can yank those #ifdefs too, and generally clean up the code. |
we can yank those #ifdefs too, and generally clean up the code. |
183 |
--- |
--- |
|
Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS |
|
|
|
|
|
In busybox 1.0 and earlier, configuration was done by CONFIG_SYMBOLS |
|
|
that were either defined or undefined to indicate whether the symbol was |
|
|
selected in the .config file. They were used with #ifdefs, ala: |
|
|
|
|
|
#ifdef CONFIG_SYMBOL |
|
|
if (other_test) { |
|
|
do_code(); |
|
|
} |
|
|
#endif |
|
|
|
|
|
In 1.1, we have new ENABLE_SYMBOLS which are always defined (as 0 or 1), |
|
|
meaning you can still use them for preprocessor tests by replacing |
|
|
"#ifdef CONFIG_SYMBOL" with "#if ENABLE_SYMBOL". But more importantly, we |
|
|
can use them as a true or false test in normal C code: |
|
|
|
|
|
if (ENABLE_SYMBOL && other_test) { |
|
|
do_code(); |
|
|
} |
|
|
|
|
|
(Optimizing away if() statements that resolve to a constant value |
|
|
is known as "dead code elimination", an optimization so old and simple that |
|
|
Turbo Pascal for DOS did it twenty years ago. Even modern mini-compilers |
|
|
like the Tiny C Compiler (tcc) and the Small Device C Compiler (SDCC) |
|
|
perform dead code elimination.) |
|
|
|
|
|
Right now, busybox.h is #including both "config.h" (defining the |
|
|
CONFIG_SYMBOLS) and "bb_config.h" (defining the ENABLE_SYMBOLS). At some |
|
|
point in the future, it would be nice to wean ourselves off of the |
|
|
CONFIG versions. (Among other things, some defective build environments |
|
|
leak the Linux kernel's CONFIG_SYMBOLS into the system's standard #include |
|
|
files. We've experienced collisions before.) |
|
|
--- |
|
184 |
FEATURE_CLEAN_UP |
FEATURE_CLEAN_UP |
185 |
This is more an unresolved issue than a to-do item. More thought is needed. |
This is more an unresolved issue than a to-do item. More thought is needed. |
186 |
|
|
236 |
--- |
--- |
237 |
unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. |
unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. |
238 |
--- |
--- |
239 |
support start-stop-daemon -d <chdir-path> |
support start-stop-daemon -d <chdir-path> |
|
|
|
|
Code cleanup: |
|
|
|
|
|
Replace deprecated functions. |
|
|
|
|
240 |
--- |
--- |
241 |
vdprintf() -> similar sized functionality |
vdprintf() -> similar sized functionality |
242 |
--- |
--- |
261 |
The first step would to generate a file/matrix what is already archived |
The first step would to generate a file/matrix what is already archived |
262 |
(also IPV6) |
(also IPV6) |
263 |
|
|
|
* ntpdate/ntpd (see ntpclient and openntp for examples) |
|
|
|
|
264 |
* implement 'at' |
* implement 'at' |
265 |
|
|
266 |
* rpcbind (former portmap) or equivalent |
* rpcbind (former portmap) or equivalent |
274 |
most likely there is more |
most likely there is more |
275 |
|
|
276 |
* even more support for statistics: mpstat, iostat, powertop.... |
* even more support for statistics: mpstat, iostat, powertop.... |
|
|
|
|
|
|
|
Unicode work needed: |
|
|
|
|
|
Unicode support uses libc multibyte functions if LOCALE_SUPPORT is on |
|
|
(in this case, the code will also support many more encodings), |
|
|
or uses a limited subset of re-implemented multibyte functions |
|
|
which only understand "one byte == one char" and unicode. |
|
|
This is useful if you build against uclibc with locale support disabled. |
|
|
|
|
|
Unicode-dependent applets must call check_unicode_in_env() when they |
|
|
begin executing. |
|
|
|
|
|
Applet code may conditionalize on FEATURE_ASSUME_UNICODE |
|
|
in order to use more efficient code if unicode support is not requested. |
|
|
|
|
|
Available functions (if you need more, implement them in libbb/unicode.c |
|
|
so that they work without LOCALE_SUPPORT too): |
|
|
|
|
|
int bb_mbstrlen(str) - multibyte-aware strlen |
|
|
size_t mbstowcs(wdest, src, n) |
|
|
size_t wcstombs(dest, wsrc, n) |
|
|
size_t wcrtomb(str, wc, wstate) |
|
|
int iswspace(wc) |
|
|
int iswalnum(wc) |
|
|
int iswpunct(wc) |
|
|
|
|
|
Applets which only need to align columns on screen correctly: |
|
|
|
|
|
ls - already done, use source as an example |
|
|
df |
|
|
dumpleases |
|
|
lsmod |
|
|
|
|
|
Applets which need to account for Unicode chars |
|
|
while processing the output: |
|
|
|
|
|
[un]expand |
|
|
fold |
|
|
man |
|
|
watch |
|
|
cut (-b and -c are currently the same, needs fixing) |
|
|
|
|
|
These applets need to ensure that unicode input |
|
|
is handled correctly (say, <unicode><backspace> sequence): |
|
|
|
|
|
getty, login |
|
|
rm -i |
|
|
unzip (overwrite prompt) |
|
|
|
|
|
Viewers/editors are more difficult (many cases to get right). |
|
|
libbb/lineedit.c is an example how to do it: |
|
|
|
|
|
less, most, ed, vi |
|
|
awk |
|
|
[ef]grep |
|
|
sed |
|
|
|
|
|
Probably needs some specialized work: |
|
|
|
|
|
loadkeys |
|