File:
[cvs.NetBSD.org] /
pkgsrc /
pkgtools /
pkg_filecheck /
files /
builddb.pl
Revision
1.3:
download - view:
text,
annotated -
select for diffs
Mon Apr 27 05:35:29 2020 UTC (4 years, 7 months ago) by
rillig
Branches:
MAIN
CVS tags:
pkgsrc-2024Q3-base,
pkgsrc-2024Q3,
pkgsrc-2024Q2-base,
pkgsrc-2024Q2,
pkgsrc-2024Q1-base,
pkgsrc-2024Q1,
pkgsrc-2023Q4-base,
pkgsrc-2023Q4,
pkgsrc-2023Q3-base,
pkgsrc-2023Q3,
pkgsrc-2023Q2-base,
pkgsrc-2023Q2,
pkgsrc-2023Q1-base,
pkgsrc-2023Q1,
pkgsrc-2022Q4-base,
pkgsrc-2022Q4,
pkgsrc-2022Q3-base,
pkgsrc-2022Q3,
pkgsrc-2022Q2-base,
pkgsrc-2022Q2,
pkgsrc-2022Q1-base,
pkgsrc-2022Q1,
pkgsrc-2021Q4-base,
pkgsrc-2021Q4,
pkgsrc-2021Q3-base,
pkgsrc-2021Q3,
pkgsrc-2021Q2-base,
pkgsrc-2021Q2,
pkgsrc-2021Q1-base,
pkgsrc-2021Q1,
pkgsrc-2020Q4-base,
pkgsrc-2020Q4,
pkgsrc-2020Q3-base,
pkgsrc-2020Q3,
pkgsrc-2020Q2-base,
pkgsrc-2020Q2,
HEAD
pkgtools/pkg_filecheck: fix absolute path to PKG_DBDIR
#!@PERL5@
# $NetBSD: builddb.pl,v 1.3 2020/04/27 05:35:29 rillig Exp $
#
# builddb -- build .byfile.db from tgz files or directory hierarchies.
# Copyright (C) 2000, 2003 Dieter Baron
#
# This file is part of img2eps, an image to EPS file converter.
# The author can be contacted at <dillo@giga.or.at>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. The name of the author may not be used to endorse or promote
# products derived from this software without specific prior
# written permission.
#
# THIS SOFTWARE IS PROVIDED BY DIETER BARON ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL DIETER BARON BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use strict;
use Getopt::Std;
use DB_File;
my $prg;
my $options = 'hvo:';
my $usage = '[-hv] [-o db-file] tar-file|directory ...';
my %opt;
my ($verbose, $dbfile);
my %db;
my ($file, $pkg, $opkg);
#
# defaults
#
$verbose = 0;
$dbfile = '@PKG_DBDIR@/xdb.byfile.db';
#
# command line handling
#
($prg) = ($0 =~ /([^\/]+)$/);
getopts($options, \%opt);
if ($opt{h}) {
print <<EOF;
usage: $prg $usage
-h display this help message
-o DB-FILE output to DB-FILE
-v verbose mode
EOF
exit 0;
}
if (@ARGV == 0) {
print STDERR "usage: $prg $usage\n";
exit 1;
}
$verbose = $opt{v} if ($opt{v});
$dbfile = $opt{o} if ($opt{o});
#
# setup
#
tie %db, 'DB_File', $dbfile, O_RDWR|O_CREAT, 0666, $DB_BTREE
or die "cannot open db `$dbfile': $!\n";
#
# process tar files
#
foreach $file (@ARGV) {
if (-f $file) {
unless (open LST, "tar -tzf $file |") {
warn "cannot list `$file': $!\n";
next;
}
($pkg) = ($file =~ m/([^\/]+)\.tgz$/);
}
elsif (-d $file) {
$pkg = $file;
$file = "`pwd`/$file" unless ($file =~ m!^/!);
unless (open LST, "find $file -type f |") {
warn "cannot list `$file': $!\n";
next;
}
}
else {
warn "no such file or directory: `$file'";
next;
}
while (<LST>) {
chomp;
if (exists($db{"$_\0"})) {
($opkg = $db{"$_\0"}) =~ s/\0//;
warn "overwriting `$_' (old: $opkg, new: $pkg)\n";
}
print "$pkg: $_\n" if ($verbose);
$db{"$_\0"} = "$pkg\0";
}
close LST;
}
#
# cleanup
#
untie %db;
CVSweb <webmaster@jp.NetBSD.org>