to address LP: #906914 (if your history file is corrupt or you
reach the end of HISTLINES, you’re still SOL)
quadruple the standard value for HISTSIZE to help users avoid it;
it’s much better to set it yourself if using persistent history
though; half it on MKSH_SMALL though which defaults to not use it
anyway
also fix handling of larger files a bit and limit the size until
which the files are considered (currently to 96 MiB) until such
time as mmap will no longer be employed to deal in them when the
offending code has been replaced by a rewrite…
handle any more, octal 010 style constants, as promised
• overhaul the manpage re. arithmetic expressions, make the guarantees
mksh code has explicitly, precisely, clear
• to reduce burden of the compiler, getint() now operates on mksh_uari_t
internally; it already applied the sign after operation, anyway (C99
guarantees wraparound on unsigned types, but for signed types we need
specific compiler support; apparently, this comes from hardware limits)
• use const and shuffle order of locals around while here
• integer base flat (10, 010, 0x10)
‣ posix, right variants (heh, just like timezones)
⇒ both enabled, which means one test always fails right now,
until the code changes are in…
☹ mksh R21 and up, AT&T ksh93, posh, GNU bash, busybox sh, dash
all use the posux variant
☺ mksh R20b and below, pdksh, zsh, python, perl, php all do it right
‣ posix is stupid to use C (strongly typed, compiled) semantics
for an untyped _scripting_ language
• integer bases 1 (mksh specific), 2 to 36, and that 37 errors out
‣ both directions
• integer arithmetic, signed and unsigned, wraparound and value span
in the cases where they are defined unambiguously; bug reported by
Jilles Tjoelker in <20111129232526.GC14357@stack.nl> due to a report
by Stefano Lattarini on bug-autoconf
in the ambiguous case, I stick to traditional pdksh behaviour, which means
test ! a = b vs. test a = b
and
test ! a -o b vs. test a -o b
behave different from each other (in the second case, the NOT operator
binds strong; POSIX demands a reduction to 3 arguments and negating
that result in the first case), so we're at two known not-ok in the
FreeBSD® testsuite. (81 and 82 in regress.sh,v 1.3)