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