aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-06-19 22:15:20 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-06-19 22:15:20 +0200
commit91d7ee31f766a13595c1042d375f8374f2c3675f (patch)
treed9c1e4f669feb59e81527b2b0386699ea8e9d164 /TODO
parent4a96617095f40e3cfcf148a8a7d5d83f71079aa1 (diff)
downloadbusybox-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--TODO118
1 files changed, 10 insertions, 108 deletions
diff --git a/TODO b/TODO
index af4c467c2..6f8cd8a32 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,8 @@
1Busybox TODO 1Busybox TODO
2 2
3Harvest patches from
4http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/busybox/
5
3Stuff that needs to be done. This is organized by who plans to get around to 6Stuff that needs to be done. This is organized by who plans to get around to
4doing it eventually, but that doesn't mean they "own" the item. If you want to 7doing it eventually, but that doesn't mean they "own" the item. If you want to
5do one of these bounce an email off the person it's listed under to see if they 8do 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.
9Rob Landley suggested this: 12Rob 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
97Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: 101Bernhard 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---
180Switch 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---
214FEATURE_CLEAN_UP 184FEATURE_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
271Code cleanup:
272
273Replace deprecated functions.
274
275--- 240---
276vdprintf() -> similar sized functionality 241vdprintf() -> 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
316Unicode work needed:
317
318Unicode support uses libc multibyte functions if LOCALE_SUPPORT is on
319(in this case, the code will also support many more encodings),
320or uses a limited subset of re-implemented multibyte functions
321which only understand "one byte == one char" and unicode.
322This is useful if you build against uclibc with locale support disabled.
323
324Unicode-dependent applets must call check_unicode_in_env() when they
325begin executing.
326
327Applet code may conditionalize on UNICODE_SUPPORT in order to use
328more efficient code if unicode support is not requested.
329
330Available functions (if you need more, implement them in libbb/unicode.c
331so that they work without LOCALE_SUPPORT too):
332
333int bb_mbstrlen(str) - multibyte-aware strlen
334size_t mbstowcs(wdest, src, n)
335size_t wcstombs(dest, wsrc, n)
336size_t wcrtomb(str, wc, wstate)
337int iswspace(wc)
338int iswalnum(wc)
339int iswpunct(wc)
340
341Applets which only need to align columns on screen correctly:
342
343ls - already done, use source as an example
344df
345dumpleases
346lsmod
347
348Applets which need to account for Unicode chars
349while processing the output:
350
351[un]expand
352fold
353man
354watch
355cut (-b and -c are currently the same, needs fixing)
356
357These applets need to ensure that unicode input
358is handled correctly (say, <unicode><backspace> sequence):
359
360getty, login
361rm -i
362unzip (overwrite prompt)
363
364Viewers/editors are more difficult (many cases to get right).
365libbb/lineedit.c is an example how to do it:
366
367less, most, ed, vi
368awk
369[ef]grep
370sed
371
372Probably needs some specialized work:
373
374loadkeys