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