• check.t: add some FPOSIX regression tests (1 still fails)

• all: remove vi editing mode #if defined(MKSH_SMALL) || defined(MKSH_NOVI)
  saves 12608 byts on i386
• check.t: add $0 quoting
This commit is contained in:
tg 2007-06-15 21:55:20 +00:00
parent f280b66d0a
commit 17b7a28ac8
6 changed files with 99 additions and 21 deletions

View File

@ -1,8 +1,9 @@
#!/bin/sh
# $MirOS: src/bin/mksh/Build.sh,v 1.212 2007/06/10 17:06:07 tg Exp $
# $MirOS: src/bin/mksh/Build.sh,v 1.213 2007/06/15 21:55:18 tg Exp $
#-
# Environment used: CC CFLAGS CPPFLAGS LDFLAGS LIBS NOWARN NROFF TARGET_OS
# CPPFLAGS recognised: MKSH_SMALL MKSH_ASSUME_UTF8 MKSH_NEED_MKNOD MKSH_NOPWNAM
# CPPFLAGS recognised: MKSH_SMALL MKSH_ASSUME_UTF8 MKSH_NEED_MKNOD MKSH_NOPWNAM
# MKSH_NOVI
v()
{

60
check.t
View File

@ -1,4 +1,4 @@
# $MirOS: src/bin/mksh/check.t,v 1.112 2007/06/09 22:02:04 tg Exp $
# $MirOS: src/bin/mksh/check.t,v 1.113 2007/06/15 21:55:18 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 $
@ -7,7 +7,7 @@
# http://www.research.att.com/~gsf/public/ifs.sh
expected-stdout:
@(#)MIRBSD KSH R29 2007/06/09
@(#)MIRBSD KSH R29 2007/06/15
description:
Check version of shell.
category: pdksh
@ -3901,12 +3901,12 @@ stdin:
print got ${#anzahl[*]} files
chmod +x foo/*
export PATH=$(pwd)/foo:$PATH
$0 -c 'fnord'
$0 -c 'fnord; fnord; fnord; fnord'
$0 foo/bar
$0 <foo/bar
$0 foo/zoo
$0 -c 'print : $(fnord)'
"$0" -c 'fnord'
"$0" -c 'fnord; fnord; fnord; fnord'
"$0" foo/bar
"$0" <foo/bar
"$0" foo/zoo
"$0" -c 'print : $(fnord)'
rm -rf foo
expected-stdout:
got 4 files
@ -3957,9 +3957,49 @@ description:
Reading the UTF-8 BOM should enable the utf8-hack flag
category: pdksh,!dutf
stdin:
$0 -c ':; x=$(set +o); if [[ $x = *utf8* ]]; then print on; else print off; fi'
$0 -c ':; x=$(set +o); if [[ $x = *utf8* ]]; then print on; else print off; fi'
"$0" -c ':; x=$(set +o); if [[ $x = *utf8* ]]; then print on; else print off; fi'
"$0" -c ':; x=$(set +o); if [[ $x = *utf8* ]]; then print on; else print off; fi'
expected-stdout:
off
on
---
name: aliases-1
description:
Check if built-in shell aliases are okay
category: pdksh
stdin:
alias
typeset -f
expected-stdout:
autoload='typeset -fu'
functions='typeset -f'
hash='alias -t'
history='fc -l'
integer='typeset -i'
local=typeset
login='exec login'
nohup='nohup '
r='fc -e -'
stop='kill -STOP'
suspend='kill -STOP $$'
type='whence -v'
---
name: aliases-2
description:
Check if set -o posix disables built-in aliases
category: pdksh
arguments: !-o!posix!
stdin:
alias
typeset -f
---
name: aliases-3
description:
Check if running as sh disables built-in aliases
category: pdksh,!smksh
arguments: !-o!posix!
stdin:
cp "$0" sh
./sh -c 'alias; typeset -f'
rm -f sh
---

8
lex.c
View File

@ -2,7 +2,7 @@
#include "sh.h"
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.33 2007/06/04 19:25:45 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.34 2007/06/15 21:55:19 tg Exp $");
/* Structure to keep track of the lexing state and the various pieces of info
* needed for each particular state. */
@ -969,7 +969,11 @@ getsc_line(Source *s)
ksh_tmout_state = TMOUT_READING;
alarm(ksh_tmout);
}
if (have_tty && (Flag(FVI) || Flag(FEMACS) || Flag(FGMACS))) {
if (have_tty && (
#ifndef MKSH_NOVI
Flag(FVI) ||
#endif
Flag(FEMACS) || Flag(FGMACS))) {
int nread;
nread = x_read(xp, LINE);

22
main.c
View File

@ -13,7 +13,7 @@
#include <locale.h>
#endif
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.77 2007/06/15 20:52:19 tg Exp $");
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.78 2007/06/15 21:55:19 tg Exp $");
extern char **environ;
@ -80,7 +80,7 @@ main(int argc, const char *argv[])
size_t k;
char *cp;
#endif
#if HAVE_SETLOCALE_CTYPE
#if !defined(MKSH_SMALL) || HAVE_SETLOCALE_CTYPE
const char *cc;
#endif
@ -165,6 +165,22 @@ main(int argc, const char *argv[])
/* setstr can't fail here */
setstr(vp, def_path, KSH_RETURN_ERROR);
#ifndef MKSH_SMALL
cc = kshname;
if (*cc == '-')
++cc;
i = 0;
while (cc[i] != '\0')
if (cc[i] == '/') {
cc += i + 1;
i = 0;
} else
++i;
if ((cc[0] == 's' || cc[0] == 'S') &&
(cc[1] == 'h' || cc[1] == 'H'))
Flag(FPOSIX) = 1;
#endif
/* 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
@ -181,7 +197,9 @@ main(int argc, const char *argv[])
* by the environment or the user. Also, we want tab completion
* on in vi by default. */
change_flag(FEMACS, OF_SPECIAL, 1);
#ifndef MKSH_NOVI
Flag(FVITABCOMPLETE) = 1;
#endif
/* import environment */
if (environ != NULL)

15
misc.c
View File

@ -6,7 +6,7 @@
#include <grp.h>
#endif
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.57 2007/06/06 23:28:16 tg Exp $\t"
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.58 2007/06/15 21:55:19 tg Exp $\t"
MKSH_SH_H_ID);
#undef USE_CHVT
@ -131,10 +131,12 @@ const struct option options[] = {
{ "trackall", 'h', OF_ANY },
{ "utf8-hack", 'U', OF_ANY }, /* non-standard */
{ "verbose", 'v', OF_ANY },
#ifndef MKSH_NOVI
{ "vi", 0, OF_ANY },
{ "viraw", 0, OF_ANY }, /* no effect */
{ "vi-tabcomplete", 0, OF_ANY }, /* non-standard */
{ "vi-esccomplete", 0, OF_ANY }, /* non-standard */
#endif
{ "xtrace", 'x', OF_ANY },
/* Anonymous flags: used internally by shell only
* (not visible to user)
@ -235,8 +237,15 @@ change_flag(enum sh_flag f,
if (f == FMONITOR) {
if (what != OF_CMDLINE && newval != oldval)
j_change();
} else if ((f == FVI || f == FEMACS || f == FGMACS) && newval) {
Flag(FVI) = Flag(FEMACS) = Flag(FGMACS) = 0;
} else if ((
#ifndef MKSH_NOVI
f == FVI ||
#endif
f == FEMACS || f == FGMACS) && newval) {
#ifndef MKSH_NOVI
Flag(FVI) =
#endif
Flag(FEMACS) = Flag(FGMACS) = 0;
Flag(f) = newval;
} else if (f == FPRIVILEGED && oldval && !newval) {
/* Turning off -p? */

10
sh.h
View File

@ -8,8 +8,8 @@
/* $OpenBSD: c_test.h,v 1.4 2004/12/20 11:34:26 otto Exp $ */
/* $OpenBSD: tty.h,v 1.5 2004/12/20 11:34:26 otto Exp $ */
#define MKSH_SH_H_ID "$MirOS: src/bin/mksh/sh.h,v 1.146 2007/06/09 22:02:04 tg Exp $"
#define MKSH_VERSION "R29 2007/06/09"
#define MKSH_SH_H_ID "$MirOS: src/bin/mksh/sh.h,v 1.147 2007/06/15 21:55:20 tg Exp $"
#define MKSH_VERSION "R29 2007/06/15"
#if HAVE_SYS_PARAM_H
#include <sys/param.h>
@ -305,6 +305,10 @@ char *ucstrstr(char *, const char *);
#define stristr(b,l) ((const char *)strcasestr((b), (l)))
#endif
#if defined(MKSH_SMALL) && !defined(MKSH_NOVI)
#define MKSH_NOVI
#endif
/*
* Area-based allocation built on malloc/free
*/
@ -409,10 +413,12 @@ enum sh_flag {
FTRACKALL, /* -h: create tracked aliases for all commands */
FUTFHACK, /* -U: utf-8 hack for command line editing */
FVERBOSE, /* -v: echo input */
#ifndef MKSH_NOVI
FVI, /* vi command editing */
FVIRAW, /* always read in raw mode (ignored) */
FVITABCOMPLETE, /* enable tab as file name completion char */
FVIESCCOMPLETE, /* enable ESC as file name completion in command mode */
#endif
FXTRACE, /* -x: execution trace */
FTALKING_I, /* (internal): initial shell was interactive */
FNFLAGS /* (place holder: how many flags are there) */