Commit Graph

271 Commits

Author SHA1 Message Date
tg
b0ee967d00 ‣ merge from mksh R40-stable
first part of long-overdue manpage improvements
2011-07-16 17:08:04 +00:00
tg
d6445aa007 ‣ merge from mksh R40-stable
document the unportability of the echo utility;
arekm's non-bug report inspired this
2011-07-16 17:07:48 +00:00
tg
851f8fb7d8 introduce MKSH_NO_EXTERNAL_CAT skipping the “call /bin/cat if we have an
option” nonsense, intended for Android, Plan 9, and other systems which
honour that cat -v is deemed harmful
2011-07-07 21:24:53 +00:00
tg
3ef67e3296 replace uses of OAAT hash in all its variants by NZAT (mksh internal) or NZAAT (all others) 2011-07-06 22:22:02 +00:00
tg
fe2c0221b3 replace typeset with local, as style(9) now mandates
(keep globals for a while, until it’s widespread, though)

since we don’t export PS1 any longer, no need to stay AT&T ksh compatible
2011-07-05 20:19:18 +00:00
tg
64aade1a52 add new experimental "global" command 2011-07-02 17:57:24 +00:00
tg
535649cc60 sync clog 2011-06-21 22:02:09 +00:00
tg
6807ce3100 drop long-deprecated 'set ±o arc4random' 2011-06-12 15:37:10 +00:00
tg
463dc26db4 drop the RC 2011-06-12 15:34:19 +00:00
tg
00e1a6752d hyphen-used-as-minus-sign 2011-05-29 17:01:26 +00:00
tg
2cfc3e5c3d mksh R40 Release Candidate 1
Testsuite:
• add new need-pass: {yes|no} attribute, default yes
• exit with 1 if a need-pass test failed unexpectedly
  idea by Kacper Kornet <draenog@pld-linux.org>
• mark utf8bom-2 as need-pass: no
Infrstructure:
• add housekeeping function for making a tty raw
• switch functions with unused results to void
• struct op: u.charflag contains last char of ;; in TPAT
• var.c:arraysearch is now a global function
Language:
• add ;& (fall through) and ;| (examine next) delimiters
  in addition to ;; (end case) as zsh extensions, because
  POSIX standardised on ;& already
• add -A (read into array), -N (read exactly n bytes),
  -n (read up to n bytes), -t (timeout) flags for read
  from ksh93
• allow read -N -1 or -n -1 to slurp the entire input
• add -a (read into array the input characters) extension
  specific to mksh to read, idea by David Korn
• add -e (exit with error if PWD was not set correctly
  after a physical cd) to cd builtin, mandated by next
  POSIX, and change error codes accordingly
Rewrites:
• full rewrite of read builtin and its manpage section
• add regression tetss for most of the new functionality
• duplicate hexdump demo tests for use of read -a
• use read -raN-1 in dot.mkshrc to get NUL safe base64,
  DJB cdb hash and Jenkins one-at-a-time hash functions
2011-05-29 02:18:57 +00:00
tg
3f21a0e199 • add patch from Robert Luberda <robert@debian.org> fixing the
four-argument form of test (yet again…), thanks
• drop the obsolete (pre-POSIX) form “test -t” without fd
2011-05-06 15:41:25 +00:00
tg
c021aa4cad • use a flag for determining here strings, don’t parse delimiter every time
• don’t leak memory parsing possible I/O redirection tokens
• get rid of volatile by using more const (also helps codegen, methinks)
• support empty here document markers (mksh extension)
• pimp the manpage
2011-05-05 00:05:01 +00:00
tg
4345dd1fb8 += support for variables and arrays 2011-05-04 23:16:05 +00:00
tg
1a316664ef RCS Id sync with oksh (no change; their diff is bogus with nroff and gnroff) 2011-05-02 22:57:22 +00:00
tg
d69ffbf9e0 elaborate on 「${arrname[*]}」 and 「"${arrname[@]}"」 for wbx@ 2011-04-23 10:40:27 +00:00
tg
51607e17b2 funnily enough “typeset -ft” description already was “correct” as to
the today’s behaviour (and AT&T ksh’s) but the general function overview
(and description) wasn’t…
2011-04-17 15:43:12 +00:00
tg
5f31b8c97a • bring back test -H ifdef S_ISCDF (for HP-UX)
• whitespace, etc.
• bump version for tonight, I’m not gonna hack on c_cd,
  all this pathname stuff is mind-boggling…
2011-03-26 21:46:06 +00:00
tg
e4b0313044 sync with oksh (nop, RCS IDs only) 2011-03-13 16:35:54 +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
0b57abd4d3 • add -u option (POSIX: unbuffered ⇒ nop) to the built-in cat
• PIPESTATUS now supported (like bash 2) whose last member
  may actually differ from $? since the latter may not be the
  result of a pipeline partial command
• add regression tests, documentation, etc.
2011-02-18 22:26:13 +00:00
tg
a796512040 • more comment and int→bool cleanup, add and improve some comments
• in interactive mode, always look up {LC_{ALL,CTYPE},LANG} environment
  variables if setlocale/nl_langinfo(CODESET) doesn’t suffice
• add the ability to call any builtin (some don't make sense or wouldn't
  work) directly by analysing argv[0]
• for direct builtin calls, the {LC_{ALL,CTYPE},LANG} environment
  variables determine utf8-mode, even if MKSH_ASSUME_UTF8 was set
• when called as builtin, echo behaves POSIXish
• add domainname as alias for true on MirBSD only, to be able to link it
• sync mksh Makefiles with Build.sh output
• adjust manpage wrt release plans
• link some things to mksh now that we have callable builtins:
  bin/echo bin/kill bin/pwd bin/sleep (exact matches)
  bin/test bin/[ (were scripts before)
  bin/domainname=usr/bin/true usr/bin/false (move to /bin/ now)
• drop linked utilities and, except for echo and kill, their manpages
• adjust instbin and link a few more there as well
2011-02-11 01:18:23 +00:00
tg
cc8caf2cf9 add a sleep builtin that can deal with fractions too 2011-02-11 00:41:38 +00:00
tg
4e0f597b5d fix prev-hist-word again, thanks Jörg-Volker Peetz 2011-02-09 13:08:18 +00:00
tg
da9d0f3d97 ${foo@x} is now special-expansion for values of x, defined for now:
‘#’ = hash of $foo
2011-01-21 22:25:34 +00:00
tg
846fbde3b8 add read with delimiter, like AT&T ksh93 (thanks Dave for the suggestion) 2011-01-21 22:00:17 +00:00
tg
cc31d86e3b • implement KSHEGID, KSHGID, KSHUID variables by suggestion of Richard K.
(KSHEUID aka USER_ID already exists)
• simplify, speed up LCG and $RANDOM handling again
2011-01-21 21:04:48 +00:00
tg
230f59d064 New functionality: assign here document to string variable directly,
without cat and temp files. Hacked in Lëtzebuerg ☺

This was the third try. Where to put this was not palpable… same for =(…)
2011-01-09 21:57:29 +00:00
tg
b4948e430f this is a bashism but might be from ksh93 IIRC… still dead ugly as hell! 2010-12-19 20:00:56 +00:00
tg
c37518d509 ouch! \c? is DEL, not \c~ 2010-10-08 17:30:05 +00:00
tg
895e8f584b partial obsd sync:
- remove some old groff workarounds in SYNOPSIS
- avoid "Op ... Oc" constructions
except where the latter doesn’t work with nroff
2010-09-24 20:21:43 +00:00
tg
4f671299f4 lintian caught hyphen-used-as-minus-sign 2010-09-05 20:43:37 +00:00
tg
56a69907d5 optimise error messages, option parsing, and make more builtins
recognise "--", costs us 20 .text 0 .data 0 .bss
2010-09-05 19:51:35 +00:00
tg
07b97d5444 document workaround for the $(…) parsing bug 2010-09-05 19:12:24 +00:00
tg
2c59cc6089 more on the cat 2010-08-28 21:22:24 +00:00
tg
d09fd67299 make cat an mksh builtin, for things like here documents
if any options are given, the external programme is invoked instead
2010-08-28 17:21:46 +00:00
tg
7fdc42cead fix realpath builtin’s handling of (source) pathnames with a trailing slash
as per POSIX (if a trailing slash is part of the symlink target it fails as
well, like GNU readlink -f does)
2010-08-24 14:42:04 +00:00
tg
b5bdc6d10f document the [[ $foo = "$bar" ]] thing expressly 2010-08-14 20:13:10 +00:00
tg
14dc6071e7 portable hogwash 2010-08-14 19:55:37 +00:00
tg
7c91e018f4 • merge printf from OpenBSD
• deactivate %a and %A since our libc doesn’t have it
• rewrite the mksh integration code to use shf instead of stdio, removing
  floating point support always in the process, as shf doesn’t support it
  ⇒ saves 11114 (6706 text, 168 data, 4240 bss) with dietlibc on Debian
• fix -Wall -Wextra -Wformat -Wstrict-aliasing=2 for gcc (Debian 4.4.4-7)
• fix these and -Wc++-compat for gcc version 4.6.0 20100711 (experimental)
  [trunk revision 162057] (Debian 20100711-1) except:
  – a few enum warnings that relate to eglibc’s {g,s}etrlimit() functions
    taking an enum instead of an int because they’re too stupid to adhere
    to POSIX interfaces they design by themselves
  – all “request for implicit conversion” involving a "void *" on one side
• tweak the manual page somewhat more
2010-07-17 22:09:40 +00:00
tg
1e113b416b sync with oksh and remove some unnecessary/legacy portability notes
Revision 1.136: [7]download - view: [8]text, [9]markup, [10]annotated - [11]select for diffs
   Thu Jul 15 20:04:35 2010 UTC (47 hours, 56 minutes ago) by schwarze
   Branches: [12]MAIN
   CVS tags: [13]HEAD
   Diff to: previous 1.135: [14]preferred, [15]coloured
   Changes since revision 1.135: +7 -7 lines
When the first argument or arguments of a macro are opening delimiters
(parentheses and/or square brackets), both modern groff and mandoc first
output those leading delimiters as plain text, then start the macro scope
after these opening delimiters.  This is similar to printing trailing
punctuation and trailing closing delimiters on a macro line outside and
after the macro scope.  For example, ".Sq ( text )" is "(`text')",
not "`(text)'".  Thus, we now need to quote leading opening delimiters
when we want them inside the macro scope.
These are the cases in src/bin.

"makes sense" jmc@
2010-07-17 20:21:18 +00:00
tg
6b006202a1 partial oksh sync (RCSID and do add some parenthesēs to the list of
reserved words, but really only these which are only recognised at
the beginning of a line as the context says, not blindly all of them)
2010-07-13 13:12:32 +00:00
tg
ad98b9fc4a compatibility: stick “set ±o arc4random” around for a bit longer,
until R40 is definitively out (so there MAY still be an R39d)

this commit can easily be reverted in its entirety later, when
Build.sh’s compatibility for “-combine” &c. is removed too
2010-07-13 13:07:58 +00:00
tg
a6c81ea978 on obsd/mbsd, entropy is cheap enough for us to do this (codepath in
kernel checked for both) for additional seeding ($RANDOM is still from
the LCG only)
2010-07-11 11:17:33 +00:00
tg
4cbb5a9d46 to speed up mksh, get rid of arc4random(3) uses and use the LCG always;
depend on ASLR for seeding
2010-07-04 17:33:58 +00:00
tg
020ce07d14 document using $'…' to set $PS1 in an easier manner, after pressure 2010-05-13 18:47:50 +00:00
tg
f872c5d941 sync with oksh (comments and docs only) 2010-05-13 18:44:10 +00:00
tg
3fa79f3ea4 oksh merge 2010-04-09 18:59:30 +00:00
tg
ff9f89f22f Fix two more POSIX conformance bugs and minor documentation/comment issues 2010-04-08 13:21:08 +00:00
tg
f41d5ba82f allow MKSHRC_PATH to change from 「"~/.mkshrc"」, for Android &c. 2010-03-27 20:36:26 +00:00