aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LXRng/Repo/Plain/File.pm
diff options
context:
space:
mode:
authorArne Georg Gleditsch <argggh@lxr.linpro.no>2007-07-05 00:51:08 +0200
committerArne Georg Gleditsch <argggh@lxr.linpro.no>2007-07-05 00:51:08 +0200
commite9fa4c98bb5f084739d3418ade3f0c51e34a0aa1 (patch)
treefec1d635625e031cde7cba1b0a1d95ee92ac760b /lib/LXRng/Repo/Plain/File.pm
Rebase tree.
Diffstat (limited to 'lib/LXRng/Repo/Plain/File.pm')
-rw-r--r--lib/LXRng/Repo/Plain/File.pm51
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/LXRng/Repo/Plain/File.pm b/lib/LXRng/Repo/Plain/File.pm
new file mode 100644
index 0000000..cf2d6d5
--- /dev/null
+++ b/lib/LXRng/Repo/Plain/File.pm
@@ -0,0 +1,51 @@
+package LXRng::Repo::Plain::File;
+
+use strict;
+
+use base qw(LXRng::Repo::File);
+use Fcntl;
+
+sub new {
+ my ($class, $name, $path) = @_;
+
+ my @stat = stat($path);
+
+ return undef unless @stat;
+
+ return LXRng::Repo::Plain::Directory->new($name, $path, \@stat) if -d _;
+
+ return bless({name => $name, path => $path, stat => \@stat}, $class);
+}
+
+sub time {
+ my ($self) = @_;
+
+ return $$self{'stat'}[9];
+}
+
+sub size {
+ my ($self) = @_;
+
+ return $$self{'stat'}[7];
+}
+
+sub phys_path {
+ my ($self) = @_;
+
+ return $$self{'path'};
+}
+
+sub revision {
+ my ($self) = @_;
+
+ return $self->time.'.'.$self->size;
+}
+
+sub handle {
+ my ($self) = @_;
+
+ sysopen(my $handle, $self->phys_path, O_RDONLY) or die($!);
+ return $handle;
+}
+
+1;