diff options
author | Jim Meyering <jim@meyering.net> | 2003-07-08 21:08:17 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2003-07-08 21:08:17 +0000 |
commit | 133f79583ff979e41d463b380b3e9e33946cd4d4 (patch) | |
tree | 9c08cf0c8b647d8d082c8ab85f0459843a046a57 /man | |
parent | c540aafa3f55b3f4e58c1ae98256fec1b53f0d62 (diff) | |
download | coreutils-133f79583ff979e41d463b380b3e9e33946cd4d4.tar.xz |
Add END handler to close STDOUT and check for errors.
Diffstat (limited to 'man')
-rwxr-xr-x | man/help2man | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/man/help2man b/man/help2man index 55490a03c..a589f8ec3 100755 --- a/man/help2man +++ b/man/help2man @@ -86,6 +86,31 @@ my %opt_def = ( 'v|version-option=s' => \$version_option, ); +END +{ + # Nobody ever checks the status of print()s. That's okay, because + # if any do fail, we're guaranteed to get an indicator when we close() + # the filehandle. + # + # Close stdout now, and if there were no errors, return happy status. + # If stdout has already been closed by the script, though, do nothing. + defined fileno STDOUT + or return; + close STDOUT + and return; + + # Errors closing stdout. Indicate that, and hope stderr is OK. + warn "$this_program: closing standard output: $!\n"; + + # Don't be so arrogant as to assume that we're the first END handler + # defined, and thus the last one invoked. There may be others yet + # to come. $? will be passed on to them, and to the final _exit(). + # + # If it isn't already an error, make it one (and if it _is_ an error, + # preserve the value: it might be important). + $? ||= 1; +} + # Parse options. Getopt::Long::config('bundling'); GetOptions (%opt_def, @@ -527,7 +552,7 @@ for (@pre, (grep ! /^($filter)$/o, @include), @post) { my $quote = /\W/ ? '"' : ''; print ".SH $quote$_$quote\n"; - + for ($include{$_}) { # Replace leading dot, apostrophe and backslash tokens. |