summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-06-04 15:16:24 +0000
committerfukachan <fukachan>2003-06-04 15:16:24 +0000
commit59bf43f79020b558ecfb6e8c71642b4c8a5ef88c (patch)
treef042df74c7847cae69b57f45c44bbe6388f6a0eb
parentbf112251f43696e90733e499e7401bbeecd31d3d (diff)
downloadfml8-im-145.tar.gz
fml8-im-145.tar.bz2
fml8-im-145.zip
im-145im-145
-rw-r--r--img/dist/IM/00changes26
-rw-r--r--img/dist/IM/00diff14
-rw-r--r--img/dist/IM/IM/Address.pm4
-rw-r--r--img/dist/IM/IM/Alias.pm4
-rw-r--r--img/dist/IM/IM/Config.pm.in56
-rw-r--r--img/dist/IM/IM/EncDec.pm4
-rw-r--r--img/dist/IM/IM/File.pm4
-rw-r--r--img/dist/IM/IM/Folder.pm10
-rw-r--r--img/dist/IM/IM/GetPass.pm4
-rw-r--r--img/dist/IM/IM/Grep.pm4
-rw-r--r--img/dist/IM/IM/History.pm4
-rw-r--r--img/dist/IM/IM/Http.pm4
-rw-r--r--img/dist/IM/IM/Imap.pm4
-rw-r--r--img/dist/IM/IM/Iso2022jp.pm4
-rw-r--r--img/dist/IM/IM/Japanese.pm4
-rw-r--r--img/dist/IM/IM/LocalMbox.pm26
-rw-r--r--img/dist/IM/IM/Log.pm10
-rw-r--r--img/dist/IM/IM/MD5.pm4
-rw-r--r--img/dist/IM/IM/Message.pm13
-rw-r--r--img/dist/IM/IM/MsgStore.pm10
-rw-r--r--img/dist/IM/IM/Nntp.pm4
-rw-r--r--img/dist/IM/IM/Pop.pm16
-rw-r--r--img/dist/IM/IM/Recipient.pm4
-rw-r--r--img/dist/IM/IM/Scan.pm27
-rw-r--r--img/dist/IM/IM/Smtp.pm4
-rw-r--r--img/dist/IM/IM/Ssh.pm4
-rw-r--r--img/dist/IM/IM/Stdio.pm4
-rw-r--r--img/dist/IM/IM/TcpTransaction.pm4
-rw-r--r--img/dist/IM/IM/Util.pm16
-rw-r--r--img/dist/IM/cnf.im/SiteConfig.in7
-rw-r--r--img/dist/IM/dot.im/Config7
-rw-r--r--img/dist/IM/imali.in8
-rw-r--r--img/dist/IM/imcat.in4
-rw-r--r--img/dist/IM/imcd.in4
-rw-r--r--img/dist/IM/imclean.in6
-rw-r--r--img/dist/IM/imget.in8
-rw-r--r--img/dist/IM/imgrep.in4
-rw-r--r--img/dist/IM/imhist.in4
-rw-r--r--img/dist/IM/imhsync.in4
-rw-r--r--img/dist/IM/imjoin.in4
-rw-r--r--img/dist/IM/imls.in4
-rw-r--r--img/dist/IM/immknmz.in321
-rw-r--r--img/dist/IM/immv.in4
-rw-r--r--img/dist/IM/impack.in6
-rw-r--r--img/dist/IM/impath.in4
-rw-r--r--img/dist/IM/imput.in10
-rw-r--r--img/dist/IM/impwagent.in4
-rw-r--r--img/dist/IM/imrm.in4
-rw-r--r--img/dist/IM/imsetup.in11
-rw-r--r--img/dist/IM/imsort.in4
-rw-r--r--img/dist/IM/imstore.in4
-rw-r--r--img/dist/IM/imtar.in4
-rw-r--r--img/lib/IM/Address.pm4
-rw-r--r--img/lib/IM/Alias.pm4
-rw-r--r--img/lib/IM/Config.pm.in56
-rw-r--r--img/lib/IM/EncDec.pm4
-rw-r--r--img/lib/IM/File.pm4
-rw-r--r--img/lib/IM/Folder.pm10
-rw-r--r--img/lib/IM/GetPass.pm4
-rw-r--r--img/lib/IM/Grep.pm4
-rw-r--r--img/lib/IM/History.pm4
-rw-r--r--img/lib/IM/Http.pm4
-rw-r--r--img/lib/IM/Imap.pm4
-rw-r--r--img/lib/IM/Iso2022jp.pm4
-rw-r--r--img/lib/IM/Japanese.pm4
-rw-r--r--img/lib/IM/LocalMbox.pm26
-rw-r--r--img/lib/IM/Log.pm10
-rw-r--r--img/lib/IM/MD5.pm4
-rw-r--r--img/lib/IM/Message.pm13
-rw-r--r--img/lib/IM/MsgStore.pm10
-rw-r--r--img/lib/IM/Nntp.pm4
-rw-r--r--img/lib/IM/Pop.pm16
-rw-r--r--img/lib/IM/Recipient.pm4
-rw-r--r--img/lib/IM/Scan.pm27
-rw-r--r--img/lib/IM/Smtp.pm4
-rw-r--r--img/lib/IM/Ssh.pm4
-rw-r--r--img/lib/IM/Stdio.pm4
-rw-r--r--img/lib/IM/TcpTransaction.pm4
-rw-r--r--img/lib/IM/Util.pm16
79 files changed, 616 insertions, 376 deletions
diff --git a/img/dist/IM/00changes b/img/dist/IM/00changes
index cc6b27fc..f8ed5bda 100644
--- a/img/dist/IM/00changes
+++ b/img/dist/IM/00changes
@@ -1,6 +1,30 @@
+145 (2003/06/01)
+
+* IM/LocalMbox.pm (process_maildir): Fix for modern delivery identifiers in
+ a maildir according to `http://cr.yp.to/proto/maildir.html'.
+* Fix that setuid imget fails with tainted variables.
+* imsetup.in, cnf.im/SiteConfig.in, dot.im/Config: Add comments for
+ MailFoldersFile, NamazuDir, MknmzIncludeFile, MknmzIgnoreFoldersRegex and
+ UseXDispatcher.
+* IM/Config.pm.in (use_xdispatcher): New subroutine.
+* IM/Config.pm.in (UseXDispatcher): New config variable.
+* immknmz.in: Doc fix.
+* immknmz.in: Use END block for tempfile and lockdir.
+* immknmz.in: Fix NMZ.stamp handling.
+* IM/Config.pm.in (MailFoldersFile, NamazuDir, MknmzIncludeFile,
+ MknmzIgnoreFoldersRegex) New config variable.
+* IM/Config.pm.in (mail_folders_file, namazu_dir, namazu_path,
+ mknmz_include_file, mknmz_ignore_folders_regex): New subroutines.
+* IM/Config.pm.in: Set Immknmz.Src to blank.
+* immknmz.in: New option, `--src'. Folders can be specified.
+ (thanks to Hideyuki SHIRAI, [Mew-dist 13633] on 13 Jul 2000)
+* Message fixes.
+* imget.in: Doc fix.
+* IM/Scan.pm (parse_body): Revise regexp.
+
144 (2003/03/22)
-* IM/Util.pm: Fix `$osname' for darwin. (Thanks to WATANABE Hideyuki)
+* IM/Util.pm: Fix `$osname' for Darwin. (Thanks to WATANABE Hideyuki)
* IM/Scan.pm (parse_body): Regexp fix.
* 00readme: Doc fix.
* imput.in: Doc fix.
diff --git a/img/dist/IM/00diff b/img/dist/IM/00diff
index 29cd6958..7e42e7e3 100644
--- a/img/dist/IM/00diff
+++ b/img/dist/IM/00diff
@@ -1,6 +1,16 @@
+ Differences between IM145 and IM144
+
+* Fix that imget fails when modern delivery identifiers are used in a
+ maildir, according to `http://cr.yp.to/proto/maildir.html'.
+* Fix that setuid imget fails with tainted variables.
+* New immknmz option `--src', target folders can be specified.
+* New config variables, `MailFoldersFile', `NamazuDir', `MknmzIncludeFile',
+ `MknmzIgnoreFoldersRegex', and `UseXDispatcher'.
+* Revised regexp for Form=%b.
+
Differences between IM144 and IM143
-* Supporting darwin.
+* Supporting Darwin.
* Regexp fix for Form=%b.
* Bug fix for configure options.
* Doc/message fix.
@@ -14,7 +24,7 @@
Differences between IM142 and IM141
* Local security fix for impwagent and immknmz.
-* IM/TcpTransaction.pm: Socket6.pm support.
+* IM/TcpTransaction.pm: Socket6.pm support for IPv6.
* IM/MD5.pm: Fix 64bit integer problem.
* imsetup: Support `User' and `MBoxStyle=qmail'.
* imsetup: Bug fix for Perl 5.8.0.
diff --git a/img/dist/IM/IM/Address.pm b/img/dist/IM/IM/Address.pm
index b63bc800..3e62e691 100644
--- a/img/dist/IM/IM/Address.pm
+++ b/img/dist/IM/IM/Address.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Address.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Address.pm version 20030601(IM145)";
package IM::Address;
require 5.003;
diff --git a/img/dist/IM/IM/Alias.pm b/img/dist/IM/IM/Alias.pm
index 04a50a9f..e5a10a03 100644
--- a/img/dist/IM/IM/Alias.pm
+++ b/img/dist/IM/IM/Alias.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Alias.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Alias.pm version 20030601(IM145)";
package IM::Alias;
require 5.003;
diff --git a/img/dist/IM/IM/Config.pm.in b/img/dist/IM/IM/Config.pm.in
index 7045bda6..85753676 100644
--- a/img/dist/IM/IM/Config.pm.in
+++ b/img/dist/IM/IM/Config.pm.in
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Config.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Config.pm version 20030601(IM145)";
package IM::Config;
require 5.003;
@@ -33,7 +33,7 @@ use vars qw(@ISA @EXPORT);
inbox_folder draft_folder trash_folder config_cases config_case_inbox
preserve_dot
folder_mode msg_mode allowcrlf use_cl no_sync fsync_no preferred_fsync_no
- addrbook_file aliases_file petname_file
+ addrbook_file aliases_file petname_file mail_folders_file
context_file getchksbr_file getsbr_file scansbr_file scan_header_pick
address addresses_regex
msgdbfile msgdbtype
@@ -41,7 +41,9 @@ use vars qw(@ISA @EXPORT);
nntpservers nntphistoryfile nntpauthuser set_nntpauthuser
popaccount pophistoryfile imapaccount httpproxy noproxy
usepwagent pwagentport pwagent_tmp_dir pwagent_tmp_path usepwfiles pwfiles
- expand_path usetouchfile touchfile namazuv2 namazu_lock_dir namazu_lock_path
+ expand_path use_xdispatcher usetouchfile touchfile
+ namazuv2 namazu_dir namazu_path namazu_lock_dir namazu_lock_path
+ mknmz_include_file mknmz_ignore_folders_regex
pop_timeout imap_timeout nntp_timeout dns_timeout
connect_timeout command_timeout rcv_buf_siz
db_type file_attr ssh_path);
@@ -114,6 +116,8 @@ BEGIN {
'addrbookfile;s;;AddrBookFile' => 'Address book file',
'aliasesfile;s;;AliasesFile' => 'Aliases file',
'petnamefile;s;;PetNameFile' => 'PetName file',
+ 'petnamefile;s;;PetNameFile' => 'PetName file',
+ 'mailfoldersfile;s;;MailFoldersFile' => 'Mail folders file',
'contextfile;s;Context;ContextFile' => 'Context file',
'address;s;;Address' => 'Email addresses',
'addrregex;s;;AddrRegex' => 'Email addresses by regex',
@@ -144,10 +148,14 @@ BEGIN {
'connecttimeout;i;60;ConnectTimeout' => 'Timeout for connection making',
'commandtimeout;i;300;CommandTimeout' => 'Timeout for each command',
'rcvbufsiz;i;;RcvBufSiz' => 'Receive buffer size of TCP',
+ 'usexdispatcher;b;;UseXDispatcher' => 'Use X-Dispatcher field',
'usetouchfile;b;;UseTouchFile' => 'Use touch file',
'touchfile;s;;TouchFile' => 'Touch file name',
- 'namazuv2;b;;NamazuV2' => 'Use Namazu Version 2',
- 'namazulockdir;s;;NamazuLockDir' => 'Lock directory for immknmz',
+ 'namazuv2;b;;NamazuV2' => 'Use Namazu Version 2 (1.9 or late)',
+ 'namazudir;s;;NamazuDir' => 'A directory to contain Namazu indexes',
+ 'namazulockdir;s;;NamazuLockDir' => 'Lock directory for Namazu',
+ 'mknmzincludefile;s;;MknmzIncludeFile' => 'A file for mknmz -I',
+ 'mknmzignorefoldersregex;s;;MknmzIgnoreFoldersRegex' => 'Folders regex ignored by immknmz',
);
# these vars should be in current package?
@@ -841,6 +849,10 @@ sub petname_file() {
return &expand_path($PetNameFile);
}
+sub mail_folders_file() {
+ return &expand_path($MailFoldersFile);
+}
+
sub address() {
return $Address;
}
@@ -921,6 +933,10 @@ sub pwfiles() {
return $PwFiles;
}
+sub use_xdispatcher() {
+ return $UseXDispatcher;
+}
+
sub usetouchfile() {
return $UseTouchFile;
}
@@ -969,6 +985,22 @@ sub namazuv2() {
return $NamazuV2;
}
+sub namazu_dir() {
+ return $NamazuDir;
+}
+
+sub namazu_path() {
+ return expand_home(namazu_dir());
+}
+
+sub mknmz_include_file() {
+ return &expand_path($MknmzIncludeFile);
+}
+
+sub mknmz_ignore_folders_regex() {
+ return $MknmzIgnoreFoldersRegex;
+}
+
sub namazu_lock_dir() {
return $NamazuLockDir;
}
@@ -1055,12 +1087,14 @@ ContextFile=Context # relative to ~/.im/
# folders
Src=$InboxFolder # default source of most commands
Imclean.Src=$TrashFolder # default source for message cleanups
+Immknmz.Src= # folders specified by Mail/.folders are used
#Imget.dst=$InboxFolder # default inbox folder
Imrm.dst=$TrashFolder # default trash folder
# mail address aliases for imali/imput
AddrBookFile=Addrbook # relative to ~/.im/
AliasesFile=Aliases # relative to ~/.im/
#PetnameFile=Petnames # relative to ~/.im/
+MailFoldersFile=~/Mail/.folders
UseTouchFile=off
TouchFile=.mew-touch
# imget/imls
@@ -1077,6 +1111,7 @@ NntpServers=localhost # default server for NNTP
# imput
FccDir=$MailDir
QueueDir=queue # relative to ~/.im/
+UseXDispatcher=on # use X-Dispatcher field
# imget
Imget.Src=local # default source of imget (local mailbox)
PopHistory=pophist-{POPSERVERID} # to save last state (relative to ~/.im/)
@@ -1085,7 +1120,10 @@ NntpHistory=newshist # to save last state (relative to ~/.im/)
PwAgentTmpDir=pwagtmp # temporary directory (relative to ~/.im/)
# namazu
NamazuV2=off # use Namazu version 2 (1.9.x or late)
+NamazuDir=Namazu # relative to ~/
NamazuLockDir=nmzlock # lock directory (relative to ~/.im/)
+MknmzIncludeFile=~/Namazu/mknmz-inc.pl # mknmz -I <file>
+MknmzIgnoreFoldersRegex=\+(attach|draft|trash|queue|postq|schedule)
__END__
=head1 NAME
@@ -1108,7 +1146,7 @@ mail_dir mail_path news_dir news_path queue_dir queue_path
inbox_folder draft_folder trash_folder config_cases config_case_inbox
preserve_dot
folder_mode msg_mode allowcrlf use_cl no_sync fsync_no preferred_fsync_no
-addrbook_file aliases_file petname_file
+addrbook_file aliases_file petname_file mail_folders_file
context_file getchksbr_file getsbr_file scansbr_file scan_header_pick
address addresses_regex
msgdbfile msgdbtype
@@ -1116,7 +1154,9 @@ mbox_style
nntpservers nntphistoryfile nntpauthuser set_nntpauthuser
popaccount pophistoryfile imapaccount httpproxy noproxy
usepwagent pwagentport pwagent_tmp_dir pwagent_tmp_path usepwfiles pwfiles
-expand_path usetouchfile touchfile namazuv2 namazu_lock_dir namazu_lock_path
+expand_path use_xdispatcher usetouchfile touchfile
+namazuv2 namazu_dir namazu_path namazu_lock_dir namazu_lock_path
+mknmz_include_file mknmz_ignore_folders_regex
pop_timeout imap_timeout nntp_timeout dns_timeout
connect_timeout command_timeout rcv_buf_siz
db_type file_attr ssh_path
diff --git a/img/dist/IM/IM/EncDec.pm b/img/dist/IM/IM/EncDec.pm
index 713a638a..eb39ae46 100644
--- a/img/dist/IM/IM/EncDec.pm
+++ b/img/dist/IM/IM/EncDec.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::EncDec.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::EncDec.pm version 20030601(IM145)";
package IM::EncDec;
require 5.003;
diff --git a/img/dist/IM/IM/File.pm b/img/dist/IM/IM/File.pm
index 9ffb7fb9..3f94b509 100644
--- a/img/dist/IM/IM/File.pm
+++ b/img/dist/IM/IM/File.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 7, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::File.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::File.pm version 20030601(IM145)";
package IM::File;
require 5.003;
diff --git a/img/dist/IM/IM/Folder.pm b/img/dist/IM/IM/Folder.pm
index c8566742..1f85d6d0 100644
--- a/img/dist/IM/IM/Folder.pm
+++ b/img/dist/IM/IM/Folder.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Folder.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Folder.pm version 20030601(IM145)";
package IM::Folder;
require 5.003;
@@ -270,8 +270,10 @@ sub create_folder($) {
next;
}
$p .= "/$subdir";
- $p =~ /(.+)/; # $p may be tainted
- $p = $1; # clean up
+ if ($> != 0) {
+ $p =~ /(.+)/; # may be tainted
+ $p = $1; # clean up
+ }
unless (-d $p) {
# im_debug("Creating directory: $p\n")
# if (&debug('folder'));
diff --git a/img/dist/IM/IM/GetPass.pm b/img/dist/IM/IM/GetPass.pm
index 050b2470..b1723959 100644
--- a/img/dist/IM/IM/GetPass.pm
+++ b/img/dist/IM/IM/GetPass.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 30, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::GetPass.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::GetPass.pm version 20030601(IM145)";
package IM::GetPass;
require 5.003;
diff --git a/img/dist/IM/IM/Grep.pm b/img/dist/IM/IM/Grep.pm
index aadaecda..c3ca599f 100644
--- a/img/dist/IM/IM/Grep.pm
+++ b/img/dist/IM/IM/Grep.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Nov 03, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Grep.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Grep.pm version 20030601(IM145)";
package IM::Grep;
require 5.003;
diff --git a/img/dist/IM/IM/History.pm b/img/dist/IM/IM/History.pm
index 6ea54363..d4a074b8 100644
--- a/img/dist/IM/IM/History.pm
+++ b/img/dist/IM/IM/History.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 6, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::History.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::History.pm version 20030601(IM145)";
package IM::History;
require 5.003;
diff --git a/img/dist/IM/IM/Http.pm b/img/dist/IM/IM/Http.pm
index 5e63cfa9..0c21d881 100644
--- a/img/dist/IM/IM/Http.pm
+++ b/img/dist/IM/IM/Http.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Http.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Http.pm version 20030601(IM145)";
package IM::Http;
require 5.003;
diff --git a/img/dist/IM/IM/Imap.pm b/img/dist/IM/IM/Imap.pm
index 533ab42b..5ccf4810 100644
--- a/img/dist/IM/IM/Imap.pm
+++ b/img/dist/IM/IM/Imap.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Imap.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Imap.pm version 20030601(IM145)";
package IM::Imap;
require 5.003;
diff --git a/img/dist/IM/IM/Iso2022jp.pm b/img/dist/IM/IM/Iso2022jp.pm
index 56e97ac3..792ab822 100644
--- a/img/dist/IM/IM/Iso2022jp.pm
+++ b/img/dist/IM/IM/Iso2022jp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Iso2022jp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Iso2022jp.pm version 20030601(IM145)";
package IM::Iso2022jp;
require 5.003;
diff --git a/img/dist/IM/IM/Japanese.pm b/img/dist/IM/IM/Japanese.pm
index 165dae76..bc39bf78 100644
--- a/img/dist/IM/IM/Japanese.pm
+++ b/img/dist/IM/IM/Japanese.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Japanese.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Japanese.pm version 20030601(IM145)";
package IM::Japanese;
require 5.003;
diff --git a/img/dist/IM/IM/LocalMbox.pm b/img/dist/IM/IM/LocalMbox.pm
index c260b43a..4f98fd76 100644
--- a/img/dist/IM/IM/LocalMbox.pm
+++ b/img/dist/IM/IM/LocalMbox.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::LocalMbox.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::LocalMbox.pm version 20030601(IM145)";
package IM::LocalMbox;
require 5.003;
@@ -103,11 +103,13 @@ sub local_get_msg($$$$$) {
$getchk_hook = getchksbr_file();
if ($getchk_hook) {
- if ($getchk_hook =~ /^(\S+)$/) {
+ if ($getchk_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, GetChkSbr is ignored for SUID root script.\n");
} else {
- $getchk_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $getchk_hook = $1; # to pass through taint check
+ }
if (-f $getchk_hook) {
require $getchk_hook;
} else {
@@ -137,8 +139,10 @@ sub local_get_msg($$$$$) {
return -1;
}
if ($how eq 'get' && $main::opt_keep == 0) {
- $f =~ /(.+)/; # $f is tainted yet
- $f = $1; # clean up
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
unlink("$mbox/$f");
}
$msgs++;
@@ -281,7 +285,7 @@ sub process_maildir($$$$) {
return -1;
}
foreach $f (sort {(-M $b) <=> (-M $a) || $a cmp $b} readdir(FLDR)) {
- if ($f =~ /^\d+\.(\d+|\d+_\d+)\..+/ && -s "$dir/$f") {
+ if ($f =~ /^\d+\.[^.:\/]+\./ && -s "$dir/$f") {
my $ret = process_file("$dir/$f", $dst, $how, $noscan);
next if ($ret > 0); # skip by rule
if ($ret < 0) {
@@ -289,8 +293,12 @@ sub process_maildir($$$$) {
return -1;
}
if ($how eq 'get' && $main::opt_keep == 0) {
- $f =~ /(.+)/; # $f is tainted yet
- $f = $1; # clean up
+ if ($> != 0) {
+ $dir =~ /(.+)/; # may be tainted
+ $dir = $1; # clean up
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
unlink("$dir/$f");
}
$msgs++;
diff --git a/img/dist/IM/IM/Log.pm b/img/dist/IM/IM/Log.pm
index fb2e479a..0a124c3f 100644
--- a/img/dist/IM/IM/Log.pm
+++ b/img/dist/IM/IM/Log.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Log.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Log.pm version 20030601(IM145)";
package IM::Log;
require 5.003;
@@ -90,8 +90,10 @@ sub log_action($$$$;@) {
}
my $file = expand_path($main::Log_file);
- return unless ($file =~ /^(\S+)$/);
- $file = $1; # to pass through taint check
+ return unless ($file =~ /(.+)/);
+ if ($> != 0) {
+ $file = $1; # to pass through taint check
+ }
&msg_mode(1);
unless (im_open(\*HISTORY, ">>$file")) {
im_warn("can't open history file: $file ($!)\n");
diff --git a/img/dist/IM/IM/MD5.pm b/img/dist/IM/IM/MD5.pm
index 1cbc4599..34e2473e 100644
--- a/img/dist/IM/IM/MD5.pm
+++ b/img/dist/IM/IM/MD5.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::MD5.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::MD5.pm version 20030601(IM145)";
package IM::MD5;
require 5.003;
diff --git a/img/dist/IM/IM/Message.pm b/img/dist/IM/IM/Message.pm
index cc9dca80..f7847eff 100644
--- a/img/dist/IM/IM/Message.pm
+++ b/img/dist/IM/IM/Message.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Message.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Message.pm version 20030601(IM145)";
package IM::Message;
require 5.003;
@@ -17,6 +17,7 @@ require Exporter;
use IM::Util;
use IM::Address qw(extract_addr replace_addr fetch_addr);
use IM::Alias qw(alias_lookup hosts_completion);
+use IM::Config qw(use_xdispatcher);
use integer;
use strict;
use vars qw(@ISA @EXPORT);
@@ -479,7 +480,9 @@ sub put_mimed_bcc(*$$$$$$) {
print CHAN "Sender: $main::Sender_line$crlf";
}
print CHAN "To: blind-copy-recipients:;$crlf";
- print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ if (use_xdispatcher()) {
+ print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ }
if (($subj = &header_value($Header, 'Subject')) ne '') {
print CHAN "Subject: Bcc: $subj$crlf";
} else {
@@ -583,7 +586,9 @@ sub put_mimed_error_notify(*$$$$$$$$;$) {
return -1 unless (print CHAN "To: $main::Sender_line$crlf");
print CHAN "From: Imput-Error-Report$crlf";
- print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ if (use_xdispatcher()) {
+ print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ }
if (($subj = &header_value($Header, 'Subject')) ne '') {
print CHAN "Subject: Returned message: $subj$crlf";
} else {
diff --git a/img/dist/IM/IM/MsgStore.pm b/img/dist/IM/IM/MsgStore.pm
index d1789803..614d7982 100644
--- a/img/dist/IM/IM/MsgStore.pm
+++ b/img/dist/IM/IM/MsgStore.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::MsgStore.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::MsgStore.pm version 20030601(IM145)";
package IM::MsgStore;
require 5.003;
@@ -196,8 +196,10 @@ sub exec_getsbrfile($) {
im_warn("Sorry, GetSbr is ignored for SUID root script\n");
return;
}
- if ($get_hook =~ /^(\S+)$/) {
- $get_hook = $1; # to pass through taint check
+ if ($get_hook =~ /(.+)/) {
+ if ($> != 0) {
+ $get_hook = $1; # to pass through taint check
+ }
if (-f $get_hook) {
require $get_hook;
} else {
diff --git a/img/dist/IM/IM/Nntp.pm b/img/dist/IM/IM/Nntp.pm
index 23b569ac..3778e12f 100644
--- a/img/dist/IM/IM/Nntp.pm
+++ b/img/dist/IM/IM/Nntp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Nntp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Nntp.pm version 20030601(IM145)";
package IM::Nntp;
require 5.003;
diff --git a/img/dist/IM/IM/Pop.pm b/img/dist/IM/IM/Pop.pm
index 9e8a5618..50b8e300 100644
--- a/img/dist/IM/IM/Pop.pm
+++ b/img/dist/IM/IM/Pop.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Pop.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Pop.pm version 20030601(IM145)";
package IM::Pop;
require 5.003;
@@ -288,8 +288,10 @@ sub pop_process($$$$) {
if ($histfile eq '') {
im_err("POP historyfile $histfile undefined.\n");
return -1;
- } elsif ($histfile =~ /(\S+)/) {
- $histfile = $1; # to pass through taint check
+ } elsif ($histfile =~ /(.+)/) {
+ if ($> != 0) {
+ $histfile = $1; # to pass through taint check
+ }
} else {
im_err("invalid POP historyfile: $histfile.\n");
return -1;
@@ -442,11 +444,13 @@ sub pop_inc($$$$$$$$) {
my $getchk_hook = getchksbr_file();
if ($getchk_hook) {
- if ($getchk_hook =~ /^(\S+)$/) {
+ if ($getchk_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, GetChkSbr is ignored for SUID root script.\n");
} else {
- $getchk_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $getchk_hook = $1; # to pass through taint check
+ }
if (-f $getchk_hook) {
require $getchk_hook;
} else {
diff --git a/img/dist/IM/IM/Recipient.pm b/img/dist/IM/IM/Recipient.pm
index e97c425e..917cd9a1 100644
--- a/img/dist/IM/IM/Recipient.pm
+++ b/img/dist/IM/IM/Recipient.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 27, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Recipient.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Recipient.pm version 20030601(IM145)";
package IM::Recipient;
require 5.003;
diff --git a/img/dist/IM/IM/Scan.pm b/img/dist/IM/IM/Scan.pm
index 07407f84..0a465a9f 100644
--- a/img/dist/IM/IM/Scan.pm
+++ b/img/dist/IM/IM/Scan.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Scan.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Scan.pm version 20030601(IM145)";
package IM::Scan;
require 5.003;
@@ -121,11 +121,13 @@ sub set_scan_form($$$) {
$JIS_SAFE= $jis_safe;
my $scan_hook = scansbr_file();
- if ($scan_hook =~ /^(\S+)$/) {
+ if ($scan_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, ScanSbr is ignored for SUID root script.\n");
} else {
- $scan_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $scan_hook = $1; # to pass through taint check
+ }
if (-f $scan_hook) {
require $scan_hook;
} else {
@@ -262,15 +264,16 @@ sub parse_body(*$) {
next if /^=2D/;
next if /^\s+[\w*-]+=/; # eg. "boundary="; * = RFC2231
next if /^\s*[\w-]+: /; # Headers and header style citation
- next if /^\s*[>:|\/_}]/; # other citation
- next if /^ /;
+ next if /^\s*[>:|\#;\/_}]/;
+ next if /^\s*[[<\/(.]+ *snip/;
+ next if /^ /;
next if /^\s*\w+([\'._-]+\w+)*>/;
next if /^\s*(On|At) .*[^.!\s\n]\s*$/;
- next if /(:|;|\/)\s*\n$/;
- next if /(wrote|writes?|said|says?)[^.!\n]?\s*\n$/;
+ next if /(:|;|\/)\s*\n$/;
+ next if /(wrote|writes?|said|says?)[^.!\n]?\s*\n$/;
next if /^This is a multi-part message in MIME format/i;
- if (/^\s*In (message|article|<|\")/i) {
+ if (/^\s*In (message|article|mail|news|<|\"|\[|\()/i) {
if ($mode == 0) {
$_ = <HANDLE>;
} else {
@@ -536,10 +539,10 @@ sub my_addr(@) {
unless (defined($ADDRESS_HASH{'init'})) {
$ADDRESS_HASH{'addr'} = addresses_regex();
unless ($ADDRESS_HASH{'addr'}) {
- $ADDRESS_HASH{'addr'} = '^' . quotemeta(address()) . '$'; #'
- $ADDRESS_HASH{'addr'} =~ s/(\\\s)*\\,(\\\s)*/\$|\^/g;
+ $ADDRESS_HASH{'addr'} = '^' . quotemeta(address()) . "\$";
+ $ADDRESS_HASH{'addr'} =~ s/(\\\s)*\\,(\\\s)*/\$|\^/g;
}
- $ADDRESS_HASH{'init'} = 1;
+ $ADDRESS_HASH{'init'} = 1;
}
return 0 if ($ADDRESS_HASH{'addr'} eq "");
foreach $addr (@addrs) {
diff --git a/img/dist/IM/IM/Smtp.pm b/img/dist/IM/IM/Smtp.pm
index 1826cf02..5b9421ca 100644
--- a/img/dist/IM/IM/Smtp.pm
+++ b/img/dist/IM/IM/Smtp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Smtp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Smtp.pm version 20030601(IM145)";
package IM::Smtp;
require 5.003;
diff --git a/img/dist/IM/IM/Ssh.pm b/img/dist/IM/IM/Ssh.pm
index cbdbb3c6..b997992d 100644
--- a/img/dist/IM/IM/Ssh.pm
+++ b/img/dist/IM/IM/Ssh.pm
@@ -6,10 +6,10 @@
### Author: Masatoshi Tsuchiya <tsuchiya@pine.kuee.kyoto-u.ac.jp>
### Internet Message Group <img@mew.org>
### Created: Oct 05, 1999
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Ssh.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Ssh.pm version 20030601(IM145)";
package IM::Ssh;
require 5.003;
diff --git a/img/dist/IM/IM/Stdio.pm b/img/dist/IM/IM/Stdio.pm
index 645f1c0d..bae416ea 100644
--- a/img/dist/IM/IM/Stdio.pm
+++ b/img/dist/IM/IM/Stdio.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: May 7, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Stdio.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Stdio.pm version 20030601(IM145)";
package IM::Stdio;
require 5.003;
diff --git a/img/dist/IM/IM/TcpTransaction.pm b/img/dist/IM/IM/TcpTransaction.pm
index b0ee4b32..051cfc73 100644
--- a/img/dist/IM/IM/TcpTransaction.pm
+++ b/img/dist/IM/IM/TcpTransaction.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::TcpTransaction.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::TcpTransaction.pm version 20030601(IM145)";
package IM::TcpTransaction;
require 5.003;
diff --git a/img/dist/IM/IM/Util.pm b/img/dist/IM/IM/Util.pm
index 90c98b89..1591eacd 100644
--- a/img/dist/IM/IM/Util.pm
+++ b/img/dist/IM/IM/Util.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Util.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Util.pm version 20030601(IM145)";
package IM::Util;
require 5.003;
@@ -262,9 +262,13 @@ sub flush(*) {
#
sub im_open($$) {
- my($d, $a) = @_;
+ my($d, $f) = @_;
my($r);
- if ($r = open($d, $a)) {
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
+ if ($r = open($d, $f)) {
binmode($d);
}
return $r;
@@ -273,6 +277,10 @@ sub im_open($$) {
sub im_sysopen($$$) {
my($d, $f, $a) = @_;
my($r);
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
if ($r = sysopen($d, $f, $a)) {
binmode($d);
}
diff --git a/img/dist/IM/cnf.im/SiteConfig.in b/img/dist/IM/cnf.im/SiteConfig.in
index ab27dc8b..22a3c1d6 100644
--- a/img/dist/IM/cnf.im/SiteConfig.in
+++ b/img/dist/IM/cnf.im/SiteConfig.in
@@ -131,14 +131,21 @@ NoSync=@im_nosync@ # Do not need fsync(2) on writing file
#UsePwFiles=yes # use password files
#PwFiles=password # password files (relative to ~/.im/)
+#MailFoldersFile=~/Mail/.folders
+
#UseTouchFile=yes # use time-stamp file
#TouchFile=.mew-touch # time-stamp file for message folders
+
#NamazuV2=yes # use Namazu version 2 (1.9.x or late)
+#NamazuDir=Namazu # relative to ~/
#NamazuLockDir=nmzlock # lock directory (relative to ~/.im/)
+#MknmzIncludeFile=~/Namazu/mknmz-inc.pl # mknmz -I <file>
+#MknmzIgnoreFoldersRegex=\+(attach|draft|trash|queue|postq|schedule)
## imput specific
#FccDir=$MailDir # directory for FCC folders
#QueueDir=queue # directory for to store messages to be sent
+#UseXDispatcher=yes # use X-Dispatcher field
#MsgIdDomain=${HOST} # if you want to use FQDN of dispatching host
#ObeyMTAdomain=yes # do not append domainpart to addresses by imput
#NoMsgIdForNews=yes # do not insert Message-Id: when posting as news
diff --git a/img/dist/IM/dot.im/Config b/img/dist/IM/dot.im/Config
index 80044561..a7d0fd4d 100644
--- a/img/dist/IM/dot.im/Config
+++ b/img/dist/IM/dot.im/Config
@@ -136,14 +136,21 @@ ToDomain=_domain_when_domain_part_is_omitted_
#UsePwFiles=yes # use password files
#PwFiles=password # password files (relative to ~/.im/)
+#MailFoldersFile=~/Mail/.folders
+
#UseTouchFile=yes # use time-stamp file
#TouchFile=.mew-touch # time-stamp file for message folders
+
#NamazuV2=yes # use Namazu version 2 (1.9.x or late)
+#NamazuDir=Namazu # relative to ~/
#NamazuLockDir=nmzlock # lock directory (relative to ~/.im/)
+#MknmzIncludeFile=~/Namazu/mknmz-inc.pl # mknmz -I <file>
+#MknmzIgnoreFoldersRegex=\+(attach|draft|trash|queue|postq|schedule)
## imput specific
#FccDir=$MailDir # directory for FCC folders
#QueueDir=queue # directory for to store messages to be sent
+#UseXDispatcher=yes # use X-Dispatcher field
#MsgIdDomain=${HOST} # if you want to use FQDN of dispatching host
#ObeyMTAdomain=yes # do not append domainpart to addresses by imput
#NoMsgIdForNews=yes # do not insert Message-Id: when posting as news
diff --git a/img/dist/IM/imali.in b/img/dist/IM/imali.in
index b86b23b0..16a27edf 100644
--- a/img/dist/IM/imali.in
+++ b/img/dist/IM/imali.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imali version 20030322(IM144)";
+my $VERSION = "imali version 20030601(IM145)";
$Prog = 'imali';
@@ -37,7 +37,7 @@ use vars qw($Prog $EXPLANATION @OptConfig
$EXPLANATION = "$VERSION
display aliases for mail/news address
-Usage: $Prog [OPTIONS] [TARGETS ...]
+Usage: $Prog [OPTIONS] [TARGETS...]
";
@OptConfig = (
@@ -109,7 +109,7 @@ imali - display aliases for mail/news address
=head1 SYNOPSIS
-B<imali> [OPTIONS] [TARGETS ...]
+B<imali> [OPTIONS] [TARGETS...]
=head1 DESCRIPTION
diff --git a/img/dist/IM/imcat.in b/img/dist/IM/imcat.in
index f7353d9b..02df650d 100644
--- a/img/dist/IM/imcat.in
+++ b/img/dist/IM/imcat.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: May 5, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imcat version 20030322(IM144)";
+my $VERSION = "imcat version 20030601(IM145)";
$Prog = 'imcat';
diff --git a/img/dist/IM/imcd.in b/img/dist/IM/imcd.in
index 09370343..104a2ad8 100644
--- a/img/dist/IM/imcd.in
+++ b/img/dist/IM/imcd.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imcd version 20030322(IM144)";
+my $VERSION = "imcd version 20030601(IM145)";
$Prog = 'imcd';
diff --git a/img/dist/IM/imclean.in b/img/dist/IM/imclean.in
index 66235703..874b03bb 100644
--- a/img/dist/IM/imclean.in
+++ b/img/dist/IM/imclean.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imclean version 20030322(IM144)";
+my $VERSION = "imclean version 20030601(IM145)";
$Prog = 'imclean';
@@ -125,7 +125,7 @@ sub imclean($@) {
$set = imap_range2set($HANDLE, @msgs);
}
- print "unlinking msgs in $folder ... " unless ($opt_noharm || $opt_quiet);
+ print "unlinking msgs in $folder..." unless ($opt_noharm || $opt_quiet);
print "\n" if $opt_verbose;
flush('STDOUT') unless $opt_noharm;
diff --git a/img/dist/IM/imget.in b/img/dist/IM/imget.in
index 30e36a57..e8159c76 100644
--- a/img/dist/IM/imget.in
+++ b/img/dist/IM/imget.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jan 14, 1996
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imget version 20030322(IM144)";
+my $VERSION = "imget version 20030601(IM145)";
$Prog = 'imget';
@@ -68,7 +68,7 @@ Usage: $Prog [OPTIONS]
# 'thread;b;;' => 'Make threads',
# 'indent;i;;' => "Width of thread indent",
'lock;s;flock;' => 'Local mailbox locking style. (none,flock,file)',
- 'rpath;s;append;' => "conversion of UNIX From line into Return-Path:\n" .
+ 'rpath;s;append;' => "Conversion of UNIX From line into Return-Path:\n" .
"\t\t(append, ignore, replace)",
'keep;i;0;' => "Preserve messages.\n" .
"\t\t(POP: in days; 0=delete immediately, -1=preserve forever)\n" .
@@ -298,7 +298,7 @@ Default value is "flock".
=item I<-r, --rpath=STRING>
-conversion of UNIX From line into Return-Path: (append, ignore, replace).
+Conversion of UNIX From line into Return-Path: (append, ignore, replace).
Default value is "append".
=item I<-k, --keep=NUM>
diff --git a/img/dist/IM/imgrep.in b/img/dist/IM/imgrep.in
index 4a26f6ba..2b0dc42d 100644
--- a/img/dist/IM/imgrep.in
+++ b/img/dist/IM/imgrep.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imgrep version 20030322(IM144)";
+my $VERSION = "imgrep version 20030601(IM145)";
$Prog = 'imgrep';
diff --git a/img/dist/IM/imhist.in b/img/dist/IM/imhist.in
index b74f10ea..d31fb5be 100644
--- a/img/dist/IM/imhist.in
+++ b/img/dist/IM/imhist.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 6, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imhist version 20030322(IM144)";
+my $VERSION = "imhist version 20030601(IM145)";
$Prog = 'imhist';
diff --git a/img/dist/IM/imhsync.in b/img/dist/IM/imhsync.in
index f428a9a8..655974ab 100644
--- a/img/dist/IM/imhsync.in
+++ b/img/dist/IM/imhsync.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 02, 1998
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imhsync version 20030322(IM144)";
+my $VERSION = "imhsync version 20030601(IM145)";
$Prog = 'imhsync';
diff --git a/img/dist/IM/imjoin.in b/img/dist/IM/imjoin.in
index c8763169..f28463fb 100644
--- a/img/dist/IM/imjoin.in
+++ b/img/dist/IM/imjoin.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: May 5, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imjoin version 20030322(IM144)";
+my $VERSION = "imjoin version 20030601(IM145)";
$Prog = 'imjoin';
diff --git a/img/dist/IM/imls.in b/img/dist/IM/imls.in
index 9aa11b1e..de081efe 100644
--- a/img/dist/IM/imls.in
+++ b/img/dist/IM/imls.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Dec 31, 1995
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imls version 20030322(IM144)";
+my $VERSION = "imls version 20030601(IM145)";
$Prog = 'imls';
diff --git a/img/dist/IM/immknmz.in b/img/dist/IM/immknmz.in
index 6882f500..21fa9bfd 100644
--- a/img/dist/IM/immknmz.in
+++ b/img/dist/IM/immknmz.in
@@ -2,12 +2,11 @@
################################################################
###
### immknmz
-### "mew-nmz-mknmz-all-folders" (in mew-nmz.el)
###
### Author: Shuichi Kitaguchi <kit@Mew.org>
### Internet Message Group <img@mew.org>
### Created: Sep 23, 1999
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -15,37 +14,29 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "immknmz version 20030322(IM144)";
+my $VERSION = "immknmz version 20030601(IM145)";
$Prog = 'immknmz';
-###
-### Modify these variables if you need.
-###
-my $nmzdir = "Namazu"; # "~/$nmzdir"
-my $mknmz_include = "mknmz-inc.pl"; # mknmz -I <file>
-my @ignorefolders = ("draft", "trash", "schedule", "queue",);
-
-
-# Code:
-
use IM::Config;
use IM::Util;
use IM::Folder;
use IO::File;
use strict;
-use vars qw($Prog $EXPLANATION @OptConfig $opt_help $opt_gcnmz $opt_verbose $opt_timestamp);
+use vars qw($Prog $EXPLANATION @OptConfig $opt_help $opt_verbose
+ @opt_src $opt_gcnmz $opt_timestamp);
$EXPLANATION = "$VERSION
-make namazu index for mail/news folders
+make namazu index for mail folders
-Usage: $Prog [OPTIONS]
+Usage: $Prog [OPTIONS] [FOLDERS]
";
@OptConfig = (
+ 'src;F@;;' => 'Set source folders. (Mail/.folders file is used by default)',
'gcnmz;b;;' => "Use gcnmz after mknmz (Garbage Collection for Namazu index).",
- 'verbose;b;;' => "With verbose messages.",
'timestamp;b;;' => "Use checking time stamp.",
+ 'verbose;b;;' => "With verbose messages.",
'help;b;;' => "Show this message.",
);
@@ -54,47 +45,31 @@ read_cfg();
read_opt(\@ARGV);
help($EXPLANATION) && exit $EXIT_SUCCESS if $opt_help;
-sub get_mtime {
- my($path) = @_;
- my($dev,$ino,$mode,$nlink,$uid,$gid,
- $rdev,$size,$atime,$mtime,$ctime,
- $blksize,$blocks) = stat($path) or return -1;
- return $mtime;
-}
-
my $lockdir = namazu_lock_path();
if ($lockdir) {
unless (mkdir($lockdir, 0700)) {
print STDERR "$Prog: can not create lock directory: $lockdir.\n";
+ $lockdir = "";
exit $EXIT_ERROR;
}
}
-sub unlock_exit($) {
- my($status) = @_;
- rmdir $lockdir if $lockdir;
- exit $status;
+END {
+ if ($lockdir && -d $lockdir) {
+ rmdir $lockdir;
+ }
}
-my $mailpath = mail_path()."/";
-my $namazupath = home_dir()."/$nmzdir/".mail_dir()."/";
+my $mailpath = mail_path() . "/";
+my $namazupath = namazu_path() . "/" . mail_dir() . "/";
+my $mknmz_incfile = mknmz_include_file();
+if (! -f $mknmz_incfile) {
+ $mknmz_incfile = "";
+}
my $mknmz_args = "-q";
+$mknmz_args = "" if $opt_verbose;
-my $incfile = home_dir()."/$nmzdir/$mknmz_include";
-if (! -f $incfile) {
- $incfile = "";
-}
-my $folderspath = $mailpath."/.folders";
-my $msgfolder;
-my $msgdir;
-my $flag;
-my $nmzfolder;
-my $gcnmztgt;
-my $ret;
-my @filelist;
my $tempdir;
my $tempfile;
-my $timestamp;
-
$tempdir = $ENV{TMPDIR} || $ENV{TEMP} || $ENV{TMP} || '/tmp';
$tempdir =~ s:\\:/:g;
$tempdir =~ s/\/+$//;
@@ -102,133 +77,188 @@ $tempdir = sprintf("%s/immknmz-%d-%d", $tempdir, $$, time());
rmdir $tempdir;
unless (mkdir($tempdir, 0700)) {
print STDERR "$Prog: can not create directory: $tempdir.\n";
- unlock_exit($EXIT_ERROR);
+ $tempdir = "";
+ exit($EXIT_ERROR);
}
$tempfile = "$tempdir/tempfile";
+END {
+ if ($tempfile && -f $tempfile) {
+ unlink $tempfile;
+ }
+ if ($tempdir && -d $tempdir) {
+ rmdir $tempdir;
+ }
+}
-$mknmz_args = "" if $opt_verbose;
+my $use_dosish_path = ((&win95p() || &os2p()) && !&namazuv2());
-im_open(\*FILE, "<$folderspath");
-while (<FILE>) {
- s/\r$// if &win95p() || &os2p();
- chomp;
- $msgfolder = $_;
- $flag = 0;
- foreach (@ignorefolders) {
- if ($msgfolder !~ /^\+/) { # ! local folder
- $flag=1;
- last;
- } elsif ($msgfolder =~ /^\+$_/) { # == @ignorefolders
- $flag=1;
- last;
- }
+sub get_mtime($) {
+ my($path) = @_;
+ my($dev, $ino, $mode, $nlink, $uid, $gid,
+ $rdev, $size, $atime, $mtime, $ctime,
+ $blksize, $blocks) = stat($path) or return -1;
+ return $mtime;
+}
+
+sub make_folder_index($) {
+ my($msgfld) = @_;
+ my($msgfolder, $msgdir, $nmzfolder, $gcnmztgt, $ret, $timestamp, @filelist);
+
+ $msgfolder = $msgfld;
+ $msgfolder =~ s/^\+/$mailpath/g;
+ $msgdir = $msgfolder;
+ if ($use_dosish_path) {
+ $msgfolder =~ s:/:\\:g;
}
- if ($flag != 0) {
- print "skipping $msgfolder...\n";
- flush('STDOUT');
- } else {
- $nmzfolder = $msgfolder;
- $msgfolder =~ s/^\+/$mailpath/g;
- $msgdir = $msgfolder;
- $nmzfolder =~ s/^\+/$namazupath/g;
-
- $timestamp = "$nmzfolder/NMZ.stamp";
- if ($opt_timestamp) {
- my $foldermtime;
- if (&usetouchfile() && -r $msgfolder . "/" . &touchfile()) {
- $foldermtime = get_mtime($msgfolder . "/" . &touchfile());
- } else {
- $foldermtime = get_mtime("$msgfolder");
- }
- if ($foldermtime < get_mtime("$timestamp")) {
- print "index of $msgfolder may be up to date.\n" if $opt_verbose;
- flush('STDOUT');
- next;
- }
- }
- im_open(\*STAMP,">$timestamp.new");
- print STAMP "touched by IM.";
- close(STAMP);
-
- opendir(DIR,$msgfolder);
- @filelist = grep(/^[0-9]*$/ && -f "$msgfolder/$_",readdir(DIR));
- closedir(DIR);
-
- if ((&win95p() || &os2p()) && !&namazuv2()) {
- $msgfolder =~ s:/:\\:g;
+
+ $nmzfolder = $msgfld;
+ $nmzfolder =~ s/^\+/$namazupath/g;
+
+ $timestamp = "$nmzfolder/NMZ.stamp";
+ if ($opt_timestamp) {
+ my $foldermtime;
+ if (&usetouchfile() && -r $msgdir . "/" . &touchfile()) {
+ $foldermtime = get_mtime($msgdir . "/" . &touchfile());
+ } else {
+ $foldermtime = get_mtime("$msgdir");
}
+ if (-r $timestamp && $foldermtime < get_mtime("$timestamp")) {
+ print "index of $msgdir may be up to date.\n" if $opt_verbose;
+ flush('STDOUT');
+ return;
+ }
+ }
+ create_folder($nmzfolder);
+ if (im_open(\*STAMP, ">$timestamp.new")) {
+ print STAMP "touched by IM.";
+ close(STAMP);
+ }
- if (scalar(@filelist) > 0) {
- unless (sysopen(\*TEMPFILE, "$tempfile",
- O_RDWR()|O_CREAT()|O_EXCL(), 0600)) {
- print STDERR "$Prog: can not create file: $tempfile.\n";
- unlock_exit($EXIT_ERROR);
- }
- binmode(\*TEMPFILE);
- foreach (@filelist) {
- if (! -d "$msgdir/$_") {
- if ((&win95p() || &os2p()) && !&namazuv2()) {
- print TEMPFILE "$msgfolder\\$_\n";
- } else {
- print TEMPFILE "$msgfolder/$_\n";
- }
+ opendir(DIR, $msgdir);
+ @filelist = grep(/^[0-9]*$/ && -f "$msgdir/$_", readdir(DIR));
+ closedir(DIR);
+
+ if (scalar(@filelist) > 0) {
+ unless (sysopen(\*TEMPFILE, "$tempfile",
+ O_RDWR()|O_CREAT()|O_EXCL(), 0600)) {
+ print STDERR "$Prog: can not create file: $tempfile.\n";
+ exit($EXIT_ERROR);
+ }
+ binmode(\*TEMPFILE);
+ foreach (@filelist) {
+ if (! -d "$msgdir/$_") {
+ if ($use_dosish_path) {
+ print TEMPFILE "$msgfolder\\$_\n";
+ } else {
+ print TEMPFILE "$msgfolder/$_\n";
}
}
- close(TEMPFILE);
+ }
+ close(TEMPFILE);
- create_folder($nmzfolder);
+ print "$Prog: processing $msgfolder...\n";
+ flush('STDOUT');
+ if ($mknmz_incfile eq "") {
+ $ret = system "mknmz -Uh $mknmz_args -O $nmzfolder -F $tempfile";
+ } else {
+ $ret = system "mknmz -Uh $mknmz_args -O $nmzfolder -F $tempfile -I $mknmz_incfile";
+ }
+ unlink $tempfile;
+ if ($ret == 2) {
+ print "$Prog: abort.\n";
+ flush('STDOUT');
+ last;
+ } elsif ($opt_gcnmz) {
$gcnmztgt = "$nmzfolder" . "/NMZ";
-
- print "$Prog: processing $msgfolder ...\n";
- flush('STDOUT');
- if ($incfile eq "") {
- $ret = system "mknmz -Uh $mknmz_args -O $nmzfolder -F $tempfile";
+ print "$Prog: gcnmz $msgfolder...\n" if $opt_verbose;
+ flush('STDOUT');
+ if (&namazuv2()) {
+ system "gcnmz --no-backup --quiet $gcnmztgt";
} else {
- $ret = system "mknmz -Uh $mknmz_args -O $nmzfolder -F $tempfile -I $incfile";
- }
- unlink $tempfile;
- if ($ret == 2) {
- print "$Prog: abort.\n";
- flush('STDOUT');
- last;
- } elsif ($opt_gcnmz) {
- print "$Prog: gcnmz $msgfolder ...\n" if $opt_verbose;
- flush('STDOUT');
- if (&namazuv2()) {
- system "gcnmz --no-backup --quiet $gcnmztgt";
- } else {
- system "gcnmz $gcnmztgt";
- opendir(DIR,$nmzfolder);
- @filelist = grep(/^.*.BAK$/ && -f "$nmzfolder/$_",readdir(DIR));
- closedir(DIR);
- if (scalar(@filelist) > 0) {
- foreach (@filelist) {
- unlink "$nmzfolder" . "/$_";
- }
+ system "gcnmz $gcnmztgt";
+ opendir(DIR, $nmzfolder);
+ @filelist = grep(/^.*.BAK$/ && -f "$nmzfolder/$_",
+ readdir(DIR));
+ closedir(DIR);
+ if (scalar(@filelist) > 0) {
+ foreach (@filelist) {
+ unlink "$nmzfolder" . "/$_";
}
}
}
}
- rename("$timestamp.new", "$timestamp");
+ }
+ if (-f "$timestamp.new") {
+ rename("$timestamp.new", "$timestamp");
}
}
-close(FILE);
-rmdir $tempdir;
-unlock_exit($EXIT_SUCCESS);
+
+my %IGNORED_FOLDERS_HASH = ();
+
+sub is_ignored_folder($) {
+ my($fld) = @_;
+ if ($fld !~ /^\+/) {
+ return 1;
+ }
+ unless (defined($IGNORED_FOLDERS_HASH{'init'})) {
+ $IGNORED_FOLDERS_HASH{'fld'} = mknmz_ignore_folders_regex();
+ $IGNORED_FOLDERS_HASH{'init'} = 1;
+ }
+ if ($IGNORED_FOLDERS_HASH{'fld'} eq "") {
+ return 0;
+ }
+ if ($fld =~ /$IGNORED_FOLDERS_HASH{'fld'}/o) {
+ return 1;
+ }
+ return 0;
+}
+
+if (@opt_src) { # folders specified by the --src option
+ my $fld;
+ foreach $fld (@opt_src) {
+ if ($fld !~ /^\+/) {
+ print "skipping $fld...\n" if $opt_verbose;
+ flush('STDOUT');
+ } else {
+ make_folder_index($fld);
+ }
+ }
+} else { # all folders
+ my $flds_file = mail_folders_file();
+ my $fld;
+
+ im_open(\*FILE, "<$flds_file");
+ while (<FILE>) {
+ s/\r$// if &win95p() || &os2p();
+ chomp;
+ $fld = $_;
+ if (is_ignored_folder($fld)) {
+ print "skipping $fld...\n" if $opt_verbose;
+ flush('STDOUT');
+ } else {
+ make_folder_index($fld);
+ }
+ }
+ close(FILE);
+}
+exit($EXIT_SUCCESS);
__END__
=head1 NAME
-immknmz - make namazu index for mail/news folders
+immknmz - make namazu index for mail folders
=head1 SYNOPSIS
-B<immknmz> [OPTIONS]
+B<immknmz> [OPTIONS] [FOLDERS]
=head1 DESCRIPTION
-The I<immknmz> command makes namazu index for mail/news folders.
+The I<immknmz> command makes namazu index for mail folders.
+
+Folders contained by the ~/Mail/.folders file are used by default.
+If you want to specify the folders, use the `--src' option.
This command is provided by IM (Internet Message).
@@ -236,6 +266,11 @@ This command is provided by IM (Internet Message).
=over 5
+=item I<-s, --src=FOLDER,FOLDER...>
+
+Set source folders.
+"--src=+xxx" is equivalent to "+xxx".
+
=item I<-g, --gcnmz={on,off}>
Use gcnmz after mknmz (Garbage Collection for Namazu index).
diff --git a/img/dist/IM/immv.in b/img/dist/IM/immv.in
index 8fc34a10..710bd2d1 100644
--- a/img/dist/IM/immv.in
+++ b/img/dist/IM/immv.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "immv version 20030322(IM144)";
+my $VERSION = "immv version 20030601(IM145)";
$Prog = 'immv';
diff --git a/img/dist/IM/impack.in b/img/dist/IM/impack.in
index cd98365a..116ee61a 100644
--- a/img/dist/IM/impack.in
+++ b/img/dist/IM/impack.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "impack version 20030322(IM144)";
+my $VERSION = "impack version 20030601(IM145)";
$Prog = 'impack';
@@ -79,7 +79,7 @@ sub impack($) {
my @paths = get_impath($folder, 'all');
- print "packing messages in $opt_src ... " unless $opt_noharm;
+ print "packing messages in $opt_src..." unless $opt_noharm;
flush('STDOUT') unless $opt_noharm;
foreach (@paths) {
diff --git a/img/dist/IM/impath.in b/img/dist/IM/impath.in
index 5cec8cc4..bb616af9 100644
--- a/img/dist/IM/impath.in
+++ b/img/dist/IM/impath.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "impath version 20030322(IM144)";
+my $VERSION = "impath version 20030601(IM145)";
$Prog = 'impath';
diff --git a/img/dist/IM/imput.in b/img/dist/IM/imput.in
index 8e64653c..b1368329 100644
--- a/img/dist/IM/imput.in
+++ b/img/dist/IM/imput.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Aug 31, 1995
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-$VERSION = "imput version 20030322(IM144)";
+$VERSION = "imput version 20030601(IM145)";
$Prog = 'imput';
@@ -656,7 +656,9 @@ help($EXPLANATION) && exit $EXIT_SUCCESS if $Help;
# }
##### FINAL HEADER PROCESSING #####
- &add_header(\@Header, 1, 'X-'.$Resend_prefix.'Dispatcher', $VERSION);
+ if (use_xdispatcher()) {
+ &add_header(\@Header, 1, 'X-'.$Resend_prefix.'Dispatcher', $VERSION);
+ }
&kill_header(\@Header, 'Bcc', 0);
&kill_header(\@Header, 'Dcc', 0);
&kill_header(\@Header, 'Fcc', 0);
@@ -1738,7 +1740,7 @@ sub process_queue {
rename("$queue_dir/$q.wrk", "$queue_dir/$q");
return;
}
- im_notice("processing $queue_dir/$q.wrk ...\n");
+ im_notice("processing $queue_dir/$q.wrk...\n");
while (<QUEUE>) {
chomp;
last if (/^$/);
diff --git a/img/dist/IM/impwagent.in b/img/dist/IM/impwagent.in
index bcaef6e0..782514b3 100644
--- a/img/dist/IM/impwagent.in
+++ b/img/dist/IM/impwagent.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Sep 13, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "impwagent version 20030322(IM144)";
+my $VERSION = "impwagent version 20030601(IM145)";
$Prog = 'impwagent';
diff --git a/img/dist/IM/imrm.in b/img/dist/IM/imrm.in
index d5c87d57..be302a41 100644
--- a/img/dist/IM/imrm.in
+++ b/img/dist/IM/imrm.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imrm version 20030322(IM144)";
+my $VERSION = "imrm version 20030601(IM145)";
$Prog = 'imrm';
diff --git a/img/dist/IM/imsetup.in b/img/dist/IM/imsetup.in
index e4ba57df..5ec40645 100644
--- a/img/dist/IM/imsetup.in
+++ b/img/dist/IM/imsetup.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: May 9, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imsetup version 20030322(IM144)";
+my $VERSION = "imsetup version 20030601(IM145)";
$Prog = 'imsetup';
@@ -477,14 +477,21 @@ keep=$keep
#UsePwFiles=yes # use password files
#PwFiles=password # password files (relative to ~/.im/)
+#MailFoldersFile=~/Mail/.folders
+
#UseTouchFile=yes # use time-stamp file
#TouchFile=.mew-touch # time-stamp file for message folders
+
#NamazuV2=yes # use Namazu version 2 (1.9.x or late)
+#NamazuDir=Namazu # relative to ~/
#NamazuLockDir=nmzlock # lock directory (relative to ~/.im/)
+#MknmzIncludeFile=~/Namazu/mknmz-inc.pl # mknmz -I <file>
+#MknmzIgnoreFoldersRegex=\+(attach|draft|trash|queue|postq|schedule)
## imput specific
#FccDir=\$MailDir # directory for FCC folders
#QueueDir=queue # directory for to store messages to be sent
+#UseXDispatcher=yes # use X-Dispatcher field
#MsgIdDomain=\${HOST} # if you want to use FQDN of dispatching host
#ObeyMTAdomain=yes # do not append domainpart to addresses by imput
#NoMsgIdForNews=yes # do not insert Message-Id: when posting as news
diff --git a/img/dist/IM/imsort.in b/img/dist/IM/imsort.in
index 08e52a87..70d34aad 100644
--- a/img/dist/IM/imsort.in
+++ b/img/dist/IM/imsort.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 2, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imsort version 20030322(IM144)";
+my $VERSION = "imsort version 20030601(IM145)";
$Prog = 'imsort';
diff --git a/img/dist/IM/imstore.in b/img/dist/IM/imstore.in
index 4a3c58e0..98c00409 100644
--- a/img/dist/IM/imstore.in
+++ b/img/dist/IM/imstore.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Dec 31, 1995
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imstore version 20030322(IM144)";
+my $VERSION = "imstore version 20030601(IM145)";
$Prog = 'imstore';
diff --git a/img/dist/IM/imtar.in b/img/dist/IM/imtar.in
index dbb483a1..ebb7a04d 100644
--- a/img/dist/IM/imtar.in
+++ b/img/dist/IM/imtar.in
@@ -5,7 +5,7 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 08, 1998
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
BEGIN {
@@ -13,7 +13,7 @@ BEGIN {
@im_src_siteperl@
};
-my $VERSION = "imtar version 20030322(IM144)";
+my $VERSION = "imtar version 20030601(IM145)";
$Prog = 'imtar';
diff --git a/img/lib/IM/Address.pm b/img/lib/IM/Address.pm
index b63bc800..3e62e691 100644
--- a/img/lib/IM/Address.pm
+++ b/img/lib/IM/Address.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Address.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Address.pm version 20030601(IM145)";
package IM::Address;
require 5.003;
diff --git a/img/lib/IM/Alias.pm b/img/lib/IM/Alias.pm
index 04a50a9f..e5a10a03 100644
--- a/img/lib/IM/Alias.pm
+++ b/img/lib/IM/Alias.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Alias.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Alias.pm version 20030601(IM145)";
package IM::Alias;
require 5.003;
diff --git a/img/lib/IM/Config.pm.in b/img/lib/IM/Config.pm.in
index 7045bda6..85753676 100644
--- a/img/lib/IM/Config.pm.in
+++ b/img/lib/IM/Config.pm.in
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Config.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Config.pm version 20030601(IM145)";
package IM::Config;
require 5.003;
@@ -33,7 +33,7 @@ use vars qw(@ISA @EXPORT);
inbox_folder draft_folder trash_folder config_cases config_case_inbox
preserve_dot
folder_mode msg_mode allowcrlf use_cl no_sync fsync_no preferred_fsync_no
- addrbook_file aliases_file petname_file
+ addrbook_file aliases_file petname_file mail_folders_file
context_file getchksbr_file getsbr_file scansbr_file scan_header_pick
address addresses_regex
msgdbfile msgdbtype
@@ -41,7 +41,9 @@ use vars qw(@ISA @EXPORT);
nntpservers nntphistoryfile nntpauthuser set_nntpauthuser
popaccount pophistoryfile imapaccount httpproxy noproxy
usepwagent pwagentport pwagent_tmp_dir pwagent_tmp_path usepwfiles pwfiles
- expand_path usetouchfile touchfile namazuv2 namazu_lock_dir namazu_lock_path
+ expand_path use_xdispatcher usetouchfile touchfile
+ namazuv2 namazu_dir namazu_path namazu_lock_dir namazu_lock_path
+ mknmz_include_file mknmz_ignore_folders_regex
pop_timeout imap_timeout nntp_timeout dns_timeout
connect_timeout command_timeout rcv_buf_siz
db_type file_attr ssh_path);
@@ -114,6 +116,8 @@ BEGIN {
'addrbookfile;s;;AddrBookFile' => 'Address book file',
'aliasesfile;s;;AliasesFile' => 'Aliases file',
'petnamefile;s;;PetNameFile' => 'PetName file',
+ 'petnamefile;s;;PetNameFile' => 'PetName file',
+ 'mailfoldersfile;s;;MailFoldersFile' => 'Mail folders file',
'contextfile;s;Context;ContextFile' => 'Context file',
'address;s;;Address' => 'Email addresses',
'addrregex;s;;AddrRegex' => 'Email addresses by regex',
@@ -144,10 +148,14 @@ BEGIN {
'connecttimeout;i;60;ConnectTimeout' => 'Timeout for connection making',
'commandtimeout;i;300;CommandTimeout' => 'Timeout for each command',
'rcvbufsiz;i;;RcvBufSiz' => 'Receive buffer size of TCP',
+ 'usexdispatcher;b;;UseXDispatcher' => 'Use X-Dispatcher field',
'usetouchfile;b;;UseTouchFile' => 'Use touch file',
'touchfile;s;;TouchFile' => 'Touch file name',
- 'namazuv2;b;;NamazuV2' => 'Use Namazu Version 2',
- 'namazulockdir;s;;NamazuLockDir' => 'Lock directory for immknmz',
+ 'namazuv2;b;;NamazuV2' => 'Use Namazu Version 2 (1.9 or late)',
+ 'namazudir;s;;NamazuDir' => 'A directory to contain Namazu indexes',
+ 'namazulockdir;s;;NamazuLockDir' => 'Lock directory for Namazu',
+ 'mknmzincludefile;s;;MknmzIncludeFile' => 'A file for mknmz -I',
+ 'mknmzignorefoldersregex;s;;MknmzIgnoreFoldersRegex' => 'Folders regex ignored by immknmz',
);
# these vars should be in current package?
@@ -841,6 +849,10 @@ sub petname_file() {
return &expand_path($PetNameFile);
}
+sub mail_folders_file() {
+ return &expand_path($MailFoldersFile);
+}
+
sub address() {
return $Address;
}
@@ -921,6 +933,10 @@ sub pwfiles() {
return $PwFiles;
}
+sub use_xdispatcher() {
+ return $UseXDispatcher;
+}
+
sub usetouchfile() {
return $UseTouchFile;
}
@@ -969,6 +985,22 @@ sub namazuv2() {
return $NamazuV2;
}
+sub namazu_dir() {
+ return $NamazuDir;
+}
+
+sub namazu_path() {
+ return expand_home(namazu_dir());
+}
+
+sub mknmz_include_file() {
+ return &expand_path($MknmzIncludeFile);
+}
+
+sub mknmz_ignore_folders_regex() {
+ return $MknmzIgnoreFoldersRegex;
+}
+
sub namazu_lock_dir() {
return $NamazuLockDir;
}
@@ -1055,12 +1087,14 @@ ContextFile=Context # relative to ~/.im/
# folders
Src=$InboxFolder # default source of most commands
Imclean.Src=$TrashFolder # default source for message cleanups
+Immknmz.Src= # folders specified by Mail/.folders are used
#Imget.dst=$InboxFolder # default inbox folder
Imrm.dst=$TrashFolder # default trash folder
# mail address aliases for imali/imput
AddrBookFile=Addrbook # relative to ~/.im/
AliasesFile=Aliases # relative to ~/.im/
#PetnameFile=Petnames # relative to ~/.im/
+MailFoldersFile=~/Mail/.folders
UseTouchFile=off
TouchFile=.mew-touch
# imget/imls
@@ -1077,6 +1111,7 @@ NntpServers=localhost # default server for NNTP
# imput
FccDir=$MailDir
QueueDir=queue # relative to ~/.im/
+UseXDispatcher=on # use X-Dispatcher field
# imget
Imget.Src=local # default source of imget (local mailbox)
PopHistory=pophist-{POPSERVERID} # to save last state (relative to ~/.im/)
@@ -1085,7 +1120,10 @@ NntpHistory=newshist # to save last state (relative to ~/.im/)
PwAgentTmpDir=pwagtmp # temporary directory (relative to ~/.im/)
# namazu
NamazuV2=off # use Namazu version 2 (1.9.x or late)
+NamazuDir=Namazu # relative to ~/
NamazuLockDir=nmzlock # lock directory (relative to ~/.im/)
+MknmzIncludeFile=~/Namazu/mknmz-inc.pl # mknmz -I <file>
+MknmzIgnoreFoldersRegex=\+(attach|draft|trash|queue|postq|schedule)
__END__
=head1 NAME
@@ -1108,7 +1146,7 @@ mail_dir mail_path news_dir news_path queue_dir queue_path
inbox_folder draft_folder trash_folder config_cases config_case_inbox
preserve_dot
folder_mode msg_mode allowcrlf use_cl no_sync fsync_no preferred_fsync_no
-addrbook_file aliases_file petname_file
+addrbook_file aliases_file petname_file mail_folders_file
context_file getchksbr_file getsbr_file scansbr_file scan_header_pick
address addresses_regex
msgdbfile msgdbtype
@@ -1116,7 +1154,9 @@ mbox_style
nntpservers nntphistoryfile nntpauthuser set_nntpauthuser
popaccount pophistoryfile imapaccount httpproxy noproxy
usepwagent pwagentport pwagent_tmp_dir pwagent_tmp_path usepwfiles pwfiles
-expand_path usetouchfile touchfile namazuv2 namazu_lock_dir namazu_lock_path
+expand_path use_xdispatcher usetouchfile touchfile
+namazuv2 namazu_dir namazu_path namazu_lock_dir namazu_lock_path
+mknmz_include_file mknmz_ignore_folders_regex
pop_timeout imap_timeout nntp_timeout dns_timeout
connect_timeout command_timeout rcv_buf_siz
db_type file_attr ssh_path
diff --git a/img/lib/IM/EncDec.pm b/img/lib/IM/EncDec.pm
index 713a638a..eb39ae46 100644
--- a/img/lib/IM/EncDec.pm
+++ b/img/lib/IM/EncDec.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::EncDec.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::EncDec.pm version 20030601(IM145)";
package IM::EncDec;
require 5.003;
diff --git a/img/lib/IM/File.pm b/img/lib/IM/File.pm
index 9ffb7fb9..3f94b509 100644
--- a/img/lib/IM/File.pm
+++ b/img/lib/IM/File.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 7, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::File.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::File.pm version 20030601(IM145)";
package IM::File;
require 5.003;
diff --git a/img/lib/IM/Folder.pm b/img/lib/IM/Folder.pm
index c8566742..1f85d6d0 100644
--- a/img/lib/IM/Folder.pm
+++ b/img/lib/IM/Folder.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Folder.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Folder.pm version 20030601(IM145)";
package IM::Folder;
require 5.003;
@@ -270,8 +270,10 @@ sub create_folder($) {
next;
}
$p .= "/$subdir";
- $p =~ /(.+)/; # $p may be tainted
- $p = $1; # clean up
+ if ($> != 0) {
+ $p =~ /(.+)/; # may be tainted
+ $p = $1; # clean up
+ }
unless (-d $p) {
# im_debug("Creating directory: $p\n")
# if (&debug('folder'));
diff --git a/img/lib/IM/GetPass.pm b/img/lib/IM/GetPass.pm
index 050b2470..b1723959 100644
--- a/img/lib/IM/GetPass.pm
+++ b/img/lib/IM/GetPass.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 30, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::GetPass.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::GetPass.pm version 20030601(IM145)";
package IM::GetPass;
require 5.003;
diff --git a/img/lib/IM/Grep.pm b/img/lib/IM/Grep.pm
index aadaecda..c3ca599f 100644
--- a/img/lib/IM/Grep.pm
+++ b/img/lib/IM/Grep.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Nov 03, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Grep.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Grep.pm version 20030601(IM145)";
package IM::Grep;
require 5.003;
diff --git a/img/lib/IM/History.pm b/img/lib/IM/History.pm
index 6ea54363..d4a074b8 100644
--- a/img/lib/IM/History.pm
+++ b/img/lib/IM/History.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Jul 6, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::History.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::History.pm version 20030601(IM145)";
package IM::History;
require 5.003;
diff --git a/img/lib/IM/Http.pm b/img/lib/IM/Http.pm
index 5e63cfa9..0c21d881 100644
--- a/img/lib/IM/Http.pm
+++ b/img/lib/IM/Http.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Http.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Http.pm version 20030601(IM145)";
package IM::Http;
require 5.003;
diff --git a/img/lib/IM/Imap.pm b/img/lib/IM/Imap.pm
index 533ab42b..5ccf4810 100644
--- a/img/lib/IM/Imap.pm
+++ b/img/lib/IM/Imap.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Imap.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Imap.pm version 20030601(IM145)";
package IM::Imap;
require 5.003;
diff --git a/img/lib/IM/Iso2022jp.pm b/img/lib/IM/Iso2022jp.pm
index 56e97ac3..792ab822 100644
--- a/img/lib/IM/Iso2022jp.pm
+++ b/img/lib/IM/Iso2022jp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Iso2022jp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Iso2022jp.pm version 20030601(IM145)";
package IM::Iso2022jp;
require 5.003;
diff --git a/img/lib/IM/Japanese.pm b/img/lib/IM/Japanese.pm
index 165dae76..bc39bf78 100644
--- a/img/lib/IM/Japanese.pm
+++ b/img/lib/IM/Japanese.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Japanese.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Japanese.pm version 20030601(IM145)";
package IM::Japanese;
require 5.003;
diff --git a/img/lib/IM/LocalMbox.pm b/img/lib/IM/LocalMbox.pm
index c260b43a..4f98fd76 100644
--- a/img/lib/IM/LocalMbox.pm
+++ b/img/lib/IM/LocalMbox.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::LocalMbox.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::LocalMbox.pm version 20030601(IM145)";
package IM::LocalMbox;
require 5.003;
@@ -103,11 +103,13 @@ sub local_get_msg($$$$$) {
$getchk_hook = getchksbr_file();
if ($getchk_hook) {
- if ($getchk_hook =~ /^(\S+)$/) {
+ if ($getchk_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, GetChkSbr is ignored for SUID root script.\n");
} else {
- $getchk_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $getchk_hook = $1; # to pass through taint check
+ }
if (-f $getchk_hook) {
require $getchk_hook;
} else {
@@ -137,8 +139,10 @@ sub local_get_msg($$$$$) {
return -1;
}
if ($how eq 'get' && $main::opt_keep == 0) {
- $f =~ /(.+)/; # $f is tainted yet
- $f = $1; # clean up
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
unlink("$mbox/$f");
}
$msgs++;
@@ -281,7 +285,7 @@ sub process_maildir($$$$) {
return -1;
}
foreach $f (sort {(-M $b) <=> (-M $a) || $a cmp $b} readdir(FLDR)) {
- if ($f =~ /^\d+\.(\d+|\d+_\d+)\..+/ && -s "$dir/$f") {
+ if ($f =~ /^\d+\.[^.:\/]+\./ && -s "$dir/$f") {
my $ret = process_file("$dir/$f", $dst, $how, $noscan);
next if ($ret > 0); # skip by rule
if ($ret < 0) {
@@ -289,8 +293,12 @@ sub process_maildir($$$$) {
return -1;
}
if ($how eq 'get' && $main::opt_keep == 0) {
- $f =~ /(.+)/; # $f is tainted yet
- $f = $1; # clean up
+ if ($> != 0) {
+ $dir =~ /(.+)/; # may be tainted
+ $dir = $1; # clean up
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
unlink("$dir/$f");
}
$msgs++;
diff --git a/img/lib/IM/Log.pm b/img/lib/IM/Log.pm
index fb2e479a..0a124c3f 100644
--- a/img/lib/IM/Log.pm
+++ b/img/lib/IM/Log.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Log.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Log.pm version 20030601(IM145)";
package IM::Log;
require 5.003;
@@ -90,8 +90,10 @@ sub log_action($$$$;@) {
}
my $file = expand_path($main::Log_file);
- return unless ($file =~ /^(\S+)$/);
- $file = $1; # to pass through taint check
+ return unless ($file =~ /(.+)/);
+ if ($> != 0) {
+ $file = $1; # to pass through taint check
+ }
&msg_mode(1);
unless (im_open(\*HISTORY, ">>$file")) {
im_warn("can't open history file: $file ($!)\n");
diff --git a/img/lib/IM/MD5.pm b/img/lib/IM/MD5.pm
index 1cbc4599..34e2473e 100644
--- a/img/lib/IM/MD5.pm
+++ b/img/lib/IM/MD5.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::MD5.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::MD5.pm version 20030601(IM145)";
package IM::MD5;
require 5.003;
diff --git a/img/lib/IM/Message.pm b/img/lib/IM/Message.pm
index cc9dca80..f7847eff 100644
--- a/img/lib/IM/Message.pm
+++ b/img/lib/IM/Message.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Message.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Message.pm version 20030601(IM145)";
package IM::Message;
require 5.003;
@@ -17,6 +17,7 @@ require Exporter;
use IM::Util;
use IM::Address qw(extract_addr replace_addr fetch_addr);
use IM::Alias qw(alias_lookup hosts_completion);
+use IM::Config qw(use_xdispatcher);
use integer;
use strict;
use vars qw(@ISA @EXPORT);
@@ -479,7 +480,9 @@ sub put_mimed_bcc(*$$$$$$) {
print CHAN "Sender: $main::Sender_line$crlf";
}
print CHAN "To: blind-copy-recipients:;$crlf";
- print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ if (use_xdispatcher()) {
+ print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ }
if (($subj = &header_value($Header, 'Subject')) ne '') {
print CHAN "Subject: Bcc: $subj$crlf";
} else {
@@ -583,7 +586,9 @@ sub put_mimed_error_notify(*$$$$$$$$;$) {
return -1 unless (print CHAN "To: $main::Sender_line$crlf");
print CHAN "From: Imput-Error-Report$crlf";
- print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ if (use_xdispatcher()) {
+ print CHAN "X-Dispatcher: $main::VERSION$crlf";
+ }
if (($subj = &header_value($Header, 'Subject')) ne '') {
print CHAN "Subject: Returned message: $subj$crlf";
} else {
diff --git a/img/lib/IM/MsgStore.pm b/img/lib/IM/MsgStore.pm
index d1789803..614d7982 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: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::MsgStore.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::MsgStore.pm version 20030601(IM145)";
package IM::MsgStore;
require 5.003;
@@ -196,8 +196,10 @@ sub exec_getsbrfile($) {
im_warn("Sorry, GetSbr is ignored for SUID root script\n");
return;
}
- if ($get_hook =~ /^(\S+)$/) {
- $get_hook = $1; # to pass through taint check
+ if ($get_hook =~ /(.+)/) {
+ if ($> != 0) {
+ $get_hook = $1; # to pass through taint check
+ }
if (-f $get_hook) {
require $get_hook;
} else {
diff --git a/img/lib/IM/Nntp.pm b/img/lib/IM/Nntp.pm
index 23b569ac..3778e12f 100644
--- a/img/lib/IM/Nntp.pm
+++ b/img/lib/IM/Nntp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Nntp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Nntp.pm version 20030601(IM145)";
package IM::Nntp;
require 5.003;
diff --git a/img/lib/IM/Pop.pm b/img/lib/IM/Pop.pm
index 9e8a5618..50b8e300 100644
--- a/img/lib/IM/Pop.pm
+++ b/img/lib/IM/Pop.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Pop.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Pop.pm version 20030601(IM145)";
package IM::Pop;
require 5.003;
@@ -288,8 +288,10 @@ sub pop_process($$$$) {
if ($histfile eq '') {
im_err("POP historyfile $histfile undefined.\n");
return -1;
- } elsif ($histfile =~ /(\S+)/) {
- $histfile = $1; # to pass through taint check
+ } elsif ($histfile =~ /(.+)/) {
+ if ($> != 0) {
+ $histfile = $1; # to pass through taint check
+ }
} else {
im_err("invalid POP historyfile: $histfile.\n");
return -1;
@@ -442,11 +444,13 @@ sub pop_inc($$$$$$$$) {
my $getchk_hook = getchksbr_file();
if ($getchk_hook) {
- if ($getchk_hook =~ /^(\S+)$/) {
+ if ($getchk_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, GetChkSbr is ignored for SUID root script.\n");
} else {
- $getchk_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $getchk_hook = $1; # to pass through taint check
+ }
if (-f $getchk_hook) {
require $getchk_hook;
} else {
diff --git a/img/lib/IM/Recipient.pm b/img/lib/IM/Recipient.pm
index e97c425e..917cd9a1 100644
--- a/img/lib/IM/Recipient.pm
+++ b/img/lib/IM/Recipient.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 27, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Recipient.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Recipient.pm version 20030601(IM145)";
package IM::Recipient;
require 5.003;
diff --git a/img/lib/IM/Scan.pm b/img/lib/IM/Scan.pm
index 07407f84..0a465a9f 100644
--- a/img/lib/IM/Scan.pm
+++ b/img/lib/IM/Scan.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Scan.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Scan.pm version 20030601(IM145)";
package IM::Scan;
require 5.003;
@@ -121,11 +121,13 @@ sub set_scan_form($$$) {
$JIS_SAFE= $jis_safe;
my $scan_hook = scansbr_file();
- if ($scan_hook =~ /^(\S+)$/) {
+ if ($scan_hook =~ /(.+)/) {
if ($main::INSECURE) {
im_warn("Sorry, ScanSbr is ignored for SUID root script.\n");
} else {
- $scan_hook = $1; # to pass through taint check
+ if ($> != 0) {
+ $scan_hook = $1; # to pass through taint check
+ }
if (-f $scan_hook) {
require $scan_hook;
} else {
@@ -262,15 +264,16 @@ sub parse_body(*$) {
next if /^=2D/;
next if /^\s+[\w*-]+=/; # eg. "boundary="; * = RFC2231
next if /^\s*[\w-]+: /; # Headers and header style citation
- next if /^\s*[>:|\/_}]/; # other citation
- next if /^ /;
+ next if /^\s*[>:|\#;\/_}]/;
+ next if /^\s*[[<\/(.]+ *snip/;
+ next if /^ /;
next if /^\s*\w+([\'._-]+\w+)*>/;
next if /^\s*(On|At) .*[^.!\s\n]\s*$/;
- next if /(:|;|\/)\s*\n$/;
- next if /(wrote|writes?|said|says?)[^.!\n]?\s*\n$/;
+ next if /(:|;|\/)\s*\n$/;
+ next if /(wrote|writes?|said|says?)[^.!\n]?\s*\n$/;
next if /^This is a multi-part message in MIME format/i;
- if (/^\s*In (message|article|<|\")/i) {
+ if (/^\s*In (message|article|mail|news|<|\"|\[|\()/i) {
if ($mode == 0) {
$_ = <HANDLE>;
} else {
@@ -536,10 +539,10 @@ sub my_addr(@) {
unless (defined($ADDRESS_HASH{'init'})) {
$ADDRESS_HASH{'addr'} = addresses_regex();
unless ($ADDRESS_HASH{'addr'}) {
- $ADDRESS_HASH{'addr'} = '^' . quotemeta(address()) . '$'; #'
- $ADDRESS_HASH{'addr'} =~ s/(\\\s)*\\,(\\\s)*/\$|\^/g;
+ $ADDRESS_HASH{'addr'} = '^' . quotemeta(address()) . "\$";
+ $ADDRESS_HASH{'addr'} =~ s/(\\\s)*\\,(\\\s)*/\$|\^/g;
}
- $ADDRESS_HASH{'init'} = 1;
+ $ADDRESS_HASH{'init'} = 1;
}
return 0 if ($ADDRESS_HASH{'addr'} eq "");
foreach $addr (@addrs) {
diff --git a/img/lib/IM/Smtp.pm b/img/lib/IM/Smtp.pm
index 1826cf02..5b9421ca 100644
--- a/img/lib/IM/Smtp.pm
+++ b/img/lib/IM/Smtp.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Smtp.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Smtp.pm version 20030601(IM145)";
package IM::Smtp;
require 5.003;
diff --git a/img/lib/IM/Ssh.pm b/img/lib/IM/Ssh.pm
index cbdbb3c6..b997992d 100644
--- a/img/lib/IM/Ssh.pm
+++ b/img/lib/IM/Ssh.pm
@@ -6,10 +6,10 @@
### Author: Masatoshi Tsuchiya <tsuchiya@pine.kuee.kyoto-u.ac.jp>
### Internet Message Group <img@mew.org>
### Created: Oct 05, 1999
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Ssh.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Ssh.pm version 20030601(IM145)";
package IM::Ssh;
require 5.003;
diff --git a/img/lib/IM/Stdio.pm b/img/lib/IM/Stdio.pm
index 645f1c0d..bae416ea 100644
--- a/img/lib/IM/Stdio.pm
+++ b/img/lib/IM/Stdio.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: May 7, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Stdio.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Stdio.pm version 20030601(IM145)";
package IM::Stdio;
require 5.003;
diff --git a/img/lib/IM/TcpTransaction.pm b/img/lib/IM/TcpTransaction.pm
index b0ee4b32..051cfc73 100644
--- a/img/lib/IM/TcpTransaction.pm
+++ b/img/lib/IM/TcpTransaction.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::TcpTransaction.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::TcpTransaction.pm version 20030601(IM145)";
package IM::TcpTransaction;
require 5.003;
diff --git a/img/lib/IM/Util.pm b/img/lib/IM/Util.pm
index 90c98b89..1591eacd 100644
--- a/img/lib/IM/Util.pm
+++ b/img/lib/IM/Util.pm
@@ -5,10 +5,10 @@
###
### Author: Internet Message Group <img@mew.org>
### Created: Apr 23, 1997
-### Revised: Mar 22, 2003
+### Revised: Jun 1, 2003
###
-my $PM_VERSION = "IM::Util.pm version 20030322(IM144)";
+my $PM_VERSION = "IM::Util.pm version 20030601(IM145)";
package IM::Util;
require 5.003;
@@ -262,9 +262,13 @@ sub flush(*) {
#
sub im_open($$) {
- my($d, $a) = @_;
+ my($d, $f) = @_;
my($r);
- if ($r = open($d, $a)) {
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
+ if ($r = open($d, $f)) {
binmode($d);
}
return $r;
@@ -273,6 +277,10 @@ sub im_open($$) {
sub im_sysopen($$$) {
my($d, $f, $a) = @_;
my($r);
+ if ($> != 0) {
+ $f =~ /(.+)/; # may be tainted
+ $f = $1; # clean up
+ }
if ($r = sysopen($d, $f, $a)) {
binmode($d);
}