Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / mhnote.pl
##---------------------------------------------------------------------------##
## File:
## $Id: mhnote.pl,v 1.3 2001/09/17 16:10:26 ehood Exp $
## Author:
## Earl Hood mhonarc@mhonarc.org
## Description:
## Annotation routine for MHonArc.
##---------------------------------------------------------------------------##
## MHonArc -- Internet mail-to-HTML converter
## Copyright (C) 1995-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
## 02111-1307, USA
##---------------------------------------------------------------------------##
package mhonarc;
##---------------------------------------------------------------------------
## Function for annotating messages.
##
sub annotate {
my $notetxt = pop(@_); # last arg is note data
my(@numbers) = ();
my($key, %Num2Index, $num, $i, $pg, $file);
local($_);
## Create list of messages to annotate
foreach (@_) {
# range
if (/^(\d+)-(\d+)$/) {
push(@numbers, $1 .. $2); # range op removes leading zeros
next;
}
# single number
if (/^\d+$/) {
push(@numbers, int($_)); # int() removes leading zeros
next;
}
# probably message-id
push(@numbers, $_);
}
if ($#numbers < 0) {
warn("Warning: No messages specified\n");
return 0;
}
## Make hash to perform deletions
foreach $key (keys %IndexNum) {
$Num2Index{$IndexNum{$key}} = $key;
}
## Define %Index2MLoc for determining min main index page update
$i=0; foreach $key (sort_messages()) {
$Index2MLoc{$key} = $i++;
}
## Make sure notes directory exists
my $notedir = get_note_dir();
if (! -d $notedir and !mkdir($notedir, 0777)) {
warn qq/Warning: Unable to create "$notedir": $!\n/;
return 0;
}
## Annotate messages
foreach $num (@numbers) {
if ($key = $Num2Index{$num} || $MsgId{$num}) {
## write note to file
$file = join($DIRSEP, $notedir,
msgid_to_filename($Index2MsgId{$key}));
if (!open(NOTEFILE, ">$file")) {
warn qq/Warning: Unable to create "$file": $!\n/;
next;
}
print NOTEFILE $notetxt;
close NOTEFILE;
## flag message to be updated
$Update{$IndexNum{$key}} = 1;
## mark where index page updates start
if ($MULTIIDX) {
$pg = int($Index2MLoc{$key}/$IDXSIZE)+1;
$IdxMinPg = $pg
if ($pg < $IdxMinPg || $IdxMinPg < 0);
$pg = int($Index2TLoc{$key}/$IDXSIZE)+1;
$TIdxMinPg = $pg
if ($pg < $TIdxMinPg || $TIdxMinPg < 0);
}
next;
}
# message not in archive
warn qq/Warning: Message "$num" not in archive\n/;
}
## Clear data that will get recomputed
%Index2MLoc = ();
write_pages();
1;
}
##---------------------------------------------------------------------------##
1;