| # Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; either version 2, or (at your option) | |
| # any later version. | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |
| package Automake::General; | |
| use 5.006; | |
| use strict; | |
| use Exporter; | |
| use File::Basename; | |
| use vars qw (@ISA @EXPORT); | |
| @ISA = qw (Exporter); | |
| @EXPORT = qw (&uniq $me); | |
| # Variable we share with the main package. Be sure to have a single | |
| # copy of them: using 'my' together with multiple inclusion of this | |
| # package would introduce several copies. | |
| use vars qw ($me); | |
| $me = basename ($0); | |
| # END | |
| # --- | |
| # Exit nonzero whenever closing STDOUT fails. | |
| sub END | |
| { | |
| # This is required if the code might send any output to stdout | |
| # E.g., even --version or --help. So it's best to do it unconditionally. | |
| if (! close STDOUT) | |
| { | |
| print STDERR "$me: closing standard output: $!\n"; | |
| $? = 74; # EX_IOERR | |
| return; | |
| } | |
| } | |
| # @RES | |
| # uniq (@LIST) | |
| # ------------ | |
| # Return LIST with no duplicates. | |
| sub uniq (@) | |
| { | |
| my @res = (); | |
| my %seen = (); | |
| foreach my $item (@_) | |
| { | |
| if (! exists $seen{$item}) | |
| { | |
| $seen{$item} = 1; | |
| push (@res, $item); | |
| } | |
| } | |
| return wantarray ? @res : "@res"; | |
| } | |
| 1; # for require | |
| ### Setup "GNU" style for perl-mode and cperl-mode. | |
| ## Local Variables: | |
| ## perl-indent-level: 2 | |
| ## perl-continued-statement-offset: 2 | |
| ## perl-continued-brace-offset: 0 | |
| ## perl-brace-offset: 0 | |
| ## perl-brace-imaginary-offset: 0 | |
| ## perl-label-offset: -2 | |
| ## cperl-indent-level: 2 | |
| ## cperl-brace-offset: 0 | |
| ## cperl-continued-brace-offset: 0 | |
| ## cperl-label-offset: -2 | |
| ## cperl-extra-newline-before-brace: t | |
| ## cperl-merge-trailing-else: nil | |
| ## cperl-continued-statement-offset: 2 | |
| ## End: |