Denis Vlasenko [Fri, 3 Apr 2009 16:49:04 +0000 (16:49 -0000)]
hush: improve parse_stream: does not require parsing context struct;
cleans up on syntax errors (we used to leak memory in this case);
much simplified interface to the rest of hush.
function old new delta
parse_stream 1204 1447 +243
done_word 658 669 +11
static_get 22 28 +6
builtin_source 84 89 +5
parse_and_run_file 27 30 +3
parse_and_run_string 31 27 -4
builtin_eval 55 50 -5
hush_main 991 985 -6
free_pipe_list 39 31 -8
free_pipe 210 189 -21
expand_variables 2242 2199 -43
parse_and_run_stream 289 153 -136
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/7 up/down: 268/-223) Total: 45 bytes
Denis Vlasenko [Fri, 3 Apr 2009 03:45:05 +0000 (03:45 -0000)]
hush: simplify parse_stream
function old new delta
parse_and_run_stream 292 289 -3
parse_stream 1218 1204 -14
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-17) Total: -17 bytes
Denis Vlasenko [Fri, 3 Apr 2009 03:19:15 +0000 (03:19 -0000)]
hush: fix bug with local environment vars in pipes; simplify parse_stream()
function old new delta
parse_stream 1238 1218 -20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20) Total: -20 bytes
Denis Vlasenko [Fri, 3 Apr 2009 00:07:05 +0000 (00:07 -0000)]
hush: explain parsing context structure
plug leak in setup_redirect on error path
function old new delta
done_command 84 86 +2
done_word 657 658 +1
done_pipe 105 106 +1
initialize_context 39 38 -1
setup_redirect 219 212 -7
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/2 up/down: 4/-8) Total: -4 bytes
Denis Vlasenko [Thu, 2 Apr 2009 22:50:40 +0000 (22:50 -0000)]
hush: straighten parse_stream() API a bit
function old new delta
parse_stream 1240 1238 -2
expand_variables 2272 2242 -30
parse_and_run_stream 338 292 -46
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-78) Total: -78 bytes
Mike Frysinger [Thu, 2 Apr 2009 22:46:52 +0000 (22:46 -0000)]
trim trailing slashes from specified subdir so we output to the right place
Denis Vlasenko [Thu, 2 Apr 2009 20:17:49 +0000 (20:17 -0000)]
hush: rename ->o_quote to ->o_escape
hush_test/hush-arith/*: new tests for arithmetic evaluation
Mike Frysinger [Thu, 2 Apr 2009 17:06:35 +0000 (17:06 -0000)]
Arithmetic Expansion is supported now in hush, so drop from TODO
Denis Vlasenko [Thu, 2 Apr 2009 16:55:38 +0000 (16:55 -0000)]
hush: do not inadvertently parse $((1 + "22")) as ok.
-20 bytes code size
Denis Vlasenko [Thu, 2 Apr 2009 16:31:29 +0000 (16:31 -0000)]
hush: make
a=55; echo $(($a + 1)) $((1 + $((2)) + `echo $a`))
work as expected
function old new delta
handle_dollar - 667 +667
parse_stream_dquoted - 316 +316
expand_variables 2124 2272 +148
is_assignment 134 215 +81
parse_stream 2038 1240 -798
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/1 up/down: 1212/-798) Total: 414 bytes
Denis Vlasenko [Thu, 2 Apr 2009 13:46:27 +0000 (13:46 -0000)]
shells: do not need to have math state global
function old new delta
ash_arith - 143 +143
expand_variables 2102 2124 +22
popstring 134 140 +6
parse_command 1460 1463 +3
trapcmd 236 238 +2
changepath 197 196 -1
raise_interrupt 86 83 -3
hush_main 1012 991 -21
ash_main 1388 1364 -24
arith_set_local_var 73 34 -39
dash_arith 117 - -117
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 4/5 up/down: 176/-205) Total: -29 bytes
Denis Vlasenko [Thu, 2 Apr 2009 12:57:38 +0000 (12:57 -0000)]
fix ash-alias/alias.tests failure
Mike Frysinger [Thu, 2 Apr 2009 10:02:37 +0000 (10:02 -0000)]
split math code out of ash and into a standalone library so we can use it in any shell (like hush!)
Denis Vlasenko [Wed, 1 Apr 2009 19:48:05 +0000 (19:48 -0000)]
more of pointless whitespace fixes
Denis Vlasenko [Wed, 1 Apr 2009 12:36:09 +0000 (12:36 -0000)]
dhcpd: remember and record hostnames; optimize get_option
dumpleases: show hostnames
function old new delta
add_lease 230 292 +62
send_offer 403 421 +18
send_ACK 232 249 +17
read_leases 249 258 +9
dumpleases_main 604 609 +5
nobody_responds_to_arp 84 86 +2
udhcp_end_option 32 30 -2
udhcp_get_option 222 171 -51
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/2 up/down: 113/-53) Total: 60 bytes
Denis Vlasenko [Wed, 1 Apr 2009 11:24:04 +0000 (11:24 -0000)]
trailing whitespace removal
Denis Vlasenko [Tue, 31 Mar 2009 23:41:53 +0000 (23:41 -0000)]
sendmail: update by Vladimir
build system: tweak for rare case where include/autoconf.h
does not get updated
function old new delta
packed_usage 26238 26242 +4
sendmail_main 1353 897 -456
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 4/-456) Total: -452 bytes
Denis Vlasenko [Tue, 31 Mar 2009 22:14:32 +0000 (22:14 -0000)]
hust_test/*: use "$THIS_SH" instead of hush
Denis Vlasenko [Tue, 31 Mar 2009 19:47:34 +0000 (19:47 -0000)]
volumeid: fix bug 249 "findfs finds the wrong partition"
Denis Vlasenko [Tue, 31 Mar 2009 19:36:58 +0000 (19:36 -0000)]
ash: add/improve comments, no code changes
Denis Vlasenko [Tue, 31 Mar 2009 19:18:17 +0000 (19:18 -0000)]
ash: fix $IFS handling in read. closes bug 235
Denis Vlasenko [Tue, 31 Mar 2009 17:24:49 +0000 (17:24 -0000)]
hush: fix wait builtin
function old new delta
builtin_wait 174 275 +101
sigwaitinfo - 48 +48
__GI_sigwaitinfo - 48 +48
check_and_run_traps 133 169 +36
checkjobs 349 380 +31
hush_main 971 991 +20
static.zero_timespec - 8 +8
run_list 2010 2016 +6
file_get 254 260 +6
static.zero_ts 8 - -8
------------------------------------------------------------------------------
(add/remove: 3/1 grow/shrink: 6/0 up/down: 304/-8) Total: 296 bytes
Denis Vlasenko [Tue, 31 Mar 2009 13:14:18 +0000 (13:14 -0000)]
libbb: fix typo in comment
Denis Vlasenko [Tue, 31 Mar 2009 13:13:17 +0000 (13:13 -0000)]
hush: don't lie in comment
Denis Vlasenko [Tue, 31 Mar 2009 13:05:32 +0000 (13:05 -0000)]
hush: fix comments, no code changes
Denis Vlasenko [Tue, 31 Mar 2009 12:41:52 +0000 (12:41 -0000)]
hush: make ^C work again, ^Z probably isn't working
function old new delta
file_get 219 254 +35
check_and_run_traps 122 133 +11
run_list 2001 2010 +9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 55/0) Total: 55 bytes
Denis Vlasenko [Tue, 31 Mar 2009 12:03:40 +0000 (12:03 -0000)]
hush: do not reset sighaldlers after fork - instead, prevent them from doing any harm
if they will be called. saves many sigaction calls on every fork.
function old new delta
hush_main 887 971 +84
sigexit 54 65 +11
run_list 2006 2001 -5
maybe_set_sighandler 76 50 -26
set_fatal_sighandler 186 - -186
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/2 up/down: 95/-217) Total: -122 bytes
Denis Vlasenko [Tue, 31 Mar 2009 11:22:57 +0000 (11:22 -0000)]
hush: rework signal and trap handling. Some smaller bits are TODO,
expect minor breakage
function old new delta
set_fatal_sighandler 12 186 +174
check_and_run_traps - 122 +122
maybe_set_sighandler - 76 +76
hush_main 831 887 +56
sigtimedwait - 50 +50
__GI_sigtimedwait - 50 +50
hush_exit 49 93 +44
set_mode 749 777 +28
pseudo_exec_argv 131 151 +20
static.zero_ts - 8 +8
expand_variables 1962 1970 +8
builtin_wait 172 174 +2
set_misc_sighandler 12 - -12
set_jobctrl_sighandler 12 - -12
handler_ctrl_c 16 - -16
builtin_set_mode 28 - -28
handle_trap 97 - -97
handler_ctrl_z 107 - -107
builtin_trap 545 438 -107
run_list 2149 2006 -143
------------------------------------------------------------------------------
(add/remove: 5/6 grow/shrink: 7/2 up/down: 638/-522) Total: 116 bytes
Mike Frysinger [Mon, 30 Mar 2009 06:50:54 +0000 (06:50 -0000)]
implement `unset` semantics as required by POSIX
Mike Frysinger [Mon, 30 Mar 2009 05:26:34 +0000 (05:26 -0000)]
fix DOC build output to be like kbuild standard
Mike Frysinger [Mon, 30 Mar 2009 03:50:07 +0000 (03:50 -0000)]
update `trap` poisx link
Mike Frysinger [Mon, 30 Mar 2009 00:19:30 +0000 (00:19 -0000)]
do not automatically display job information when the shell is not interactive
Mike Frysinger [Sun, 29 Mar 2009 23:49:46 +0000 (23:49 -0000)]
enable trap tests
Mike Frysinger [Sun, 29 Mar 2009 23:49:37 +0000 (23:49 -0000)]
first pass at `trap` support in hush
Denis Vlasenko [Sun, 29 Mar 2009 17:25:14 +0000 (17:25 -0000)]
modutils: dont pass NULL options to init_module()
Denis Vlasenko [Sun, 29 Mar 2009 17:13:20 +0000 (17:13 -0000)]
build system: hdparm -d is not that dangerous, remove warning
Denis Vlasenko [Sun, 29 Mar 2009 16:53:25 +0000 (16:53 -0000)]
sendmail: add more example in usage text
Denis Vlasenko [Sun, 29 Mar 2009 16:38:59 +0000 (16:38 -0000)]
module loading for 2.4: use fd-based io instead of FILE based;
use xlseek and xread; simpler check for ELF signature.
text data bss dec hex filename
824460 476 7616 832552 cb428 busybox_old
824333 476 7616 832425 cb3a9 busybox_unstripped
Mike Frysinger [Sun, 29 Mar 2009 09:54:40 +0000 (09:54 -0000)]
add test cases for `trap` ... but disabled for now until trap support is committed
Denis Vlasenko [Sun, 29 Mar 2009 02:23:16 +0000 (02:23 -0000)]
sysctl: move code around to get rid of forward references.
(incidentally it helps gcc to make code smaller)
Denis Vlasenko [Sun, 29 Mar 2009 02:22:19 +0000 (02:22 -0000)]
sysctl: fix broken -p [file] - close bug 231
Mike Frysinger [Sun, 29 Mar 2009 00:52:41 +0000 (00:52 -0000)]
mark msh as deprecated
Mike Frysinger [Sun, 29 Mar 2009 00:50:30 +0000 (00:50 -0000)]
use bb_strtou() in umask/wait and check errno to see if there was a problem rather than using endp
Mike Frysinger [Sun, 29 Mar 2009 00:45:26 +0000 (00:45 -0000)]
make sure we check job status whenever updating the prompt
Mike Frysinger [Sat, 28 Mar 2009 21:06:38 +0000 (21:06 -0000)]
test for invalid named variables
Mike Frysinger [Sat, 28 Mar 2009 21:06:22 +0000 (21:06 -0000)]
do not let handle_dollar() accept vars that start with a digit
Mike Frysinger [Sat, 28 Mar 2009 20:01:58 +0000 (20:01 -0000)]
implement `wait` builtin
Denis Vlasenko [Sat, 28 Mar 2009 19:31:34 +0000 (19:31 -0000)]
remove ((expr)) bash'ism
Denis Vlasenko [Sat, 28 Mar 2009 19:22:08 +0000 (19:22 -0000)]
randomconfig fix
Mike Frysinger [Sat, 28 Mar 2009 19:09:04 +0000 (19:09 -0000)]
update the normally disabled debug code around the syntax() func to use new maybe_die()
Denis Vlasenko [Sat, 28 Mar 2009 19:08:23 +0000 (19:08 -0000)]
randomtest fixes
Mike Frysinger [Sat, 28 Mar 2009 18:55:34 +0000 (18:55 -0000)]
add hush tests for parameter expansion
Mike Frysinger [Sat, 28 Mar 2009 18:55:03 +0000 (18:55 -0000)]
implement most POSIX parameter expansions (~+500bytes)
Mike Frysinger [Sat, 28 Mar 2009 15:43:47 +0000 (15:43 -0000)]
make sure we exit based on test failure rather than always exiting with 0
Mike Frysinger [Sat, 28 Mar 2009 13:59:26 +0000 (13:59 -0000)]
split up feature todo by posix/bash
Mike Frysinger [Sat, 28 Mar 2009 13:44:51 +0000 (13:44 -0000)]
unify `set` handling with command line processing, fixup `set` argv processing so it doesnt clobber argv when setting options, and barf on unhandled set options
Mike Frysinger [Sat, 28 Mar 2009 13:02:11 +0000 (13:02 -0000)]
handle the "-s" command line option that POSIX requires
Mike Frysinger [Sat, 28 Mar 2009 12:57:54 +0000 (12:57 -0000)]
rename "-f" (fake) option to "-n" to match POSIX
Mike Frysinger [Sat, 28 Mar 2009 12:43:53 +0000 (12:43 -0000)]
tweak format modifier in debug code to fixup gcc warning
Mike Frysinger [Sat, 28 Mar 2009 12:24:44 +0000 (12:24 -0000)]
convert some of the ENABLE_FEATURE_EDITING from CPP if to C if
Mike Frysinger [Sat, 28 Mar 2009 12:21:57 +0000 (12:21 -0000)]
stop lying about [[ test support
Denis Vlasenko [Sat, 28 Mar 2009 12:17:20 +0000 (12:17 -0000)]
mkfs.vfat: fix a problem with over-estimating FAT size
Mike Frysinger [Sat, 28 Mar 2009 12:12:58 +0000 (12:12 -0000)]
make lash deprecation more prominent
Denis Vlasenko [Sat, 28 Mar 2009 03:22:08 +0000 (03:22 -0000)]
mkfs.vfat: mkdosfs compat with choosing clyster size
Denis Vlasenko [Sat, 28 Mar 2009 02:28:58 +0000 (02:28 -0000)]
mkfs.vfat: more of pointless tweaking
Denis Vlasenko [Sat, 28 Mar 2009 02:18:49 +0000 (02:18 -0000)]
mkfs.vfat: small tweak to comments
Denis Vlasenko [Sat, 28 Mar 2009 02:13:01 +0000 (02:13 -0000)]
mkdosfs (aka mkfs.vfat): new applet by Vladimir
text data bss dec hex filename
821202 476 7616 829294 ca76e busybox_old
823577 476 7616 831669 cb0b5 busybox_unstripped
Denis Vlasenko [Fri, 27 Mar 2009 17:22:00 +0000 (17:22 -0000)]
ls: warning fix
rm: accept and ignore -v (verbose)
Denis Vlasenko [Fri, 27 Mar 2009 02:36:02 +0000 (02:36 -0000)]
tail: fix tail +N syntax not working. Closes bug 221.
Mike Frysinger [Thu, 26 Mar 2009 18:14:16 +0000 (18:14 -0000)]
enable most job functions on no-mmu systems
Denis Vlasenko [Wed, 25 Mar 2009 03:55:53 +0000 (03:55 -0000)]
tftp: when we infer local name from remote (-r [/]path/path/file),
strip path. This mimics wget and is generally more intuitive.
Mike Frysinger [Mon, 23 Mar 2009 08:44:02 +0000 (08:44 -0000)]
do not make startup banner depend on job support
Denis Vlasenko [Mon, 23 Mar 2009 06:33:37 +0000 (06:33 -0000)]
libbb: revent previous version of "concurrent history updating"
and replace it with one which does not "snoop" history written
by others. (1) it is what bug 185 needs, and (2) it is less bloaty:
function old new delta
load_history - 252 +252
read_line_input 3155 3287 +132
next_token 914 918 +4
qrealloc 36 33 -3
getoptscmd 713 708 -5
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 2/2 up/down: 388/-8) Total: 380 bytes
Mike Frysinger [Sun, 22 Mar 2009 22:48:41 +0000 (22:48 -0000)]
move parse_stream out of ENABLE_HUSH_TICK to avoid implicit decl/build error
Denis Vlasenko [Sun, 22 Mar 2009 19:00:05 +0000 (19:00 -0000)]
libbb: make history saving/loading concurrent-safe
* all history writers always append (not overwrite) history files
* they reload history if they detect that file length has changed since last
write
* they trim history file only when it grows 4 times longer than MAXLINES
* they do this atomically by creating new file and renaming it to old
Unfortunately, this comes at a price:
function old new delta
load_history - 346 +346
read_line_input 3155 3358 +203
new_line_input_t 17 31 +14
...irrelevant small jitter...
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 5/5 up/down: 573/-13) Total: 560 bytes
Denis Vlasenko [Sun, 22 Mar 2009 14:49:00 +0000 (14:49 -0000)]
timeout: fix parsing of -t NUM on MMU
Denis Vlasenko [Sun, 22 Mar 2009 14:23:34 +0000 (14:23 -0000)]
hush: rearrange functions to reduce amount of forward references.
Minimal code changes.
Denis Vlasenko [Sun, 22 Mar 2009 11:41:18 +0000 (11:41 -0000)]
hush: fix segv at repeated "set -- a b c" + "shift"
Denis Vlasenko [Sat, 21 Mar 2009 21:51:11 +0000 (21:51 -0000)]
hush: fix strcpy of potentially overlapping strings
Denis Vlasenko [Sat, 21 Mar 2009 19:58:58 +0000 (19:58 -0000)]
msh testsuite: fix false positive, tweak run stript
Denis Vlasenko [Sat, 21 Mar 2009 19:11:23 +0000 (19:11 -0000)]
ls: make readlink error to not disrupt output (try ls -l /proc/self/fd).
libbb: make xmalloc_readlink_or_warn warning more specific.
function old new delta
xmalloc_readlink_or_warn 33 61 +28
showfiles 1495 1460 -35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/1 up/down: 28/-35) Total: -7 bytes
Denis Vlasenko [Fri, 20 Mar 2009 23:01:48 +0000 (23:01 -0000)]
cpio: more compat: -0 and -L options
function old new delta
cpio_main 1417 1473 +56
Denis Vlasenko [Fri, 20 Mar 2009 22:17:13 +0000 (22:17 -0000)]
Compatibility fixes:
grep: support -z
find: support --mindepth
together +45 bytes
cpio: support -p (configurable, +230 bytes)
libbb: tweaks for cpio
Denis Vlasenko [Fri, 20 Mar 2009 14:04:00 +0000 (14:04 -0000)]
cd: "support" -v by ignoring it
Denis Vlasenko [Fri, 20 Mar 2009 12:12:33 +0000 (12:12 -0000)]
hush: tweak testsuite
Denis Vlasenko [Fri, 20 Mar 2009 12:05:14 +0000 (12:05 -0000)]
hush: fix bug 207 and "hush -c" parameter passing.
Now hush -c 'printf "%s\n" "$@"' (prints "\n")
and hush -c 'printf "%s\n" "$@"' qwe asd (prints "asd\n")
both work correctly
Denis Vlasenko [Fri, 20 Mar 2009 10:20:08 +0000 (10:20 -0000)]
ash: expand comment
Denis Vlasenko [Fri, 20 Mar 2009 10:13:08 +0000 (10:13 -0000)]
hush: fix set [--] params. Closes bug 199.
function old new delta
builtin_set 55 194 +139
add_strings_to_strings - 130 +130
add_string_to_strings 110 26 -84
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 269/-84) Total: 185 bytes
Denis Vlasenko [Fri, 20 Mar 2009 07:45:36 +0000 (07:45 -0000)]
ash: add missing comma in debug scaffolding
Denis Vlasenko [Fri, 20 Mar 2009 01:24:08 +0000 (01:24 -0000)]
ash: fix a case where we close wrong descriptor; add debug hack for that
Denis Vlasenko [Thu, 19 Mar 2009 23:21:55 +0000 (23:21 -0000)]
ash: DEBUG should be 0 :)
Denis Vlasenko [Thu, 19 Mar 2009 23:09:58 +0000 (23:09 -0000)]
ash: fix TRACE commands
Denis Vlasenko [Thu, 19 Mar 2009 21:59:35 +0000 (21:59 -0000)]
ash: make evaltree save/restore int suppression depth.
Hopefully this fixes bug 189. Not confirmed by users yet.
function old new delta
evaltree 809 842 +33
evalvar 1374 1376 +2
Denis Vlasenko [Thu, 19 Mar 2009 13:42:05 +0000 (13:42 -0000)]
doc update
Denis Vlasenko [Thu, 19 Mar 2009 13:30:04 +0000 (13:30 -0000)]
ash: in dotrap(), do not clear gotsig[] for SIGINT if there is no handler
for it, otherwise raise interrupt gets confused later.
The rest are readability fixes.
function old new delta
evaltreenr 817 818 +1
evaltree 817 818 +1
evalstring 88 89 +1
cmdloop 420 419 -1
evalskip 4 1 -3
breakcmd 84 81 -3
ash_main 1382 1379 -3
evalloop 183 177 -6
evalfor 231 225 -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/6 up/down: 3/-22) Total: -19 bytes
Denis Vlasenko [Thu, 19 Mar 2009 03:56:20 +0000 (03:56 -0000)]
df: fix FEATURE_DF_FANCY=off, FEATURE_HUMAN_READABLE=on case.
Denis Vlasenko [Thu, 19 Mar 2009 03:36:18 +0000 (03:36 -0000)]
ash: tentatively fix bug 189.
Denis Vlasenko [Thu, 19 Mar 2009 02:35:44 +0000 (02:35 -0000)]
init: test for vt terminal with VT_OPENQRY,
assume that anything else is TERM=vt102, not TERM=linux.
(Serial console test is less correct)
Tentatively closes bug 195.
function old new delta
init_main 946 919 -27
Denis Vlasenko [Thu, 19 Mar 2009 01:59:59 +0000 (01:59 -0000)]
ash: fix "ash -c 'exec 1>&0'" complaining that fd 0 is busy
Denis Vlasenko [Wed, 18 Mar 2009 22:39:34 +0000 (22:39 -0000)]
ls: make color-related code more readable. Fix a case when
it was working non-deterministically.
function old new delta
bold - 34 +34
showfiles 1508 1495 -13
fgcolor 50 34 -16
bgcolor 34 - -34
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/2 up/down: 34/-63) Total: -29 bytes