Magellan Linux

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

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

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 6  do one of these bounce an email off the Line 6  do one of these bounce an email off the
6  have any suggestions how they plan to go about it, and to minimize conflicts  have any suggestions how they plan to go about it, and to minimize conflicts
7  between your work and theirs.  But otherwise, all of these are fair game.  between your work and theirs.  But otherwise, all of these are fair game.
8    
9  Rob Landley suggested these:  Rob Landley suggested this:
10    Add a libbb/platform.c    Implement bb_realpath() that can handle NULL on non-glibc.
     Implement fdprintf() for platforms that haven't got one.  
     Implement bb_realpath() that can handle NULL on non-glibc.  
     Cleanup bb_asprintf()  
11    
12    Remove obsolete _() wrapper crud for internationalization we don't do.    Remove obsolete _() wrapper crud for internationalization we don't do.
13    Figure out where we need utf8 support, and add it.    Figure out where we need utf8 support, and add it.
14    
15    sh    sh
16      The command shell situation is a big mess.  We have three 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
18      work all that well (especially not in a chroot environment), due to apps not      work all that well (especially not in a chroot environment), due to apps not
19      being reentrant.      being reentrant.
20      lash is phased out. hush can be configured down to be nearly as small,  
     but less buggy :)  
   init  
     General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG).  
21    Do a SUSv3 audit    Do a SUSv3 audit
22      Look at the full Single Unix Specification version 3 (available online at      Look at the full Single Unix Specification version 3 (available online at
23      "http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and      "http://www.opengroup.org/onlinepubs/009695399/nfindex.html") and
# Line 32  Rob Landley suggested these: Line 26  Rob Landley suggested these:
26    
27      Even better would be some kind of automated compliance test harness that      Even better would be some kind of automated compliance test harness that
28      exercises each command line option and the various corner cases.      exercises each command line option and the various corner cases.
29    
30    Internationalization    Internationalization
31      How much internationalization should we do?      How much internationalization should we do?
32    
# Line 103  Bernhard Reutner-Fischer <busybox@busybo Line 98  Bernhard Reutner-Fischer <busybox@busybo
98    New debug options:    New debug options:
99      -Wlarger-than-127      -Wlarger-than-127
100      Cleanup any big users      Cleanup any big users
     -Wunused-parameter  
     Facilitate applet PROTOTYPES to provide means for having applets that  
     do a) not take any arguments b) need only one of argc or argv c) need  
     both argc and argv. All of these three options should go for the most  
     feature complete denominator.  
101    Collate BUFSIZ IOBUF_SIZE MY_BUF_SIZE PIPE_PROGRESS_SIZE BUFSIZE PIPESIZE    Collate BUFSIZ IOBUF_SIZE MY_BUF_SIZE PIPE_PROGRESS_SIZE BUFSIZE PIPESIZE
102      make bb_common_bufsiz1 configurable, size wise.      make bb_common_bufsiz1 configurable, size wise.
103      make pipesize configurable, size wise.      make pipesize configurable, size wise.
# Line 132  patch Line 122  patch
122    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
123    coming soon:  http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2    coming soon:  http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2
124  ---  ---
 man  
   It would be nice to have a man command.  Not one that handles troff or  
   anything, just one that can handle preformatted ascii man pages, possibly  
   compressed.  This could probably be a script in the extras directory that  
   calls cat/zcat/bzcat | less  
   
   (How doclifter might work into this is anybody's guess.)  
 ---  
125  ar  ar
126    Write support!    Write support!
127  ---  ---
# Line 183  Unify archivers Line 165  Unify archivers
165  ---  ---
166  Text buffer support.  Text buffer support.
167    Several existing applets (sort, vi, less...) read    Several existing applets (sort, vi, less...) read
168    a whole file into memory and act on it.  There might be an opportunity    a whole file into memory and act on it.  Use open_read_close().
   for shared code in there that could be moved into libbb...  
169  ---  ---
170  Memory Allocation  Memory Allocation
171    We have a CONFIG_BUFFER mechanism that lets us select whether to do memory    We have a CONFIG_BUFFER mechanism that lets us select whether to do memory
# Line 236  Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS Line 217  Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS
217  FEATURE_CLEAN_UP  FEATURE_CLEAN_UP
218    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.
219    
220    Normally we rely on exit() to free memory, close files, and unmap segments    Normally we rely on exit() to free memory, close files and unmap segments
221    for us.  This makes most calls to free(), close(), and unmap() optional in    for us.  This makes most calls to free(), close(), and unmap() optional in
222    busybox applets that don't intend to run for very long, and optional stuff    busybox applets that don't intend to run for very long, and optional stuff
223    can be omitted to save size.    can be omitted to save size.
# Line 265  FEATURE_CLEAN_UP Line 246  FEATURE_CLEAN_UP
246    For right now, exit() handles it just fine.    For right now, exit() handles it just fine.
247    
248    
   
249  Minor stuff:  Minor stuff:
250    watchdog.c could autodetect the timer duration via:    watchdog.c could autodetect the timer duration via:
251      if(!ioctl (fd, WDIOC_GETTIMEOUT, &tmo)) timer_duration = 1 + (tmo / 2);      if(!ioctl (fd, WDIOC_GETTIMEOUT, &tmo)) timer_duration = 1 + (tmo / 2);
# Line 280  Minor stuff: Line 260  Minor stuff:
260  ---  ---
261    possible code duplication ingroup() and is_a_group_member()    possible code duplication ingroup() and is_a_group_member()
262  ---  ---
263    Move __get_hz() to a better place and (re)use it in route.c, ash.c, msh.c    Move __get_hz() to a better place and (re)use it in route.c, ash.c
264  ---  ---
265    See grep -r strtod    See grep -r strtod
266    Alot of duplication that wants cleanup.    Alot of duplication that wants cleanup.
267  ---  ---
268    in_ether duplicated in network/{interface,ifconfig}.c    in_ether duplicated in network/{interface,ifconfig}.c
269  ---  ---
270      unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles.
271    ---
272       support start-stop-daemon -d <chdir-path>
273    
274  Code cleanup:  Code cleanup:
275    
# Line 296  Replace deprecated functions. Line 278  Replace deprecated functions.
278  ---  ---
279  vdprintf() -> similar sized functionality  vdprintf() -> similar sized functionality
280  ---  ---
281    
282    (TODO list after discussion 11.05.2009)
283    
284    * shrink tc/brctl/ip
285      tc/brctl seem like fairly large things to try and tackle in your timeframe,
286      and i think people have posted attempts in the past. Adding additional
287      options to ip though seems reasonable.
288    
289    * add tests for some applets
290    
291    * implement POSIX utilities and audit them for POSIX conformance. then
292      audit them for GNU conformance. then document all your findings in a new
293      doc/conformance.txt file while perhaps implementing some of the missing
294      features.
295      you can find the latest POSIX documentation (1003.1-2008) here:
296      http://www.opengroup.org/onlinepubs/9699919799/
297      and the complete list of all utilities that POSIX covers:
298      http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html
299      The first step would to generate a file/matrix what is already archived
300      (also IPV6)
301    
302    * ntpdate/ntpd (see ntpclient and openntp for examples)
303    
304    * implement 'at'
305    
306    * rpcbind (former portmap) or equivalent
307      so that we don't have to use -o nolock on nfs mounts
308    
309    * check IPV6 compliance
310    
311    * generate a mini example using kernel+busybox only (+libc) for example
312    
313    * more support for advanced linux 2.6.x features, see: iotop
314      most likely there is more
315    
316    * even more support for statistics: mpstat, iostat, powertop....
317    
318    
319    Unicode work needed:
320    
321    Unicode support uses libc multibyte functions if LOCALE_SUPPORT is on
322    (in this case, the code will also support many more encodings),
323    or uses a limited subset of re-implemented multibyte functions
324    which only understand "one byte == one char" and unicode.
325    This is useful if you build against uclibc with locale support disabled.
326    
327    Unicode-dependent applets must call check_unicode_in_env() when they
328    begin executing.
329    
330    Applet code may conditionalize on FEATURE_ASSUME_UNICODE
331    in order to use more efficient code if unicode support is not requested.
332    
333    Available functions (if you need more, implement them in libbb/unicode.c
334    so that they work without LOCALE_SUPPORT too):
335    
336    int bb_mbstrlen(str) - multibyte-aware strlen
337    size_t mbstowcs(wdest, src, n)
338    size_t wcstombs(dest, wsrc, n)
339    size_t wcrtomb(str, wc, wstate)
340    int iswspace(wc)
341    int iswalnum(wc)
342    int iswpunct(wc)
343    
344    Applets which only need to align columns on screen correctly:
345    
346    ls - already done, use source as an example
347    df
348    dumpleases
349    lsmod
350    
351    Applets which need to account for Unicode chars
352    while processing the output:
353    
354    [un]expand
355    fold
356    man
357    watch
358    cut (-b and -c are currently the same, needs fixing)
359    
360    These applets need to ensure that unicode input
361    is handled correctly (say, <unicode><backspace> sequence):
362    
363    getty, login
364    rm -i
365    unzip (overwrite prompt)
366    
367    Viewers/editors are more difficult (many cases to get right).
368    libbb/lineedit.c is an example how to do it:
369    
370    less, most, ed, vi
371    awk
372    [ef]grep
373    sed
374    
375    Probably needs some specialized work:
376    
377    loadkeys

Legend:
Removed from v.983  
changed lines
  Added in v.984