svn commit: r287296 - head/bin/sh

Jilles Tjoelker jilles at FreeBSD.org
Sat Aug 29 19:41:49 UTC 2015


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


More information about the svn-src-all mailing list