capitalise AT&T®

This commit is contained in:
tg 2009-06-11 12:42:21 +00:00
parent be7764778f
commit e1d8d7ed01
12 changed files with 86 additions and 86 deletions

28
check.t
View File

@ -1,4 +1,4 @@
# $MirOS: src/bin/mksh/check.t,v 1.287 2009/06/10 18:11:25 tg Stab $
# $MirOS: src/bin/mksh/check.t,v 1.288 2009/06/11 12:42:15 tg Exp $
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
@ -1005,7 +1005,7 @@ expected-stdout:
name: eglob-bad-2
description:
Check that globbing isn't done when glob has syntax error
(at&t ksh fails this test)
(AT&T ksh fails this test)
file-setup: file 644 "abcx"
file-setup: file 644 "abcz"
file-setup: file 644 "bbc"
@ -1095,7 +1095,7 @@ expected-stdout:
name: eglob-trim-1
description:
Eglobbing in trim expressions...
(at&t ksh fails this - docs say # matches shortest string, ## matches
(AT&T ksh fails this - docs say # matches shortest string, ## matches
longest...)
stdin:
x=abcdef
@ -1373,7 +1373,7 @@ expected-stdout:
name: glob-range-2
description:
Test range matching
(at&t ksh fails this; POSIX says invalid)
(AT&T ksh fails this; POSIX says invalid)
file-setup: file 644 "abc"
stdin:
echo [a--]*
@ -1403,7 +1403,7 @@ expected-stdout:
name: glob-range-5
description:
Results unspecified according to POSIX
(at&t ksh treats this like [a-cc-e]*)
(AT&T ksh treats this like [a-cc-e]*)
file-setup: file 644 "abc"
file-setup: file 644 "bbc"
file-setup: file 644 "cbc"
@ -2532,7 +2532,7 @@ expected-stdout:
name: IFS-space-colon-2
description:
Simple test, IFS=<white-space>:
At&t ksh fails this, POSIX says the test is correct.
AT&T ksh fails this, POSIX says the test is correct.
stdin:
showargs() { for i; do echo -n " <$i>"; done; echo; }
IFS="$IFS:"
@ -2572,7 +2572,7 @@ expected-stdout:
name: IFS-space-colon-5
description:
Simple test, IFS=<white-space>:
Don't know what POSIX thinks of this. at&t ksh does not do this.
Don't know what POSIX thinks of this. AT&T ksh does not do this.
stdin:
showargs() { for i; do echo -n " <$i>"; done; echo; }
IFS="$IFS:"
@ -3050,7 +3050,7 @@ description:
The following:
set -- `false`
echo $?
shoud not print 0. (according to /bin/sh, at&t ksh88, and the
shoud not print 0. (according to /bin/sh, AT&T ksh88, and the
getopt(1) man page - not according to POSIX)
stdin:
set -- `false`
@ -3113,7 +3113,7 @@ description:
foobar: not found
Also, the command
$ foobar 2> /dev/null
generates an error under /bin/sh and pdksh, but at&t ksh88 produces
generates an error under /bin/sh and pdksh, but AT&T ksh88 produces
no error (redirected to /dev/null).
stdin:
(you/should/not/see/this/error/1) 2> /dev/null
@ -3125,10 +3125,10 @@ description:
The command
$ whence foobar
generates a blank line under pdksh and sets the exit status to 0.
at&t ksh88 generates no output and sets the exit status to 1. Also,
AT&T ksh88 generates no output and sets the exit status to 1. Also,
the command
$ whence foobar cat
generates no output under at&t ksh88 (pdksh generates a blank line
generates no output under AT&T ksh88 (pdksh generates a blank line
and /bin/cat).
stdin:
whence does/not/exist > /dev/null
@ -3169,7 +3169,7 @@ name: regression-17
description:
The command
. /foo/bar
should set the exit status to non-zero (sh and at&t ksh88 do).
should set the exit status to non-zero (sh and AT&T ksh88 do).
XXX doting a non existent file is a fatal error for a script
stdin:
. does/not/exist
@ -3213,7 +3213,7 @@ name: regression-22
description:
Quoting backquotes inside backquotes doesn't work:
$ echo `echo hi \`echo there\` folks`
asks for more info. sh and at&t ksh88 both echo
asks for more info. sh and AT&T ksh88 both echo
hi there folks
stdin:
echo `echo hi \`echo there\` folks`
@ -3290,7 +3290,7 @@ expected-stderr-pattern: /a\.x=1/
---
name: regression-29
description:
alias expansion different from at&t ksh88
alias expansion different from AT&T ksh88
stdin:
alias a='for ' b='i in'
a b hi ; do echo $i ; done

20
edit.c
View File

@ -25,7 +25,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.170 2009/06/10 19:34:18 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.171 2009/06/11 12:42:16 tg Exp $");
/* tty driver characters we are interested in */
typedef struct {
@ -159,7 +159,7 @@ x_do_comment(char *buf, int bsize, int *lenp)
int i, j, len = *lenp;
if (len == 0)
return (1); /* somewhat arbitrary - it's what at&t ksh does */
return (1); /* somewhat arbitrary - it's what AT&T ksh does */
/* Already commented? */
if (buf[0] == '#') {
@ -2381,12 +2381,12 @@ x_transpose(int c __unused)
* is a general summary of the options; the text is abcd with the
* upper case character or underscore indicating the cursor position:
* Who Before After Before After
* at&t ksh in emacs mode: abCd abdC abcd_ (bell)
* at&t ksh in gmacs mode: abCd baCd abcd_ abdc_
* AT&T ksh in emacs mode: abCd abdC abcd_ (bell)
* AT&T ksh in gmacs mode: abCd baCd abcd_ abdc_
* gnu emacs: abCd acbD abcd_ abdc_
* Pdksh currently goes with GNU behavior since I believe this is the
* most common version of emacs, unless in gmacs mode, in which case
* it does the at&t ksh gmacs mode.
* it does the AT&T ksh gmacs mode.
* This should really be broken up into 3 functions so users can bind
* to the one they want.
*/
@ -3142,7 +3142,7 @@ x_version(int c __unused)
if (c < 0)
return (KSTD);
/* This is what at&t ksh seems to do... Very bizarre */
/* This is what AT&T ksh seems to do... Very bizarre */
if (c != ' ')
x_e_ungetc(c);
@ -4563,7 +4563,7 @@ vi_cmd(int argcnt, const char *cmd)
return (ret);
}
case '=': /* at&t ksh */
case '=': /* AT&T ksh */
case Ctrl('e'): /* Nonstandard vi/ksh */
print_expansions(es, 1);
break;
@ -4575,16 +4575,16 @@ vi_cmd(int argcnt, const char *cmd)
complete_word(1, argcnt);
break;
case Ctrl('['): /* some annoying at&t kshs */
case Ctrl('['): /* some annoying AT&T kshs */
if (!Flag(FVIESCCOMPLETE))
return (-1);
case '\\': /* at&t ksh */
case '\\': /* AT&T ksh */
case Ctrl('f'): /* Nonstandard vi/ksh */
complete_word(1, argcnt);
break;
case '*': /* at&t ksh */
case '*': /* AT&T ksh */
case Ctrl('x'): /* Nonstandard vi/ksh */
expand_word(1);
break;

8
eval.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.59 2009/06/10 18:12:45 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/eval.c,v 1.60 2009/06/11 12:42:17 tg Exp $");
#ifdef MKSH_SMALL
#define MKSH_NOPWNAM
@ -612,7 +612,7 @@ expand(const char *cp, /* input word */
* like x[i+=1] to be evaluated twice.
*/
/* Note: not exported by FEXPORT
* in at&t ksh.
* in AT&T ksh.
*/
/* XXX POSIX says readonly is only
* fatal for special builtins (setstr
@ -764,7 +764,7 @@ expand(const char *cp, /* input word */
* IFS_WS -/WS w/NWS -
* IFS_NWS -/NWS w/NWS w
* (w means generate a word)
* Note that IFS_NWS/0 generates a word (at&t ksh
* Note that IFS_NWS/0 generates a word (AT&T ksh
* doesn't do this, but POSIX does).
*/
if (word == IFS_WORD ||
@ -1474,7 +1474,7 @@ alt_expand(XPtrV *wp, char *start, char *exp_start, char *end, int fdo)
/* no valid expansions... */
if (!p || count != 0) {
/* Note that given a{{b,c} we do not expand anything (this is
* what at&t ksh does. This may be changed to do the {b,c}
* what AT&T ksh does. This may be changed to do the {b,c}
* expansion. }
*/
if (fdo & DOGLOB)

8
exec.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.58 2009/06/10 18:12:45 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/exec.c,v 1.59 2009/06/11 12:42:17 tg Exp $");
static int comexec(struct op *, struct tbl *volatile, const char **,
int volatile, volatile int *);
@ -410,7 +410,7 @@ comexec(struct op *t, struct tbl *volatile tp, const char **ap,
int fcflags = FC_BI|FC_FUNC|FC_PATH;
int bourne_function_call = 0;
/* snag the last argument for $_ XXX not the same as at&t ksh,
/* snag the last argument for $_ XXX not the same as AT&T ksh,
* which only seems to set $_ after a newline (but not in
* functions/dot scripts, but in interactive and script) -
* perhaps save last arg here and set it in shell()?.
@ -608,7 +608,7 @@ comexec(struct op *t, struct tbl *volatile tp, const char **ap,
e->type = E_FUNC;
i = sigsetjmp(e->jbuf, 0);
if (i == 0) {
/* seems odd to pass XERROK here, but at&t ksh does */
/* seems odd to pass XERROK here, but AT&T ksh does */
exstat = execute(tp->val.t, flags & XERROK, xerrok);
i = LRETURN;
}
@ -967,7 +967,7 @@ findcom(const char *name, int flags)
(fpath = str_val(global("FPATH"))) != null &&
(npath.ro = search(name, fpath, R_OK,
&tp->u2.errno_)) != NULL) {
/* An undocumented feature of at&t ksh is that it
/* An undocumented feature of AT&T ksh is that it
* searches FPATH if a command is not found, even
* if the command hasn't been set up as an autoloaded
* function (ie, no typeset -uf).

38
funcs.c
View File

@ -25,7 +25,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.114 2009/06/10 18:12:46 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.115 2009/06/11 12:42:18 tg Exp $");
#if HAVE_KILLPG
/*
@ -74,7 +74,7 @@ const struct builtin mkshbuiltins[] = {
{"ulimit", c_ulimit},
{"+umask", c_umask},
{"*=unset", c_unset},
{"+alias", c_alias}, /* no =: at&t manual wrong */
{"+alias", c_alias}, /* no =: AT&T manual wrong */
{"+cd", c_cd},
{"+command", c_command},
{"echo", c_print},
@ -279,7 +279,7 @@ c_cd(const char **wp)
flushcom(0);
/* Set OLDPWD (note: unsetting OLDPWD does not disable this
* setting in at&t ksh)
* setting in AT&T ksh)
*/
if (current_wd[0])
/* Ignore failure (happens if readonly or integer) */
@ -751,7 +751,7 @@ c_typeset(const char **wp)
fieldstr = basestr = NULL;
builtin_opt.flags |= GF_PLUSOPT;
/* at&t ksh seems to have 0-9 as options which are multiplied
/* AT&T ksh seems to have 0-9 as options which are multiplied
* to get a number that is used with -L, -R, -Z or -i (eg, -1R2
* sets right justify in a field of 12). This allows options
* to be grouped in an order (eg, -Lu12), but disallows -i8 -L3 and
@ -771,7 +771,7 @@ c_typeset(const char **wp)
fieldstr = builtin_opt.optarg;
break;
case 'U':
/* at&t ksh uses u, but this conflicts with
/* AT&T ksh uses u, but this conflicts with
* upper/lower case. If this option is changed,
* need to change the -U below as well
*/
@ -877,7 +877,7 @@ c_typeset(const char **wp)
f = findfunc(wp[i], hash(wp[i]),
(fset&UCASEV_AL) ? true : false);
if (!f) {
/* at&t ksh does ++rv: bogus */
/* AT&T ksh does ++rv: bogus */
rv = 1;
continue;
}
@ -949,7 +949,7 @@ c_typeset(const char **wp)
continue;
/* no arguments */
if (thing == 0 && flag == 0) {
/* at&t ksh prints things
/* AT&T ksh prints things
* like export, integer,
* leftadj, zerofill, etc.,
* but POSIX says must
@ -981,7 +981,7 @@ c_typeset(const char **wp)
char *s = str_val(vp);
shf_putc('=', shl_stdout);
/* at&t ksh can't have
/* AT&T ksh can't have
* justified integers.. */
if ((vp->flag &
(INTEGER|LJUST|RJUST)) ==
@ -1011,7 +1011,7 @@ c_typeset(const char **wp)
char *s = str_val(vp);
shf_putc('=', shl_stdout);
/* at&t ksh can't have
/* AT&T ksh can't have
* justified integers.. */
if ((vp->flag &
(INTEGER|LJUST|RJUST)) ==
@ -1154,7 +1154,7 @@ c_alias(const char **wp)
ap->flag &= ~(ALLOC|ISSET);
afree(ap->val.s, APERM);
}
/* ignore values for -t (at&t ksh does this) */
/* ignore values for -t (AT&T ksh does this) */
newval = tflag ? search(alias, path, X_OK, NULL) : val;
if (newval) {
strdupx(ap->val.s, newval, APERM);
@ -1235,7 +1235,7 @@ c_let(const char **wp)
int rv = 1;
mksh_ari_t val;
if (wp[1] == NULL) /* at&t ksh does this */
if (wp[1] == NULL) /* AT&T ksh does this */
bi_errorf("no arguments");
else
for (wp++; *wp; wp++)
@ -1484,14 +1484,14 @@ c_getopts(const char **wp)
buf[1] = optc;
buf[2] = '\0';
} else {
/* POSIX says var is set to ? at end-of-options, at&t ksh
/* POSIX says var is set to ? at end-of-options, AT&T ksh
* sets it to null - we go with POSIX...
*/
buf[0] = optc < 0 ? '?' : optc;
buf[1] = '\0';
}
/* at&t ksh does not change OPTIND if it was an unknown option.
/* AT&T ksh does not change OPTIND if it was an unknown option.
* Scripts counting on this are prone to break... (ie, don't count
* on this staying).
*/
@ -1500,7 +1500,7 @@ c_getopts(const char **wp)
}
voptarg = global("OPTARG");
voptarg->flag &= ~RDONLY; /* at&t ksh clears ro and int */
voptarg->flag &= ~RDONLY; /* AT&T ksh clears ro and int */
/* Paranoia: ensure no bizarre results. */
if (voptarg->flag & INTEGER)
typeset("OPTARG", 0, INTEGER, 0, 0);
@ -1840,7 +1840,7 @@ c_read(const char **wp)
wpalloc[cp - *wp] = '\0';
*wp = wpalloc;
if (isatty(fd)) {
/* at&t ksh says it prints prompt on fd if it's open
/* AT&T ksh says it prints prompt on fd if it's open
* for writing and is a tty, but it doesn't do it
* (it also doesn't check the interactive flag,
* as is indicated in the Kornshell book).
@ -1853,7 +1853,7 @@ c_read(const char **wp)
* make sure the other side of the pipe is closed first. This allows
* the detection of eof.
*
* This is not compatible with at&t ksh... the fd is kept so another
* This is not compatible with AT&T ksh... the fd is kept so another
* coproc can be started with same output, however, this means eof
* can't be detected... This is why it is closed here.
* If this call is removed, remove the eof check below, too.
@ -2109,7 +2109,7 @@ c_brkcont(const char **wp)
return (1);
quit = n;
if (quit <= 0) {
/* at&t ksh does this for non-interactive shells only - weird */
/* AT&T ksh does this for non-interactive shells only - weird */
bi_errorf("%s: bad value", arg);
return (1);
}
@ -2124,7 +2124,7 @@ c_brkcont(const char **wp)
}
if (quit) {
/* at&t ksh doesn't print a message - just does what it
/* AT&T ksh doesn't print a message - just does what it
* can. We print a message 'cause it helps in debugging
* scripts, but don't generate an error (ie, keep going).
*/
@ -2268,7 +2268,7 @@ timex(struct op *t, int f, volatile int *xerrok)
* Two ways of getting cpu usage of a command: just use t0
* and t1 (which will get cpu usage from other jobs that
* finish while we are executing t->left), or get the
* cpu usage of t->left. at&t ksh does the former, while
* cpu usage of t->left. AT&T ksh does the former, while
* pdksh tries to do the later (the j_usrtime hack doesn't
* really work as it only counts the last job).
*/

View File

@ -26,7 +26,7 @@
#include <sys/file.h>
#endif
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.84 2009/06/10 18:12:46 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/histrap.c,v 1.85 2009/06/11 12:42:18 tg Exp $");
/*-
* MirOS: This is the default mapping type, and need not be specified.
@ -96,7 +96,7 @@ c_fc(const char **wp)
memcpy(editor + len, " $_", 4);
}
break;
case 'g': /* non-at&t ksh */
case 'g': /* non-AT&T ksh */
gflag++;
break;
case 'l':
@ -183,7 +183,7 @@ c_fc(const char **wp)
hlast = hist_get_newest(false);
} else {
/* POSIX says not an error if first/last out of bounds
* when range is specified; at&t ksh and pdksh allow out of
* when range is specified; AT&T ksh and pdksh allow out of
* bounds for -l as well.
*/
hfirst = hist_get(first, (lflag || last) ? true : false,

8
jobs.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.56 2009/06/10 18:12:47 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.57 2009/06/11 12:42:19 tg Exp $");
#if HAVE_KILLPG
#define mksh_killpg killpg
@ -586,7 +586,7 @@ waitfor(const char *cp, int *sigp)
* don't have to worry about exited/signaled jobs
*/
for (j = job_list; j; j = j->next)
/* at&t ksh will wait for stopped jobs - we don't */
/* AT&T ksh will wait for stopped jobs - we don't */
if (j->ppid == procpid && j->state == PRUNNING)
break;
if (!j) {
@ -607,7 +607,7 @@ waitfor(const char *cp, int *sigp)
return (-1);
}
/* at&t ksh will wait for stopped jobs - we don't */
/* AT&T ksh will wait for stopped jobs - we don't */
rv = j_waitj(j, flags, "jw:waitfor");
sigprocmask(SIG_SETMASK, &omask, NULL);
@ -1048,7 +1048,7 @@ j_waitj(Job *j,
}
#ifndef MKSH_UNEMPLOYED
/* If it looks like user hit ^C to kill a job, pretend we got
* one too to break out of for loops, etc. (at&t ksh does this
* one too to break out of for loops, etc. (AT&T ksh does this
* even when not monitoring, but this doesn't make sense since
* a tty generated ^C goes to the whole process group)
*/

8
lex.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.87 2009/06/10 18:12:47 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.88 2009/06/11 12:42:19 tg Exp $");
/*
* states while lexing word
@ -437,7 +437,7 @@ yylex(int cf)
PUSH_STATE(SBQUOTE);
*wp++ = COMSUB;
/* Need to know if we are inside double quotes
* since sh/at&t-ksh translate the \" to " in
* since sh/AT&T-ksh translate the \" to " in
* "`..\"..`".
* This is not done in posix mode (section
* 3.2.3, Double Quotes: "The backquote shall
@ -665,7 +665,7 @@ yylex(int cf)
ungetsc(c2);
} else if (c == '(')
/* parenthesis inside quotes and backslashes
* are lost, but at&t ksh doesn't count them
* are lost, but AT&T ksh doesn't count them
* either
*/
++statep->ls_sletparen.nparen;
@ -1295,7 +1295,7 @@ set_prompt(int to, Source *s)
case PS1: /* command */
/* Substitute ! and !! here, before substitutions are done
* so ! in expanded variables are not expanded.
* NOTE: this is not what at&t ksh does (it does it after
* NOTE: this is not what AT&T ksh does (it does it after
* substitutions, POSIX doesn't say which is to be done.
*/
{

10
main.c
View File

@ -33,7 +33,7 @@
#include <locale.h>
#endif
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.132 2009/06/10 18:12:47 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.133 2009/06/11 12:42:19 tg Exp $");
extern char **environ;
@ -73,7 +73,7 @@ static const char *initcoms[] = {
"source=PATH=$PATH:. command .",
"login=exec login",
NULL,
/* this is what at&t ksh seems to track, with the addition of emacs */
/* this is what AT&T ksh seems to track, with the addition of emacs */
"alias", "-tU",
"cat", "cc", "chmod", "cp", "date", "ed", "emacs", "grep", "ls",
"make", "mv", "pr", "rm", "sed", "sh", "vi", "who", NULL,
@ -184,7 +184,7 @@ main(int argc, const char *argv[])
/* Turn on nohup by default for now - will change to off
* by default once people are aware of its existence
* (at&t ksh does not have a nohup option - it always sends
* (AT&T ksh does not have a nohup option - it always sends
* the hup).
*/
Flag(FNOHUP) = 1;
@ -610,7 +610,7 @@ shell(Source * volatile s, volatile int toplevel)
void
unwind(int i)
{
/* ordering for EXIT vs ERR is a bit odd (this is what at&t ksh does) */
/* ordering for EXIT vs ERR is a bit odd (this is what AT&T ksh does) */
if (i == LEXIT || (Flag(FERREXIT) && (i == LERROR || i == LINTR) &&
sigtraps[SIGEXIT_].trap)) {
runtrap(&sigtraps[SIGEXIT_]);
@ -692,7 +692,7 @@ quitenv(struct shf *shf)
if (ep->flags & EF_FAKE_SIGDIE) {
int sig = exstat - 128;
/* ham up our death a bit (at&t ksh
/* ham up our death a bit (AT&T ksh
* only seems to do this for SIGTERM)
* Don't do it for SIGQUIT, since we'd
* dump a core..

4
misc.c
View File

@ -29,7 +29,7 @@
#include <grp.h>
#endif
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.110 2009/06/10 18:12:48 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.111 2009/06/11 12:42:20 tg Exp $");
#undef USE_CHVT
#if defined(TIOCSCTTY) && !defined(MKSH_SMALL)
@ -407,7 +407,7 @@ parse_args(const char **argv,
default:
if (what == OF_FIRSTTIME)
break;
/* -s: sort positional params (at&t ksh stupidity) */
/* -s: sort positional params (AT&T ksh stupidity) */
if (what == OF_SET && optc == 's') {
sortargs = 1;
break;

16
syn.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.37 2009/06/10 18:12:50 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.38 2009/06/11 12:42:20 tg Exp $");
struct nesting_state {
int start_token; /* token than began nesting (eg, FOR) */
@ -267,7 +267,7 @@ get_command(int cf)
case LWORD:
ACCEPT;
/* the iopn == 0 and XPsize(vars) == 0 are
* dubious but at&t ksh acts this way
* dubious but AT&T ksh acts this way
*/
if (iopn == 0 && XPsize(vars) == 0 &&
XPsize(args) == 0 &&
@ -281,7 +281,7 @@ get_command(int cf)
break;
case '(':
/* Check for "> foo (echo hi)" which at&t ksh
/* Check for "> foo (echo hi)" which AT&T ksh
* allows (not POSIX, but not disallowed)
*/
afree(t, ATEMP);
@ -618,8 +618,8 @@ function_body(char *name,
t->lineno = source->line;
/* Note that POSIX allows only compound statements after foo(), sh and
* at&t ksh allow any command, go with the later since it shouldn't
* break anything. However, for function foo, at&t ksh only accepts
* AT&T ksh allow any command, go with the later since it shouldn't
* break anything. However, for function foo, AT&T ksh only accepts
* an open-brace.
*/
if (ksh_func) {
@ -663,7 +663,7 @@ wordlist(void)
XPinit(args, 16);
/* Posix does not do alias expansion here... */
if ((c = token(CONTIN|KEYWORD|ALIAS)) != IN) {
if (c != ';') /* non-POSIX, but at&t ksh accepts a ; here */
if (c != ';') /* non-POSIX, but AT&T ksh accepts a ; here */
REJECT;
return (NULL);
}
@ -843,10 +843,10 @@ compile(Source *s)
return (outtree);
}
/* This kludge exists to take care of sh/at&t ksh oddity in which
/* This kludge exists to take care of sh/AT&T ksh oddity in which
* the arguments of alias/export/readonly/typeset have no field
* splitting, file globbing, or (normal) tilde expansion done.
* at&t ksh seems to do something similar to this since
* AT&T ksh seems to do something similar to this since
* $ touch a=a; typeset a=[ab]; echo "$a"
* a=[ab]
* $ x=typeset; $x a=[ab]; echo "$a"

18
var.c
View File

@ -22,7 +22,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/var.c,v 1.74 2009/06/10 18:12:51 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/var.c,v 1.75 2009/06/11 12:42:21 tg Exp $");
/*
* Variables
@ -555,7 +555,7 @@ formatstr(struct tbl *vp, const char *s)
while (i < slen)
i += utf_widthadj(qq, &qq);
/* strip trailing spaces (at&t uses qq[-1] == ' ') */
/* strip trailing spaces (AT&T uses qq[-1] == ' ') */
while (qq > s && ksh_isspace(qq[-1])) {
--qq;
--slen;
@ -685,7 +685,7 @@ typeset(const char *var, Tflag set, Tflag clr, int field, int base)
vpbase = (vp->flag & ARRAY) ? global(arrayname(var)) : vp;
/* only allow export flag to be set. at&t ksh allows any attribute to
/* only allow export flag to be set. AT&T ksh allows any attribute to
* be changed which means it can be truncated or modified (-L/-R/-Z/-i)
*/
if ((vpbase->flag&RDONLY) &&
@ -1179,7 +1179,7 @@ setspec(struct tbl *vp)
vp->flag |= SPECIAL;
break;
case V_TMOUT:
/* at&t ksh seems to do this (only listen if integer) */
/* AT&T ksh seems to do this (only listen if integer) */
if (vp->flag & INTEGER)
ksh_tmout = vp->val.i >= 0 ? vp->val.i : 0;
break;
@ -1216,16 +1216,16 @@ unsetspec(struct tbl *vp)
case V_LINENO:
case V_RANDOM:
case V_SECONDS:
case V_TMOUT: /* at&t ksh leaves previous value in place */
case V_TMOUT: /* AT&T ksh leaves previous value in place */
unspecial(vp->name);
break;
/* at&t ksh man page says OPTIND, OPTARG and _ lose special meaning,
/* AT&T ksh man page says OPTIND, OPTARG and _ lose special meaning,
* but OPTARG does not (still set by getopts) and _ is also still
* set in various places.
* Don't know what at&t does for:
* Don't know what AT&T does for:
* HISTSIZE, HISTFILE,
* Unsetting these in at&t ksh does not loose the 'specialness':
* Unsetting these in AT&T ksh does not loose the 'specialness':
* no effect: IFS, COLUMNS, PATH, TMPDIR
*/
}
@ -1320,7 +1320,7 @@ set_array(const char *var, int reset, const char **vals)
/* to get local array, use "typeset foo; set -A foo" */
vp = global(var);
/* Note: at&t ksh allows set -A but not set +A of a read-only var */
/* Note: AT&T ksh allows set -A but not set +A of a read-only var */
if ((vp->flag&RDONLY))
errorf("%s: is read only", var);
/* This code is quite non-optimal */