Packages::CommonCode: Collect random utility functions in one place
authorFrank Lichtenheld <frank@lichtenheld.de>
Wed, 21 Nov 2007 07:49:47 +0000 (08:49 +0100)
committerFrank Lichtenheld <frank@lichtenheld.de>
Wed, 21 Nov 2007 07:56:16 +0000 (08:56 +0100)
So that I can clean up the rest of the code a bit.

lib/Packages/CommonCode.pm [new file with mode: 0644]

diff --git a/lib/Packages/CommonCode.pm b/lib/Packages/CommonCode.pm
new file mode 100644 (file)
index 0000000..b33f7b4
--- /dev/null
@@ -0,0 +1,70 @@
+# Packages::CommonCode - random utility functions
+#
+# Copyright (C) 2006  Jeroen van Wolffelaar <jeroen@wolffelaar.nl>
+# Copyright (C) 2006-2007 Frank Lichtenheld
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 1 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+package Packages::CommonCode;
+
+use strict;
+use warnings;
+
+use DB_File;
+use File::Path;
+
+use base 'Exporter';
+
+our %EXPORT_TAGS = ( 'all' => [ qw(parse_control_par activate activate_dir mkdirp) ] );
+our @EXPORT_OK = @{$EXPORT_TAGS{all}};
+
+sub parse_control_par {
+    local ($_) = @_;
+
+    my %data = ();
+    chomp;
+    s/\n /\377/g;
+    while (/^(\S+):\s*(.*)\s*$/mg) {
+       my ($key, $value) = ($1, $2);
+       $value =~ s/\377/\n /g;
+       $key =~ tr [A-Z] [a-z];
+       $data{$key} = $value;
+    }
+
+    return %data;
+}
+
+sub activate {
+    my ($file) = @_;
+
+    rename("${file}.new", $file);
+}
+
+sub activate_dir {
+    my ($dir) = @_;
+
+    my $tmp = "${dir}.old";
+    rename($dir, $tmp);
+    activate($dir);
+    rmtree($tmp);
+}
+
+sub mkdirp {
+    my ($dir) = @_;
+
+    -d $dir || mkpath($dir);
+}
+
+1;