summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackingElement.pm45
1 files changed, 36 insertions, 9 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
index 41222ed8aaf..fb18e6dd0dd 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackingElement.pm
@@ -1,4 +1,4 @@
-# $OpenBSD: PackingElement.pm,v 1.12 2004/07/20 18:58:41 espie Exp $
+# $OpenBSD: PackingElement.pm,v 1.13 2004/07/22 22:23:26 espie Exp $
#
# Copyright (c) 2003 Marc Espie.
#
@@ -52,7 +52,11 @@ sub Factory
exit(1);
}
} else {
- OpenBSD::PackingElement::File->add(@_, $_);
+ if ($_ =~ m|/$|) {
+ OpenBSD::PackingElement::Dir->add(@_, $`);
+ } else {
+ OpenBSD::PackingElement::File->add(@_, $_);
+ }
}
}
@@ -90,10 +94,27 @@ sub add
sub keyword() { return; }
+sub needs_keyword() { 1; }
+
sub write
{
my ($self, $fh) = @_;
- print $fh "\@", $self->keyword(), " ", $self->stringize(), "\n";
+ if ($self->needs_keyword()) {
+ print $fh "\@", $self->keyword(), " ", $self->stringize(), "\n";
+ } else {
+ print $fh $self->stringize(), "\n";
+ }
+}
+
+# needed for comment checking
+sub fullstring
+{
+ my ($self, $fh) = @_;
+ if ($self->needs_keyword()) {
+ return "\@".$self->keyword()." ".$self->stringize()."\n";
+ } else {
+ return $self->stringize()."\n";
+ }
}
sub stringize($)
@@ -174,11 +195,7 @@ sub write
my ($self, $fh) = @_;
print $fh "\@ignore\n" if defined $self->{ignore};
print $fh "\@comment no checksum\n" if defined $self->{nochecksum};
- if ($self->needs_keyword()) {
- $self->SUPER::write($fh);
- } else {
- print $fh $self->stringize(), "\n";
- }
+ $self->SUPER::write($fh);
if (defined $self->{md5}) {
print $fh "\@md5 ", $self->{md5}, "\n";
}
@@ -606,7 +623,6 @@ package OpenBSD::PackingElement::Dir;
our @ISA=qw(OpenBSD::PackingElement::Dirs OpenBSD::PackingElement);
__PACKAGE__->setKeyword('dir');
-sub keyword() { "dir" }
sub destate
{
@@ -615,6 +631,17 @@ sub destate
$self->compute_modes($state);
}
+sub needs_keyword
+{
+ my $self = shift;
+ return $self->stringize() =~ m/\^@/;
+}
+
+sub stringize($)
+{
+ return $_[0]->{name}."/";
+}
+
package OpenBSD::PackingElement::Extra;
our @ISA=qw(OpenBSD::PackingElement);