summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2015-08-29 19:41:47 +0000
committerjilles <jilles@FreeBSD.org>2015-08-29 19:41:47 +0000
commit699c9af55ff3a18628f73db3446e39b34584b5c3 (patch)
tree45b72c61b2eb6f3af29b6ecc93085301321208f2 /bin
parentef54b2af3d94323df123e6375fe24accb5b54e3c (diff)
downloadFreeBSD-src-699c9af55ff3a18628f73db3446e39b34584b5c3.zip
FreeBSD-src-699c9af55ff3a18628f73db3446e39b34584b5c3.tar.gz
sh: Add set -o nolog.
POSIX requires this to prevent entering function definitions in history but this implementation does nothing except retain the option's value. In ksh88, function definitions were usually entered in the history file, even when they came from ~/.profile and the $ENV file, to allow displaying their definitions. This is also the first option that does not have a letter.
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/expand.c2
-rw-r--r--bin/sh/options.c2
-rw-r--r--bin/sh/options.h5
-rw-r--r--bin/sh/sh.111
4 files changed, 15 insertions, 5 deletions
diff --git a/bin/sh/expand.c b/bin/sh/expand.c
index 64db701..7411f1c 100644
--- a/bin/sh/expand.c
+++ b/bin/sh/expand.c
@@ -886,7 +886,7 @@ varvalue(const char *name, int quoted, int subtype, int flag)
num = backgndpidval();
break;
case '-':
- for (i = 0 ; i < NOPTS ; i++) {
+ for (i = 0 ; i < NSHORTOPTS ; i++) {
if (optlist[i].val)
STPUTC(optlist[i].letter, expdest);
}
diff --git a/bin/sh/options.c b/bin/sh/options.c
index 1568937..d131200 100644
--- a/bin/sh/options.c
+++ b/bin/sh/options.c
@@ -302,7 +302,7 @@ setoption(int flag, int val)
{
int i;
- for (i = 0; i < NOPTS; i++)
+ for (i = 0; i < NSHORTOPTS; i++)
if (optlist[i].letter == flag) {
setoptionbyindex(i, val);
return;
diff --git a/bin/sh/options.h b/bin/sh/options.h
index 2048a35..b5cd67f 100644
--- a/bin/sh/options.h
+++ b/bin/sh/options.h
@@ -64,8 +64,10 @@ struct shparam {
#define Tflag optlist[16].val
#define Pflag optlist[17].val
#define hflag optlist[18].val
+#define nologflag optlist[19].val
-#define NOPTS 19
+#define NSHORTOPTS 19
+#define NOPTS 20
struct optent {
const char *name;
@@ -95,6 +97,7 @@ struct optent optlist[NOPTS] = {
{ "trapsasync", 'T', 0 },
{ "physical", 'P', 0 },
{ "trackall", 'h', 0 },
+ { "nolog", '\0', 0 },
};
#endif
diff --git a/bin/sh/sh.1 b/bin/sh/sh.1
index e193d5d..14ae898 100644
--- a/bin/sh/sh.1
+++ b/bin/sh/sh.1
@@ -32,7 +32,7 @@
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $FreeBSD$
.\"
-.Dd July 11, 2015
+.Dd August 29, 2015
.Dt SH 1
.Os
.Sh NAME
@@ -343,6 +343,11 @@ Write each command
variable subjected to parameter expansion and arithmetic expansion)
to standard error before it is executed.
Useful for debugging.
+.It nolog
+Another do-nothing option for
+.Tn POSIX
+compliance.
+It only has a long name.
.El
.Pp
The
@@ -1173,7 +1178,9 @@ The only special parameter that can be made local is
.Ql - .
Making
.Ql -
-local causes any shell options that are
+local causes any shell options
+(including those that only have long names)
+that are
changed via the
.Ic set
command inside the function to be
OpenPOWER on IntegriCloud