diff options
| author | Matt Kraai <kraai@debian.org> | 2001-08-01 17:21:35 +0000 |
|---|---|---|
| committer | Matt Kraai <kraai@debian.org> | 2001-08-01 17:21:35 +0000 |
| commit | 2d91deba45d5a284614e06cc55e2be03599ca26d (patch) | |
| tree | 0ba0d2096b4305465ddea8532a5931cb4c02b343 | |
| parent | 00344431402703089c6b93f6119f9966cc7ba566 (diff) | |
| download | busybox-w32-2d91deba45d5a284614e06cc55e2be03599ca26d.tar.gz busybox-w32-2d91deba45d5a284614e06cc55e2be03599ca26d.tar.bz2 busybox-w32-2d91deba45d5a284614e06cc55e2be03599ca26d.zip | |
Allow multiple shells to be enabled.
| -rw-r--r-- | Changelog | 1 | ||||
| -rw-r--r-- | Config.h | 73 | ||||
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | README | 32 | ||||
| -rw-r--r-- | applets.h | 22 | ||||
| -rw-r--r-- | applets/usage.h | 6 | ||||
| -rw-r--r-- | ash.c | 4 | ||||
| -rw-r--r-- | debian/Config.h-deb | 73 | ||||
| -rw-r--r-- | debian/Config.h-static | 73 | ||||
| -rw-r--r-- | debian/Config.h-udeb | 73 | ||||
| -rw-r--r-- | hush.c | 8 | ||||
| -rw-r--r-- | include/applets.h | 22 | ||||
| -rw-r--r-- | include/usage.h | 6 | ||||
| -rw-r--r-- | lash.c | 2 | ||||
| -rw-r--r-- | msh.c | 4 | ||||
| -rw-r--r-- | sh.c | 48 | ||||
| -rw-r--r-- | shell/ash.c | 4 | ||||
| -rw-r--r-- | shell/hush.c | 8 | ||||
| -rw-r--r-- | shell/lash.c | 2 | ||||
| -rw-r--r-- | shell/msh.c | 4 | ||||
| -rw-r--r-- | usage.h | 6 |
21 files changed, 225 insertions, 250 deletions
| @@ -42,6 +42,7 @@ | |||
| 42 | -- Reworked rdate option handling (is now smaller). | 42 | -- Reworked rdate option handling (is now smaller). |
| 43 | -- Size reduction in ping | 43 | -- Size reduction in ping |
| 44 | -- Always write dd counts to stderr | 44 | -- Always write dd counts to stderr |
| 45 | -- Allow multiple shells to be enabled | ||
| 45 | * Aaron Lehmann | 46 | * Aaron Lehmann |
| 46 | -- slimmed down md5sum | 47 | -- slimmed down md5sum |
| 47 | -- contributed a nice new (hand written, not lex/yacc) Posix math | 48 | -- contributed a nice new (hand written, not lex/yacc) Posix math |
| @@ -9,6 +9,7 @@ | |||
| 9 | // BusyBox Applications | 9 | // BusyBox Applications |
| 10 | //#define BB_ADJTIMEX | 10 | //#define BB_ADJTIMEX |
| 11 | //#define BB_AR | 11 | //#define BB_AR |
| 12 | //#define BB_ASH | ||
| 12 | #define BB_BASENAME | 13 | #define BB_BASENAME |
| 13 | #define BB_CAT | 14 | #define BB_CAT |
| 14 | #define BB_CHGRP | 15 | #define BB_CHGRP |
| @@ -51,6 +52,7 @@ | |||
| 51 | #define BB_HEAD | 52 | #define BB_HEAD |
| 52 | //#define BB_HOSTID | 53 | //#define BB_HOSTID |
| 53 | //#define BB_HOSTNAME | 54 | //#define BB_HOSTNAME |
| 55 | //#define BB_HUSH | ||
| 54 | #define BB_ID | 56 | #define BB_ID |
| 55 | //#define BB_IFCONFIG | 57 | //#define BB_IFCONFIG |
| 56 | #define BB_INIT | 58 | #define BB_INIT |
| @@ -58,6 +60,7 @@ | |||
| 58 | #define BB_KILL | 60 | #define BB_KILL |
| 59 | #define BB_KILLALL | 61 | #define BB_KILLALL |
| 60 | #define BB_KLOGD | 62 | #define BB_KLOGD |
| 63 | //#define BB_LASH | ||
| 61 | //#define BB_LENGTH | 64 | //#define BB_LENGTH |
| 62 | #define BB_LN | 65 | #define BB_LN |
| 63 | //#define BB_LOADACM | 66 | //#define BB_LOADACM |
| @@ -78,6 +81,7 @@ | |||
| 78 | #define BB_MODPROBE | 81 | #define BB_MODPROBE |
| 79 | #define BB_MORE | 82 | #define BB_MORE |
| 80 | #define BB_MOUNT | 83 | #define BB_MOUNT |
| 84 | #define BB_MSH | ||
| 81 | //#define BB_MT | 85 | //#define BB_MT |
| 82 | #define BB_MV | 86 | #define BB_MV |
| 83 | //#define BB_NC | 87 | //#define BB_NC |
| @@ -101,7 +105,6 @@ | |||
| 101 | //#define BB_RPM2CPIO | 105 | //#define BB_RPM2CPIO |
| 102 | #define BB_SED | 106 | #define BB_SED |
| 103 | //#define BB_SETKEYCODES | 107 | //#define BB_SETKEYCODES |
| 104 | #define BB_SH | ||
| 105 | #define BB_SLEEP | 108 | #define BB_SLEEP |
| 106 | #define BB_SORT | 109 | #define BB_SORT |
| 107 | //#define BB_STTY | 110 | //#define BB_STTY |
| @@ -146,40 +149,12 @@ | |||
| 146 | // pretty/useful). | 149 | // pretty/useful). |
| 147 | // | 150 | // |
| 148 | // | 151 | // |
| 149 | // If you enabled BB_SH above, you may select one of the following shells. | 152 | // If you enabled one or more of the shells, you may select which one |
| 150 | // You can only select ONE of the following shells. Sorry. | 153 | // should be run when sh is invoked: |
| 151 | // | 154 | //#define BB_FEATURE_SH_IS_ASH |
| 152 | // lash is the very smallest shell (adds just 10k) and it is quite usable as | 155 | //#define BB_FEATURE_SH_IS_HUSH |
| 153 | // a command prompt, but it is not suitable for any but the most trivial | 156 | //#define BB_FEATURE_SH_IS_LASH |
| 154 | // scripting (such as an initrd that calls insmod a few times) since it does | 157 | #define BB_FEATURE_SH_IS_MSH |
| 155 | // not understand Bourne shell grammer. It does handle pipes, redirects, and | ||
| 156 | // job control though. Adding in command editing makes it very nice | ||
| 157 | // lightweight command prompt. | ||
| 158 | //#define BB_FEATURE_LASH | ||
| 159 | // | ||
| 160 | // hush is also quite small (just 18k) and it has very complete Bourne shell | ||
| 161 | // grammer. It handles if/then/else/fi just fine, but doesn't handle loops | ||
| 162 | // like for/do/done or case/esac and such. It also currently has a problem | ||
| 163 | // with job control. | ||
| 164 | //#define BB_FEATURE_HUSH | ||
| 165 | // | ||
| 166 | // msh: The minix shell (adds just 30k) is quite complete and handles things | ||
| 167 | // like for/do/done, case/esac and all the things you expect a Bourne shell to | ||
| 168 | // do. It is not always pedantically correct about Bourne shell grammer (try | ||
| 169 | // running the shell testscript "tests/sh.testcases" on it and compare vs bash) | ||
| 170 | // but for most things it works quite well. It also uses only vfork, so it can | ||
| 171 | // be used on uClinux systems. This was only recently added, so there is still | ||
| 172 | // room to shrink it further... | ||
| 173 | #define BB_FEATURE_MSH | ||
| 174 | // | ||
| 175 | // ash: This adds about 60k in the default configuration and is the most | ||
| 176 | // complete and most pedantically correct shell included with busybox. This | ||
| 177 | // shell was also recently added, and several people (mainly Vladimir and Erik) | ||
| 178 | // have been working on it. There are a number of configurable things at the | ||
| 179 | // top of ash.c as well, so check those out if you want to tweak things. The | ||
| 180 | // Posix math support is currently disabled (that bit of code was horrible) but | ||
| 181 | // will be restored for the next BusyBox release. | ||
| 182 | //#define BB_FEATURE_ASH | ||
| 183 | // | 158 | // |
| 184 | // BusyBox will, by default, malloc space for its buffers. This costs code | 159 | // BusyBox will, by default, malloc space for its buffers. This costs code |
| 185 | // size for the call to xmalloc. You can use the following feature to have | 160 | // size for the call to xmalloc. You can use the following feature to have |
| @@ -286,11 +261,11 @@ | |||
| 286 | #define BB_FEATURE_SORT_UNIQUE | 261 | #define BB_FEATURE_SORT_UNIQUE |
| 287 | // | 262 | // |
| 288 | // Enable command line editing in the shell. | 263 | // Enable command line editing in the shell. |
| 289 | // Only relevant if BB_SH is enabled. On by default. | 264 | // Only relevant if a shell is enabled. On by default. |
| 290 | #define BB_FEATURE_COMMAND_EDITING | 265 | #define BB_FEATURE_COMMAND_EDITING |
| 291 | // | 266 | // |
| 292 | // Enable tab completion in the shell. This is now working quite nicely. | 267 | // Enable tab completion in the shell. This is now working quite nicely. |
| 293 | // This feature adds a bit over 4k. Only relevant if BB_SH is enabled. | 268 | // This feature adds a bit over 4k. Only relevant if a shell is enabled. |
| 294 | #define BB_FEATURE_COMMAND_TAB_COMPLETION | 269 | #define BB_FEATURE_COMMAND_TAB_COMPLETION |
| 295 | // | 270 | // |
| 296 | // Attempts to match usernames in a ~-prefixed path | 271 | // Attempts to match usernames in a ~-prefixed path |
| @@ -299,7 +274,7 @@ | |||
| 299 | //Allow the shell to invoke all the compiled in BusyBox applets as if they | 274 | //Allow the shell to invoke all the compiled in BusyBox applets as if they |
| 300 | //were shell builtins. Nice for staticly linking an emergency rescue shell, | 275 | //were shell builtins. Nice for staticly linking an emergency rescue shell, |
| 301 | //among other things. Off by default. | 276 | //among other things. Off by default. |
| 302 | // Only relevant if BB_SH is enabled. | 277 | // Only relevant if a shell is enabled. |
| 303 | //#define BB_FEATURE_SH_STANDALONE_SHELL | 278 | //#define BB_FEATURE_SH_STANDALONE_SHELL |
| 304 | // | 279 | // |
| 305 | //When this is enabled, busybox shell applets can be called using full path | 280 | //When this is enabled, busybox shell applets can be called using full path |
| @@ -308,13 +283,13 @@ | |||
| 308 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ | 283 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ |
| 309 | //busybox. Some systems want this, others do not. Choose wisely. :-) This | 284 | //busybox. Some systems want this, others do not. Choose wisely. :-) This |
| 310 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. | 285 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. |
| 311 | // Only relevant if BB_SH is enabled. Off by default. | 286 | // Only relevant if a shell is enabled. Off by default. |
| 312 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN | 287 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN |
| 313 | // | 288 | // |
| 314 | // Uncomment this option for a fancy shell prompt that includes the | 289 | // Uncomment this option for a fancy shell prompt that includes the |
| 315 | // current username and hostname. On systems that don't have usernames | 290 | // current username and hostname. On systems that don't have usernames |
| 316 | // or hostnames, this can look hideous. | 291 | // or hostnames, this can look hideous. |
| 317 | // Only relevant if BB_SH is enabled. | 292 | // Only relevant if a shell is enabled. |
| 318 | //#define BB_FEATURE_SH_FANCY_PROMPT | 293 | //#define BB_FEATURE_SH_FANCY_PROMPT |
| 319 | // | 294 | // |
| 320 | //Turn on extra fbset options | 295 | //Turn on extra fbset options |
| @@ -435,8 +410,8 @@ | |||
| 435 | #undef BB_KLOGD /* Uses daemon() */ | 410 | #undef BB_KLOGD /* Uses daemon() */ |
| 436 | #undef BB_UPDATE /* Uses daemon() */ | 411 | #undef BB_UPDATE /* Uses daemon() */ |
| 437 | #endif | 412 | #endif |
| 438 | #if defined BB_SH | 413 | #if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH |
| 439 | #if defined BB_FEATURE_COMMAND_EDITING | 414 | #if defined BB_FEATURE_COMMAND_EDITING |
| 440 | #define BB_CMDEDIT | 415 | #define BB_CMDEDIT |
| 441 | #else | 416 | #else |
| 442 | #undef BB_FEATURE_COMMAND_EDITING | 417 | #undef BB_FEATURE_COMMAND_EDITING |
| @@ -494,3 +469,17 @@ | |||
| 494 | #define BB_LOGREAD | 469 | #define BB_LOGREAD |
| 495 | #endif | 470 | #endif |
| 496 | #endif | 471 | #endif |
| 472 | // | ||
| 473 | #if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH | ||
| 474 | # define BB_SH | ||
| 475 | # define shell_main ash_main | ||
| 476 | #elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH | ||
| 477 | # define BB_SH | ||
| 478 | # define shell_main hush_main | ||
| 479 | #elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH | ||
| 480 | # define BB_SH | ||
| 481 | # define shell_main lash_main | ||
| 482 | #elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH | ||
| 483 | # define BB_SH | ||
| 484 | # define shell_main msh_main | ||
| 485 | #endif | ||
| @@ -349,7 +349,7 @@ busybox.links: busybox.mkll Config.h applets.h | |||
| 349 | - $(SHELL) $^ >$@ | 349 | - $(SHELL) $^ >$@ |
| 350 | 350 | ||
| 351 | nfsmount.o cmdedit.o: %.o: %.h | 351 | nfsmount.o cmdedit.o: %.o: %.h |
| 352 | sh.o: cmdedit.h | 352 | ash.o hush.o lash.o msh.o: cmdedit.h |
| 353 | $(OBJECTS): %.o: %.c Config.h busybox.h applets.h Makefile | 353 | $(OBJECTS): %.o: %.c Config.h busybox.h applets.h Makefile |
| 354 | $(CC) $(CFLAGS) -I. $(patsubst %,-I%,$(subst :, ,$(BB_SRC_DIR))) -c $< -o $*.o | 354 | $(CC) $(CFLAGS) -I. $(patsubst %,-I%,$(subst :, ,$(BB_SRC_DIR))) -c $< -o $*.o |
| 355 | 355 | ||
| @@ -377,8 +377,6 @@ libbb.a: $(LIBBB_MOBJ) $(LIBBB_AROBJS) $(LIBBB_OBJS) | |||
| 377 | 377 | ||
| 378 | usage.o: usage.h | 378 | usage.o: usage.h |
| 379 | 379 | ||
| 380 | sh.o: sh.c lash.c hush.c msh.c ash.c | ||
| 381 | |||
| 382 | libbb/loop.o: libbb/loop.h | 380 | libbb/loop.o: libbb/loop.h |
| 383 | 381 | ||
| 384 | libbb/loop.h: mk_loop_h.sh | 382 | libbb/loop.h: mk_loop_h.sh |
| @@ -51,6 +51,38 @@ Supported kernels: | |||
| 51 | 51 | ||
| 52 | ---------------- | 52 | ---------------- |
| 53 | 53 | ||
| 54 | Shells: | ||
| 55 | |||
| 56 | lash is the very smallest shell (adds just 10k) and it is quite usable as | ||
| 57 | a command prompt, but it is not suitable for any but the most trivial | ||
| 58 | scripting (such as an initrd that calls insmod a few times) since it does | ||
| 59 | not understand Bourne shell grammer. It does handle pipes, redirects, and | ||
| 60 | job control though. Adding in command editing makes it very nice | ||
| 61 | lightweight command prompt. | ||
| 62 | |||
| 63 | hush is also quite small (just 18k) and it has very complete Bourne shell | ||
| 64 | grammer. It handles if/then/else/fi just fine, but doesn't handle loops | ||
| 65 | like for/do/done or case/esac and such. It also currently has a problem | ||
| 66 | with job control. | ||
| 67 | |||
| 68 | msh: The minix shell (adds just 30k) is quite complete and handles things | ||
| 69 | like for/do/done, case/esac and all the things you expect a Bourne shell to | ||
| 70 | do. It is not always pedantically correct about Bourne shell grammer (try | ||
| 71 | running the shell testscript "tests/sh.testcases" on it and compare vs bash) | ||
| 72 | but for most things it works quite well. It also uses only vfork, so it can | ||
| 73 | be used on uClinux systems. This was only recently added, so there is still | ||
| 74 | room to shrink it further... | ||
| 75 | |||
| 76 | ash: This adds about 60k in the default configuration and is the most | ||
| 77 | complete and most pedantically correct shell included with busybox. This | ||
| 78 | shell was also recently added, and several people (mainly Vladimir and Erik) | ||
| 79 | have been working on it. There are a number of configurable things at the | ||
| 80 | top of ash.c as well, so check those out if you want to tweak things. The | ||
| 81 | Posix math support is currently disabled (that bit of code was horrible) but | ||
| 82 | will be restored for the next BusyBox release. | ||
| 83 | |||
| 84 | ---------------- | ||
| 85 | |||
| 54 | Getting help: | 86 | Getting help: |
| 55 | 87 | ||
| 56 | When you find you need help, you can check out the BusyBox mailing list | 88 | When you find you need help, you can check out the BusyBox mailing list |
| @@ -52,6 +52,9 @@ | |||
| 52 | #ifdef BB_AR | 52 | #ifdef BB_AR |
| 53 | APPLET(ar, ar_main, _BB_DIR_USR_BIN) | 53 | APPLET(ar, ar_main, _BB_DIR_USR_BIN) |
| 54 | #endif | 54 | #endif |
| 55 | #ifdef BB_ASH | ||
| 56 | APPLET_NOUSAGE("ash", ash_main, _BB_DIR_BIN) | ||
| 57 | #endif | ||
| 55 | #ifdef BB_BASENAME | 58 | #ifdef BB_BASENAME |
| 56 | APPLET(basename, basename_main, _BB_DIR_USR_BIN) | 59 | APPLET(basename, basename_main, _BB_DIR_USR_BIN) |
| 57 | #endif | 60 | #endif |
| @@ -185,6 +188,9 @@ | |||
| 185 | #ifdef BB_HOSTNAME | 188 | #ifdef BB_HOSTNAME |
| 186 | APPLET(hostname, hostname_main, _BB_DIR_BIN) | 189 | APPLET(hostname, hostname_main, _BB_DIR_BIN) |
| 187 | #endif | 190 | #endif |
| 191 | #ifdef BB_HUSH | ||
| 192 | APPLET_NOUSAGE("hush", hush_main, _BB_DIR_BIN) | ||
| 193 | #endif | ||
| 188 | #ifdef BB_ID | 194 | #ifdef BB_ID |
| 189 | APPLET(id, id_main, _BB_DIR_USR_BIN) | 195 | APPLET(id, id_main, _BB_DIR_USR_BIN) |
| 190 | #endif | 196 | #endif |
| @@ -206,6 +212,9 @@ | |||
| 206 | #ifdef BB_KLOGD | 212 | #ifdef BB_KLOGD |
| 207 | APPLET(klogd, klogd_main, _BB_DIR_SBIN) | 213 | APPLET(klogd, klogd_main, _BB_DIR_SBIN) |
| 208 | #endif | 214 | #endif |
| 215 | #ifdef BB_LASH | ||
| 216 | APPLET(lash, lash_main, _BB_DIR_BIN) | ||
| 217 | #endif | ||
| 209 | #ifdef BB_LENGTH | 218 | #ifdef BB_LENGTH |
| 210 | APPLET(length, length_main, _BB_DIR_USR_BIN) | 219 | APPLET(length, length_main, _BB_DIR_USR_BIN) |
| 211 | #endif | 220 | #endif |
| @@ -272,6 +281,9 @@ | |||
| 272 | #ifdef BB_MOUNT | 281 | #ifdef BB_MOUNT |
| 273 | APPLET(mount, mount_main, _BB_DIR_BIN) | 282 | APPLET(mount, mount_main, _BB_DIR_BIN) |
| 274 | #endif | 283 | #endif |
| 284 | #ifdef BB_MSH | ||
| 285 | APPLET_NOUSAGE("msh", msh_main, _BB_DIR_BIN) | ||
| 286 | #endif | ||
| 275 | #ifdef BB_MT | 287 | #ifdef BB_MT |
| 276 | APPLET(mt, mt_main, _BB_DIR_BIN) | 288 | APPLET(mt, mt_main, _BB_DIR_BIN) |
| 277 | #endif | 289 | #endif |
| @@ -344,8 +356,14 @@ | |||
| 344 | #ifdef BB_SETKEYCODES | 356 | #ifdef BB_SETKEYCODES |
| 345 | APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN) | 357 | APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN) |
| 346 | #endif | 358 | #endif |
| 347 | #ifdef BB_SH | 359 | #ifdef BB_FEATURE_SH_IS_ASH |
| 348 | APPLET(sh, shell_main, _BB_DIR_BIN) | 360 | APPLET_NOUSAGE("sh", ash_main, _BB_DIR_BIN) |
| 361 | #elif defined(BB_FEATURE_SH_IS_HUSH) | ||
| 362 | APPLET_NOUSAGE("sh", hush_main, _BB_DIR_BIN) | ||
| 363 | #elif defined(BB_FEATURE_SH_IS_LASH) | ||
| 364 | APPLET_NOUSAGE("sh", lash_main, _BB_DIR_BIN) | ||
| 365 | #elif defined(BB_FEATURE_SH_IS_MSH) | ||
| 366 | APPLET_NOUSAGE("sh", msh_main, _BB_DIR_BIN) | ||
| 349 | #endif | 367 | #endif |
| 350 | #ifdef BB_SLEEP | 368 | #ifdef BB_SLEEP |
| 351 | APPLET(sleep, sleep_main, _BB_DIR_BIN) | 369 | APPLET(sleep, sleep_main, _BB_DIR_BIN) |
diff --git a/applets/usage.h b/applets/usage.h index 08da42b27..13759d23f 100644 --- a/applets/usage.h +++ b/applets/usage.h | |||
| @@ -1365,12 +1365,12 @@ | |||
| 1365 | #define setkeycodes_example_usage \ | 1365 | #define setkeycodes_example_usage \ |
| 1366 | "$ setkeycodes e030 127\n" | 1366 | "$ setkeycodes e030 127\n" |
| 1367 | 1367 | ||
| 1368 | #define sh_trivial_usage \ | 1368 | #define lash_trivial_usage \ |
| 1369 | "[FILE]...\n" \ | 1369 | "[FILE]...\n" \ |
| 1370 | "or: sh -c command [args]..." | 1370 | "or: sh -c command [args]..." |
| 1371 | #define sh_full_usage \ | 1371 | #define lash_full_usage \ |
| 1372 | "lash: The BusyBox LAme SHell (command interpreter)" | 1372 | "lash: The BusyBox LAme SHell (command interpreter)" |
| 1373 | #define sh_notes_usage \ | 1373 | #define lash_notes_usage \ |
| 1374 | "This command does not yet have proper documentation.\n" \ | 1374 | "This command does not yet have proper documentation.\n" \ |
| 1375 | "\n" \ | 1375 | "\n" \ |
| 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ | 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ |
| @@ -7638,7 +7638,7 @@ static void procargs (int, char **); | |||
| 7638 | */ | 7638 | */ |
| 7639 | 7639 | ||
| 7640 | int | 7640 | int |
| 7641 | shell_main(argc, argv) | 7641 | ash_main(argc, argv) |
| 7642 | int argc; | 7642 | int argc; |
| 7643 | char **argv; | 7643 | char **argv; |
| 7644 | { | 7644 | { |
| @@ -12874,7 +12874,7 @@ findvar(struct var **vpp, const char *name) | |||
| 12874 | /* | 12874 | /* |
| 12875 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> | 12875 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> |
| 12876 | * This file contains code for the times builtin. | 12876 | * This file contains code for the times builtin. |
| 12877 | * $Id: ash.c,v 1.15 2001/07/31 21:38:23 andersen Exp $ | 12877 | * $Id: ash.c,v 1.16 2001/08/01 17:21:33 kraai Exp $ |
| 12878 | */ | 12878 | */ |
| 12879 | static int timescmd (int argc, char **argv) | 12879 | static int timescmd (int argc, char **argv) |
| 12880 | { | 12880 | { |
diff --git a/debian/Config.h-deb b/debian/Config.h-deb index 93f5597a0..020f89d81 100644 --- a/debian/Config.h-deb +++ b/debian/Config.h-deb | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | // BusyBox Applications | 9 | // BusyBox Applications |
| 10 | //#define BB_ADJTIMEX | 10 | //#define BB_ADJTIMEX |
| 11 | #define BB_AR | 11 | #define BB_AR |
| 12 | //#define BB_ASH | ||
| 12 | #define BB_BASENAME | 13 | #define BB_BASENAME |
| 13 | #define BB_CAT | 14 | #define BB_CAT |
| 14 | #define BB_CHGRP | 15 | #define BB_CHGRP |
| @@ -51,6 +52,7 @@ | |||
| 51 | #define BB_HEAD | 52 | #define BB_HEAD |
| 52 | //#define BB_HOSTID | 53 | //#define BB_HOSTID |
| 53 | //#define BB_HOSTNAME | 54 | //#define BB_HOSTNAME |
| 55 | //#define BB_HUSH | ||
| 54 | #define BB_ID | 56 | #define BB_ID |
| 55 | //#define BB_IFCONFIG | 57 | //#define BB_IFCONFIG |
| 56 | #define BB_INIT | 58 | #define BB_INIT |
| @@ -58,6 +60,7 @@ | |||
| 58 | #define BB_KILL | 60 | #define BB_KILL |
| 59 | #define BB_KILLALL | 61 | #define BB_KILLALL |
| 60 | #define BB_KLOGD | 62 | #define BB_KLOGD |
| 63 | //#define BB_LASH | ||
| 61 | //#define BB_LENGTH | 64 | //#define BB_LENGTH |
| 62 | #define BB_LN | 65 | #define BB_LN |
| 63 | //#define BB_LOADACM | 66 | //#define BB_LOADACM |
| @@ -78,6 +81,7 @@ | |||
| 78 | //#define BB_NC | 81 | //#define BB_NC |
| 79 | #define BB_MORE | 82 | #define BB_MORE |
| 80 | #define BB_MOUNT | 83 | #define BB_MOUNT |
| 84 | //#define BB_MSH | ||
| 81 | //#define BB_MT | 85 | //#define BB_MT |
| 82 | #define BB_MV | 86 | #define BB_MV |
| 83 | //#define BB_NSLOOKUP | 87 | //#define BB_NSLOOKUP |
| @@ -99,7 +103,6 @@ | |||
| 99 | //#define BB_RPM2CPIO | 103 | //#define BB_RPM2CPIO |
| 100 | #define BB_SED | 104 | #define BB_SED |
| 101 | //#define BB_SETKEYCODES | 105 | //#define BB_SETKEYCODES |
| 102 | //#define BB_SH | ||
| 103 | #define BB_SLEEP | 106 | #define BB_SLEEP |
| 104 | #define BB_SORT | 107 | #define BB_SORT |
| 105 | //#define BB_STTY | 108 | //#define BB_STTY |
| @@ -143,40 +146,12 @@ | |||
| 143 | // pretty/useful). | 146 | // pretty/useful). |
| 144 | // | 147 | // |
| 145 | // | 148 | // |
| 146 | // If you enabled BB_SH above, you may select one of the following shells. | 149 | // If you enabled one or more of the shells, you may select which one |
| 147 | // You can only select ONE of the following shells. Sorry. | 150 | // should be run when sh is invoked: |
| 148 | // | 151 | //#define BB_FEATURE_SH_IS_ASH |
| 149 | // lash is the very smallest shell (adds just 10k) and it is quite usable as a | 152 | //#define BB_FEATURE_SH_IS_HUSH |
| 150 | // command prompt, but it is not suitable for any but the most trivial scripting | 153 | //#define BB_FEATURE_SH_IS_LASH |
| 151 | // (such as an initrd that calls insmod a few times) since it does not | 154 | #define BB_FEATURE_SH_IS_MSH |
| 152 | // understand Bourne shell grammer. It does handle pipes, redirects, and job | ||
| 153 | // control though. Adding in command editing makes it very nice lightweight | ||
| 154 | // command prompt. | ||
| 155 | //#define BB_FEATURE_LASH | ||
| 156 | // | ||
| 157 | // hush is also quite small (just 18k) and it has very complete Bourne shell | ||
| 158 | // grammer. It handles if/then/else/fi just fine, but doesn't handle loops | ||
| 159 | // like for/do/done or case/esac and such. It also currently has a problem | ||
| 160 | // with job control. | ||
| 161 | //#define BB_FEATURE_HUSH | ||
| 162 | // | ||
| 163 | // msh: The minix shell (adds just 30k) is quite complete and handles things | ||
| 164 | // like for/do/done, case/esac and all the things you expect a Bourne shell to | ||
| 165 | // do. It is not always pedantically correct about Bourne shell grammer (try | ||
| 166 | // running the shell testscript "tests/sh.testcases" on it and compare vs | ||
| 167 | // bash) but for most things it works quite well. It also uses only vfork, so | ||
| 168 | // it can be used on uClinux systems. This was only recently added, so there is | ||
| 169 | // still room to shrink it further... | ||
| 170 | #define BB_FEATURE_MSH | ||
| 171 | // | ||
| 172 | // ash: This adds about 60k in the default configuration and is the most | ||
| 173 | // complete and most pedantically correct shell included with busybox. This | ||
| 174 | // shell was also recently added, and several people (mainly Vladimir and Erik) | ||
| 175 | // have been working on it. There are a number of configurable things at the | ||
| 176 | // top of ash.c as well, so check those out if you want to tweak things. The | ||
| 177 | // Posix math support is currently disabled (that bit of code was horrible) but | ||
| 178 | // will be restored for the next BusyBox release. | ||
| 179 | //#define BB_FEATURE_ASH | ||
| 180 | // | 155 | // |
| 181 | // BusyBox will, by default, malloc space for its buffers. This costs code | 156 | // BusyBox will, by default, malloc space for its buffers. This costs code |
| 182 | // size for the call to xmalloc. You can use the following feature to have | 157 | // size for the call to xmalloc. You can use the following feature to have |
| @@ -283,11 +258,11 @@ | |||
| 283 | #define BB_FEATURE_SORT_UNIQUE | 258 | #define BB_FEATURE_SORT_UNIQUE |
| 284 | // | 259 | // |
| 285 | // Enable command line editing in the shell. | 260 | // Enable command line editing in the shell. |
| 286 | // Only relevant if BB_SH is enabled. On by default. | 261 | // Only relevant if a shell is enabled. On by default. |
| 287 | #define BB_FEATURE_COMMAND_EDITING | 262 | #define BB_FEATURE_COMMAND_EDITING |
| 288 | // | 263 | // |
| 289 | // Enable tab completion in the shell. This is now working quite nicely. | 264 | // Enable tab completion in the shell. This is now working quite nicely. |
| 290 | // This feature adds a bit over 4k. Only relevant if BB_SH is enabled. | 265 | // This feature adds a bit over 4k. Only relevant if a shell is enabled. |
| 291 | #define BB_FEATURE_COMMAND_TAB_COMPLETION | 266 | #define BB_FEATURE_COMMAND_TAB_COMPLETION |
| 292 | // | 267 | // |
| 293 | // Attempts to match usernames in a ~-prefixed path | 268 | // Attempts to match usernames in a ~-prefixed path |
| @@ -296,7 +271,7 @@ | |||
| 296 | //Allow the shell to invoke all the compiled in BusyBox applets as if they | 271 | //Allow the shell to invoke all the compiled in BusyBox applets as if they |
| 297 | //were shell builtins. Nice for staticly linking an emergency rescue shell, | 272 | //were shell builtins. Nice for staticly linking an emergency rescue shell, |
| 298 | //among other things. Off by default. | 273 | //among other things. Off by default. |
| 299 | // Only relevant if BB_SH is enabled. | 274 | // Only relevant if a shell is enabled. |
| 300 | //#define BB_FEATURE_SH_STANDALONE_SHELL | 275 | //#define BB_FEATURE_SH_STANDALONE_SHELL |
| 301 | // | 276 | // |
| 302 | //When this is enabled, busybox shell applets can be called using full path | 277 | //When this is enabled, busybox shell applets can be called using full path |
| @@ -305,13 +280,13 @@ | |||
| 305 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ | 280 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ |
| 306 | //busybox. Some systems want this, others do not. Choose wisely. :-) This | 281 | //busybox. Some systems want this, others do not. Choose wisely. :-) This |
| 307 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. | 282 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. |
| 308 | // Only relevant if BB_SH is enabled. Off by default. | 283 | // Only relevant if a shell is enabled. Off by default. |
| 309 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN | 284 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN |
| 310 | // | 285 | // |
| 311 | // Uncomment this option for a fancy shell prompt that includes the | 286 | // Uncomment this option for a fancy shell prompt that includes the |
| 312 | // current username and hostname. On systems that don't have usernames | 287 | // current username and hostname. On systems that don't have usernames |
| 313 | // or hostnames, this can look hideous. | 288 | // or hostnames, this can look hideous. |
| 314 | // Only relevant if BB_SH is enabled. | 289 | // Only relevant if a shell is enabled. |
| 315 | //#define BB_FEATURE_SH_FANCY_PROMPT | 290 | //#define BB_FEATURE_SH_FANCY_PROMPT |
| 316 | // | 291 | // |
| 317 | //Turn on extra fbset options | 292 | //Turn on extra fbset options |
| @@ -416,8 +391,8 @@ | |||
| 416 | // Nothing beyond this point should ever be touched by | 391 | // Nothing beyond this point should ever be touched by |
| 417 | // mere mortals so leave this stuff alone. | 392 | // mere mortals so leave this stuff alone. |
| 418 | // | 393 | // |
| 419 | #if defined BB_SH | 394 | #if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH |
| 420 | #if defined BB_FEATURE_COMMAND_EDITING | 395 | #if defined BB_FEATURE_COMMAND_EDITING |
| 421 | #define BB_CMDEDIT | 396 | #define BB_CMDEDIT |
| 422 | #else | 397 | #else |
| 423 | #undef BB_FEATURE_COMMAND_EDITING | 398 | #undef BB_FEATURE_COMMAND_EDITING |
| @@ -482,3 +457,17 @@ | |||
| 482 | #define BB_LOGREAD | 457 | #define BB_LOGREAD |
| 483 | #endif | 458 | #endif |
| 484 | #endif | 459 | #endif |
| 460 | // | ||
| 461 | #if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH | ||
| 462 | # define BB_SH | ||
| 463 | # define shell_main ash_main | ||
| 464 | #elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH | ||
| 465 | # define BB_SH | ||
| 466 | # define shell_main hush_main | ||
| 467 | #elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH | ||
| 468 | # define BB_SH | ||
| 469 | # define shell_main lash_main | ||
| 470 | #elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH | ||
| 471 | # define BB_SH | ||
| 472 | # define shell_main msh_main | ||
| 473 | #endif | ||
diff --git a/debian/Config.h-static b/debian/Config.h-static index e049b5aa2..a538b1a63 100644 --- a/debian/Config.h-static +++ b/debian/Config.h-static | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | // BusyBox Applications | 9 | // BusyBox Applications |
| 10 | //#define BB_ADJTIMEX | 10 | //#define BB_ADJTIMEX |
| 11 | #define BB_AR | 11 | #define BB_AR |
| 12 | #define BB_ASH | ||
| 12 | #define BB_BASENAME | 13 | #define BB_BASENAME |
| 13 | #define BB_CAT | 14 | #define BB_CAT |
| 14 | #define BB_CHGRP | 15 | #define BB_CHGRP |
| @@ -51,6 +52,7 @@ | |||
| 51 | #define BB_HEAD | 52 | #define BB_HEAD |
| 52 | #define BB_HOSTID | 53 | #define BB_HOSTID |
| 53 | #define BB_HOSTNAME | 54 | #define BB_HOSTNAME |
| 55 | #define BB_HUSH | ||
| 54 | #define BB_ID | 56 | #define BB_ID |
| 55 | #define BB_IFCONFIG | 57 | #define BB_IFCONFIG |
| 56 | #define BB_INIT | 58 | #define BB_INIT |
| @@ -58,6 +60,7 @@ | |||
| 58 | #define BB_KILL | 60 | #define BB_KILL |
| 59 | #define BB_KILLALL | 61 | #define BB_KILLALL |
| 60 | #define BB_KLOGD | 62 | #define BB_KLOGD |
| 63 | #define BB_LASH | ||
| 61 | #define BB_LENGTH | 64 | #define BB_LENGTH |
| 62 | #define BB_LN | 65 | #define BB_LN |
| 63 | #define BB_LOADACM | 66 | #define BB_LOADACM |
| @@ -78,6 +81,7 @@ | |||
| 78 | #define BB_NC | 81 | #define BB_NC |
| 79 | #define BB_MORE | 82 | #define BB_MORE |
| 80 | #define BB_MOUNT | 83 | #define BB_MOUNT |
| 84 | #define BB_MSH | ||
| 81 | #define BB_MT | 85 | #define BB_MT |
| 82 | #define BB_MV | 86 | #define BB_MV |
| 83 | #define BB_NSLOOKUP | 87 | #define BB_NSLOOKUP |
| @@ -99,7 +103,6 @@ | |||
| 99 | #define BB_RPM2CPIO | 103 | #define BB_RPM2CPIO |
| 100 | #define BB_SED | 104 | #define BB_SED |
| 101 | #define BB_SETKEYCODES | 105 | #define BB_SETKEYCODES |
| 102 | #define BB_SH | ||
| 103 | #define BB_SLEEP | 106 | #define BB_SLEEP |
| 104 | #define BB_SORT | 107 | #define BB_SORT |
| 105 | #define BB_STTY | 108 | #define BB_STTY |
| @@ -143,40 +146,12 @@ | |||
| 143 | // pretty/useful). | 146 | // pretty/useful). |
| 144 | // | 147 | // |
| 145 | // | 148 | // |
| 146 | // If you enabled BB_SH above, you may select one of the following shells. | 149 | // If you enabled one or more of the shells, you may select which one |
| 147 | // You can only select ONE of the following shells. Sorry. | 150 | // should be run when sh is invoked: |
| 148 | // | 151 | //#define BB_FEATURE_SH_IS_ASH |
| 149 | // lash is the very smallest shell (adds just 10k) and it is quite usable as a | 152 | //#define BB_FEATURE_SH_IS_HUSH |
| 150 | // command prompt, but it is not suitable for any but the most trivial scripting | 153 | //#define BB_FEATURE_SH_IS_LASH |
| 151 | // (such as an initrd that calls insmod a few times) since it does not | 154 | #define BB_FEATURE_SH_IS_MSH |
| 152 | // understand Bourne shell grammer. It does handle pipes, redirects, and job | ||
| 153 | // control though. Adding in command editing makes it very nice lightweight | ||
| 154 | // command prompt. | ||
| 155 | //#define BB_FEATURE_LASH | ||
| 156 | // | ||
| 157 | // hush is also quite small (just 18k) and it has very complete Bourne shell | ||
| 158 | // grammer. It handles if/then/else/fi just fine, but doesn't handle loops | ||
| 159 | // like for/do/done or case/esac and such. It also currently has a problem | ||
| 160 | // with job control. | ||
| 161 | //#define BB_FEATURE_HUSH | ||
| 162 | // | ||
| 163 | // msh: The minix shell (adds just 30k) is quite complete and handles things | ||
| 164 | // like for/do/done, case/esac and all the things you expect a Bourne shell to | ||
| 165 | // do. It is not always pedantically correct about Bourne shell grammer (try | ||
| 166 | // running the shell testscript "tests/sh.testcases" on it and compare vs | ||
| 167 | // bash) but for most things it works quite well. It also uses only vfork, so | ||
| 168 | // it can be used on uClinux systems. This was only recently added, so there is | ||
| 169 | // still room to shrink it further... | ||
| 170 | //#define BB_FEATURE_MSH | ||
| 171 | // | ||
| 172 | // ash: This adds about 60k in the default configuration and is the most | ||
| 173 | // complete and most pedantically correct shell included with busybox. This | ||
| 174 | // shell was also recently added, and several people (mainly Vladimir and Erik) | ||
| 175 | // have been working on it. There are a number of configurable things at the | ||
| 176 | // top of ash.c as well, so check those out if you want to tweak things. The | ||
| 177 | // Posix math support is currently disabled (that bit of code was horrible) but | ||
| 178 | // will be restored for the next BusyBox release. | ||
| 179 | #define BB_FEATURE_ASH | ||
| 180 | // | 155 | // |
| 181 | // BusyBox will, by default, malloc space for its buffers. This costs code | 156 | // BusyBox will, by default, malloc space for its buffers. This costs code |
| 182 | // size for the call to xmalloc. You can use the following feature to have | 157 | // size for the call to xmalloc. You can use the following feature to have |
| @@ -283,11 +258,11 @@ | |||
| 283 | #define BB_FEATURE_SORT_UNIQUE | 258 | #define BB_FEATURE_SORT_UNIQUE |
| 284 | // | 259 | // |
| 285 | // Enable command line editing in the shell. | 260 | // Enable command line editing in the shell. |
| 286 | // Only relevant if BB_SH is enabled. On by default. | 261 | // Only relevant if a shell is enabled. On by default. |
| 287 | #define BB_FEATURE_COMMAND_EDITING | 262 | #define BB_FEATURE_COMMAND_EDITING |
| 288 | // | 263 | // |
| 289 | // Enable tab completion in the shell. This is now working quite nicely. | 264 | // Enable tab completion in the shell. This is now working quite nicely. |
| 290 | // This feature adds a bit over 4k. Only relevant if BB_SH is enabled. | 265 | // This feature adds a bit over 4k. Only relevant if a shell is enabled. |
| 291 | #define BB_FEATURE_COMMAND_TAB_COMPLETION | 266 | #define BB_FEATURE_COMMAND_TAB_COMPLETION |
| 292 | // | 267 | // |
| 293 | // Attempts to match usernames in a ~-prefixed path | 268 | // Attempts to match usernames in a ~-prefixed path |
| @@ -296,7 +271,7 @@ | |||
| 296 | //Allow the shell to invoke all the compiled in BusyBox applets as if they | 271 | //Allow the shell to invoke all the compiled in BusyBox applets as if they |
| 297 | //were shell builtins. Nice for staticly linking an emergency rescue shell, | 272 | //were shell builtins. Nice for staticly linking an emergency rescue shell, |
| 298 | //among other things. Off by default. | 273 | //among other things. Off by default. |
| 299 | // Only relevant if BB_SH is enabled. | 274 | // Only relevant if a shell is enabled. |
| 300 | #define BB_FEATURE_SH_STANDALONE_SHELL | 275 | #define BB_FEATURE_SH_STANDALONE_SHELL |
| 301 | // | 276 | // |
| 302 | //When this is enabled, busybox shell applets can be called using full path | 277 | //When this is enabled, busybox shell applets can be called using full path |
| @@ -305,13 +280,13 @@ | |||
| 305 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ | 280 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ |
| 306 | //busybox. Some systems want this, others do not. Choose wisely. :-) This | 281 | //busybox. Some systems want this, others do not. Choose wisely. :-) This |
| 307 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. | 282 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. |
| 308 | // Only relevant if BB_SH is enabled. Off by default. | 283 | // Only relevant if a shell is enabled. Off by default. |
| 309 | #define BB_FEATURE_SH_APPLETS_ALWAYS_WIN | 284 | #define BB_FEATURE_SH_APPLETS_ALWAYS_WIN |
| 310 | // | 285 | // |
| 311 | // Uncomment this option for a fancy shell prompt that includes the | 286 | // Uncomment this option for a fancy shell prompt that includes the |
| 312 | // current username and hostname. On systems that don't have usernames | 287 | // current username and hostname. On systems that don't have usernames |
| 313 | // or hostnames, this can look hideous. | 288 | // or hostnames, this can look hideous. |
| 314 | // Only relevant if BB_SH is enabled. | 289 | // Only relevant if a shell is enabled. |
| 315 | #define BB_FEATURE_SH_FANCY_PROMPT | 290 | #define BB_FEATURE_SH_FANCY_PROMPT |
| 316 | // | 291 | // |
| 317 | //Turn on extra fbset options | 292 | //Turn on extra fbset options |
| @@ -416,8 +391,8 @@ | |||
| 416 | // Nothing beyond this point should ever be touched by | 391 | // Nothing beyond this point should ever be touched by |
| 417 | // mere mortals so leave this stuff alone. | 392 | // mere mortals so leave this stuff alone. |
| 418 | // | 393 | // |
| 419 | #if defined BB_SH | 394 | #if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH |
| 420 | #if defined BB_FEATURE_COMMAND_EDITING | 395 | #if defined BB_FEATURE_COMMAND_EDITING |
| 421 | #define BB_CMDEDIT | 396 | #define BB_CMDEDIT |
| 422 | #else | 397 | #else |
| 423 | #undef BB_FEATURE_COMMAND_EDITING | 398 | #undef BB_FEATURE_COMMAND_EDITING |
| @@ -482,3 +457,17 @@ | |||
| 482 | #define BB_LOGREAD | 457 | #define BB_LOGREAD |
| 483 | #endif | 458 | #endif |
| 484 | #endif | 459 | #endif |
| 460 | // | ||
| 461 | #if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH | ||
| 462 | # define BB_SH | ||
| 463 | # define shell_main ash_main | ||
| 464 | #elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH | ||
| 465 | # define BB_SH | ||
| 466 | # define shell_main hush_main | ||
| 467 | #elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH | ||
| 468 | # define BB_SH | ||
| 469 | # define shell_main lash_main | ||
| 470 | #elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH | ||
| 471 | # define BB_SH | ||
| 472 | # define shell_main msh_main | ||
| 473 | #endif | ||
diff --git a/debian/Config.h-udeb b/debian/Config.h-udeb index dfc32f655..172d3dc75 100644 --- a/debian/Config.h-udeb +++ b/debian/Config.h-udeb | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | // BusyBox Applications | 9 | // BusyBox Applications |
| 10 | //#define BB_ADJTIMEX | 10 | //#define BB_ADJTIMEX |
| 11 | //#define BB_AR | 11 | //#define BB_AR |
| 12 | //#define BB_ASH | ||
| 12 | #define BB_BASENAME | 13 | #define BB_BASENAME |
| 13 | #define BB_CAT | 14 | #define BB_CAT |
| 14 | #define BB_CHGRP | 15 | #define BB_CHGRP |
| @@ -51,6 +52,7 @@ | |||
| 51 | #define BB_HEAD | 52 | #define BB_HEAD |
| 52 | //#define BB_HOSTID | 53 | //#define BB_HOSTID |
| 53 | //#define BB_HOSTNAME | 54 | //#define BB_HOSTNAME |
| 55 | //#define BB_HUSH | ||
| 54 | #define BB_ID | 56 | #define BB_ID |
| 55 | //#define BB_IFCONFIG | 57 | //#define BB_IFCONFIG |
| 56 | #define BB_INIT | 58 | #define BB_INIT |
| @@ -58,6 +60,7 @@ | |||
| 58 | #define BB_KILL | 60 | #define BB_KILL |
| 59 | #define BB_KILLALL | 61 | #define BB_KILLALL |
| 60 | #define BB_KLOGD | 62 | #define BB_KLOGD |
| 63 | //#define BB_LASH | ||
| 61 | //#define BB_LENGTH | 64 | //#define BB_LENGTH |
| 62 | #define BB_LN | 65 | #define BB_LN |
| 63 | //#define BB_LOADACM | 66 | //#define BB_LOADACM |
| @@ -78,6 +81,7 @@ | |||
| 78 | //#define BB_NC | 81 | //#define BB_NC |
| 79 | #define BB_MORE | 82 | #define BB_MORE |
| 80 | #define BB_MOUNT | 83 | #define BB_MOUNT |
| 84 | //#define BB_MSH | ||
| 81 | //#define BB_MT | 85 | //#define BB_MT |
| 82 | #define BB_MV | 86 | #define BB_MV |
| 83 | //#define BB_NSLOOKUP | 87 | //#define BB_NSLOOKUP |
| @@ -99,7 +103,6 @@ | |||
| 99 | //#define BB_RPM2CPIO | 103 | //#define BB_RPM2CPIO |
| 100 | #define BB_SED | 104 | #define BB_SED |
| 101 | //#define BB_SETKEYCODES | 105 | //#define BB_SETKEYCODES |
| 102 | //#define BB_SH | ||
| 103 | #define BB_SLEEP | 106 | #define BB_SLEEP |
| 104 | #define BB_SORT | 107 | #define BB_SORT |
| 105 | //#define BB_STTY | 108 | //#define BB_STTY |
| @@ -143,40 +146,12 @@ | |||
| 143 | // pretty/useful). | 146 | // pretty/useful). |
| 144 | // | 147 | // |
| 145 | // | 148 | // |
| 146 | // If you enabled BB_SH above, you may select one of the following shells. | 149 | // If you enabled one or more of the shells, you may select which one |
| 147 | // You can only select ONE of the following shells. Sorry. | 150 | // should be run when sh is invoked: |
| 148 | // | 151 | //#define BB_FEATURE_SH_IS_ASH |
| 149 | // lash is the very smallest shell (adds just 10k) and it is quite usable as a | 152 | //#define BB_FEATURE_SH_IS_HUSH |
| 150 | // command prompt, but it is not suitable for any but the most trivial scripting | 153 | //#define BB_FEATURE_SH_IS_LASH |
| 151 | // (such as an initrd that calls insmod a few times) since it does not | 154 | #define BB_FEATURE_SH_IS_MSH |
| 152 | // understand Bourne shell grammer. It does handle pipes, redirects, and job | ||
| 153 | // control though. Adding in command editing makes it very nice lightweight | ||
| 154 | // command prompt. | ||
| 155 | //#define BB_FEATURE_LASH | ||
| 156 | // | ||
| 157 | // hush is also quite small (just 18k) and it has very complete Bourne shell | ||
| 158 | // grammer. It handles if/then/else/fi just fine, but doesn't handle loops | ||
| 159 | // like for/do/done or case/esac and such. It also currently has a problem | ||
| 160 | // with job control. | ||
| 161 | //#define BB_FEATURE_HUSH | ||
| 162 | // | ||
| 163 | // msh: The minix shell (adds just 30k) is quite complete and handles things | ||
| 164 | // like for/do/done, case/esac and all the things you expect a Bourne shell to | ||
| 165 | // do. It is not always pedantically correct about Bourne shell grammer (try | ||
| 166 | // running the shell testscript "tests/sh.testcases" on it and compare vs | ||
| 167 | // bash) but for most things it works quite well. It also uses only vfork, so | ||
| 168 | // it can be used on uClinux systems. This was only recently added, so there is | ||
| 169 | // still room to shrink it further... | ||
| 170 | #define BB_FEATURE_MSH | ||
| 171 | // | ||
| 172 | // ash: This adds about 60k in the default configuration and is the most | ||
| 173 | // complete and most pedantically correct shell included with busybox. This | ||
| 174 | // shell was also recently added, and several people (mainly Vladimir and Erik) | ||
| 175 | // have been working on it. There are a number of configurable things at the | ||
| 176 | // top of ash.c as well, so check those out if you want to tweak things. The | ||
| 177 | // Posix math support is currently disabled (that bit of code was horrible) but | ||
| 178 | // will be restored for the next BusyBox release. | ||
| 179 | //#define BB_FEATURE_ASH | ||
| 180 | // | 155 | // |
| 181 | // BusyBox will, by default, malloc space for its buffers. This costs code | 156 | // BusyBox will, by default, malloc space for its buffers. This costs code |
| 182 | // size for the call to xmalloc. You can use the following feature to have | 157 | // size for the call to xmalloc. You can use the following feature to have |
| @@ -283,11 +258,11 @@ | |||
| 283 | #define BB_FEATURE_SORT_UNIQUE | 258 | #define BB_FEATURE_SORT_UNIQUE |
| 284 | // | 259 | // |
| 285 | // Enable command line editing in the shell. | 260 | // Enable command line editing in the shell. |
| 286 | // Only relevant if BB_SH is enabled. On by default. | 261 | // Only relevant if a shell is enabled. On by default. |
| 287 | #define BB_FEATURE_COMMAND_EDITING | 262 | #define BB_FEATURE_COMMAND_EDITING |
| 288 | // | 263 | // |
| 289 | // Enable tab completion in the shell. This is now working quite nicely. | 264 | // Enable tab completion in the shell. This is now working quite nicely. |
| 290 | // This feature adds a bit over 4k. Only relevant if BB_SH is enabled. | 265 | // This feature adds a bit over 4k. Only relevant if a shell is enabled. |
| 291 | #define BB_FEATURE_COMMAND_TAB_COMPLETION | 266 | #define BB_FEATURE_COMMAND_TAB_COMPLETION |
| 292 | // | 267 | // |
| 293 | // Attempts to match usernames in a ~-prefixed path | 268 | // Attempts to match usernames in a ~-prefixed path |
| @@ -296,7 +271,7 @@ | |||
| 296 | //Allow the shell to invoke all the compiled in BusyBox applets as if they | 271 | //Allow the shell to invoke all the compiled in BusyBox applets as if they |
| 297 | //were shell builtins. Nice for staticly linking an emergency rescue shell, | 272 | //were shell builtins. Nice for staticly linking an emergency rescue shell, |
| 298 | //among other things. Off by default. | 273 | //among other things. Off by default. |
| 299 | // Only relevant if BB_SH is enabled. | 274 | // Only relevant if a shell is enabled. |
| 300 | //#define BB_FEATURE_SH_STANDALONE_SHELL | 275 | //#define BB_FEATURE_SH_STANDALONE_SHELL |
| 301 | // | 276 | // |
| 302 | //When this is enabled, busybox shell applets can be called using full path | 277 | //When this is enabled, busybox shell applets can be called using full path |
| @@ -305,13 +280,13 @@ | |||
| 305 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ | 280 | //will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_ |
| 306 | //busybox. Some systems want this, others do not. Choose wisely. :-) This | 281 | //busybox. Some systems want this, others do not. Choose wisely. :-) This |
| 307 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. | 282 | //only has meaning when BB_FEATURE_SH_STANDALONE_SHELL is enabled. |
| 308 | // Only relevant if BB_SH is enabled. Off by default. | 283 | // Only relevant if a shell is enabled. Off by default. |
| 309 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN | 284 | //#define BB_FEATURE_SH_APPLETS_ALWAYS_WIN |
| 310 | // | 285 | // |
| 311 | // Uncomment this option for a fancy shell prompt that includes the | 286 | // Uncomment this option for a fancy shell prompt that includes the |
| 312 | // current username and hostname. On systems that don't have usernames | 287 | // current username and hostname. On systems that don't have usernames |
| 313 | // or hostnames, this can look hideous. | 288 | // or hostnames, this can look hideous. |
| 314 | // Only relevant if BB_SH is enabled. | 289 | // Only relevant if a shell is enabled. |
| 315 | //#define BB_FEATURE_SH_FANCY_PROMPT | 290 | //#define BB_FEATURE_SH_FANCY_PROMPT |
| 316 | // | 291 | // |
| 317 | //Turn on extra fbset options | 292 | //Turn on extra fbset options |
| @@ -416,8 +391,8 @@ | |||
| 416 | // Nothing beyond this point should ever be touched by | 391 | // Nothing beyond this point should ever be touched by |
| 417 | // mere mortals so leave this stuff alone. | 392 | // mere mortals so leave this stuff alone. |
| 418 | // | 393 | // |
| 419 | #if defined BB_SH | 394 | #if defined BB_ASH || defined BB_HUSH || defined BB_LASH || defined BB_MSH |
| 420 | #if defined BB_FEATURE_COMMAND_EDITING | 395 | #if defined BB_FEATURE_COMMAND_EDITING |
| 421 | #define BB_CMDEDIT | 396 | #define BB_CMDEDIT |
| 422 | #else | 397 | #else |
| 423 | #undef BB_FEATURE_COMMAND_EDITING | 398 | #undef BB_FEATURE_COMMAND_EDITING |
| @@ -482,3 +457,17 @@ | |||
| 482 | #define BB_LOGREAD | 457 | #define BB_LOGREAD |
| 483 | #endif | 458 | #endif |
| 484 | #endif | 459 | #endif |
| 460 | // | ||
| 461 | #if defined BB_ASH && defined BB_FEATURE_SH_IS_ASH | ||
| 462 | # define BB_SH | ||
| 463 | # define shell_main ash_main | ||
| 464 | #elif defined BB_HUSH && defined BB_FEATURE_SH_IS_HUSH | ||
| 465 | # define BB_SH | ||
| 466 | # define shell_main hush_main | ||
| 467 | #elif defined BB_LASH && defined BB_FEATURE_SH_IS_LASH | ||
| 468 | # define BB_SH | ||
| 469 | # define shell_main lash_main | ||
| 470 | #elif defined BB_MSH && defined BB_FEATURE_SH_IS_MSH | ||
| 471 | # define BB_SH | ||
| 472 | # define shell_main msh_main | ||
| 473 | #endif | ||
| @@ -112,7 +112,7 @@ | |||
| 112 | #else | 112 | #else |
| 113 | #define applet_name "hush" | 113 | #define applet_name "hush" |
| 114 | #include "standalone.h" | 114 | #include "standalone.h" |
| 115 | #define shell_main main | 115 | #define hush_main main |
| 116 | #undef BB_FEATURE_SH_FANCY_PROMPT | 116 | #undef BB_FEATURE_SH_FANCY_PROMPT |
| 117 | #endif | 117 | #endif |
| 118 | 118 | ||
| @@ -2562,7 +2562,7 @@ static void setup_job_control() | |||
| 2562 | tcsetpgrp(shell_terminal, shell_pgrp); | 2562 | tcsetpgrp(shell_terminal, shell_pgrp); |
| 2563 | } | 2563 | } |
| 2564 | 2564 | ||
| 2565 | int shell_main(int argc, char **argv) | 2565 | int hush_main(int argc, char **argv) |
| 2566 | { | 2566 | { |
| 2567 | int opt; | 2567 | int opt; |
| 2568 | FILE *input; | 2568 | FILE *input; |
| @@ -2572,8 +2572,8 @@ int shell_main(int argc, char **argv) | |||
| 2572 | global_argc = argc; | 2572 | global_argc = argc; |
| 2573 | global_argv = argv; | 2573 | global_argv = argv; |
| 2574 | 2574 | ||
| 2575 | /* (re?) initialize globals. Sometimes shell_main() ends up calling | 2575 | /* (re?) initialize globals. Sometimes hush_main() ends up calling |
| 2576 | * shell_main(), therefore we cannot rely on the BSS to zero out this | 2576 | * hush_main(), therefore we cannot rely on the BSS to zero out this |
| 2577 | * stuff. Reset these to 0 every time. */ | 2577 | * stuff. Reset these to 0 every time. */ |
| 2578 | ifs = NULL; | 2578 | ifs = NULL; |
| 2579 | /* map[] is taken care of with call to update_ifs_map() */ | 2579 | /* map[] is taken care of with call to update_ifs_map() */ |
diff --git a/include/applets.h b/include/applets.h index 0786c39eb..184bce09b 100644 --- a/include/applets.h +++ b/include/applets.h | |||
| @@ -52,6 +52,9 @@ | |||
| 52 | #ifdef BB_AR | 52 | #ifdef BB_AR |
| 53 | APPLET(ar, ar_main, _BB_DIR_USR_BIN) | 53 | APPLET(ar, ar_main, _BB_DIR_USR_BIN) |
| 54 | #endif | 54 | #endif |
| 55 | #ifdef BB_ASH | ||
| 56 | APPLET_NOUSAGE("ash", ash_main, _BB_DIR_BIN) | ||
| 57 | #endif | ||
| 55 | #ifdef BB_BASENAME | 58 | #ifdef BB_BASENAME |
| 56 | APPLET(basename, basename_main, _BB_DIR_USR_BIN) | 59 | APPLET(basename, basename_main, _BB_DIR_USR_BIN) |
| 57 | #endif | 60 | #endif |
| @@ -185,6 +188,9 @@ | |||
| 185 | #ifdef BB_HOSTNAME | 188 | #ifdef BB_HOSTNAME |
| 186 | APPLET(hostname, hostname_main, _BB_DIR_BIN) | 189 | APPLET(hostname, hostname_main, _BB_DIR_BIN) |
| 187 | #endif | 190 | #endif |
| 191 | #ifdef BB_HUSH | ||
| 192 | APPLET_NOUSAGE("hush", hush_main, _BB_DIR_BIN) | ||
| 193 | #endif | ||
| 188 | #ifdef BB_ID | 194 | #ifdef BB_ID |
| 189 | APPLET(id, id_main, _BB_DIR_USR_BIN) | 195 | APPLET(id, id_main, _BB_DIR_USR_BIN) |
| 190 | #endif | 196 | #endif |
| @@ -206,6 +212,9 @@ | |||
| 206 | #ifdef BB_KLOGD | 212 | #ifdef BB_KLOGD |
| 207 | APPLET(klogd, klogd_main, _BB_DIR_SBIN) | 213 | APPLET(klogd, klogd_main, _BB_DIR_SBIN) |
| 208 | #endif | 214 | #endif |
| 215 | #ifdef BB_LASH | ||
| 216 | APPLET(lash, lash_main, _BB_DIR_BIN) | ||
| 217 | #endif | ||
| 209 | #ifdef BB_LENGTH | 218 | #ifdef BB_LENGTH |
| 210 | APPLET(length, length_main, _BB_DIR_USR_BIN) | 219 | APPLET(length, length_main, _BB_DIR_USR_BIN) |
| 211 | #endif | 220 | #endif |
| @@ -272,6 +281,9 @@ | |||
| 272 | #ifdef BB_MOUNT | 281 | #ifdef BB_MOUNT |
| 273 | APPLET(mount, mount_main, _BB_DIR_BIN) | 282 | APPLET(mount, mount_main, _BB_DIR_BIN) |
| 274 | #endif | 283 | #endif |
| 284 | #ifdef BB_MSH | ||
| 285 | APPLET_NOUSAGE("msh", msh_main, _BB_DIR_BIN) | ||
| 286 | #endif | ||
| 275 | #ifdef BB_MT | 287 | #ifdef BB_MT |
| 276 | APPLET(mt, mt_main, _BB_DIR_BIN) | 288 | APPLET(mt, mt_main, _BB_DIR_BIN) |
| 277 | #endif | 289 | #endif |
| @@ -344,8 +356,14 @@ | |||
| 344 | #ifdef BB_SETKEYCODES | 356 | #ifdef BB_SETKEYCODES |
| 345 | APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN) | 357 | APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN) |
| 346 | #endif | 358 | #endif |
| 347 | #ifdef BB_SH | 359 | #ifdef BB_FEATURE_SH_IS_ASH |
| 348 | APPLET(sh, shell_main, _BB_DIR_BIN) | 360 | APPLET_NOUSAGE("sh", ash_main, _BB_DIR_BIN) |
| 361 | #elif defined(BB_FEATURE_SH_IS_HUSH) | ||
| 362 | APPLET_NOUSAGE("sh", hush_main, _BB_DIR_BIN) | ||
| 363 | #elif defined(BB_FEATURE_SH_IS_LASH) | ||
| 364 | APPLET_NOUSAGE("sh", lash_main, _BB_DIR_BIN) | ||
| 365 | #elif defined(BB_FEATURE_SH_IS_MSH) | ||
| 366 | APPLET_NOUSAGE("sh", msh_main, _BB_DIR_BIN) | ||
| 349 | #endif | 367 | #endif |
| 350 | #ifdef BB_SLEEP | 368 | #ifdef BB_SLEEP |
| 351 | APPLET(sleep, sleep_main, _BB_DIR_BIN) | 369 | APPLET(sleep, sleep_main, _BB_DIR_BIN) |
diff --git a/include/usage.h b/include/usage.h index 08da42b27..13759d23f 100644 --- a/include/usage.h +++ b/include/usage.h | |||
| @@ -1365,12 +1365,12 @@ | |||
| 1365 | #define setkeycodes_example_usage \ | 1365 | #define setkeycodes_example_usage \ |
| 1366 | "$ setkeycodes e030 127\n" | 1366 | "$ setkeycodes e030 127\n" |
| 1367 | 1367 | ||
| 1368 | #define sh_trivial_usage \ | 1368 | #define lash_trivial_usage \ |
| 1369 | "[FILE]...\n" \ | 1369 | "[FILE]...\n" \ |
| 1370 | "or: sh -c command [args]..." | 1370 | "or: sh -c command [args]..." |
| 1371 | #define sh_full_usage \ | 1371 | #define lash_full_usage \ |
| 1372 | "lash: The BusyBox LAme SHell (command interpreter)" | 1372 | "lash: The BusyBox LAme SHell (command interpreter)" |
| 1373 | #define sh_notes_usage \ | 1373 | #define lash_notes_usage \ |
| 1374 | "This command does not yet have proper documentation.\n" \ | 1374 | "This command does not yet have proper documentation.\n" \ |
| 1375 | "\n" \ | 1375 | "\n" \ |
| 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ | 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ |
| @@ -1545,7 +1545,7 @@ static void setup_job_control() | |||
| 1545 | tcsetpgrp(shell_terminal, shell_pgrp); | 1545 | tcsetpgrp(shell_terminal, shell_pgrp); |
| 1546 | } | 1546 | } |
| 1547 | 1547 | ||
| 1548 | int shell_main(int argc_l, char **argv_l) | 1548 | int lash_main(int argc_l, char **argv_l) |
| 1549 | { | 1549 | { |
| 1550 | int opt, interactive=FALSE; | 1550 | int opt, interactive=FALSE; |
| 1551 | FILE *input = stdin; | 1551 | FILE *input = stdin; |
| @@ -143,7 +143,7 @@ static int newfile(char *s); | |||
| 143 | static char *findeq(char *cp); | 143 | static char *findeq(char *cp); |
| 144 | static char *cclass(char *p, int sub); | 144 | static char *cclass(char *p, int sub); |
| 145 | static void initarea(void); | 145 | static void initarea(void); |
| 146 | extern int shell_main(int argc, char **argv); | 146 | extern int msh_main(int argc, char **argv); |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | struct brkcon { | 149 | struct brkcon { |
| @@ -692,7 +692,7 @@ static char * current_prompt; | |||
| 692 | */ | 692 | */ |
| 693 | 693 | ||
| 694 | 694 | ||
| 695 | extern int shell_main(int argc, char **argv) | 695 | extern int msh_main(int argc, char **argv) |
| 696 | { | 696 | { |
| 697 | register int f; | 697 | register int f; |
| 698 | register char *s; | 698 | register char *s; |
| @@ -1,48 +0,0 @@ | |||
| 1 | /* vi: set sw=4 ts=4: */ | ||
| 2 | /* | ||
| 3 | * Shell wrapper file for busybox | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify | ||
| 6 | * it under the terms of the GNU General Public License as published by | ||
| 7 | * the Free Software Foundation; either version 2 of the License, or | ||
| 8 | * (at your option) any later version. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 13 | * General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License | ||
| 16 | * along with this program; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18 | * | ||
| 19 | */ | ||
| 20 | |||
| 21 | #include "Config.h" | ||
| 22 | |||
| 23 | /* This is to make testing things a bit simpler (to avoid | ||
| 24 | * a full recompile) till we get the new build system in place */ | ||
| 25 | #if 0 | ||
| 26 | #undef BB_FEATURE_LASH | ||
| 27 | #undef BB_FEATURE_HUSH | ||
| 28 | #undef BB_FEATURE_MSH | ||
| 29 | #define BB_FEATURE_ASH | ||
| 30 | #endif | ||
| 31 | |||
| 32 | #if defined BB_FEATURE_ASH | ||
| 33 | #include "ash.c" | ||
| 34 | #elif defined BB_FEATURE_MSH | ||
| 35 | #include "msh.c" | ||
| 36 | #elif defined BB_FEATURE_HUSH | ||
| 37 | #include "hush.c" | ||
| 38 | #elif defined BB_FEATURE_LASH | ||
| 39 | #include "lash.c" | ||
| 40 | #endif | ||
| 41 | |||
| 42 | /* | ||
| 43 | Local Variables: | ||
| 44 | c-file-style: "linux" | ||
| 45 | c-basic-offset: 4 | ||
| 46 | tab-width: 4 | ||
| 47 | End: | ||
| 48 | */ | ||
diff --git a/shell/ash.c b/shell/ash.c index 15e1adb7c..b1aec6278 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -7638,7 +7638,7 @@ static void procargs (int, char **); | |||
| 7638 | */ | 7638 | */ |
| 7639 | 7639 | ||
| 7640 | int | 7640 | int |
| 7641 | shell_main(argc, argv) | 7641 | ash_main(argc, argv) |
| 7642 | int argc; | 7642 | int argc; |
| 7643 | char **argv; | 7643 | char **argv; |
| 7644 | { | 7644 | { |
| @@ -12874,7 +12874,7 @@ findvar(struct var **vpp, const char *name) | |||
| 12874 | /* | 12874 | /* |
| 12875 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> | 12875 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> |
| 12876 | * This file contains code for the times builtin. | 12876 | * This file contains code for the times builtin. |
| 12877 | * $Id: ash.c,v 1.15 2001/07/31 21:38:23 andersen Exp $ | 12877 | * $Id: ash.c,v 1.16 2001/08/01 17:21:33 kraai Exp $ |
| 12878 | */ | 12878 | */ |
| 12879 | static int timescmd (int argc, char **argv) | 12879 | static int timescmd (int argc, char **argv) |
| 12880 | { | 12880 | { |
diff --git a/shell/hush.c b/shell/hush.c index 134404251..0e619f80e 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
| @@ -112,7 +112,7 @@ | |||
| 112 | #else | 112 | #else |
| 113 | #define applet_name "hush" | 113 | #define applet_name "hush" |
| 114 | #include "standalone.h" | 114 | #include "standalone.h" |
| 115 | #define shell_main main | 115 | #define hush_main main |
| 116 | #undef BB_FEATURE_SH_FANCY_PROMPT | 116 | #undef BB_FEATURE_SH_FANCY_PROMPT |
| 117 | #endif | 117 | #endif |
| 118 | 118 | ||
| @@ -2562,7 +2562,7 @@ static void setup_job_control() | |||
| 2562 | tcsetpgrp(shell_terminal, shell_pgrp); | 2562 | tcsetpgrp(shell_terminal, shell_pgrp); |
| 2563 | } | 2563 | } |
| 2564 | 2564 | ||
| 2565 | int shell_main(int argc, char **argv) | 2565 | int hush_main(int argc, char **argv) |
| 2566 | { | 2566 | { |
| 2567 | int opt; | 2567 | int opt; |
| 2568 | FILE *input; | 2568 | FILE *input; |
| @@ -2572,8 +2572,8 @@ int shell_main(int argc, char **argv) | |||
| 2572 | global_argc = argc; | 2572 | global_argc = argc; |
| 2573 | global_argv = argv; | 2573 | global_argv = argv; |
| 2574 | 2574 | ||
| 2575 | /* (re?) initialize globals. Sometimes shell_main() ends up calling | 2575 | /* (re?) initialize globals. Sometimes hush_main() ends up calling |
| 2576 | * shell_main(), therefore we cannot rely on the BSS to zero out this | 2576 | * hush_main(), therefore we cannot rely on the BSS to zero out this |
| 2577 | * stuff. Reset these to 0 every time. */ | 2577 | * stuff. Reset these to 0 every time. */ |
| 2578 | ifs = NULL; | 2578 | ifs = NULL; |
| 2579 | /* map[] is taken care of with call to update_ifs_map() */ | 2579 | /* map[] is taken care of with call to update_ifs_map() */ |
diff --git a/shell/lash.c b/shell/lash.c index 8f8609534..0af669116 100644 --- a/shell/lash.c +++ b/shell/lash.c | |||
| @@ -1545,7 +1545,7 @@ static void setup_job_control() | |||
| 1545 | tcsetpgrp(shell_terminal, shell_pgrp); | 1545 | tcsetpgrp(shell_terminal, shell_pgrp); |
| 1546 | } | 1546 | } |
| 1547 | 1547 | ||
| 1548 | int shell_main(int argc_l, char **argv_l) | 1548 | int lash_main(int argc_l, char **argv_l) |
| 1549 | { | 1549 | { |
| 1550 | int opt, interactive=FALSE; | 1550 | int opt, interactive=FALSE; |
| 1551 | FILE *input = stdin; | 1551 | FILE *input = stdin; |
diff --git a/shell/msh.c b/shell/msh.c index 8f046e794..92a0f8536 100644 --- a/shell/msh.c +++ b/shell/msh.c | |||
| @@ -143,7 +143,7 @@ static int newfile(char *s); | |||
| 143 | static char *findeq(char *cp); | 143 | static char *findeq(char *cp); |
| 144 | static char *cclass(char *p, int sub); | 144 | static char *cclass(char *p, int sub); |
| 145 | static void initarea(void); | 145 | static void initarea(void); |
| 146 | extern int shell_main(int argc, char **argv); | 146 | extern int msh_main(int argc, char **argv); |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | struct brkcon { | 149 | struct brkcon { |
| @@ -692,7 +692,7 @@ static char * current_prompt; | |||
| 692 | */ | 692 | */ |
| 693 | 693 | ||
| 694 | 694 | ||
| 695 | extern int shell_main(int argc, char **argv) | 695 | extern int msh_main(int argc, char **argv) |
| 696 | { | 696 | { |
| 697 | register int f; | 697 | register int f; |
| 698 | register char *s; | 698 | register char *s; |
| @@ -1365,12 +1365,12 @@ | |||
| 1365 | #define setkeycodes_example_usage \ | 1365 | #define setkeycodes_example_usage \ |
| 1366 | "$ setkeycodes e030 127\n" | 1366 | "$ setkeycodes e030 127\n" |
| 1367 | 1367 | ||
| 1368 | #define sh_trivial_usage \ | 1368 | #define lash_trivial_usage \ |
| 1369 | "[FILE]...\n" \ | 1369 | "[FILE]...\n" \ |
| 1370 | "or: sh -c command [args]..." | 1370 | "or: sh -c command [args]..." |
| 1371 | #define sh_full_usage \ | 1371 | #define lash_full_usage \ |
| 1372 | "lash: The BusyBox LAme SHell (command interpreter)" | 1372 | "lash: The BusyBox LAme SHell (command interpreter)" |
| 1373 | #define sh_notes_usage \ | 1373 | #define lash_notes_usage \ |
| 1374 | "This command does not yet have proper documentation.\n" \ | 1374 | "This command does not yet have proper documentation.\n" \ |
| 1375 | "\n" \ | 1375 | "\n" \ |
| 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ | 1376 | "Use lash just as you would use any other shell. It properly handles pipes,\n" \ |
