From 62c37116327ebd7322e455c4693571cbe76e7d96 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sat, 29 Aug 2015 19:41:47 +0000 Subject: [PATCH] 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. --- bin/sh/expand.c | 2 +- bin/sh/options.c | 2 +- bin/sh/options.h | 5 ++++- bin/sh/sh.1 | 11 +++++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/bin/sh/expand.c b/bin/sh/expand.c index 64db701df996..7411f1cc97f5 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 1568937a53ed..d1312005371c 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 2048a354b6e5..b5cd67f4dea6 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 e193d5da03c6..14ae89833c8a 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