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 - "more" doesn't accept " " to scroll by one page when BB_FEATURE_USE_TERMIOS
23 - doc / website updates to tell what the real mailing list is for busybox.
24 - fix 'cp' (or test suite script) so that it passes the test suite.
25 - merge Pavel's rm fixes.
27 These could get done before the 0.44 release if we have time, but we won't
28 hold up the 0.44 release just because of these:
30 - ps dirent race bug (need to stat the file before attempting chdir)
31 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
32 /tmp/file in the current directory, rather then trying and failing to create
33 a symlink named "." in the current working directory).
35 These will be deferred til after 0.44 is released. We will rework these to use
36 libc regex functions instead (as per the mailing list discussion):
38 - 'grep foo$ file' doesn't work
39 - 'grep *foo file' segfaults
44 * Make insmod actually work
51 * wget (or whatever I call it)
54 * group/commonize strings, remove dups (for i18n, l10n)
55 * consider making a unified option parser (if it can be done modular, small, etc.)
57 -----------------------
59 Running the following:
61 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
62 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
64 reveals the list of all external (i.e. libc) things that BusyBox depends on.
65 It would be a very nice thing to reduce this list to an absolute minimum, and
66 then create a microLibc to provide these functions. There is no good reason
67 for GNU libc to be so big. I'm sure it can be a lot better.
69 (BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
73 [andersen@slag busybox]$ grep -l getgroups *.[ch]
76 Policy violation. getgroups uses libc nss, which is unlikely
77 to be present in an embedded system.
79 To be replaced with a busybox local glob routine:
81 [andersen@slag busybox]$ grep -l glob *.[ch]
88 Can check_wildcard_match() from utility.c do this job?
91 -----------------------
93 Compile with debugging on, run 'nm --size-sort ./busybox'
94 and then start with the biggest things and make them smaller...
96 -----------------------
98 busybox.defs.h is too big and hard to follow.
100 Perhaps I need to add a better build system (like the Linux kernel?)
102 -----------------------
106 /bin/busybox --install -s which makes all links to commands that it
107 can support (an optionnal -s should be used for symbolic links instead
110 -----------------------
113 > Have you ever thought of doig network logging in busybox syslogd ? It
114 > would quite make sense on embedded systems... :)
116 So far I had not considered it. Basically, you wish to have
117 messages from the embedded box logged to a remote network
118 syslog box, right? I can see that this would be useful.
119 I'll add this to the TODO list,
122 -----------------------
125 I think that the add_inode &c in utility.c needs to also stow the
126 st_dev field, and that du.c should NOT call `reset_inode_list'
127 because there can be hard links from inside one argv/ to inside
128 another argv/. du.c probably ought to have an -x switch like GNU du
132 ------------------------------------------------------------------
134 An interesting email listing some apps that use /proc. BusyBox
135 tries to avoid /proc as mush as is possible, so this stuff is
136 interesting (to me at least):
139 Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
140 From: Riley Williams <rhw@MemAlpha.CX>
141 X-Sender: rhw@moo.cus.org.uk
142 To: almesber@lrc.di.epfl.ch
143 Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
144 Linux Kernel <linux-kernel@vger.rutgers.edu>
145 Subject: Re: What /proc should contain [was: /proc/driver/microcode]
146 In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
147 Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
148 Sender: owner-linux-kernel@vger.rutgers.edu
153 >> Nope, most /proc access is does via programs written in C.
155 > That varies a lot from file to file. E.g. I haven't seen any
156 > programs that are specificly designed to read /proc/atm/* yet,
157 > and I know of only one (fuser) that reads /proc/mounts,
158 > extracting only partial information (just to pick two examples
159 > that I'm quite familiar with).
161 As a point of reference, here's a slightly tweaked analysis of the
162 programs on the system I'm reading your mail on. Basically, I ran the
168 Q> strings $Z | grep /proc | sed "s=^=$Z ="
171 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
173 ...and then went through it removing comments and print format
174 strings. Replace /proc with /dev and you'd soon have an equivalent
175 list for that - although I can report that such is MUCH larger...
177 There are three programs therein that refer to /proc/mounts ...
183 ...and, as you stated, none that refer to /proc/atm on this system.
184 However, as this is a RedHat Linux 5.0 based system, that's not
185 necessarily an up to date reference thereto...
187 Here's the list anyway...
189 /bin/kill /proc/%d/cmdline
190 /bin/kill /proc/%d/stat
192 /bin/mount /proc/devices
193 /bin/mount /proc/filesystems
194 /bin/mount /proc/mounts
196 /bin/netstat /proc/net
197 /bin/netstat /proc/net/appletalk
198 /bin/netstat /proc/net/ax25
199 /bin/netstat /proc/net/ax25_route
200 /bin/netstat /proc/net/dev
201 /bin/netstat /proc/net/ip_masquerade
202 /bin/netstat /proc/net/ipx
203 /bin/netstat /proc/net/ipx_route
204 /bin/netstat /proc/net/netstat
205 /bin/netstat /proc/net/nr
206 /bin/netstat /proc/net/nr_neigh
207 /bin/netstat /proc/net/nr_nodes
208 /bin/netstat /proc/net/raw
209 /bin/netstat /proc/net/route
210 /bin/netstat /proc/net/rt_cache
211 /bin/netstat /proc/net/snmp
212 /bin/netstat /proc/net/tcp
213 /bin/netstat /proc/net/udp
214 /bin/netstat /proc/net/unix
216 /bin/umount /proc/devices
217 /bin/umount /proc/mounts
219 /sbin/arp /proc/net/appletalk
220 /sbin/arp /proc/net/arp
221 /sbin/arp /proc/net/ax25
222 /sbin/arp /proc/net/ipx
223 /sbin/arp /proc/net/nr
224 /sbin/arp /proc/net/unix
226 /sbin/cardctl /proc/devices
228 /sbin/cardmgr /proc/devices
230 /sbin/fdisk /proc/ide/%s/media
231 /sbin/fdisk /proc/scsi/scsi
233 /sbin/getty /proc/version
235 /sbin/ifconfig /proc/net
236 /sbin/ifconfig /proc/net/appletalk
237 /sbin/ifconfig /proc/net/ax25
238 /sbin/ifconfig /proc/net/dev
239 /sbin/ifconfig /proc/net/ipx
240 /sbin/ifconfig /proc/net/nr
241 /sbin/ifconfig /proc/net/unix
243 /sbin/ifup /proc/sys/kernel/modprobe
245 /sbin/ipchains /proc/net/ip_fwchains
246 /sbin/ipchains /proc/net/ip_fwnames
247 /sbin/ipchains /proc/net/ip_masquerade
248 /sbin/ipchains /proc/sys/net/ipv4/ip_forward
250 /sbin/ipmaddr /proc/net/dev_mcast
251 /sbin/ipmaddr /proc/net/igmp
252 /sbin/ipmaddr /proc/net/igmp6
254 /sbin/iptunnel /proc/net/dev
256 /sbin/killall5 /proc/%s/cmdline
257 /sbin/killall5 /proc/%s/exe
258 /sbin/killall5 /proc/%s/stat
259 /sbin/killall5 /proc/version
261 /sbin/klogd /proc/kmsg
263 /sbin/lsmod /proc/modules
265 /sbin/modprobe /proc/modules
267 /sbin/pidof /proc/%s/cmdline
268 /sbin/pidof /proc/%s/exe
269 /sbin/pidof /proc/%s/stat
270 /sbin/pidof /proc/version
272 /sbin/probe /proc/pci
274 /sbin/rarp /proc/net/ax25
275 /sbin/rarp /proc/net/nr
276 /sbin/rarp /proc/net/rarp
278 /sbin/rmmod /proc/modules
280 /sbin/rmmod.static /proc/modules
282 /sbin/route /proc/net/appletalk
283 /sbin/route /proc/net/ax25
284 /sbin/route /proc/net/ax25_route
285 /sbin/route /proc/net/ipx
286 /sbin/route /proc/net/ipx_route
287 /sbin/route /proc/net/nr
288 /sbin/route /proc/net/nr_neigh
289 /sbin/route /proc/net/nr_nodes
290 /sbin/route /proc/net/route
291 /sbin/route /proc/net/rt_cache
292 /sbin/route /proc/net/unix
294 /sbin/scsi_info /proc/scsi
295 /sbin/scsi_info /proc/scsi/%s
296 /sbin/scsi_info /proc/scsi/scsi
298 /sbin/slattach /proc/net/ax25
299 /sbin/slattach /proc/net/nr
301 /sbin/swapoff /proc/swaps
303 /sbin/swapon /proc/swaps
305 /sbin/uugetty /proc/version
308 /usr/bin/dig /proc/interrupts
309 /usr/bin/dig /proc/meminfo
310 /usr/bin/dig /proc/rtc
311 /usr/bin/dig /proc/self/status
312 /usr/bin/dig /proc/stat
314 /usr/bin/dnsquery /proc/
315 /usr/bin/dnsquery /proc/interrupts
316 /usr/bin/dnsquery /proc/meminfo
317 /usr/bin/dnsquery /proc/rtc
318 /usr/bin/dnsquery /proc/self/status
319 /usr/bin/dnsquery /proc/stat
321 /usr/bin/eject /proc/mounts
323 /usr/bin/emacs /proc/loadavg
325 /usr/bin/fetchmail /proc/net/dev
327 /usr/bin/free /proc/meminfo
329 /usr/bin/gmake /proc/loadavg
331 /usr/bin/gpm-root /proc/loadavg
332 /usr/bin/gpm-root /proc/meminfo
335 /usr/bin/host /proc/interrupts
336 /usr/bin/host /proc/meminfo
337 /usr/bin/host /proc/rtc
338 /usr/bin/host /proc/self/status
339 /usr/bin/host /proc/stat
341 /usr/bin/hoststat /proc/loadavg
343 /usr/bin/hwdiag /proc/cpuinfo
344 /usr/bin/hwdiag /proc/pci
345 /usr/bin/hwdiag /proc/scsi/scsi
346 /usr/bin/hwdiag /proc/version
348 /usr/bin/lsdev /proc/dma
349 /usr/bin/lsdev /proc/interrupts
350 /usr/bin/lsdev /proc/ioports
352 /usr/bin/mailq /proc/loadavg
354 /usr/bin/make /proc/loadavg
356 /usr/bin/mcookie /proc/loadavg
357 /usr/bin/mcookie /proc/stat
359 /usr/bin/newaliases /proc/loadavg
361 /usr/bin/nslookup /proc/
362 /usr/bin/nslookup /proc/interrupts
363 /usr/bin/nslookup /proc/meminfo
364 /usr/bin/nslookup /proc/rtc
365 /usr/bin/nslookup /proc/self/status
366 /usr/bin/nslookup /proc/stat
368 /usr/bin/nsupdate /proc/
369 /usr/bin/nsupdate /proc/interrupts
370 /usr/bin/nsupdate /proc/meminfo
371 /usr/bin/nsupdate /proc/rtc
372 /usr/bin/nsupdate /proc/self/status
373 /usr/bin/nsupdate /proc/stat
375 /usr/bin/pgp /proc/version
376 /usr/bin/pgpe /proc/version
377 /usr/bin/pgpk /proc/version
378 /usr/bin/pgps /proc/version
379 /usr/bin/pgpv /proc/version
381 /usr/bin/procinfo /proc/cmdline
382 /usr/bin/procinfo /proc/devices
383 /usr/bin/procinfo /proc/dma
384 /usr/bin/procinfo /proc/filesystems
385 /usr/bin/procinfo /proc/interrupts
386 /usr/bin/procinfo /proc/loadavg
387 /usr/bin/procinfo /proc/meminfo
388 /usr/bin/procinfo /proc/modules
389 /usr/bin/procinfo /proc/stat
390 /usr/bin/procinfo /proc/uptime
391 /usr/bin/procinfo /proc/version
393 /usr/bin/purgestat /proc/loadavg
395 /usr/bin/screen /proc/loadavg
397 /usr/bin/strace /proc/%d/stat
399 /usr/bin/top /proc/cpuinfo
400 /usr/bin/top /proc/meminfo
401 /usr/bin/top /proc/stat
403 /usr/bin/vmstat /proc/%s/stat
404 /usr/bin/vmstat /proc/meminfo
405 /usr/bin/vmstat /proc/stat
407 /usr/sbin/atd /proc/loadavg
409 /usr/sbin/dnskeygen /proc/
410 /usr/sbin/dnskeygen /proc/interrupts
411 /usr/sbin/dnskeygen /proc/meminfo
412 /usr/sbin/dnskeygen /proc/rtc
413 /usr/sbin/dnskeygen /proc/self/status
414 /usr/sbin/dnskeygen /proc/stat
416 /usr/sbin/fuser /proc/%d/stat
417 /usr/sbin/fuser /proc/net/%s
418 /usr/sbin/fuser /proc/net/unix
420 /usr/sbin/in.identd /proc/net/tcp
422 /usr/sbin/irpd /proc/
423 /usr/sbin/irpd /proc/interrupts
424 /usr/sbin/irpd /proc/meminfo
425 /usr/sbin/irpd /proc/rtc
426 /usr/sbin/irpd /proc/self/status
427 /usr/sbin/irpd /proc/stat
429 /usr/sbin/named /proc/
430 /usr/sbin/named /proc/interrupts
431 /usr/sbin/named /proc/meminfo
432 /usr/sbin/named /proc/rtc
433 /usr/sbin/named /proc/self/status
434 /usr/sbin/named /proc/stat
436 /usr/sbin/named-xfer /proc/
437 /usr/sbin/named-xfer /proc/interrupts
438 /usr/sbin/named-xfer /proc/meminfo
439 /usr/sbin/named-xfer /proc/rtc
440 /usr/sbin/named-xfer /proc/self/status
441 /usr/sbin/named-xfer /proc/stat
443 /usr/sbin/readprofile /proc/profile
445 /usr/sbin/rwhod /proc/loadavg
446 /usr/sbin/rwhod /proc/uptime
448 /usr/sbin/sendmail /proc/loadavg
450 /usr/sbin/setconsole /proc/openprom/options
451 /usr/sbin/setconsole /proc/openprom/options/${console}-mode
452 /usr/sbin/setconsole /proc/openprom/options/input-device
453 /usr/sbin/setconsole /proc/openprom/options/output-device
455 Best wishes from Riley.
457 * Copyright (C) 1999, Memory Alpha Systems.
458 * All rights and wrongs reserved.
460 +----------------------------------------------------------------------+
461 | There is something frustrating about the quality and speed of Linux |
462 | development, ie., the quality is too high and the speed is too high, |
463 | in other words, I can implement this XXXX feature, but I bet someone |
464 | else has already done so and is just about to release their patch. |
465 +----------------------------------------------------------------------+
466 * http://www.memalpha.cx/Linux/Kernel/
470 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
471 the body of a message to majordomo@vger.rutgers.edu
472 Please read the FAQ at http://www.tux.org/lkml/