Date: Sat, 29 Aug 2015 19:41:48 +0000 (UTC) From: Jilles Tjoelker <jilles@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r287296 - head/bin/sh Message-ID: <201508291941.t7TJfmvs084828@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jilles Date: Sat Aug 29 19:41:47 2015 New Revision: 287296 URL: https://svnweb.freebsd.org/changeset/base/287296 Log: 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. Modified: head/bin/sh/expand.c head/bin/sh/options.c head/bin/sh/options.h head/bin/sh/sh.1 Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Sat Aug 29 18:37:09 2015 (r287295) +++ head/bin/sh/expand.c Sat Aug 29 19:41:47 2015 (r287296) @@ -886,7 +886,7 @@ varvalue(const char *name, int quoted, i 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); } Modified: head/bin/sh/options.c ============================================================================== --- head/bin/sh/options.c Sat Aug 29 18:37:09 2015 (r287295) +++ head/bin/sh/options.c Sat Aug 29 19:41:47 2015 (r287296) @@ -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; Modified: head/bin/sh/options.h ============================================================================== --- head/bin/sh/options.h Sat Aug 29 18:37:09 2015 (r287295) +++ head/bin/sh/options.h Sat Aug 29 19:41:47 2015 (r287296) @@ -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 Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Sat Aug 29 18:37:09 2015 (r287295) +++ head/bin/sh/sh.1 Sat Aug 29 19:41:47 2015 (r287296) @@ -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 m .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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508291941.t7TJfmvs084828>