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