# 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)
    	or die "rename ${file}.new $file failed: $!\n";
}

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;
