Commit Graph

1860 Commits

Author SHA1 Message Date
tg 79862cc1f4 one more from Austin ML 2011-03-26 16:19:29 +00:00
tg 84f7055f8f special-case another bizarre POSIX corner case
after david korn agreed to change ksh93 to match
2011-03-26 16:11:43 +00:00
tg b1d97ea44e temporary patch for Cygwin against cd breaking UNC pathnames
from Chris “ironhead” Sutcliffe
2011-03-26 15:37:19 +00:00
tg 2dffc771ac new (some possible) testcases from Austin ML, and one fix 2011-03-26 15:32:37 +00:00
tg 803c51914b • move funcs.c:do_realpath() to misc.c and make it global
⇒ consider merging simplify_path()
• move funcs.c:c_cd() to misc.c
• make misc.c:make_path() static, c_cd() is its only user
  ⇒ mark as obsolete
• tweak misc.c:set_current_wd() to drop ksh_get_wd() argument

should be no code change, but the entire path stuff is a mess…
so expect actual implementation changes or even rewrites shortly
2011-03-24 19:05:49 +00:00
tg 8d8ee0cc6a ironhead reported in IRC that some Cygwin guys (not he, he’s just the
packager) complain that mksh collapses two leading slashes; IIRC POSIX
has a clause for UNC pathnames, so stop doing that, plus add a test
2011-03-23 18:47:07 +00:00
tg bc4c3b9af0 • save/restore here document pointer during yyrecursive(), fixes crash
• add mirbsd/openbsd (omalloc rules!) specific testcase for the above
• $__progname must be used quoted, fix in comsub-torture testcase (my bad)
2011-03-21 21:57:35 +00:00
tg 3c41d2b063 fix cast; bump version 2011-03-17 22:09:23 +00:00
tg 2f2fe89157 • write a pattern optimiser and call it before invoking do_gmatch(),
to catch several very slow cases (especially “*@(*foo)” busy-loops
  – spotted by Jb_boin as usual these days ☺) by converting all @(…)
  with one case to drop the enclosing MAGIC(…), and in a second pass
  collapsing adjacent asterisk (‘*’) wildcards
2011-03-17 22:00:45 +00:00
tg a1a5922fc6 • make misc.c(gmatch.c):pat_scan() static and fix int → bool 2011-03-17 21:59:30 +00:00
tg d4e19b6624 • make DEBUG:dumpchar() not static (consider rolling into shf?) 2011-03-17 21:58:40 +00:00
tg d07bacd44a • fix check for empty pattern in ${foo/bar/baz} expansion: the
character anchoring the pattern (‘#’ or ‘%’) must be skipped
  if one was used; fixes “BLA="#test"; echo "${BLA//#/}"” busy
  looping (due to null pattern) found by Jb_boin
2011-03-17 21:57:50 +00:00
tg 5239e8ea4c actually, we need the android lsmod to be a builtin not an alias… 2011-03-16 20:56:33 +00:00
tg 1c22b3cc48 oops 2011-03-16 20:43:34 +00:00
tg b7824978ad RCSID sync with openbsd, one we had already, one Okan Demirmen stole
from mksh (but attributed, so it’s okay, considering the amount of
patch is not large enough to warrant copyright stuff)
2011-03-16 20:31:33 +00:00
tg 79c6d6043e • introduce a virtual TARGET_OS=Android that just sets a check category
and switches to the TARGET_OS=Linux
• introduce android as regression test suite category
• add an android specific standard alias
• clean up redundant ‘-o sh’ arg in a few checks
2011-03-16 20:26:36 +00:00
tg 750ad16f3d “__attribute__((format (printf, 1, 2)))” and “#define printf printfoo”
don’t play well with each other – Bionic uses the former, unlike most…
2011-03-16 20:03:21 +00:00
tg fd0d60b71b testsuite for mksh-small needs adjusting 2011-03-13 17:07:08 +00:00
tg e4b0313044 sync with oksh (nop, RCS IDs only) 2011-03-13 16:35:54 +00:00
tg 4e7d9bdb33 we need not only store into the retrace buffers recursively but also ungetsc 2011-03-13 16:20:45 +00:00
tg 91ec264cb8 fix/sync comments 2011-03-13 16:07:36 +00:00
tg af53a7d16a • speed optimisation: drop SF_FIRST flag, factor out skipping the
UTF-8 BOM instead (UTFMODE has a separate value now for activated
  during BOM skipping)
• parsing a COMSUB now skips UTF-8 BOM, too, but only temporarily
2011-03-13 16:03:54 +00:00
tg e66eaab861 let SLETARRAY use SRETRACE, too 2011-03-13 15:57:23 +00:00
tg f16386954d drop dead code 2011-03-13 15:31:46 +00:00
tg 68162acef7 if DEBUG, abort() on rogue pointers 2011-03-13 10:50:44 +00:00
tg 2a3d4db123 lint is your friend 2011-03-13 01:20:25 +00:00
tg 5710e78857 implement better SASPAREN handling (actually, reusable very good for the
case where SASPAREN→COMSUB downgrading is done) by “logging” input and
restarting from there if needed
2011-03-13 01:11:58 +00:00
tg 9b8fafb757 correct documentation 2011-03-12 23:16:51 +00:00
tg a3c79ad771 now fix that segfault and other bug from yesternight
do it like ksh93 though, not like bash and zsh
2011-03-12 23:06:43 +00:00
tg 75db4cdb56 • back out the EXPRSUB change
• optimise some code
• split testcase into two, one with expected-fail
2011-03-12 23:04:48 +00:00
tg ff0a3c8a8a SASPAREN changes have the same problem, revert too for now 2011-03-12 22:44:28 +00:00
tg fc42105199 revert SLETARRAY changes for now, this introduces problems 2011-03-12 22:40:02 +00:00
tg 17dbd3bd83 • make EXPRSUB not initiate an ASCIIZ string any more but a wdstring
(token stream, lexer output / parser input), EOS terminated, let
  SASPAREN use the same lexing as SBASE (e.g. COMSUB recursively)
• make wdstrip recursive
• fix processing of COMSUB in wdstrip
⇒ pass comsub-1 test
• expose another debugging function
2011-03-12 21:41:15 +00:00
tg fb1392fb6b even more test cases for comsub (2 breaking, but one of them fixed already) 2011-03-12 20:20:17 +00:00
tg 97e1987dbf tests for a segfault and a failure-to-fail from “Jb boin on dedior” on IRC 2011-03-12 01:04:39 +00:00
tg f8659785ac • add a tree debugging dumper #ifdef DEBUG
• use shf_putc (macro), shf_putchar (function) ipv tputc
• replace shf_putchar(x,y) calls for side-effect-less x with shf_putc
• plug another bug in the tree code – '\' → "\\" (backslashes must be
  escaped inside double quotes, too)
• adjust testsuite (and, I _had_ wondered…)
2011-03-08 18:49:51 +00:00
tg 6894618bb9 • x=$(cat <<-EOF
EOF) # works again now, plugging a regression
• rewrite the here document parsing code to be *much* more efficient
  (and a bit more readable too!) using goto, while here (no kidding)
2011-03-07 20:32:50 +00:00
tg 5f8075fc82 introduce a tobool(cond) abstraction¹ and switch bool to char if !stdbool.h
① currently: ((cond) ? true : false) but (!!(cond)) and casting to bool,
  the latter only if stdbool.h, would also work – which performs best on
  (and across) all supported systems?
2011-03-07 20:30:41 +00:00
tg 009d4c7b75 drop more currently unused 2011-03-07 20:09:34 +00:00
tg 2075dd23b2 drop unused 2011-03-07 20:08:48 +00:00
tg bfe34ba110 reduce data size by 320 bytes by packing struct lex_state tighter
and reducing amount of them allocated in each “pack” from 31 to 7
since $(…) is recursive anyway (I tried hard to need even only 5)
2011-03-07 20:07:52 +00:00
tg 1f392ab09b • more fixes (some regression, some new)
• more testcases, stricter testcases
2011-03-06 17:08:14 +00:00
tg 469da2e5e4 drop IFS-space-colon-3 because dash is the only shell which passes it,
but ksh93 passes ifs.sh which I assume is more correct, and mksh and
ksh93 have the same result for this (as do bash2/4, posh; zsh differs)
2011-03-06 17:06:17 +00:00
tg 7a6fb85db5 another _two_, gosh! 2011-03-06 02:28:59 +00:00
tg 14d8cecc82 plug _another_ %; versus %N output formatting bug
(apparently, nobody noticed them because everyone outputted to files,
not to strings, and this logic differs for those)
2011-03-06 02:14:09 +00:00
tg c995f7ca98 I thought of making COMSUB pass a pointer to the struct op *t->left around
instead, but the parser for the so-called “backticks” (U+0060) still emits
plaintext COMSUB wdstrings, and the evaluation code emits plaintext if the
code is not run (‘-n’ option), so it’s not worth the effort and memory ma-
nagement issues, even though it _would_ optimise the most common case…

Bump version numbers, sync regression tests; add one testcase from the old
webpages too. Sync manpage, this now works, but keep the workaround in, as
“portability issue” with slightly changed wording.

Also, /bin/sleep must be used in one manpage example if sleep is built in.
2011-03-06 01:50:11 +00:00
tg 25905b91a7 the long-awaited recursive parser for COMSUB $(…) expressions
fixes RedHat BZ#496791
2011-03-06 01:25:35 +00:00
tg e93daee5f4 dump TCASE as "case $foo in (1) blah ;; esac" not "… (1); blah …" 2011-03-06 00:52:02 +00:00
tg f3dbbe3f0c split malloc_os and friends further into
• functions called by mksh’s grouping memory allocator
• functions called by mksh code itself

the latter may be changed to call the internal grouping allocator,
if a porter so desires (but if this were recommended, the code in
question would already do so, so…)
2011-03-05 21:48:09 +00:00
tg 0b6afea352 introduce macros for malloc, realloc, free to hide them from mksh
no code may henceforth use memory (de-)allocation functions directly
use these macros, porters can change them for abstraction
2011-03-05 21:43:18 +00:00