X-Git-Url: https://vcs.fsf.org/?p=mharc.git;a=blobdiff_plain;f=bin%2Fextract-mesg-date;fp=bin%2Fextract-mesg-date;h=4fa13c7ff69b878d6184e6bc2c9afef667c6f3ab;hp=0000000000000000000000000000000000000000;hb=2ea8f66bfe7aa5135ae8f38a4278138c1e1dd90a;hpb=1d0a170d0d715ba9e03b58e1b97ec4cca5a61e95 diff --git a/bin/extract-mesg-date b/bin/extract-mesg-date new file mode 100755 index 0000000..4fa13c7 --- /dev/null +++ b/bin/extract-mesg-date @@ -0,0 +1,188 @@ +#!/usr/bin/perl +##--------------------------------------------------------------------------## +## File: +## $Id: extract-mesg-date,v 1.4 2002/09/15 03:33:08 ehood Exp $ +## Description: +## See POD below or run program with -man option. +##--------------------------------------------------------------------------## +## Copyright (C) 2002 Earl Hood +## +## 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 +## 02111-1307, USA +##--------------------------------------------------------------------------## + +package MHArc::extract_mesg_date; + +##--------------------------------------------------------------------------## +# +BEGIN { die qq/CGI use FORBIDDEN!\n/ if (defined($ENV{'GATEWAY_INTERFACE'})); } +my $Dir; BEGIN { $Dir = `dirname $0`; chomp $Dir; } +use lib "$Dir/../lib"; # Add relative lib to search path +# +##--------------------------------------------------------------------------## +# +use MHArc::Config; +my $config = MHArc::Config->load("$Dir/../lib/config.sh"); +# +##--------------------------------------------------------------------------## + + +use Getopt::Long; +use MHArc::Util qw( usage ); +use MHArc::MailUtil qw( extract_date ); + +require 'mhamain.pl'; + +my $debug = 0; +my $verbose = 0; +my $time_fmt = '%Y-%m'; + +MAIN: { + # Load mhonarc code + mhonarc::initialize(); + mhonarc::open_archive( + '-noarg', + '-quiet', + '-posixstrftime' + ) || die qq/ERROR: Unable to load MHonArc library\n/; + mhonarc::close_archive(); + + # Grap command-line options + my($opt_dfs); + my $clstatus = GetOptions( + "debug!" => \$debug, + "datefields=s" => \$opt_dfs, + "fmt=s" => \$time_fmt, + + "help" => \$help, + "man" => \$man + ); + usage(0) unless $clstatus; + usage(1) if $help; + usage(2) if $man; + + if ($debug) { + $MHArc::MailUtil::Debug = 1; + } + + my @date_fields = (); + if (defined($opt_dfs)) { + @date_fields = split(/:/, $opt_dfs); + } elsif (defined($config->{'MSG_DATE_FIELDS'})) { + @date_fields = split(/:/, $config->{'MSG_DATE_FIELDS'}); + } + print "date_fields=@date_fields\n" if $debug; + my($fields, $header) = readmail::MAILread_file_header(\*STDIN); + print mhonarc::time2str( + $time_fmt, extract_date($fields, @date_fields), 1); + +} # End: MAIN + +##--------------------------------------------------------------------------## +__END__ + +=head1 NAME + +extract-mesg-date - Retrieve date of a mail message + +=head1 SYNOPSIS + + extract-mesg-date [options] + +=head1 DESCRIPTION + +This program extracts the date of a mail message read in from +standard input. The date of the message is determined by +examining the following mail header fields in order: +C, C, C. The fields checked +can be changed with the C<-datefields> option. If no date +is found, than current local time is used. + +The date of the message will be echoed to standard output. +The format of the date is controled by the C<-fmt> option. + +This program is provided as part of mharc to provide the ability to +to determine the dates of messages during filtering. +Example shell command usage: + + mesg_date=`cat message | extract-mesg-date` + +Example useage within a procmail recipe: + + :0 Wi + MESGDATE_=| extract-mesg-date -fmt '%Y-%m' + + :0: + $MBOXROOT/.listsadmin/$MESGDATE_ + +=head1 OPTIONS + +=over + +=item C<-datefields> I + +Specifies the message header fields to examine in determining the +date of the message. Field names are separated by a colon. +For example, + + -datefields x-archive-date:received:date + +tells that C, C, and C should +be examined. + +=item C<-debug> + +Print out debugging information. + +B + +=item C<-fmt> I + +The time format to use. The format string syntax is the same as +defined by C. + +If C<-fmt> is not specified, than "C<%Y-%m>" is used. + +=item C<-help> + +Print out help message. + +=item C<-man> + +Print out the manpage. + +=back + +=head1 DEPENDENCIES + +This program uses functions within MHonArc's library. Therefore, +MHonArc must be installed on your system and the MHonArc libraries +located within Perl's include path. + +=head1 VERSION + +$Id: extract-mesg-date,v 1.4 2002/09/15 03:33:08 ehood Exp $ + +=head1 AUTHOR + +Earl Hood, earl@earlhood.com + +This program is part of the mharc archiving system and comes with +ABSOLUTELY NO WARRANTY and may be copied only under the terms of +the GNU General Public License, which may be found in the mharc +distribution. + +=cut +