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