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