summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_add/OpenBSD
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2004-08-10 11:53:28 +0000
committerMarc Espie <espie@cvs.openbsd.org>2004-08-10 11:53:28 +0000
commit23eb54c9e9a3cdb77080e794df20fd407973015c (patch)
treed5870e09950adb4f8189d81a09f254a4ea8d3297 /usr.sbin/pkg_add/OpenBSD
parent51d7fa141fd9b9c007246a705d784b856d570fba (diff)
cosmetic tweak: ensure all dirs always get exactly one / at the end.
cosmetic tweak: do not show a space after a keyword without args. dir support reworked: keep clones() of dir objects, and call cleanup/reload routines at end. @mandir/fontdir support: both mandir and fontdir remove extra files on delete. @fontdir creates alias files, runs mkfontdir, and uses fc-cache.
Diffstat (limited to 'usr.sbin/pkg_add/OpenBSD')
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackingElement.pm63
1 files changed, 56 insertions, 7 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
index cf11c2d181a..7360affc6ac 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: PackingElement.pm,v 1.20 2004/08/07 17:27:26 espie Exp $
+# $OpenBSD: PackingElement.pm,v 1.21 2004/08/10 11:53:27 espie Exp $
#
# Copyright (c) 2003-2004 Marc Espie <espie@openbsd.org>
#
@@ -67,7 +67,7 @@ sub category() { 'items' }
sub new
{
my ($class, $args) = @_;
- if ($args =~ m|/$| and defined $class->dirclass()) {
+ if ($args =~ m|/+$| and defined $class->dirclass()) {
bless { name => $` }, $class->dirclass();
} else {
bless { name => $args }, $class;
@@ -110,10 +110,12 @@ sub needs_keyword() { 1 }
sub write
{
my ($self, $fh) = @_;
+ my $s = $self->stringize();
if ($self->needs_keyword()) {
- print $fh "\@", $self->keyword(), " ", $self->stringize(), "\n";
+ $s = " $s" unless $s eq '';
+ print $fh "\@", $self->keyword(), "$s\n";
} else {
- print $fh $self->stringize(), "\n";
+ print $fh "$s\n";
}
}
@@ -121,10 +123,12 @@ sub write
sub fullstring
{
my ($self, $fh) = @_;
+ my $s = $self->stringize();
if ($self->needs_keyword()) {
- return "\@".$self->keyword()." ".$self->stringize();
+ $s = " $s" unless $s eq '';
+ return "\@".$self->keyword().$s;
} else {
- return $self->stringize();
+ return $s;
}
}
@@ -768,7 +772,8 @@ sub NoDuplicateNames() { 1 }
package OpenBSD::PackingElement::DirBase;
sub stringize($)
{
- return $_[0]->{name}."/";
+ my $self = $_[0];
+ return $self->{name}."/";
}
sub NoDuplicateNames() { 1 }
@@ -797,12 +802,56 @@ our @ISA=qw(OpenBSD::PackingElement::Dir);
__PACKAGE__->setKeyword('fontdir');
sub keyword() { "fontdir" }
sub needs_keyword { 1 }
+sub dirclass() { "OpenBSD::PackingElement::Fontdir" }
+
+our %fonts_todo = ();
+
+sub install
+{
+ my ($self, $archive, $destdir, $verbose, $not) = @_;
+ $self->SUPER::install($archive, $destdir, $verbose, $not);
+ $fonts_todo{$destdir.$self->fullname()} = 1;
+}
+
+sub reload
+{
+ my ($self, $state) = @_;
+ $fonts_todo{$state->{destdir}.$self->fullname()} = 1;
+}
+
+sub update_fontalias
+{
+ my $dirname = shift;
+ my @aliases;
+
+ for my $alias (glob "$dirname/fonts.alias-*") {
+ open my $f ,'<', $alias or next;
+ push(@aliases, <$f>);
+ close $f;
+ }
+ open my $f, '>', "$dirname/fonts.alias";
+ print $f @aliases;
+ close $f;
+}
+
+sub finish_fontdirs
+{
+ my @l = keys %fonts_todo;
+ if (@l != 0) {
+ map { update_fontalias($_) } @l;
+ print "You may wish to update your font path for ", join(' ', @l), "\n";
+ eval { system("/usr/X11R6/bin/mkfontdir", @l); };
+ eval { system("/usr/X11R6/bin/fc-cache", @l); };
+ }
+}
+
package OpenBSD::PackingElement::Mandir;
our @ISA=qw(OpenBSD::PackingElement::Dir);
__PACKAGE__->setKeyword('mandir');
sub keyword() { "mandir" }
sub needs_keyword { 1 }
+sub dirclass() { "OpenBSD::PackingElement::Mandir" }
package OpenBSD::PackingElement::Extra;
our @ISA=qw(OpenBSD::PackingElement);