/usr/bin/marclint is in libmarc-lint-perl 1.47-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #!/usr/bin/perl -w
eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
if 0; # not running under some shell
=head1 NAME
marclint - MARC record linting utility
=head1 SYNOPSIS
B<marclint> [options] file(s)
=over 4
=item options
=over 4
=item --help
Print a summary of commands
=item --[no]stats
Print a statistical summary by file at the end. (Default: on)
=back
=back
=cut
use strict;
use integer;
use MARC::File::USMARC;
use MARC::Lint;
use Getopt::Long;
use constant USAGE => <<"END";
Usage: marclint [options] file(s)
options
--help
Print a summary of commands
--version
Print version
--[no]quiet
Suppress status messages
--[no]stats
Print a statistical summary by file at the end
END
my $stats = 1;
my $help = 0;
my $quiet = 0;
my $rc = GetOptions(
"stats!" => \$stats,
"quiet!" => \$quiet,
"help" => \$help,
"version" => sub { print "$0, using MARC::Record v$MARC::Record::VERSION\n"; exit 1; },
);
my @files = @ARGV;
die USAGE if $help or (not $rc) or (@files == 0);
my $linter = new MARC::Lint;
my %counts;
my %errors;
for my $filename ( @files ) {
$counts{$filename} = 0;
$errors{$filename} = 0;
my $file = MARC::File::USMARC->in( $filename ) or die $MARC::File::ERROR;
warn "$filename\n" unless $quiet;
while ( my $marc = $file->next() ) {
if ( not $marc ) {
warn $MARC::Record::ERROR;
++$errors{$filename};
} else {
++$counts{$filename};
}
#store warnings in @warningstoreturn
my @warningstoreturn = ();
#retrieve any decoding errors
#get any warnings from decoding the raw MARC
push @warningstoreturn, $marc->warnings();
$linter->check_record( $marc );
#add any warnings from MARC::Lint
push @warningstoreturn, $linter->warnings;
if ( @warningstoreturn ) {
print join( "\n",
$marc->title,
@warningstoreturn,
"",
"",
);
++$errors{$filename};
}
} # while
$file->close();
} # for
if ( $stats ) {
print "\n\n";
print " Recs Errs Filename\n";
print "----- ----- --------\n";
for my $key ( sort keys %counts ) {
printf( "%5d %5d %s\n", $counts{$key}, $errors{$key}, $key );
} # for
} # if stats
|