diff options
Diffstat (limited to 'img/lib/IM/MsgStore.pm')
| -rw-r--r-- | img/lib/IM/MsgStore.pm | 73 |
1 files changed, 49 insertions, 24 deletions
diff --git a/img/lib/IM/MsgStore.pm b/img/lib/IM/MsgStore.pm index 61a1c90e..9e100293 100644 --- a/img/lib/IM/MsgStore.pm +++ b/img/lib/IM/MsgStore.pm @@ -5,10 +5,10 @@ ### ### Author: Internet Message Group <img@mew.org> ### Created: Apr 23, 1997 -### Revised: Apr 14, 2000 +### Revised: Dec 7, 2002 ### -my $PM_VERSION = "IM::MsgStore.pm version 20000414(IM141)"; +my $PM_VERSION = "IM::MsgStore.pm version 20021207(IM142)"; package IM::MsgStore; require 5.003; @@ -27,16 +27,6 @@ use vars qw(@ISA @EXPORT); @ISA = qw(Exporter); @EXPORT = qw(store_message exec_getsbrfile open_fcc excl_create fsync); -=head1 NAME - -MsgStore - store message in MH-style folder - -=head1 SYNOPSIS - -=head1 DESCRIPTION - -=cut - use vars qw($MsgNum $PrevFolder $First $Last $PrevDst $sys_fsync); BEGIN { $MsgNum = 0; @@ -54,7 +44,7 @@ BEGIN { # success: file name to be saved # fail: NULL # -sub new_message (\*$) { +sub new_message(\*$) { (local *MESSAGE, my $folder) = @_; if ($folder ne $PrevFolder) { $MsgNum = 0; @@ -68,7 +58,11 @@ sub new_message (\*$) { } $First = $Last = $MsgNum; } else { - $MsgNum++; + $MsgNum = message_number($folder, 'new', ($MsgNum)); + if ($MsgNum == 0) { + im_warn("can't get new message number in $folder\n"); + return ('', ''); + } } my $try = 3; while ($try--) { @@ -83,15 +77,19 @@ sub new_message (\*$) { $Last = $MsgNum; return ("$folder/$MsgNum", $file); } - $MsgNum++; + $MsgNum = message_number($folder, 'new', ($MsgNum)); + if ($MsgNum == 0) { + im_warn("can't get new message number in $folder\n"); + return ('', ''); + } } im_warn("excl_create failed.\n"); # message creation failed return ('', ''); } -sub store_message ($$;$) { - my ($Msg, $dst, $noscan) = @_; +sub store_message($$;$) { + my($Msg, $dst, $noscan) = @_; local *ART; require IM::Scan && import IM::Scan qw(store_header parse_header parse_body disp_msg); @@ -104,7 +102,7 @@ sub store_message ($$;$) { touch_folder($dst); $PrevDst = $dst; } - my ($msgfile, $filepath) = &new_message(\*ART, $dst); + my($msgfile, $filepath) = &new_message(\*ART, $dst); my $size = 0; if ($filepath ne '') { my $line; @@ -190,7 +188,7 @@ sub store_message ($$;$) { } } -sub exec_getsbrfile ($) { +sub exec_getsbrfile($) { my $dst = shift; my $get_hook = getsbr_file(); if ($get_hook) { @@ -229,9 +227,9 @@ sub exec_getsbrfile ($) { # path: file name to be saved # rm_file_on_error: a path to be deleted on error # -sub open_fcc ($$) { - my ($folder, $dir_style) = @_; - my ($fcc_dir, $rm_file_on_error, $fcc_folder, $FILE, $msgfile); +sub open_fcc($$) { + my($folder, $dir_style) = @_; + my($fcc_dir, $rm_file_on_error, $fcc_folder, $FILE, $msgfile); $fcc_folder = &expand_path($folder); if (-d $fcc_folder) { @@ -286,14 +284,14 @@ sub open_fcc ($$) { # 0: success # -1: fail # -sub excl_create (*$) { +sub excl_create(*$) { (local *MESSAGE, my $file) = @_; msg_mode(1); return -1 unless (im_sysopen(\*MESSAGE, $file, file_attr())); return 0; } -sub fsync ($) { +sub fsync($) { my $fno = shift; if (fsync_no()) { @@ -340,6 +338,33 @@ sub fsync ($) { 1; +__END__ + +=head1 NAME + +IM::MsgStore - store message in MH-style folder + +=head1 SYNOPSIS + + use IM::MsgStore; + +Subroutines: +store_message exec_getsbrfile open_fcc excl_create fsync + +=head1 DESCRIPTION + +The I<IM::MsgStore> module stores mail/news messages in MH-style folder. + +This modules is provided by IM (Internet Message). + +=head1 COPYRIGHT + +IM (Internet Message) is copyrighted by IM developing team. +You can redistribute it and/or modify it under the modified BSD +license. See the copyright file for more details. + +=cut + ### Copyright (C) 1997, 1998, 1999 IM developing team ### All rights reserved. ### |
