#-*- perl -*-
#
# Copyright (C) 2004 Ken'ichi Fukamachi
# All rights reserved. This program is free software; you can
# redistribute it and/or modify it under the same terms as Perl itself.
#
# $FML: Config.pm,v 1.5 2004/07/23 13:16:41 fukachan Exp $
#
package FML::Merge::FML4::Config;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
use Carp;
=head1 NAME
FML::Merge::FML4::Config - what files we need to merge.
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 METHODS
=head2 new()
constructor.
=cut
# Descriptions: constructor.
# Arguments: OBJ($self) OBJ($curproc) HASH_REF($config)
# Side Effects: none
# Return Value: OBJ
sub new
{
my ($self, $curproc, $config) = @_;
my ($type) = ref($self) || $self;
my $me = {};
return bless $me, $type;
}
# target files to back up.
my $ml_home_dir_backup_target_files = {
#
# main configuration files
#
'cf' => {
'backup_mode' => 'move',
},
'config.ph' => {
'backup_mode' => 'copy',
},
#
# system
#
'aliases' => {
'backup_mode' => 'move',
},
'crontab' => {
'backup_mode' => 'move',
},
'fmlwrapper.c' => {
'backup_mode' => 'move',
},
'fmlwrapper.h' => {
'backup_mode' => 'move',
},
#
# message files
#
'confirm' => {
'backup_mode' => 'move',
},
'deny' => {
'backup_mode' => 'move',
},
'guide' => {
'backup_mode' => 'copy',
},
'help' => {
'backup_mode' => 'move',
},
'help-admin' => {
'backup_mode' => 'move',
},
'objective' => {
'backup_mode' => 'move',
},
'welcome' => {
'backup_mode' => 'move',
},
#
# include*
#
'include' => {
'backup_mode' => 'copy',
'type' => 'include',
},
'include-ctl' => {
'backup_mode' => 'copy',
'type' => 'include',
},
'include-mead' => {
'backup_mode' => 'copy',
'type' => 'include',
},
#
# list files
#
# member list files
'actives' => {
'backup_mode' => 'move',
'type' => 'list',
},
'members' => {
'backup_mode' => 'copy',
'type' => 'list',
},
# admin member list files
'members-admin' => {
'backup_mode' => 'copy',
'type' => 'list',
},
# moderators
'moderators' => {
'backup_mode' => 'copy',
'type' => 'list',
},
#
# password files
#
'etc/passwd' => {
'backup_mode' => 'move',
'type' => 'list',
},
#
# log et.al.
#
'summary' => {
'backup_mode' => 'copy',
'continue' => 'yes',
},
'seq' => {
'backup_mode' => 'copy',
'continue' => 'yes',
},
'log' => {
'backup_mode' => 'copy',
'continue' => 'yes',
},
#
# misc
#
'Makefile' => {
'backup_mode' => 'move',
},
};
# Descriptions: return list of files to back up.
# Arguments: OBJ($self)
# Side Effects: none
# Return Value: ARRAY_REF
sub get_old_config_files
{
my ($self) = @_;
my (@files) = keys %$ml_home_dir_backup_target_files;
return \@files
}
# Descriptions: return list of include* files.
# Arguments: OBJ($self)
# Side Effects: none
# Return Value: ARRAY_REF
sub get_old_include_files
{
my ($self) = @_;
my (@files) = ();
for my $f (keys %$ml_home_dir_backup_target_files) {
my $type = $ml_home_dir_backup_target_files->{ $f }->{ type } || '';
if ($type eq 'include') {
push(@files, $f);
}
}
return \@files
}
# Descriptions: return list of list* files.
# Arguments: OBJ($self)
# Side Effects: none
# Return Value: ARRAY_REF
sub get_old_list_files
{
my ($self) = @_;
my (@files) = ();
for my $f (keys %$ml_home_dir_backup_target_files) {
my $type = $ml_home_dir_backup_target_files->{ $f }->{ type } || '';
if ($type eq 'list') {
push(@files, $f);
}
}
return \@files
}
# Descriptions: return list of files we use continuously.
# Arguments: OBJ($self)
# Side Effects: none
# Return Value: ARRAY_REF
sub get_continuous_use_files
{
my ($self) = @_;
my (@files) = ();
for my $f (keys %$ml_home_dir_backup_target_files) {
my $cnt = $ml_home_dir_backup_target_files->{ $f }->{ continue } || '';
if ($cnt eq 'yes') {
push(@files, $f);
}
}
return \@files
}
# Descriptions: check if we should backup this $file.
# Arguments: OBJ($self) STR($file)
# Side Effects: none
# Return Value: STR
sub backup_mode
{
my ($self, $file) = @_;
if (defined $ml_home_dir_backup_target_files->{$file}->{backup_mode}) {
my $mode = $ml_home_dir_backup_target_files->{$file}->{backup_mode};
return $mode;
}
else {
return 'unknown';
}
}
#
# debug
#
if ($0 eq __FILE__) {
for my $f (keys %$ml_home_dir_backup_target_files) {
print $f, "\n";
}
}
=head1 CODING STYLE
See C on fml coding style guide.
=head1 AUTHOR
Ken'ichi Fukamachi
=head1 COPYRIGHT
Copyright (C) 2004 Ken'ichi Fukamachi
All rights reserved. This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.
=head1 HISTORY
FML::Merge::FML4::Config appeared in fml8 mailing list driver package.
See C for more details.
=cut
1;