Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/TODO
- Timestamp:
- Feb 25, 2011, 9:26:54 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/TODO
r1765 r2725 1 1 Busybox TODO 2 3 Harvest patches from 4 http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/busybox/ 2 5 3 6 Stuff that needs to be done. This is organized by who plans to get around to … … 7 10 between your work and theirs. But otherwise, all of these are fair game. 8 11 9 Rob Landley <rob@landley.net>: 10 Add BB_NOMMU to platform.h and migrate __uClinux__ tests to that. 11 #if defined __UCLIBC__ && !defined __ARCH_USE_MMU__ 12 Add a libbb/platform.c 13 Implement fdprintf() for platforms that haven't got one. 14 Implement bb_realpath() that can handle NULL on non-glibc. 15 Cleanup bb_asprintf() 16 17 Migrate calloc() and bb_calloc() occurrences to bb_xzalloc(). 18 Remove obsolete _() wrapper crud for internationalization we don't do. 19 Figure out where we need utf8 support, and add it. 12 Rob Landley suggested this: 13 Implement bb_realpath() that can handle NULL on non-glibc. 20 14 21 15 sh 22 The command shell situation is a big mess. We have three or fourdifferent16 The command shell situation is a mess. We have two different 23 17 shells that don't really share any code, and the "standalone shell" doesn't 24 18 work all that well (especially not in a chroot environment), due to apps not 25 being reentrant. I'm writing a new shell (bbsh) to unify the various 26 shells and configurably add the minimal set of bash features people 27 actually use. The hardest part is it has to configure down as small as 28 lash while providing lash's features. The rest is easy in comparison. 29 bzip2 30 Compression-side support. 31 init 32 General cleanup (should use ENABLE_FEATURE_INIT_SYSLOG and ENABLE_FEATURE_INIT_DEBUG). 33 depmod 34 busybox lacks a way to update module deps when running from firmware without the 35 use of the depmod.pl (perl is to bloated for most embedded setups) and or orig 36 modutils. The orig depmod is rather pointless to have to add to a firmware image 37 in when we already have a insmod/rmmod and friends. 38 Unify base64 handling. 39 [done] 19 being reentrant. 20 40 21 Do a SUSv3 audit 41 22 Look at the full Single Unix Specification version 3 (available online at … … 46 27 Even better would be some kind of automated compliance test harness that 47 28 exercises each command line option and the various corner cases. 29 48 30 Internationalization 49 31 How much internationalization should we do? 50 32 51 33 The low hanging fruit is UTF-8 character set support. We should do this. 52 (Vodz pointed out the shell's cmdedit as needing work here. What else?)34 See TODO_unicode file. 53 35 54 36 We also have lots of hardwired english text messages. Consolidating this … … 78 60 could export some of the other library interfaces we've already more or less 79 61 got the code for (like zlib). 62 80 63 buildroot - Make a "dogfood" option 81 64 Busybox 1.1 will be capable of replacing most gnu packages for real world … … 97 80 One example of an existing system that does this already is Firmware Linux: 98 81 http://www.landley.net/code/firmware 82 99 83 initramfs 100 84 Busybox should have a sample initramfs build script. This depends on 101 bbsh, mdev, and switch_root. 85 shell, mdev, and switch_root. 86 102 87 mkdep 103 88 Write a mkdep that doesn't segfault if there's a directory it doesn't 104 89 have permission to read, isn't based on manually editing the output of 105 90 lexx and yacc, doesn't make such a mess under include/config, etc. 91 106 92 Group globals into unions of structures. 107 93 Go through and turn all the global and static variables into structures, … … 109 95 so busybox uses less bss. (This is a big win on nommu machines.) See 110 96 sed.c and mdev.c for examples. 97 111 98 Go through bugs.busybox.net and close out all of that somehow. 112 99 This one's open to everybody, but I'll wind up doing it... 113 100 114 115 Bernhard Fischer <busybox@busybox.net> suggests to look at these: 101 Bernhard Reutner-Fischer <busybox@busybox.net> suggests to look at these: 116 102 New debug options: 117 103 -Wlarger-than-127 118 104 Cleanup any big users 119 -Wunused-parameter120 Facilitate applet PROTOTYPES to provide means for having applets that121 do a) not take any arguments b) need only one of argc or argv c) need122 both argc and argv. All of these three options should go for the most123 feature complete denominator.124 105 Collate BUFSIZ IOBUF_SIZE MY_BUF_SIZE PIPE_PROGRESS_SIZE BUFSIZE PIPESIZE 125 106 make bb_common_bufsiz1 configurable, size wise. … … 130 111 131 112 ---- 132 find133 doesn't understand (), lots of susv3 stuff.134 ----135 113 diff 136 114 Make sure we handle empty files properly: … … 148 126 And while we're at it, a new patch filename quoting format is apparently 149 127 coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 150 ---151 ps / top152 Add support for both RSS and VSIZE rather than just one or the other.153 Or make it a build option.154 ---155 man156 It would be nice to have a man command. Not one that handles troff or157 anything, just one that can handle preformatted ascii man pages, possibly158 compressed. This could probably be a script in the extras directory that159 calls cat/zcat/bzcat | less160 161 (How doclifter might work into this is anybody's guess.)162 ---163 ar164 Write support?165 128 --- 166 129 stty / catv … … 204 167 Text buffer support. 205 168 Several existing applets (sort, vi, less...) read 206 a whole file into memory and act on it. There might be an opportunity 207 for shared code in there that could be moved into libbb... 169 a whole file into memory and act on it. Use open_read_close(). 208 170 --- 209 171 Memory Allocation … … 220 182 we can yank those #ifdefs too, and generally clean up the code. 221 183 --- 222 Switch CONFIG_SYMBOLS to ENABLE_SYMBOLS223 224 In busybox 1.0 and earlier, configuration was done by CONFIG_SYMBOLS225 that were either defined or undefined to indicate whether the symbol was226 selected in the .config file. They were used with #ifdefs, ala:227 228 #ifdef CONFIG_SYMBOL229 if (other_test) {230 do_code();231 }232 #endif233 234 In 1.1, we have new ENABLE_SYMBOLS which are always defined (as 0 or 1),235 meaning you can still use them for preprocessor tests by replacing236 "#ifdef CONFIG_SYMBOL" with "#if ENABLE_SYMBOL". But more importantly, we237 can use them as a true or false test in normal C code:238 239 if (ENABLE_SYMBOL && other_test) {240 do_code();241 }242 243 (Optimizing away if() statements that resolve to a constant value244 is known as "dead code elimination", an optimization so old and simple that245 Turbo Pascal for DOS did it twenty years ago. Even modern mini-compilers246 like the Tiny C Compiler (tcc) and the Small Device C Compiler (SDCC)247 perform dead code elimination.)248 249 Right now, busybox.h is #including both "config.h" (defining the250 CONFIG_SYMBOLS) and "bb_config.h" (defining the ENABLE_SYMBOLS). At some251 point in the future, it would be nice to wean ourselves off of the252 CONFIG versions. (Among other things, some defective build environments253 leak the Linux kernel's CONFIG_SYMBOLS into the system's standard #include254 files. We've experienced collisions before.)255 ---256 184 FEATURE_CLEAN_UP 257 185 This is more an unresolved issue than a to-do item. More thought is needed. 258 186 259 Normally we rely on exit() to free memory, close files ,and unmap segments187 Normally we rely on exit() to free memory, close files and unmap segments 260 188 for us. This makes most calls to free(), close(), and unmap() optional in 261 189 busybox applets that don't intend to run for very long, and optional stuff … … 286 214 287 215 288 289 216 Minor stuff: 290 217 watchdog.c could autodetect the timer duration via: … … 299 226 egrep "[^_]perror" 300 227 --- 301 Remove superfluous fmt occurances: e.g.302 fprintf(stderr, "%s: %s not found\n", "unalias", *argptr);303 -> fprintf(stderr, "unalias: %s not found\n", *argptr);304 ---305 228 possible code duplication ingroup() and is_a_group_member() 306 229 --- 307 Move __get_hz() to a better place and (re)use it in route.c, ash.c, msh.c 308 --- 309 310 311 Code cleanup: 312 313 Replace deprecated functions. 314 315 bzero() -> memset() 316 --- 317 sigblock(), siggetmask(), sigsetmask(), sigmask() -> sigprocmask et al 230 Move __get_hz() to a better place and (re)use it in route.c, ash.c 231 --- 232 See grep -r strtod 233 Alot of duplication that wants cleanup. 234 --- 235 in_ether duplicated in network/{interface,ifconfig}.c 236 --- 237 unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. 238 --- 239 support start-stop-daemon -d <chdir-path> 318 240 --- 319 241 vdprintf() -> similar sized functionality 320 242 --- 243 244 (TODO list after discussion 11.05.2009) 245 246 * shrink tc/brctl/ip 247 tc/brctl seem like fairly large things to try and tackle in your timeframe, 248 and i think people have posted attempts in the past. Adding additional 249 options to ip though seems reasonable. 250 251 * add tests for some applets 252 253 * implement POSIX utilities and audit them for POSIX conformance. then 254 audit them for GNU conformance. then document all your findings in a new 255 doc/conformance.txt file while perhaps implementing some of the missing 256 features. 257 you can find the latest POSIX documentation (1003.1-2008) here: 258 http://www.opengroup.org/onlinepubs/9699919799/ 259 and the complete list of all utilities that POSIX covers: 260 http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html 261 The first step would to generate a file/matrix what is already archived 262 (also IPV6) 263 264 * implement 'at' 265 266 * rpcbind (former portmap) or equivalent 267 so that we don't have to use -o nolock on nfs mounts 268 269 * check IPV6 compliance 270 271 * generate a mini example using kernel+busybox only (+libc) for example 272 273 * more support for advanced linux 2.6.x features, see: iotop 274 most likely there is more 275 276 * even more support for statistics: mpstat, iostat, powertop....
Note:
See TracChangeset
for help on using the changeset viewer.