r25882 - in /trunk/libmail-imapclient-perl: Changes META.yml debian/changelog debian/compat debian/control debian/libmail-imapclient-perl.docs debian/libmail-imapclient-perl.examples debian/rules examples/imap_to_mbox.pl lib/Mail/IMAPClient.pm
rmayorga-guest at users.alioth.debian.org
rmayorga-guest at users.alioth.debian.org
Fri Oct 10 02:38:34 UTC 2008
Author: rmayorga-guest
Date: Fri Oct 10 02:38:26 2008
New Revision: 25882
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=25882
Log:
* New upstream release
* debian/control
+ Set debhelper and compat level to 7
+ add ${misc:Depends} to Depends field.
+ add myself to uploaders
* debian/rules
+ Convert to dh7 using dh-make-perl -R --dh7
+ re-add quilt and workaround to fix .grammar and .pod files perms.
Added:
trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.docs
trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.examples
Modified:
trunk/libmail-imapclient-perl/Changes
trunk/libmail-imapclient-perl/META.yml
trunk/libmail-imapclient-perl/debian/changelog
trunk/libmail-imapclient-perl/debian/compat
trunk/libmail-imapclient-perl/debian/control
trunk/libmail-imapclient-perl/debian/rules
trunk/libmail-imapclient-perl/examples/imap_to_mbox.pl
trunk/libmail-imapclient-perl/lib/Mail/IMAPClient.pm
Modified: trunk/libmail-imapclient-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/Changes?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/Changes (original)
+++ trunk/libmail-imapclient-perl/Changes Fri Oct 10 02:38:26 2008
@@ -2,6 +2,18 @@
== Revision History for Mail::IMAPClient
All changes from 2.99_01 upward are made by Mark Overmeer. The changes
before that are applied by David Kernen
+
+version 3.11: Wed Oct 8 10:57:31 CEST 2008
+
+ Fixes:
+
+ - some SSL connections process more bytes then needed, which
+ made the select() timeout. Nice fix by [David Sansome]
+ rt.cpan.org#39776
+
+ Improvements:
+
+ - improved example imap_to_mbox by [Ralph Sobek]
version 3.10: Sun Aug 24 21:26:27 CEST 2008
Modified: trunk/libmail-imapclient-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/META.yml?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/META.yml (original)
+++ trunk/libmail-imapclient-perl/META.yml Fri Oct 10 02:38:26 2008
@@ -1,6 +1,6 @@
--- #YAML:1.0
name: Mail-IMAPClient
-version: 3.10
+version: 3.11
abstract: IMAP4 client library
license: ~
author: ~
Modified: trunk/libmail-imapclient-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/changelog?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/debian/changelog (original)
+++ trunk/libmail-imapclient-perl/debian/changelog Fri Oct 10 02:38:26 2008
@@ -1,3 +1,16 @@
+libmail-imapclient-perl (3.11-1) unstable; urgency=low
+
+ * New upstream release
+ * debian/control
+ + Set debhelper and compat level to 7
+ + add ${misc:Depends} to Depends field.
+ + add myself to uploaders
+ * debian/rules
+ + Convert to dh7 using dh-make-perl -R --dh7
+ + re-add quilt and workaround to fix .grammar and .pod files perms.
+
+ -- Rene Mayorga <rmayorga at debian.org.sv> Thu, 09 Oct 2008 20:08:17 -0600
+
libmail-imapclient-perl (3.10-1) unstable; urgency=low
* New upstream release.
Modified: trunk/libmail-imapclient-perl/debian/compat
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/compat?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/debian/compat (original)
+++ trunk/libmail-imapclient-perl/debian/compat Fri Oct 10 02:38:26 2008
@@ -1,1 +1,1 @@
-6
+7
Modified: trunk/libmail-imapclient-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/control?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/debian/control (original)
+++ trunk/libmail-imapclient-perl/debian/control Fri Oct 10 02:38:26 2008
@@ -4,8 +4,8 @@
Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
Uploaders: Gunnar Wolf <gwolf at debian.org>,
Niko Tyni <ntyni at debian.org>, Russ Allbery <rra at debian.org>,
- gregor herrmann <gregoa at debian.org>
-Build-Depends: debhelper (>= 6), quilt (>= 0.40)
+ gregor herrmann <gregoa at debian.org>, Rene Mayorga <rmayorga at debian.org.sv>
+Build-Depends: debhelper (>= 7), quilt (>= 0.40)
Build-Depends-Indep: perl (>= 5.6.0-17), libparse-recdescent-perl, libtest-pod-perl
Standards-Version: 3.8.0
Homepage: http://search.cpan.org/dist/Mail-IMAPClient/
@@ -16,7 +16,7 @@
Architecture: all
Priority: optional
Section: perl
-Depends: ${perl:Depends}, libdigest-hmac-perl, libparse-recdescent-perl
+Depends: ${perl:Depends}, ${misc:Depends}, libdigest-hmac-perl, libparse-recdescent-perl
Recommends: libio-socket-ssl-perl
Description: Perl library for manipulating IMAP mail stores
Mail::IMAPClient provides perl routines that simplify a sockets connection
Added: trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.docs
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.docs?rev=25882&op=file
==============================================================================
--- trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.docs (added)
+++ trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.docs Fri Oct 10 02:38:26 2008
@@ -1,0 +1,2 @@
+TODO
+debian/NEWS
Added: trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.examples
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.examples?rev=25882&op=file
==============================================================================
--- trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.examples (added)
+++ trunk/libmail-imapclient-perl/debian/libmail-imapclient-perl.examples Fri Oct 10 02:38:26 2008
@@ -1,0 +1,1 @@
+examples/*
Modified: trunk/libmail-imapclient-perl/debian/rules
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/debian/rules?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/debian/rules (original)
+++ trunk/libmail-imapclient-perl/debian/rules Fri Oct 10 02:38:26 2008
@@ -1,67 +1,29 @@
#!/usr/bin/make -f
-# This debian/rules file is provided as a template for normal perl
-# packages. It was created by Marc Brockschmidt <marc at dch-faq.de> for
-# the Debian Perl Group (http://pkg-perl.alioth.debian.org/) but may
-# be used freely wherever it is useful.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# If set to a true value then MakeMaker's prompt function will
-# always return the default without waiting for user input.
-export PERL_MM_USE_DEFAULT=1
-
-include /usr/share/quilt/quilt.make
-
-PERL ?= /usr/bin/perl
PACKAGE = $(shell dh_listpackages)
TMP = $(CURDIR)/debian/$(PACKAGE)
+include /usr/share/quilt/quilt.make
build: build-stamp
build-stamp: $(QUILT_STAMPFN)
- dh_testdir
- touch test.txt
- $(PERL) Makefile.PL INSTALLDIRS=vendor
- rm test.txt
- $(MAKE)
- $(MAKE) test
+ dh build
touch $@
clean: unpatch
- dh_testdir
- dh_testroot
- dh_clean build-stamp install-stamp
- [ ! -f Makefile ] || $(MAKE) realclean
+ dh $@
install: install-stamp
install-stamp: build-stamp
- dh_testdir
- dh_testroot
- dh_clean -k
- $(MAKE) install DESTDIR=$(TMP) PREFIX=/usr
+ dh install --until dh_fixperms
find $(TMP) -name '*.grammar' | xargs --no-run-if-empty chmod 644
find $(TMP) -name '*.pod' | xargs --no-run-if-empty chmod 644
- [ ! -d $(TMP)/usr/lib/perl5 ] || \
- rmdir --ignore-fail-on-non-empty --parents --verbose \
- $(TMP)/usr/lib/perl5
+ dh install --after dh_fixperms
touch $@
binary-arch:
-# We have nothing to do here for an architecture-independent package
-binary-indep: build install
- dh_testdir
- dh_testroot
- dh_installexamples examples/*
- dh_installdocs TODO README
- dh_installchangelogs Changes
- dh_perl
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_gencontrol
- dh_md5sums
- dh_builddeb
+binary-indep: install
+ dh $@
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install
+binary: binary-arch binary-indep
+
+.PHONY: binary binary-arch binary-indep install clean build
Modified: trunk/libmail-imapclient-perl/examples/imap_to_mbox.pl
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/examples/imap_to_mbox.pl?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/examples/imap_to_mbox.pl (original)
+++ trunk/libmail-imapclient-perl/examples/imap_to_mbox.pl Fri Oct 10 02:38:26 2008
@@ -6,11 +6,27 @@
# DESC: Reads a users IMAP folders, and converts them to mbox
# Good for an interim switch-over from say, Exchange to Cyrus IMAP.
+# $Header: /usr/CvsRepository/Mail/IMAPClient/examples/imap_to_mbox.pl,v 19991216.7 2002/08/23 13:29:48 dkernen Exp $
+
+# History:
+# --------
+# 2008/08/07 - Added SSL support, fixed From header printing, and CR
+# elimination (sobek)
+
# TODO:
-# correct header printing From
-
-use Mail::IMAPClient; # a nice set of perl libs for imap
-use IO::Socket::SSL;
+# -----
+# lsub instead of list option
+
+use warnings;
+use strict;
+
+use Mail::IMAPClient; # a nice set of perl libs for imap
+use IO::Socket::SSL; # for SSL support
+
+use vars qw($opt_h $opt_u $opt_p $opt_P $opt_s $opt_i $opt_f $opt_m $opt_b
+ $opt_c $opt_r $opt_w $opt_W $opt_S $opt_D $opt_U $opt_d $opt_I
+ $opt_n);
+
use Getopt::Std; # for the command-line overrides. good for user
use File::Path; # create full file paths. (yummy!)
use File::Basename; # find a nice basename for a folder.
@@ -20,37 +36,49 @@
sub connect_imap();
sub find_folders();
sub write_folder($$$$);
+sub help();
# Config for the imap migration kit.
-getopts('u:p:P:s:i:f::b:c:W:Sdh');
-
-$SSL = $opt_S || 0;
-$SERVER = $opt_s || 'dell2';
-$USER = $opt_u || 'userid';
-$PASSWORD = $opt_p || 'password';
-$PORT = $opt_P || '143';
-$INBOX_PATH = $opt_i || "/var/mail/$USER";
-$FOLDERS_PATH = $opt_f || "./folders/$USER";
-$DONT_MOVE = $opt_m || '.mailboxlist|Trash|INBOXIIMAP|mlbxl';
-$READ_DELIMITER = $opt_r || '/';
-$WRITE_DELIMITER= $opt_w || '/';
-$WRITE_MODE = $opt_W || '>';
-$BANNED_CHARS = $opt_b || '.|^|%';
-$CR = $opt_c || "\r";
-$DELETE = $opt_D || 0;
-$DEBUG = $opt_d || "0";
-$FAIL = 0;
+getopts('u:p:P:s:i:f:m:b:c:r:w:W:SDUdhIn:') or
+ $opt_h = 1;
+
+my $SSL = $opt_S || 0;
+my $SERVER = $opt_s || 'machine';
+my $USER = $opt_u || 'userid';
+my $PASSWORD = $opt_p || 'password';
+my $PORT = $opt_P || '143';
+my $INBOX_PATH = $opt_i || "/var/mail/$USER";
+my $DOINBOX = $opt_I ? 0 : 1 || 1;
+my $FOLDERS_PATH = $opt_f || "./folders/$USER";
+my $DONT_MOVE = $opt_m || '.mailboxlist|Trash|INBOXIIMAP|mlbxl';
+my $READ_DELIMITER = $opt_r || '/';
+my $WRITE_DELIMITER = $opt_w || '/';
+my $WRITE_MODE = $opt_W || '>';
+my $BANNED_CHARS = $opt_b || '.|^|%';
+my $CR = $opt_c || "\r";
+my $NUMBER = $opt_n || "";
+my $DELETE = $opt_D || 0;
+my $DEBUG = $opt_d || "0";
+my $UNSEEN = $opt_U || 0;
+my $FAIL = 0;
+
+my $imap; # definition for IMAP structure
if ($opt_h) {
# print help here
- print "imap_to_mbox.pl - with the following optional arguments:
+ help();
+}
+
+sub help() {
+ print "imap_to_mbox.pl - with the following optional arguments\:
-S Use an SSL connection (default $SSL)
-s <s> Server specification (default $SERVER)
-u <u> User login (default $USER)
-p <p> User password
-P <p> Server Port (default $PORT)
-i <i> INBOX save path (default $INBOX_PATH)
+ -I skip INBOX (default $DOINBOX)
-f <f> Save path for other folders (default $FOLDERS_PATH)
-m <r> Regexp for IMAP folders not to be saved:
$DONT_MOVE
@@ -58,14 +86,16 @@
-w <w> Write Delimiter (default \"$WRITE_DELIMITER\")
-b <b> Banned chars (default \"$BANNED_CHARS\")
-c <c> Strip CRs from saved files [for Unix] (default \"$CR\")
- -D Delete files downloaded on server
+ -n <n> Receive only <n> messages (Default ".($NUMBER ? "$NUMBER" : "all").")
+ -U Unseen messages Only
+ -D Delete downloaded files on server
-d Debug mode (default $DEBUG)\n";
exit 1;
}
## do our magic tricks ######################################
-connect_imap;
-find_folders;
+connect_imap();
+find_folders();
sub connect_imap()
@@ -76,7 +106,7 @@
if ($opt_S) {
$ssl=IO::Socket::SSL->new(
PeerHost => "$SERVER:imaps"
-# , SSL_version => 'SSLv2'
+# , SSL_version => 'SSLv2' # for older versions of openssl
);
defined $ssl
@@ -103,14 +133,24 @@
my @folders = $imap->folders;
# push(@folders, "INBOX");
- foreach my $folder (@folders)
- { my $message_count = $imap->message_count($folder);
+ foreach my $folder (@folders) {
+ my $message_count;
+
+ if ($folder eq "INBOX" and $DOINBOX == 0) {
+ print "* $folder is unwanted, skipping.\n";
+ next;
+ }
+ if (!$UNSEEN) {
+ $message_count = $imap->message_count($folder);
+ } else {
+ $message_count = $imap->unseen_count($folder) || 0;
+ }
if(! $message_count) {
- print("* $folder is empty, skipping.\n");
+ print "* $folder is empty, skipping.\n";
next;
}
if($folder =~ /$DONT_MOVE/) {
- print("! $folder matches DONT_MOVE ruleset, skipping\n");
+ warn "! $folder matches DONT_MOVE ruleset, skipping\n";
next;
}
@@ -121,8 +161,13 @@
= $new_folder eq "INBOX" ? "$INBOX_PATH"
: "$FOLDERS_PATH/$new_folder";
- printf "x %4i %-45.45s => %s", $message_count, $folder, $path;
- write_folder $folder, $path, 1, $message_count;
+ if ($NUMBER && $NUMBER < $message_count) {
+ printf "x %4i %-45.45s => %s", $NUMBER, $folder, $path;
+ write_folder $folder, $path, 1, $NUMBER;
+ } else {
+ printf "x %4i %-45.45s => %s", $message_count, $folder, $path;
+ write_folder $folder, $path, 1, $message_count;
+ }
}
}
@@ -135,55 +180,59 @@
my $new_dir = dirname $newpath;
my $new_file = basename $newpath;
- -d $new_dir
+ -d $new_dir
or mkpath($new_dir, 0700)
or die "Cannot create $new_dir:$!\n";
- open mbox, $WRITE_MODE, $newpath
+ open my $mbox, $WRITE_MODE, $newpath
or die "Cannot create file $newpath: $!\n";
+ my @msgs = $imap->unseen if $UNSEEN;
+
for (my $i=$first_message; $i<$last_message+1; ++$i)
- { my $date = UnixDate(ParseDate($imap->internaldate($i)),
+ { my $m = ($UNSEEN ? shift @msgs : $i);
+ my $date = UnixDate(ParseDate($imap->internaldate($m)),
"%a %b %e %T %Y");
- my $user = $imap->get_envelope($i)->from_addresses;
- $user =~ s/^.*\<([^>]*)\>/$1/;
+ my $user = $imap->get_envelope($m)->from_addresses;
+ $user =~ s/^.*<([^>]*)>/$1/;
$user = '-' unless $user;
- print '.' if $i%25 == 0;
-
- my $msg_header = $imap->fetch($i, "FAST")
- or warn "Could not fetch header $i from $folder\n";
-
- my $msg_rfc822 = $imap->fetch($i, "RFC822");
+ print '.' if $m%25 == 0;
+
+ my $msg_header = $imap->fetch($m, "FAST")
+ or warn "Could not fetch header $m from $folder\n";
+
+ my $msg_rfc822 = $imap->fetch($m, "RFC822");
unless($msg_rfc822)
- { warn "Could not fetch RFC822 $i from $folder\n";
+ { warn "Could not fetch RFC822 $m from $folder\n";
$FAIL=1
}
- undef $start;
+ undef my $start;
foreach (@$msg_rfc822)
- { if($_ =~ /\: / && !$message)
+ { my $message;
+ if($_ =~ /\: / && !$message)
{ ++$message;
- print mbox "From $user $date\n";
+ print $mbox "From $user $date\n";
}
if(/^\)\r/)
{ undef $message;
- print mbox "\n\n";
+ print $mbox "\n\n";
}
next unless $message;
$_ =~ s/\r$//;
$_ = $imap->Strip_cr($_) if $CR;
- print mbox "$_";
+ print $mbox "$_";
}
if($DELETE && ! $FAIL)
- { $imap->delete_message($i)
+ { $imap->delete_message($m)
or warn "Could not delete_message: $@\n";
$FAIL = 0;
}
}
- close mbox
+ close $mbox
or die "Write errors to $newpath: $!\n";
if($DELETE)
Modified: trunk/libmail-imapclient-perl/lib/Mail/IMAPClient.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmail-imapclient-perl/lib/Mail/IMAPClient.pm?rev=25882&op=diff
==============================================================================
--- trunk/libmail-imapclient-perl/lib/Mail/IMAPClient.pm (original)
+++ trunk/libmail-imapclient-perl/lib/Mail/IMAPClient.pm Fri Oct 10 02:38:26 2008
@@ -2,7 +2,7 @@
use strict;
package Mail::IMAPClient;
-our $VERSION = '3.10';
+our $VERSION = '3.11';
use Mail::IMAPClient::MessageSet;
@@ -1315,23 +1315,19 @@
)
{ my $transno = $self->Transaction;
- if($timeout)
- { my $rvec = 0;
- vec($rvec, fileno($self->Socket), 1) = 1;
- unless(CORE::select($rvec, undef, $rvec, $timeout))
- { $self->LastError("Tag $transno: Timeout after $timeout seconds"
- . " waiting for data from server");
-
- $self->_record($transno,
- [ $self->_next_index($transno), "ERROR"
- , "$transno * NO Timeout after $timeout seconds " .
- "during read from server"]);
-
- $self->LastError("Timeout after $timeout seconds during "
- . "read from server");
-
- return undef;
- }
+ if($timeout && !_read_more($socket, $timeout))
+ { $self->LastError("Tag $transno: Timeout after $timeout seconds"
+ . " waiting for data from server");
+
+ $self->_record($transno,
+ [ $self->_next_index($transno), "ERROR"
+ , "$transno * NO Timeout after $timeout seconds " .
+ "during read from server"]);
+
+ $self->LastError("Timeout after $timeout seconds during "
+ . "read from server");
+
+ return undef;
}
my $ret = $self->_sysread($socket, \$iBuffer, $readlen,length $iBuffer);
@@ -1385,10 +1381,7 @@
while($expected_size > length $litstring)
{ if($timeout)
- { # wait for data from the the IMAP socket.
- my $rvec = 0;
- vec($rvec, fileno($self->Socket), 1) = 1;
- unless(CORE::select($rvec, undef, $rvec, $timeout))
+ { unless(_read_more($socket, $timeout))
{ $self->LastError("Tag $transno: Timeout waiting for "
. "literal data from server");
return undef;
@@ -1398,7 +1391,7 @@
{ CORE::select(undef, undef, undef, 0.001);
}
- fcntl($socket, F_SETFL, $self->{_fcntl}) #???why
+ fcntl($socket, F_SETFL, $self->{_fcntl}) #???need???
if $fast_io && defined $self->{_fcntl};
my $ret = $self->_sysread($socket, \$litstring
@@ -1453,6 +1446,19 @@
$rm ? $rm->($self, @_) : sysread($fh, $$buf, $len, $off);
}
+sub _read_more($$)
+{ my ($socket, $timeout) = @_;
+
+ # IO::Socket::SSL buffers some data internally, so there might be some
+ # data available from the previous sysread of which the file-handle
+ # (used by select()) doesn't know of.
+ return 1 if $socket->isa("IO::Socket::SSL") && $socket->pending;
+
+ my $rvec = 0;
+ vec($rvec, fileno($socket), 1) = 1;
+ return CORE::select($rvec, undef, $rvec, $timeout);
+}
+
sub _trans_index() { sort {$a <=> $b} keys %{$_[0]->{History}} }
# all default to last transaction
More information about the Pkg-perl-cvs-commits
mailing list