Commit Graph

2380 Commits

Author SHA1 Message Date
tg 9a8cb6fbf6 why’s there a space before the newline? 2013-02-24 14:10:04 +00:00
tg 817aeb8fdb both mksh(1) and POSIX say: "$@" should always generate multiple words
issue in pdksh reported in IRC by engla, thanks!
2013-02-23 20:03:31 +00:00
tg 74e2ef8b0b one more int → bool; mention “set -o sh” may (on raare OSes) be enabled
automatically (and it differs between targets); test MidnightBSD 0.1 ash
compat code and adjust the testsuite so it passes with it enabled
2013-02-19 18:45:22 +00:00
tg dffb1ab915 put list of check_categories into Makefrag.inc generated; bump patchlevel 2013-02-18 22:55:40 +00:00
tg 0a3fe06229 another MidnightBSD /bin/sh kludge: classic BSD echo 2013-02-18 22:47:32 +00:00
tg 84189faad4 fix an oversight that allowed invalid variable names to be entered
(not even at an increase in code, as I could just move a check and
slightly adapt it)
2013-02-18 22:24:52 +00:00
tg 576b7f21b3 eval is evil
Proper quoting is hard
Bugs galore
2013-02-17 15:58:26 +00:00
tg e141cab1ac revert cid 10050DD0C8519194AE9 and 100511FC81525949AF7
AT&T SVR4 broke 'cc -c -o foo.o foo.c' totally

switch to an alternative method of finding out the prototypes
provided in IRC by dalias (thanks); RT says this fixes his
issues on SVR4 – let’s just ignore the ominous message from
cid 1004713D70A5362BACF about needing to be a compile-time
check unless something else pops up, I can’t think of something
that isn’t already covered
2013-02-17 07:06:15 +00:00
tg e21a2166f7 use a different approach to the $"…" problem:
take the states that may open a string, only permit them by virtue of
moving the code out of Subst: to handle $+" and $+' at all; then add
S[Q]BRACE to that

side benefits:
• clearer, cleaner code flow
• smaller code
• better “business logic” ☺
• defuses one heavy use of duff’s device a bit
2013-02-17 06:05:02 +00:00
tg b684a7c6bd backpedal with $'…' and $"…" interpolation
it turns out this breaks more legacy scripts than anticipated
2013-02-17 05:40:17 +00:00
tg 47f8a21e3c SVR4 cc doesn’t like -c -o conftest.o when conftest.o already exists:
it errors out with “-o would overwrite conftest.o” (thanks RT for reporting)
2013-02-16 17:55:51 +00:00
tg 85d7059c48 … I fsck’d up and built R42b from MAIN ipv mksh-R42stable… oh well.
TODO: convert enum to something like uint8_t to save even more space
2013-02-16 00:21:57 +00:00
tg ec883318d1 fix too strict fix for LP#1104543 (Debian #700526) 2013-02-15 18:50:14 +00:00
tg 12f0ff60d2 prevent more access to invalid memories (Debian #700604) 2013-02-15 18:36:48 +00:00
tg 2c76875ea3 • Document invalid ${a/b/c} patterns in manpage (Debian #698678)
• add speed hints and misc improvements; bump version
2013-02-11 17:17:59 +00:00
tg 6b797a7bc8 • test.sh now is -v (verbose) by default, new option -Q to quieten (like Build.sh)
• test.sh handles +P, +Q, +S, +v properly
2013-02-11 16:27:56 +00:00
tg 117bb02e6a check at least *one* of our “Duff’s Device” heavy occurrences
to make sure the compiler doesn’t frag it
2013-02-11 13:06:54 +00:00
tg fb370a30c6 fix set -e with and/or inside functions regression (LP#1104543)
cause was that use of && or || inside function switched it to xerrok
2013-02-10 23:59:28 +00:00
tg 63cf38eca7 sync description for funsubs 2013-02-10 23:58:19 +00:00
tg 738f5f54fa get rid of unneeded variables ⇒ error handling (that wasn’t there
previously) ⇒ code ⇒ simplify!
2013-02-10 23:43:59 +00:00
tg 19cbb1ab78 regression test for: return works in funsub (like AT&T ksh93), local works in funsub (like in functions), exit does not work in funsub (sadly unlike ksh93, like in functions) 2013-02-10 23:36:21 +00:00
tg c95d0ad11e missed in cid 10050B914D41435E735 2013-02-10 23:32:18 +00:00
tg 9bf0509829 provide a layer of locality to FUNSUBs; get rid of a fork for each PS1 thus 2013-02-10 23:30:47 +00:00
tg 1df0cb4093 as a more general solution to fd leak detection, just do CLOEXEC manually
(this also allows us to see “real” leaks)
2013-02-10 21:42:16 +00:00
tg 42e1bdc095 doc update 2013-02-10 21:20:57 +00:00
tg f209a252bc when leak debugging, free everything even in builtins 2013-02-10 21:17:07 +00:00
tg 51345bd33b do not leak file descriptors on builtins
(this is for valgrind; we use close-on-exec on them in the normal case)
2013-02-10 21:08:35 +00:00
tg 2b06709bf3 improve DEBUG_LEAKS handling and fix freeing some locs 2013-02-10 19:05:37 +00:00
tg af39f3b7b0 do NOT close stdout or stderr, redirect to /dev/null instead
⇒ we did have issues with that, trust me…
2013-02-10 19:04:00 +00:00
tg 43a41932e7 make DEBUG_LEAKS safely free all resources before the main shell exits 2013-02-10 18:17:30 +00:00
tg ce1ab97541 for DEBUG_LEAKS, prevent “leaking” of fds, even if they’re close-on-exit 2013-02-10 17:55:57 +00:00
tg 5741127ab7 experimentally enable afreeall(APERM) too, LP#1106116 2013-02-10 17:43:07 +00:00
tg 59009ac78f call it DEBUG_LEAKS so Android can always enable it 2013-02-10 17:41:06 +00:00
tg 63b6d920a8 actually, only needed #ifdef DEBUG 2013-02-10 17:39:38 +00:00
tg cb93db360d call afreeall(AEDIT) upon close; related to LP#1106116 2013-02-10 17:38:15 +00:00
tg 1da94d6159 pure RCSID sync with oksh, who also added a tabcompletion fix now, with
less code, but, even according to their own comments, not as good as ours
2013-02-10 17:18:49 +00:00
tg 72c895c4a1 precmd is required to retain the errorlevel when ${ …;} is used 2013-01-21 15:06:24 +00:00
tg 9111faeeb5 besides more code reuse, fix $'…' everywhere (but keep it ignored in here document bodies that aren’t here strings) 2013-01-19 19:47:13 +00:00
tg e307cb34c4 use the full parser code for handling here strings (and here document words)
as ormaaj requested, including a testcase
2013-01-19 18:32:56 +00:00
tg 72402c4990 permit $'\n' in the bar part of ${foo:-bar}
XXX this changes slightly the herestring part
2013-01-19 17:49:46 +00:00
tg 24164e07d4 rcsid-only sync 2013-01-19 17:27:05 +00:00
tg c99a634f92 remove separate SHERESTRING parsing state, it’s the same as SHEREDELIM 2013-01-19 17:20:02 +00:00
tg b23d768a9b Unbreak linking on AIX, reported (with fix) by Torsten Sillke, 10x! 2013-01-12 02:25:01 +00:00
tg 2d9a039ec0 ormaaj reported “command shift” not working correctly; fix 2013-01-06 18:51:43 +00:00
tg 7a2130b02a do not, ever, even in local-only debugging examples, create anything
in /tmp without the use of mkstemp(3) or similar!
2013-01-06 18:44:07 +00:00
tg d5ba31fd86 fix the set +e cases, too 2013-01-01 22:23:16 +00:00
tg 72a748c891 if you have to look *this* up, danger ahead; point to porter's info 2013-01-01 21:19:36 +00:00
tg 744f77c668 fix running the ERR and EXIT traps in case of set -e and/or eval (includes Debian #696823) 2013-01-01 20:45:04 +00:00
tg 0700d45ce6 while thinking about mirlibₘᵢₙc I figured that sys_errlist[] entries may be NULL 2013-01-01 03:32:44 +00:00
tg 23325a3355 just blacklist cd-pe on QNX as well 2012-12-28 07:45:55 +00:00