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 |
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 |
|
|
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. |
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 |
--- |
--- |
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 |
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. |
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); |
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 |
|
|
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 |