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