1 TODO list for busybox in no particular order. Just because something
2 is listed here doesn't mean that it is going to be added to busybox,
3 or that doing so is even a good idea. It just means that I _might_ get
4 around to it some time. If you have any good ideas, please let me know.
6 * login/sulogin/passwd/getty/etc are part of tinylogin, and so are not
7 needed or wanted in busybox (or else I'd have to link to libcrypt).
9 * Networking apps are probably going to be split out some time soon into a
10 separate package (named perhaps netkit-tiny?). This would remove the
11 following items from BusyBox: hostid, hostname, nc, nslookup, telnet,
12 and ping. nfs mounting and syslogd (when it supports network logging)
13 will remain in BusyBox.
19 Bugs that need fixing before the 0.44 release goes out the door:
21 - mkfs.minix rev 1.7 completely broke the parser. Fix it.
22 - 'grep foo$ file' doesn't work
23 - 'grep *foo file' segfaults
24 - ps dirent race bug (need to stat the file before attempting chdir)
25 - The following commands segfault:
35 - I believe that swaponoff may also be also broken (check it).
36 - It used to be that BusyBox tar would happily overwrite existing files on
37 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
38 existing file is found.
39 - Make 'mount -a' work even when /proc isn't mounted (ugly bug).
40 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
41 /tmp/file in the current directory, rather then trying and failing to create
42 a symlink named "." in the current working directory).
44 - "cp -a sourcedir/*" (note: no dest) - produces an odd error message about
45 the last file in the dir, rather than saying "missing destination file".
46 - "math" should also take input from stdin
47 - "more" doesn't accept " " to scroll by one page when BB_FEATURE_USE_TERMIOS
53 * Make insmod actually work
60 * wget (or whatever I call it)
63 * group/commonize strings, remove dups (for i18n, l10n)
66 -----------------------
68 Running the following:
70 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
71 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
73 reveals the list of all external (i.e. libc) things that BusyBox depends on.
74 It would be a very nice thing to reduce this list to an absolute minimum, and
75 then create a microLibc to provide these functions. There is no good reason
76 for GNU libc to be so big. I'm sure it can be a lot better.
78 (BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
82 [andersen@slag busybox]$ grep -l getgroups *.[ch]
85 Policy violation. getgroups uses libc nss, which is unlikely
86 to be present in an embedded system.
88 To be replaced with a busybox local glob routine:
90 [andersen@slag busybox]$ grep -l glob *.[ch]
97 Can check_wildcard_match() from utility.c do this job?
100 -----------------------
102 Compile with debugging on, run 'nm --size-sort ./busybox'
103 and then start with the biggest things and make them smaller...
105 -----------------------
107 busybox.defs.h is too big and hard to follow.
109 Perhaps I need to add a better build system (like the Linux kernel?)
111 -----------------------
115 /bin/busybox --install -s which makes all links to commands that it
116 can support (an optionnal -s should be used for symbolic links instead
119 -----------------------
122 > Have you ever thought of doig network logging in busybox syslogd ? It
123 > would quite make sense on embedded systems... :)
125 So far I had not considered it. Basically, you wish to have
126 messages from the embedded box logged to a remote network
127 syslog box, right? I can see that this would be useful.
128 I'll add this to the TODO list,
131 -----------------------
134 I think that the add_inode &c in utility.c needs to also stow the
135 st_dev field, and that du.c should NOT call `reset_inode_list'
136 because there can be hard links from inside one argv/ to inside
137 another argv/. du.c probably ought to have an -x switch like GNU du
141 ------------------------------------------------------------------
143 An interesting email listing some apps that use /proc. BusyBox
144 tries to avoid /proc as mush as is possible, so this stuff is
145 interesting (to me at least):
148 Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
149 From: Riley Williams <rhw@MemAlpha.CX>
150 X-Sender: rhw@moo.cus.org.uk
151 To: almesber@lrc.di.epfl.ch
152 Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
153 Linux Kernel <linux-kernel@vger.rutgers.edu>
154 Subject: Re: What /proc should contain [was: /proc/driver/microcode]
155 In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
156 Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
157 Sender: owner-linux-kernel@vger.rutgers.edu
162 >> Nope, most /proc access is does via programs written in C.
164 > That varies a lot from file to file. E.g. I haven't seen any
165 > programs that are specificly designed to read /proc/atm/* yet,
166 > and I know of only one (fuser) that reads /proc/mounts,
167 > extracting only partial information (just to pick two examples
168 > that I'm quite familiar with).
170 As a point of reference, here's a slightly tweaked analysis of the
171 programs on the system I'm reading your mail on. Basically, I ran the
177 Q> strings $Z | grep /proc | sed "s=^=$Z ="
180 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
182 ...and then went through it removing comments and print format
183 strings. Replace /proc with /dev and you'd soon have an equivalent
184 list for that - although I can report that such is MUCH larger...
186 There are three programs therein that refer to /proc/mounts ...
192 ...and, as you stated, none that refer to /proc/atm on this system.
193 However, as this is a RedHat Linux 5.0 based system, that's not
194 necessarily an up to date reference thereto...
196 Here's the list anyway...
198 /bin/kill /proc/%d/cmdline
199 /bin/kill /proc/%d/stat
201 /bin/mount /proc/devices
202 /bin/mount /proc/filesystems
203 /bin/mount /proc/mounts
205 /bin/netstat /proc/net
206 /bin/netstat /proc/net/appletalk
207 /bin/netstat /proc/net/ax25
208 /bin/netstat /proc/net/ax25_route
209 /bin/netstat /proc/net/dev
210 /bin/netstat /proc/net/ip_masquerade
211 /bin/netstat /proc/net/ipx
212 /bin/netstat /proc/net/ipx_route
213 /bin/netstat /proc/net/netstat
214 /bin/netstat /proc/net/nr
215 /bin/netstat /proc/net/nr_neigh
216 /bin/netstat /proc/net/nr_nodes
217 /bin/netstat /proc/net/raw
218 /bin/netstat /proc/net/route
219 /bin/netstat /proc/net/rt_cache
220 /bin/netstat /proc/net/snmp
221 /bin/netstat /proc/net/tcp
222 /bin/netstat /proc/net/udp
223 /bin/netstat /proc/net/unix
225 /bin/umount /proc/devices
226 /bin/umount /proc/mounts
228 /sbin/arp /proc/net/appletalk
229 /sbin/arp /proc/net/arp
230 /sbin/arp /proc/net/ax25
231 /sbin/arp /proc/net/ipx
232 /sbin/arp /proc/net/nr
233 /sbin/arp /proc/net/unix
235 /sbin/cardctl /proc/devices
237 /sbin/cardmgr /proc/devices
239 /sbin/fdisk /proc/ide/%s/media
240 /sbin/fdisk /proc/scsi/scsi
242 /sbin/getty /proc/version
244 /sbin/ifconfig /proc/net
245 /sbin/ifconfig /proc/net/appletalk
246 /sbin/ifconfig /proc/net/ax25
247 /sbin/ifconfig /proc/net/dev
248 /sbin/ifconfig /proc/net/ipx
249 /sbin/ifconfig /proc/net/nr
250 /sbin/ifconfig /proc/net/unix
252 /sbin/ifup /proc/sys/kernel/modprobe
254 /sbin/ipchains /proc/net/ip_fwchains
255 /sbin/ipchains /proc/net/ip_fwnames
256 /sbin/ipchains /proc/net/ip_masquerade
257 /sbin/ipchains /proc/sys/net/ipv4/ip_forward
259 /sbin/ipmaddr /proc/net/dev_mcast
260 /sbin/ipmaddr /proc/net/igmp
261 /sbin/ipmaddr /proc/net/igmp6
263 /sbin/iptunnel /proc/net/dev
265 /sbin/killall5 /proc/%s/cmdline
266 /sbin/killall5 /proc/%s/exe
267 /sbin/killall5 /proc/%s/stat
268 /sbin/killall5 /proc/version
270 /sbin/klogd /proc/kmsg
272 /sbin/lsmod /proc/modules
274 /sbin/modprobe /proc/modules
276 /sbin/pidof /proc/%s/cmdline
277 /sbin/pidof /proc/%s/exe
278 /sbin/pidof /proc/%s/stat
279 /sbin/pidof /proc/version
281 /sbin/probe /proc/pci
283 /sbin/rarp /proc/net/ax25
284 /sbin/rarp /proc/net/nr
285 /sbin/rarp /proc/net/rarp
287 /sbin/rmmod /proc/modules
289 /sbin/rmmod.static /proc/modules
291 /sbin/route /proc/net/appletalk
292 /sbin/route /proc/net/ax25
293 /sbin/route /proc/net/ax25_route
294 /sbin/route /proc/net/ipx
295 /sbin/route /proc/net/ipx_route
296 /sbin/route /proc/net/nr
297 /sbin/route /proc/net/nr_neigh
298 /sbin/route /proc/net/nr_nodes
299 /sbin/route /proc/net/route
300 /sbin/route /proc/net/rt_cache
301 /sbin/route /proc/net/unix
303 /sbin/scsi_info /proc/scsi
304 /sbin/scsi_info /proc/scsi/%s
305 /sbin/scsi_info /proc/scsi/scsi
307 /sbin/slattach /proc/net/ax25
308 /sbin/slattach /proc/net/nr
310 /sbin/swapoff /proc/swaps
312 /sbin/swapon /proc/swaps
314 /sbin/uugetty /proc/version
317 /usr/bin/dig /proc/interrupts
318 /usr/bin/dig /proc/meminfo
319 /usr/bin/dig /proc/rtc
320 /usr/bin/dig /proc/self/status
321 /usr/bin/dig /proc/stat
323 /usr/bin/dnsquery /proc/
324 /usr/bin/dnsquery /proc/interrupts
325 /usr/bin/dnsquery /proc/meminfo
326 /usr/bin/dnsquery /proc/rtc
327 /usr/bin/dnsquery /proc/self/status
328 /usr/bin/dnsquery /proc/stat
330 /usr/bin/eject /proc/mounts
332 /usr/bin/emacs /proc/loadavg
334 /usr/bin/fetchmail /proc/net/dev
336 /usr/bin/free /proc/meminfo
338 /usr/bin/gmake /proc/loadavg
340 /usr/bin/gpm-root /proc/loadavg
341 /usr/bin/gpm-root /proc/meminfo
344 /usr/bin/host /proc/interrupts
345 /usr/bin/host /proc/meminfo
346 /usr/bin/host /proc/rtc
347 /usr/bin/host /proc/self/status
348 /usr/bin/host /proc/stat
350 /usr/bin/hoststat /proc/loadavg
352 /usr/bin/hwdiag /proc/cpuinfo
353 /usr/bin/hwdiag /proc/pci
354 /usr/bin/hwdiag /proc/scsi/scsi
355 /usr/bin/hwdiag /proc/version
357 /usr/bin/lsdev /proc/dma
358 /usr/bin/lsdev /proc/interrupts
359 /usr/bin/lsdev /proc/ioports
361 /usr/bin/mailq /proc/loadavg
363 /usr/bin/make /proc/loadavg
365 /usr/bin/mcookie /proc/loadavg
366 /usr/bin/mcookie /proc/stat
368 /usr/bin/newaliases /proc/loadavg
370 /usr/bin/nslookup /proc/
371 /usr/bin/nslookup /proc/interrupts
372 /usr/bin/nslookup /proc/meminfo
373 /usr/bin/nslookup /proc/rtc
374 /usr/bin/nslookup /proc/self/status
375 /usr/bin/nslookup /proc/stat
377 /usr/bin/nsupdate /proc/
378 /usr/bin/nsupdate /proc/interrupts
379 /usr/bin/nsupdate /proc/meminfo
380 /usr/bin/nsupdate /proc/rtc
381 /usr/bin/nsupdate /proc/self/status
382 /usr/bin/nsupdate /proc/stat
384 /usr/bin/pgp /proc/version
385 /usr/bin/pgpe /proc/version
386 /usr/bin/pgpk /proc/version
387 /usr/bin/pgps /proc/version
388 /usr/bin/pgpv /proc/version
390 /usr/bin/procinfo /proc/cmdline
391 /usr/bin/procinfo /proc/devices
392 /usr/bin/procinfo /proc/dma
393 /usr/bin/procinfo /proc/filesystems
394 /usr/bin/procinfo /proc/interrupts
395 /usr/bin/procinfo /proc/loadavg
396 /usr/bin/procinfo /proc/meminfo
397 /usr/bin/procinfo /proc/modules
398 /usr/bin/procinfo /proc/stat
399 /usr/bin/procinfo /proc/uptime
400 /usr/bin/procinfo /proc/version
402 /usr/bin/purgestat /proc/loadavg
404 /usr/bin/screen /proc/loadavg
406 /usr/bin/strace /proc/%d/stat
408 /usr/bin/top /proc/cpuinfo
409 /usr/bin/top /proc/meminfo
410 /usr/bin/top /proc/stat
412 /usr/bin/vmstat /proc/%s/stat
413 /usr/bin/vmstat /proc/meminfo
414 /usr/bin/vmstat /proc/stat
416 /usr/sbin/atd /proc/loadavg
418 /usr/sbin/dnskeygen /proc/
419 /usr/sbin/dnskeygen /proc/interrupts
420 /usr/sbin/dnskeygen /proc/meminfo
421 /usr/sbin/dnskeygen /proc/rtc
422 /usr/sbin/dnskeygen /proc/self/status
423 /usr/sbin/dnskeygen /proc/stat
425 /usr/sbin/fuser /proc/%d/stat
426 /usr/sbin/fuser /proc/net/%s
427 /usr/sbin/fuser /proc/net/unix
429 /usr/sbin/in.identd /proc/net/tcp
431 /usr/sbin/irpd /proc/
432 /usr/sbin/irpd /proc/interrupts
433 /usr/sbin/irpd /proc/meminfo
434 /usr/sbin/irpd /proc/rtc
435 /usr/sbin/irpd /proc/self/status
436 /usr/sbin/irpd /proc/stat
438 /usr/sbin/named /proc/
439 /usr/sbin/named /proc/interrupts
440 /usr/sbin/named /proc/meminfo
441 /usr/sbin/named /proc/rtc
442 /usr/sbin/named /proc/self/status
443 /usr/sbin/named /proc/stat
445 /usr/sbin/named-xfer /proc/
446 /usr/sbin/named-xfer /proc/interrupts
447 /usr/sbin/named-xfer /proc/meminfo
448 /usr/sbin/named-xfer /proc/rtc
449 /usr/sbin/named-xfer /proc/self/status
450 /usr/sbin/named-xfer /proc/stat
452 /usr/sbin/readprofile /proc/profile
454 /usr/sbin/rwhod /proc/loadavg
455 /usr/sbin/rwhod /proc/uptime
457 /usr/sbin/sendmail /proc/loadavg
459 /usr/sbin/setconsole /proc/openprom/options
460 /usr/sbin/setconsole /proc/openprom/options/${console}-mode
461 /usr/sbin/setconsole /proc/openprom/options/input-device
462 /usr/sbin/setconsole /proc/openprom/options/output-device
464 Best wishes from Riley.
466 * Copyright (C) 1999, Memory Alpha Systems.
467 * All rights and wrongs reserved.
469 +----------------------------------------------------------------------+
470 | There is something frustrating about the quality and speed of Linux |
471 | development, ie., the quality is too high and the speed is too high, |
472 | in other words, I can implement this XXXX feature, but I bet someone |
473 | else has already done so and is just about to release their patch. |
474 +----------------------------------------------------------------------+
475 * http://www.memalpha.cx/Linux/Kernel/
479 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
480 the body of a message to majordomo@vger.rutgers.edu
481 Please read the FAQ at http://www.tux.org/lkml/