##---------------------------------------------------------------------------##
## $Id: mhmsgfile.pl,v 1.6 2001/09/17 16:10:28 ehood Exp $
## Earl Hood mhonarc@mhonarc.org
## MHonArc library for dealing with HTML message files. Mainly
## for parsing existing message files inorder to extract archive
##---------------------------------------------------------------------------##
## MHonArc -- Internet mail-to-HTML converter
## Copyright (C) 1998-1999 Earl Hood, mhonarc@mhonarc.org
## 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 2 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., 59 Temple Place - Suite 330, Boston, MA
##---------------------------------------------------------------------------##
##---------------------------------------------------------------------------##
##---------------------------------------------------------------------------##
##---------------------------------------------------------------------------##
## parse_data_from_msg(): Function to parse the initial comment
## declarations of a MHonArc message file into a hash. A refernce
## to resulting hash is returned. Keys are the field names, and
## values are arrays of field values.
sub parse_data_from_msg
{
my $fh = shift; # An open filehandle
last if /^<!--X-Head-End/; # All done
next unless s/^<!--X-//; # Skip non-field lines
($field, $value) = split(/: /, $_, 2);
push(@
{$field{lc $field}}, uncommentize
($value));
##---------------------------------------------------------------------------##
## load_date_from_msg_file(): Function to read db data from a
## a MHonArc message file directly into db hashes.
sub load_data_from_msg_file
{
my $filename = shift; # Name of file to read
my $msgnum = shift; # Message number for file
if (!open(MSGFILE
, $filename)) {
warn qq/Warning: Unable to open "$filename": $!\n/;
my $href = parse_data_from_msg
(\
*MSGFILE
);
if (!defined($href->{'subject'})) {
warn qq/Warning: Unable to find Subject for "$filename"\n/;
my $date = $href->{'date'}[0];
## Determine date of message
if (($date =~ /\S/) && (@array = parse_date
($date))) {
$index = get_time_from_date
(@array[1..$#array]);
$date = &time2str
("", $index, 1) unless $date =~ /\S/;
$index .= $X . int($msgnum);
$Subject{$index} = $href->{'subject'}[0];
if (defined($href->{'from-r13'})) {
$From{$index} = &mrot13
($href->{'from-r13'}[0]);
} elsif (defined($href->{'from'})) {
$From{$index} = $href->{'from'}[0];
$From{$index} = 'Anonymous';
if (defined($href->{'message-id'})) {
$Index2MsgId{$index} = $href->{'message-id'}[0];
$MsgId{$href->{'message-id'}[0]} = $index;
$NewMsgId{$href->{'message-id'}[0]} = $index;
if (defined($href->{'content-type'})) {
$ContentType{$index} = $href->{'content-type'}[0];
} elsif (defined($href->{'contenttype'})) { # older versions
$ContentType{$index} = $href->{'contenttype'}[0];
if (defined($href->{'reference'})) {
$Refs{$index} = $href->{'reference'};
} elsif (defined($href->{'reference-id'})) { # older versions
$Refs{$index} = $href->{'reference-id'};
if (defined($href->{'derived'})) {
$Derived{$index} = $href->{'derived'};
$IndexNum{$index} = int($msgnum);
##---------------------------------------------------------------------------##