blob: e6c9cfd8f3dd542ae25e9dcea71de65aef695a15 [file] [log] [blame]
Eric Andersenb186d981999-12-03 09:19:54 +00001TODO list for busybox in no particular order. Just because something
2is listed here doesn't mean that it is going to be added to busybox,
3or that doing so is even a good idea. It just means that I _might_ get
4around to it some time. If you have any good ideas, please let me know.
Eric Andersen394f7641999-11-23 21:38:12 +00005
Erik Andersen1c5b2581999-12-16 20:59:36 +00006* login/sulogin/passwd/getty/etc are part of tinylogin, and so are not
Erik Andersen94f5e0b2000-05-01 19:10:52 +00007 needed or wanted in busybox (or else I'd have to link to libcrypt).
Erik Andersen1c5b2581999-12-16 20:59:36 +00008
Erik Andersen31638212000-01-15 22:28:50 +00009* Networking apps are probably going to be split out some time soon into a
Erik Andersen330fd2b2000-05-19 05:35:19 +000010 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.
Erik Andersen31638212000-01-15 22:28:50 +000014
Eric Andersenb186d981999-12-03 09:19:54 +000015 -Erik
16
17-----------
Eric Andersenbefda6e1999-11-25 08:06:22 +000018
Eric Andersen926e0e32000-06-05 05:33:00 +000019Bugs that need fixing before the 0.44 release goes out the door:
Mark Whitley0a027e62000-05-08 23:25:59 +000020
Eric Andersenf0c30b72000-06-03 00:27:00 +000021 - mkfs.minix rev 1.7 completely broke the parser. Fix it.
Mark Whitley0a027e62000-05-08 23:25:59 +000022 - 'grep foo$ file' doesn't work
23 - 'grep *foo file' segfaults
24 - ps dirent race bug (need to stat the file before attempting chdir)
Eric Andersen32322032000-06-06 22:12:35 +000025 - The following commands segfault or are broken:
26 date -u
27 - I believe that swaponoff may also be also broken (check it).
28 - It used to be that BusyBox tar would happily overwrite existing files on
Eric Andersenb6c6d872000-06-02 03:21:32 +000029 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
30 existing file is found.
Mark Whitleyd05e3ce2000-06-06 18:12:47 +000031 - Make 'mount -a' work even when /proc isn't mounted (ugly bug).
32 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
Eric Andersenb6c6d872000-06-02 03:21:32 +000033 /tmp/file in the current directory, rather then trying and failing to create
34 a symlink named "." in the current working directory).
Mark Whitleyd05e3ce2000-06-06 18:12:47 +000035 - implement 'ls -R'.
36 - "math" should also take input from stdin
37 - "more" doesn't accept " " to scroll by one page when BB_FEATURE_USE_TERMIOS
Eric Andersen926e0e32000-06-05 05:33:00 +000038 is not on.
Mark Whitley0a027e62000-05-08 23:25:59 +000039
Erik Andersen8ea7d8c2000-05-20 00:40:08 +000040
Mark Whitley0a027e62000-05-08 23:25:59 +000041-----------
42
Erik Andersen10c341a1999-12-17 18:52:06 +000043* Make insmod actually work
Eric Andersen485b9551999-12-07 23:14:59 +000044* dnsdomainname
Erik Andersen9ffdaa62000-02-11 21:55:04 +000045* traceroute/netstat
Eric Andersenb186d981999-12-03 09:19:54 +000046* rdate
47* hwclock
Eric Andersenb186d981999-12-03 09:19:54 +000048* stty
Erik Andersen0817d132000-04-09 15:17:40 +000049* expr
Erik Andersen95c1c1e2000-04-14 21:45:29 +000050* wget (or whatever I call it)
51* tftp
52* ftp
Mark Whitley0a027e62000-05-08 23:25:59 +000053* group/commonize strings, remove dups (for i18n, l10n)
Mark Whitley517cab72000-06-06 18:05:47 +000054* consider making a unified option parser (if it can be done modular, small, etc.)
Erik Andersenfac10d72000-02-07 05:29:42 +000055
Erik Andersene2729152000-02-18 21:34:17 +000056-----------------------
57
Erik Andersenf378fce2000-05-01 19:27:17 +000058Running the following:
59
Erik Andersen12d1b372000-05-01 19:50:37 +000060 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
61 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
Erik Andersenf378fce2000-05-01 19:27:17 +000062
63reveals the list of all external (i.e. libc) things that BusyBox depends on.
64It would be a very nice thing to reduce this list to an absolute minimum, and
65then create a microLibc to provide these functions. There is no good reason
66for GNU libc to be so big. I'm sure it can be a lot better.
67
Erik Andersen9b7d9642000-05-01 19:49:20 +000068(BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
69
Erik Andersen5afc8642000-05-02 00:07:56 +000070Most wanted list:
71
72 [andersen@slag busybox]$ grep -l getgroups *.[ch]
73 test.c
74
75Policy violation. getgroups uses libc nss, which is unlikely
76to be present in an embedded system.
77
Erik Andersen969f9b02000-05-13 19:08:58 +000078To be replaced with a busybox local glob routine:
Erik Andersen5afc8642000-05-02 00:07:56 +000079
80 [andersen@slag busybox]$ grep -l glob *.[ch]
81 gunzip.c
82 gzip.c
83 sh.c
84 tar.c
85 telnet.c
86
87Can check_wildcard_match() from utility.c do this job?
88
Erik Andersenf378fce2000-05-01 19:27:17 +000089
90-----------------------
91
Erik Andersen7c4b2f32000-02-29 21:49:22 +000092Compile with debugging on, run 'nm --size-sort ./busybox'
93and then start with the biggest things and make them smaller...
94
Erik Andersen7c4b2f32000-02-29 21:49:22 +000095-----------------------
96
Erik Andersene2729152000-02-18 21:34:17 +000097busybox.defs.h is too big and hard to follow.
98
Erik Andersen5661fe02000-04-05 01:00:52 +000099Perhaps I need to add a better build system (like the Linux kernel?)
Erik Andersene2729152000-02-18 21:34:17 +0000100
101-----------------------
102
Erik Andersen27fdd082000-02-19 18:16:49 +0000103Feature request:
104
105/bin/busybox --install -s which makes all links to commands that it
106 can support (an optionnal -s should be used for symbolic links instead
107 of hard links).
108
Erik Andersen3b9522f2000-02-22 17:12:00 +0000109-----------------------
110
111
112> Have you ever thought of doig network logging in busybox syslogd ? It
113> would quite make sense on embedded systems... :)
114
115So far I had not considered it. Basically, you wish to have
116messages from the embedded box logged to a remote network
117syslog box, right? I can see that this would be useful.
118I'll add this to the TODO list,
119
Erik Andersen029011b2000-03-04 21:19:32 +0000120
121-----------------------
122
123
Erik Andersen029011b2000-03-04 21:19:32 +0000124 I think that the add_inode &c in utility.c needs to also stow the
125 st_dev field, and that du.c should NOT call `reset_inode_list'
126 because there can be hard links from inside one argv/ to inside
127 another argv/. du.c probably ought to have an -x switch like GNU du
128 does also...
129
130
Erik Andersen298854f2000-03-23 01:09:18 +0000131------------------------------------------------------------------
132
Eric Andersen926e0e32000-06-05 05:33:00 +0000133An interesting email listing some apps that use /proc. BusyBox
134tries to avoid /proc as mush as is possible, so this stuff is
135interesting (to me at least):
136
Erik Andersen298854f2000-03-23 01:09:18 +0000137
138Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
139From: Riley Williams <rhw@MemAlpha.CX>
140X-Sender: rhw@moo.cus.org.uk
141To: almesber@lrc.di.epfl.ch
142Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
143 Linux Kernel <linux-kernel@vger.rutgers.edu>
144Subject: Re: What /proc should contain [was: /proc/driver/microcode]
145In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
146Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
147Sender: owner-linux-kernel@vger.rutgers.edu
148Precedence: bulk
149
150Hi there.
151
152 >> Nope, most /proc access is does via programs written in C.
153
154 > That varies a lot from file to file. E.g. I haven't seen any
155 > programs that are specificly designed to read /proc/atm/* yet,
156 > and I know of only one (fuser) that reads /proc/mounts,
157 > extracting only partial information (just to pick two examples
158 > that I'm quite familiar with).
159
160As a point of reference, here's a slightly tweaked analysis of the
161programs on the system I'm reading your mail on. Basically, I ran the
162following script...
163
164 Q> #!/bin/bash
165 Q> function use() {
166 Q> for Z in $* ; do
167 Q> strings $Z | grep /proc | sed "s=^=$Z ="
168 Q> done
169 Q> }
170 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
171
172...and then went through it removing comments and print format
173strings. Replace /proc with /dev and you'd soon have an equivalent
174list for that - although I can report that such is MUCH larger...
175
176There are three programs therein that refer to /proc/mounts ...
177
178 /bin/mount
179 /bin/umount
180 /usr/bin/eject
181
182...and, as you stated, none that refer to /proc/atm on this system.
183However, as this is a RedHat Linux 5.0 based system, that's not
184necessarily an up to date reference thereto...
185
186Here's the list anyway...
187
188/bin/kill /proc/%d/cmdline
189/bin/kill /proc/%d/stat
190
191/bin/mount /proc/devices
192/bin/mount /proc/filesystems
193/bin/mount /proc/mounts
194
195/bin/netstat /proc/net
196/bin/netstat /proc/net/appletalk
197/bin/netstat /proc/net/ax25
198/bin/netstat /proc/net/ax25_route
199/bin/netstat /proc/net/dev
200/bin/netstat /proc/net/ip_masquerade
201/bin/netstat /proc/net/ipx
202/bin/netstat /proc/net/ipx_route
203/bin/netstat /proc/net/netstat
204/bin/netstat /proc/net/nr
205/bin/netstat /proc/net/nr_neigh
206/bin/netstat /proc/net/nr_nodes
207/bin/netstat /proc/net/raw
208/bin/netstat /proc/net/route
209/bin/netstat /proc/net/rt_cache
210/bin/netstat /proc/net/snmp
211/bin/netstat /proc/net/tcp
212/bin/netstat /proc/net/udp
213/bin/netstat /proc/net/unix
214
215/bin/umount /proc/devices
216/bin/umount /proc/mounts
217
218/sbin/arp /proc/net/appletalk
219/sbin/arp /proc/net/arp
220/sbin/arp /proc/net/ax25
221/sbin/arp /proc/net/ipx
222/sbin/arp /proc/net/nr
223/sbin/arp /proc/net/unix
224
225/sbin/cardctl /proc/devices
226
227/sbin/cardmgr /proc/devices
228
229/sbin/fdisk /proc/ide/%s/media
230/sbin/fdisk /proc/scsi/scsi
231
232/sbin/getty /proc/version
233
234/sbin/ifconfig /proc/net
235/sbin/ifconfig /proc/net/appletalk
236/sbin/ifconfig /proc/net/ax25
237/sbin/ifconfig /proc/net/dev
238/sbin/ifconfig /proc/net/ipx
239/sbin/ifconfig /proc/net/nr
240/sbin/ifconfig /proc/net/unix
241
242/sbin/ifup /proc/sys/kernel/modprobe
243
244/sbin/ipchains /proc/net/ip_fwchains
245/sbin/ipchains /proc/net/ip_fwnames
246/sbin/ipchains /proc/net/ip_masquerade
247/sbin/ipchains /proc/sys/net/ipv4/ip_forward
248
249/sbin/ipmaddr /proc/net/dev_mcast
250/sbin/ipmaddr /proc/net/igmp
251/sbin/ipmaddr /proc/net/igmp6
252
253/sbin/iptunnel /proc/net/dev
254
255/sbin/killall5 /proc/%s/cmdline
256/sbin/killall5 /proc/%s/exe
257/sbin/killall5 /proc/%s/stat
258/sbin/killall5 /proc/version
259
260/sbin/klogd /proc/kmsg
261
262/sbin/lsmod /proc/modules
263
264/sbin/modprobe /proc/modules
265
266/sbin/pidof /proc/%s/cmdline
267/sbin/pidof /proc/%s/exe
268/sbin/pidof /proc/%s/stat
269/sbin/pidof /proc/version
270
271/sbin/probe /proc/pci
272
273/sbin/rarp /proc/net/ax25
274/sbin/rarp /proc/net/nr
275/sbin/rarp /proc/net/rarp
276
277/sbin/rmmod /proc/modules
278
279/sbin/rmmod.static /proc/modules
280
281/sbin/route /proc/net/appletalk
282/sbin/route /proc/net/ax25
283/sbin/route /proc/net/ax25_route
284/sbin/route /proc/net/ipx
285/sbin/route /proc/net/ipx_route
286/sbin/route /proc/net/nr
287/sbin/route /proc/net/nr_neigh
288/sbin/route /proc/net/nr_nodes
289/sbin/route /proc/net/route
290/sbin/route /proc/net/rt_cache
291/sbin/route /proc/net/unix
292
293/sbin/scsi_info /proc/scsi
294/sbin/scsi_info /proc/scsi/%s
295/sbin/scsi_info /proc/scsi/scsi
296
297/sbin/slattach /proc/net/ax25
298/sbin/slattach /proc/net/nr
299
300/sbin/swapoff /proc/swaps
301
302/sbin/swapon /proc/swaps
303
304/sbin/uugetty /proc/version
305
306/usr/bin/dig /proc/
307/usr/bin/dig /proc/interrupts
308/usr/bin/dig /proc/meminfo
309/usr/bin/dig /proc/rtc
310/usr/bin/dig /proc/self/status
311/usr/bin/dig /proc/stat
312
313/usr/bin/dnsquery /proc/
314/usr/bin/dnsquery /proc/interrupts
315/usr/bin/dnsquery /proc/meminfo
316/usr/bin/dnsquery /proc/rtc
317/usr/bin/dnsquery /proc/self/status
318/usr/bin/dnsquery /proc/stat
319
320/usr/bin/eject /proc/mounts
321
322/usr/bin/emacs /proc/loadavg
323
324/usr/bin/fetchmail /proc/net/dev
325
326/usr/bin/free /proc/meminfo
327
328/usr/bin/gmake /proc/loadavg
329
330/usr/bin/gpm-root /proc/loadavg
331/usr/bin/gpm-root /proc/meminfo
332
333/usr/bin/host /proc/
334/usr/bin/host /proc/interrupts
335/usr/bin/host /proc/meminfo
336/usr/bin/host /proc/rtc
337/usr/bin/host /proc/self/status
338/usr/bin/host /proc/stat
339
340/usr/bin/hoststat /proc/loadavg
341
342/usr/bin/hwdiag /proc/cpuinfo
343/usr/bin/hwdiag /proc/pci
344/usr/bin/hwdiag /proc/scsi/scsi
345/usr/bin/hwdiag /proc/version
346
347/usr/bin/lsdev /proc/dma
348/usr/bin/lsdev /proc/interrupts
349/usr/bin/lsdev /proc/ioports
350
351/usr/bin/mailq /proc/loadavg
352
353/usr/bin/make /proc/loadavg
354
355/usr/bin/mcookie /proc/loadavg
356/usr/bin/mcookie /proc/stat
357
358/usr/bin/newaliases /proc/loadavg
359
360/usr/bin/nslookup /proc/
361/usr/bin/nslookup /proc/interrupts
362/usr/bin/nslookup /proc/meminfo
363/usr/bin/nslookup /proc/rtc
364/usr/bin/nslookup /proc/self/status
365/usr/bin/nslookup /proc/stat
366
367/usr/bin/nsupdate /proc/
368/usr/bin/nsupdate /proc/interrupts
369/usr/bin/nsupdate /proc/meminfo
370/usr/bin/nsupdate /proc/rtc
371/usr/bin/nsupdate /proc/self/status
372/usr/bin/nsupdate /proc/stat
373
374/usr/bin/pgp /proc/version
375/usr/bin/pgpe /proc/version
376/usr/bin/pgpk /proc/version
377/usr/bin/pgps /proc/version
378/usr/bin/pgpv /proc/version
379
380/usr/bin/procinfo /proc/cmdline
381/usr/bin/procinfo /proc/devices
382/usr/bin/procinfo /proc/dma
383/usr/bin/procinfo /proc/filesystems
384/usr/bin/procinfo /proc/interrupts
385/usr/bin/procinfo /proc/loadavg
386/usr/bin/procinfo /proc/meminfo
387/usr/bin/procinfo /proc/modules
388/usr/bin/procinfo /proc/stat
389/usr/bin/procinfo /proc/uptime
390/usr/bin/procinfo /proc/version
391
392/usr/bin/purgestat /proc/loadavg
393
394/usr/bin/screen /proc/loadavg
395
396/usr/bin/strace /proc/%d/stat
397
398/usr/bin/top /proc/cpuinfo
399/usr/bin/top /proc/meminfo
400/usr/bin/top /proc/stat
401
402/usr/bin/vmstat /proc/%s/stat
403/usr/bin/vmstat /proc/meminfo
404/usr/bin/vmstat /proc/stat
405
406/usr/sbin/atd /proc/loadavg
407
408/usr/sbin/dnskeygen /proc/
409/usr/sbin/dnskeygen /proc/interrupts
410/usr/sbin/dnskeygen /proc/meminfo
411/usr/sbin/dnskeygen /proc/rtc
412/usr/sbin/dnskeygen /proc/self/status
413/usr/sbin/dnskeygen /proc/stat
414
415/usr/sbin/fuser /proc/%d/stat
416/usr/sbin/fuser /proc/net/%s
417/usr/sbin/fuser /proc/net/unix
418
419/usr/sbin/in.identd /proc/net/tcp
420
421/usr/sbin/irpd /proc/
422/usr/sbin/irpd /proc/interrupts
423/usr/sbin/irpd /proc/meminfo
424/usr/sbin/irpd /proc/rtc
425/usr/sbin/irpd /proc/self/status
426/usr/sbin/irpd /proc/stat
427
428/usr/sbin/named /proc/
429/usr/sbin/named /proc/interrupts
430/usr/sbin/named /proc/meminfo
431/usr/sbin/named /proc/rtc
432/usr/sbin/named /proc/self/status
433/usr/sbin/named /proc/stat
434
435/usr/sbin/named-xfer /proc/
436/usr/sbin/named-xfer /proc/interrupts
437/usr/sbin/named-xfer /proc/meminfo
438/usr/sbin/named-xfer /proc/rtc
439/usr/sbin/named-xfer /proc/self/status
440/usr/sbin/named-xfer /proc/stat
441
442/usr/sbin/readprofile /proc/profile
443
444/usr/sbin/rwhod /proc/loadavg
445/usr/sbin/rwhod /proc/uptime
446
447/usr/sbin/sendmail /proc/loadavg
448
449/usr/sbin/setconsole /proc/openprom/options
450/usr/sbin/setconsole /proc/openprom/options/${console}-mode
451/usr/sbin/setconsole /proc/openprom/options/input-device
452/usr/sbin/setconsole /proc/openprom/options/output-device
453
454Best wishes from Riley.
455
456 * Copyright (C) 1999, Memory Alpha Systems.
457 * All rights and wrongs reserved.
458
459+----------------------------------------------------------------------+
460| There is something frustrating about the quality and speed of Linux |
461| development, ie., the quality is too high and the speed is too high, |
462| in other words, I can implement this XXXX feature, but I bet someone |
463| else has already done so and is just about to release their patch. |
464+----------------------------------------------------------------------+
465 * http://www.memalpha.cx/Linux/Kernel/
466
467
468-
469To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
470the body of a message to majordomo@vger.rutgers.edu
471Please read the FAQ at http://www.tux.org/lkml/
472