NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PR/56491 CVS commit: src/bin/sh

The following reply was made to PR bin/56491; it has been noted by GNATS.

From: "Robert Elz" <>
Subject: PR/56491 CVS commit: src/bin/sh
Date: Tue, 16 Nov 2021 11:28:29 +0000

 Module Name:	src
 Committed By:	kre
 Date:		Tue Nov 16 11:28:29 UTC 2021
 Modified Files:
 	src/bin/sh: exec.c sh.1
 Log Message:
 PR bin/56491
 Make "hash" exit(!=0) (ie: exit(1)) if it writes an error message to
 stderr as required by POSIX (it was writing "not found" errors, yet
 still doing exit(0)).
 Whether, when doing "hash foobar", and "foobar" is not found as a command
 (not a built-in, not a function, and not found via a PATH search), that
 should be considered an error differs between shells.  All of the ksh
 descendant shells say "no", write no error message in this case, and
 exit(0) if no other errors occur.   Other shells (essentially all) do
 consider it an error, write a message to stderr, and exit(1) when this happens.
 POSIX isn't clear, the bug report:
 which is not yet resolved, suggests that the outcome will be that
 this is to be unspecified.   Given the diversity, there might be no
 other choice.
 Have a foot in both camps - default to the "other shell" behaviour,
 but add a -e option (no errors ... applies only to these "not found"
 errors) to generate the ksh behaviour.   Without other errors (like an
 unknown option, etc) "hash -e anyname" will always exit(0).
 See the PR for details on how it all works now, or read the updated man page.
 While here, when hash is in its other mode (reporting what is in the
 table) check for I/O errors on stdout, and exit(1) (with an error
 message!) if any occurred.   This does not apply to output generated
 by the -v option when command names are given (that output is incidental).
 In sh.1 document all of this.   Also add documentation for a bunch of
 other options the hash command has had for years, but which were never
 documented.   And while there, clean up some other sections I noticed
 needed improving (either formatting or content or both).
 To generate a diff of this commit:
 cvs rdiff -u -r1.56 -r1.57 src/bin/sh/exec.c
 cvs rdiff -u -r1.236 -r1.237 src/bin/sh/sh.1
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index