aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LXRng/Repo/TmpFile.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/TmpFile.pm
Rebase tree.
Diffstat (limited to 'lib/LXRng/Repo/TmpFile.pm')
-rw-r--r--lib/LXRng/Repo/TmpFile.pm30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/LXRng/Repo/TmpFile.pm b/lib/LXRng/Repo/TmpFile.pm
new file mode 100644
index 0000000..bc9024a
--- /dev/null
+++ b/lib/LXRng/Repo/TmpFile.pm
@@ -0,0 +1,30 @@
+package LXRng::Repo::TmpFile;
+
+# This package is used to hold on to a reference to a physical copy of
+# a file normally only present inside a repo of some sort. When it
+# leaves scopy, the destructor will remove it. (The object acts as
+# string containing the path of the physical manifestation of the
+# file.)
+
+use strict;
+use overload '""' => \&filename;
+
+sub new {
+ my ($class, %args) = @_;
+
+ return bless(\%args, $class);
+}
+
+sub filename {
+ my ($self) = @_;
+
+ return $$self{'dir'}.'/'.$$self{'node'};
+}
+
+sub DESTROY {
+ my ($self) = @_;
+ unlink($$self{'dir'}.'/'.$$self{'node'});
+ rmdir($$self{'dir'});
+}
+
+1;