re-implement "set -o posix" which doesn't do much ;)
but turns off 'braceexpand' when turned on as side effect, just like oksh/pdksh. document "set -o sh" too.
This commit is contained in:
parent
e62ca90db2
commit
1100be9300
4
check.t
4
check.t
@ -1,4 +1,4 @@
|
|||||||
# $MirOS: src/bin/mksh/check.t,v 1.53 2006/08/09 20:21:08 tg Exp $
|
# $MirOS: src/bin/mksh/check.t,v 1.54 2006/08/09 20:44:15 tg Exp $
|
||||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas 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: 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 $
|
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||||
@ -3825,5 +3825,5 @@ category: pdksh
|
|||||||
stdin:
|
stdin:
|
||||||
echo $KSH_VERSION
|
echo $KSH_VERSION
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)MIRBSD KSH R28 2006/08/08
|
@(#)MIRBSD KSH R28 2006/08/09
|
||||||
---
|
---
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
$MirOS: src/bin/mksh/copyright,v 1.13 2006/08/09 20:34:42 tg Exp $
|
$MirOS: src/bin/mksh/copyright,v 1.14 2006/08/09 20:44:15 tg Exp $
|
||||||
|
|
||||||
mksh is a collective work under the following licence:
|
mksh is a collective work under the following licence:
|
||||||
|
|
||||||
@ -12,8 +12,8 @@ mksh is a collective work under the following licence:
|
|||||||
# in all redistributions or reproduced in accompanying documentation
|
# in all redistributions or reproduced in accompanying documentation
|
||||||
# or other materials provided with binary redistributions.
|
# or other materials provided with binary redistributions.
|
||||||
#
|
#
|
||||||
# All advertising materials mentioning features or use of this soft-
|
# Advertising materials mentioning features or use of this work must
|
||||||
# ware must display the following acknowledgement:
|
# display the following acknowledgement:
|
||||||
# This product includes material provided by Thorsten Glaser.
|
# This product includes material provided by Thorsten Glaser.
|
||||||
#
|
#
|
||||||
# Licensor offers the work "AS IS" and WITHOUT WARRANTY of any kind,
|
# Licensor offers the work "AS IS" and WITHOUT WARRANTY of any kind,
|
||||||
@ -23,7 +23,7 @@ mksh is a collective work under the following licence:
|
|||||||
# or other damage, or direct damage except proven a consequence of a
|
# or other damage, or direct damage except proven a consequence of a
|
||||||
# direct error of said person and intended use of this work, loss or
|
# direct error of said person and intended use of this work, loss or
|
||||||
# other issues arising in any way out of its use, even if advised of
|
# other issues arising in any way out of its use, even if advised of
|
||||||
# the possibility of such damage or existence of a nontrivial bug.
|
# the possibility of such damage or existence of a defect.
|
||||||
|
|
||||||
Licensor recognises the contributions of the pdksh authors, who have
|
Licensor recognises the contributions of the pdksh authors, who have
|
||||||
dedicated their work into the Public Domain.
|
dedicated their work into the Public Domain.
|
||||||
|
17
misc.c
17
misc.c
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.12 2006/08/01 13:43:28 tg Exp $"
|
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.13 2006/08/09 20:44:15 tg Exp $"
|
||||||
"\t" MKSH_SH_H_ID);
|
"\t" MKSH_SH_H_ID);
|
||||||
|
|
||||||
short chtypes[UCHAR_MAX+1]; /* type bits for unsigned char */
|
short chtypes[UCHAR_MAX+1]; /* type bits for unsigned char */
|
||||||
@ -248,8 +248,8 @@ change_flag(enum sh_flag f,
|
|||||||
{
|
{
|
||||||
int oldval;
|
int oldval;
|
||||||
|
|
||||||
/* disabled functionality */
|
/* limited pdksh compatibility (FSH stays always off) */
|
||||||
if ((f == FPOSIX) || (f == FSH))
|
if (f == FSH)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
oldval = Flag(f);
|
oldval = Flag(f);
|
||||||
@ -257,18 +257,17 @@ change_flag(enum sh_flag f,
|
|||||||
if (f == FMONITOR) {
|
if (f == FMONITOR) {
|
||||||
if (what != OF_CMDLINE && newval != oldval)
|
if (what != OF_CMDLINE && newval != oldval)
|
||||||
j_change();
|
j_change();
|
||||||
} else if (f == FVI || f == FEMACS || f == FGMACS) {
|
} else if ((f == FVI || f == FEMACS || f == FGMACS) && newval) {
|
||||||
if (newval) {
|
Flag(FVI) = Flag(FEMACS) = Flag(FGMACS) = 0;
|
||||||
Flag(FVI) = 0;
|
Flag(f) = newval;
|
||||||
Flag(FEMACS) = Flag(FGMACS) = 0;
|
|
||||||
Flag(f) = newval;
|
|
||||||
}
|
|
||||||
} else if (f == FPRIVILEGED && oldval && !newval) {
|
} else if (f == FPRIVILEGED && oldval && !newval) {
|
||||||
/* Turning off -p? */
|
/* Turning off -p? */
|
||||||
seteuid(ksheuid = kshuid = getuid());
|
seteuid(ksheuid = kshuid = getuid());
|
||||||
setuid(ksheuid);
|
setuid(ksheuid);
|
||||||
setegid(kshegid = kshgid = getgid());
|
setegid(kshegid = kshgid = getgid());
|
||||||
setgid(kshegid);
|
setgid(kshegid);
|
||||||
|
} else if (f == FPOSIX && newval) {
|
||||||
|
Flag(FBRACEEXPAND) = 0;
|
||||||
}
|
}
|
||||||
/* Changing interactive flag? */
|
/* Changing interactive flag? */
|
||||||
if (f == FTALKING) {
|
if (f == FTALKING) {
|
||||||
|
13
mksh.1
13
mksh.1
@ -1,8 +1,8 @@
|
|||||||
.\" $MirOS: src/bin/mksh/mksh.1,v 1.53 2006/08/09 20:27:18 tg Exp $
|
.\" $MirOS: src/bin/mksh/mksh.1,v 1.54 2006/08/09 20:44:15 tg Exp $
|
||||||
.\" $OpenBSD: ksh.1,v 1.116 2006/07/26 10:13:25 jmc Exp $
|
.\" $OpenBSD: ksh.1,v 1.116 2006/07/26 10:13:25 jmc Exp $
|
||||||
.\" $OpenBSD: sh.1tbl,v 1.53 2004/12/10 01:56:56 jaredy Exp $
|
.\" $OpenBSD: sh.1tbl,v 1.53 2004/12/10 01:56:56 jaredy Exp $
|
||||||
.\"
|
.\"
|
||||||
.Dd August 8, 2006
|
.Dd August 9, 2006
|
||||||
.Dt MKSH 1
|
.Dt MKSH 1
|
||||||
.Os MirBSD
|
.Os MirBSD
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -3355,10 +3355,19 @@ See the
|
|||||||
and
|
and
|
||||||
.Ic pwd
|
.Ic pwd
|
||||||
commands above for more details.
|
commands above for more details.
|
||||||
|
.It Ic posix
|
||||||
|
Enable POSIX mode.
|
||||||
|
Currently, this just turns off
|
||||||
|
.Ic braceexpand
|
||||||
|
mode when turned on, which can be turned back on manually.
|
||||||
.It Ic restricted
|
.It Ic restricted
|
||||||
The shell is a restricted shell.
|
The shell is a restricted shell.
|
||||||
This option can only be used when the shell is invoked.
|
This option can only be used when the shell is invoked.
|
||||||
See above for a description of what this means.
|
See above for a description of what this means.
|
||||||
|
.It Ic sh
|
||||||
|
This flag only exists for
|
||||||
|
.Nm pdksh
|
||||||
|
compatibility and cannot be turned on.
|
||||||
.It Ic vi
|
.It Ic vi
|
||||||
Enable
|
Enable
|
||||||
.Xr vi 1 Ns -like
|
.Xr vi 1 Ns -like
|
||||||
|
6
sh.h
6
sh.h
@ -8,7 +8,7 @@
|
|||||||
/* $OpenBSD: c_test.h,v 1.4 2004/12/20 11:34:26 otto Exp $ */
|
/* $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 $ */
|
/* $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.31 2006/08/02 11:33:37 tg Exp $"
|
#define MKSH_SH_H_ID "$MirOS: src/bin/mksh/sh.h,v 1.32 2006/08/09 20:44:16 tg Exp $"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
||||||
@ -195,10 +195,10 @@ enum sh_flag {
|
|||||||
FNOTIFY, /* -b: asynchronous job completion notification */
|
FNOTIFY, /* -b: asynchronous job completion notification */
|
||||||
FNOUNSET, /* -u: using an unset var is an error */
|
FNOUNSET, /* -u: using an unset var is an error */
|
||||||
FPHYSICAL, /* -o physical: don't do logical cds/pwds */
|
FPHYSICAL, /* -o physical: don't do logical cds/pwds */
|
||||||
FPOSIX, /* -o posix (disabled) */
|
FPOSIX, /* -o posix (try to be more compatible) */
|
||||||
FPRIVILEGED, /* -p: use suid_profile */
|
FPRIVILEGED, /* -p: use suid_profile */
|
||||||
FRESTRICTED, /* -r: restricted shell */
|
FRESTRICTED, /* -r: restricted shell */
|
||||||
FSH, /* -o sh (disabled) */
|
FSH, /* -o sh (dummy, for pdksh compatibility) */
|
||||||
FSTDIN, /* -s: (invocation) parse stdin */
|
FSTDIN, /* -s: (invocation) parse stdin */
|
||||||
FTRACKALL, /* -h: create tracked aliases for all commands */
|
FTRACKALL, /* -h: create tracked aliases for all commands */
|
||||||
FVERBOSE, /* -v: echo input */
|
FVERBOSE, /* -v: echo input */
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
/* $MirOS: src/bin/mksh/version.h,v 1.5 2006/08/08 20:17:22 tg Exp $ */
|
/* $MirOS: src/bin/mksh/version.h,v 1.6 2006/08/09 20:44:16 tg Exp $ */
|
||||||
|
|
||||||
EXTERN const char MKSH_VERSION[] I__("@(#)MIRBSD KSH R28 2006/08/08");
|
EXTERN const char MKSH_VERSION[] I__("@(#)MIRBSD KSH R28 2006/08/09");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user