Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1122 by niro, Sun May 30 11:32:42 2010 UTC revision 1123 by niro, Wed Aug 18 21:56:57 2010 UTC
# Line 1  Line 1 
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
# Line 9  between your work and theirs.  But other Line 12  between your work and theirs.  But other
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
# Line 31  Rob Landley suggested this: Line 31  Rob Landley suggested this:
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
# Line 59  Rob Landley suggested this: Line 59  Rob Landley suggested this:
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.
# Line 78  Rob Landley suggested this: Line 79  Rob Landley suggested this:
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
# Line 122  patch Line 126  patch
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.
# Line 180  Memory Allocation Line 181  Memory Allocation
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    
# Line 269  Minor stuff: Line 236  Minor stuff:
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  ---  ---
# Line 299  vdprintf() -> similar sized functionalit Line 261  vdprintf() -> similar sized functionalit
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
# Line 314  vdprintf() -> similar sized functionalit Line 274  vdprintf() -> similar sized functionalit
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  

Legend:
Removed from v.1122  
changed lines
  Added in v.1123