Merge changelog

This commit is contained in:
John Goerzen 2006-10-13 07:19:32 +01:00
commit 8f9f59dd4d
38 changed files with 128 additions and 69 deletions

View File

@ -2,7 +2,7 @@
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.

View File

@ -13,7 +13,7 @@ Copyright (C) 2002 - 2005 John Goerzen
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
ONLY imaplib.py is Copyright (c) 2001 Python Software Foundation; ONLY imaplib.py is Copyright (c) 2001 Python Software Foundation;
All Rights Reserved All Rights Reserved

View File

@ -13,7 +13,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
VERSION=4.0.13 VERSION=4.0.13
TARGZ=offlineimap_$(VERSION).tar.gz TARGZ=offlineimap_$(VERSION).tar.gz

View File

@ -15,7 +15,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import init from offlineimap import init
init.startup('4.0.13') init.startup('4.0.13')

28
debian/changelog vendored
View File

@ -1,8 +1,29 @@
offlineimap (4.0.15) unstable; urgency=low
* Applied patch from Aaron Schrab to sync INTERNALDATEs.
-- John Goerzen <jgoerzen@complete.org> Mon, 21 Aug 2006 05:17:48 -0500
offlineimap (4.0.14) unstable; urgency=low offlineimap (4.0.14) unstable; urgency=low
* Small fix to example config file. Closes: #342450. * ACK NMU 4.0.13-0.1. Thanks, Pierre. Closes: #380880.
* Update 33 more instances of the old FSF address.
* Fix off-by-one in example config file. Closes: #342450.
-- John Goerzen <jgoerzen@complete.org> Tue, 30 May 2006 19:06:01 -0500 -- John Goerzen <jgoerzen@complete.org> Fri, 11 Aug 2006 18:06:27 -0500
offlineimap (4.0.13-0.1) unstable; urgency=low
* Non-maintainer upload.
* Update package to the last python policy (Closes: #380880):
+ only build for python current (use python-dev).
+ use dh_pysupport.
* Bump Standards-Version to 3.7.2.
* Bump DH_COMPAT to 4.
* Move debhelper into Build-Depends.
* Fix old FSF address.
-- Pierre Habouzit <madcoder@debian.org> Fri, 11 Aug 2006 19:05:06 +0200
offlineimap (4.0.13) unstable; urgency=low offlineimap (4.0.13) unstable; urgency=low
@ -785,6 +806,3 @@ offlineimap (1.0.0) unstable; urgency=low
-- John Goerzen <jgoerzen@complete.org> Fri, 21 Jun 2002 18:54:56 -0500 -- John Goerzen <jgoerzen@complete.org> Fri, 21 Jun 2002 18:54:56 -0500
Local variables:
mode: debian-changelog
End:

9
debian/control vendored
View File

@ -2,14 +2,15 @@ Source: offlineimap
Section: mail Section: mail
Priority: optional Priority: optional
Maintainer: John Goerzen <jgoerzen@complete.org> Maintainer: John Goerzen <jgoerzen@complete.org>
Build-Depends-Indep: debhelper (>> 4.2.0), python2.3, python2.3-dev (>= 2.2.2), groff, docbook-utils, python (>= 2.3), python-dev (>= 2.3) Build-Depends: debhelper (>> 4.2.0)
Build-Depends-Indep: python-dev, groff, docbook-utils, python-support (>= 0.4.0)
Build-Conflicts-Indep: docbook-ebnf Build-Conflicts-Indep: docbook-ebnf
Standards-Version: 3.5.2 Standards-Version: 3.7.2
Package: offlineimap Package: offlineimap
Architecture: all Architecture: all
Depends: python2.3 Depends: ${python:Depends}
Suggests: python2.3-tk Suggests: python-tk
Description: IMAP/Maildir synchronization and reader support Description: IMAP/Maildir synchronization and reader support
OfflineIMAP is a tool to simplify your e-mail reading. With OfflineIMAP is a tool to simplify your e-mail reading. With
OfflineIMAP, you can: OfflineIMAP, you can:

5
debian/copyright vendored
View File

@ -18,6 +18,7 @@ Copyright (C) 2002 - 2005 John Goerzen
You should have received a copy of the GNU General Public License with You should have received a copy of the GNU General Public License with
the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL-2; the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL-2;
if not, write to the Free Software Foundation, Inc., 59 Temple Place, if not, write to the Free Software Foundation, Inc., 51 Franklin St,
Suite 330, Boston, MA 02111-1307 USA Fifth Floor, Boston, MA 02110-1301, USA.

6
debian/rules vendored
View File

@ -7,9 +7,9 @@
#export DH_VERBOSE=1 #export DH_VERBOSE=1
# This is the debhelper compatibility version to use. # This is the debhelper compatibility version to use.
export DH_COMPAT=3 export DH_COMPAT=4
PYTHON=python2.3 PYTHON=python
PACKAGE=offlineimap PACKAGE=offlineimap
@ -88,7 +88,7 @@ binary-indep: build install
dh_compress dh_compress
dh_fixperms dh_fixperms
# dh_perl # dh_perl
dh_python dh_pysupport
# dh_makeshlibs # dh_makeshlibs
dh_installdeb dh_installdeb
dh_shlibdeps dh_shlibdeps

View File

@ -206,7 +206,7 @@ ssl = yes
# Specify the remote user name. # Specify the remote user name.
remoteuser = username remoteuser = username
# There are three ways to specify the password for the remote IMAP # There are four ways to specify the password for the remote IMAP
# server: # server:
# #
# 1. No password at all specified in the config file. You will # 1. No password at all specified in the config file. You will

View File

@ -13,7 +13,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
from offlineimap.localeval import LocalEval from offlineimap.localeval import LocalEval

View File

@ -13,7 +13,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import threadutil, mbnames, CustomConfig from offlineimap import threadutil, mbnames, CustomConfig
import offlineimap.repository.Base, offlineimap.repository.LocalStatus import offlineimap.repository.Base, offlineimap.repository.LocalStatus

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from threading import * from threading import *
from offlineimap import threadutil from offlineimap import threadutil
@ -133,7 +133,7 @@ class BaseFolder:
"""Returns the content of the specified message.""" """Returns the content of the specified message."""
raise NotImplementedException raise NotImplementedException
def savemessage(self, uid, content, flags): def savemessage(self, uid, content, flags, rtime):
"""Writes a new message, with the specified uid. """Writes a new message, with the specified uid.
If the uid is < 0, the backend should assign a new uid and return it. If the uid is < 0, the backend should assign a new uid and return it.
@ -152,6 +152,10 @@ class BaseFolder:
""" """
raise NotImplementedException raise NotImplementedException
def getmessagetime(self, uid):
"""Return the received time for the specified message."""
raise NotImplementedException
def getmessageflags(self, uid): def getmessageflags(self, uid):
"""Returns the flags for the specified message.""" """Returns the flags for the specified message."""
raise NotImplementedException raise NotImplementedException
@ -203,8 +207,9 @@ class BaseFolder:
successuid = None successuid = None
message = self.getmessage(uid) message = self.getmessage(uid)
flags = self.getmessageflags(uid) flags = self.getmessageflags(uid)
rtime = self.getmessagetime(uid)
for tryappend in applyto: for tryappend in applyto:
successuid = tryappend.savemessage(uid, message, flags) successuid = tryappend.savemessage(uid, message, flags, rtime)
if successuid >= 0: if successuid >= 0:
successobject = tryappend successobject = tryappend
break break
@ -214,10 +219,10 @@ class BaseFolder:
# Copy the message to the other remote servers. # Copy the message to the other remote servers.
for appendserver in \ for appendserver in \
[x for x in applyto if x != successobject]: [x for x in applyto if x != successobject]:
appendserver.savemessage(successuid, message, flags) appendserver.savemessage(successuid, message, flags, rtime)
# Copy to its new name on the local server and delete # Copy to its new name on the local server and delete
# the one without a UID. # the one without a UID.
self.savemessage(successuid, message, flags) self.savemessage(successuid, message, flags, rtime)
self.deletemessage(uid) # It'll be re-downloaded. self.deletemessage(uid) # It'll be re-downloaded.
else: else:
# Did not find any server to take this message. Ignore. # Did not find any server to take this message. Ignore.
@ -272,11 +277,12 @@ class BaseFolder:
message = self.getmessage(uid) message = self.getmessage(uid)
break break
flags = self.getmessageflags(uid) flags = self.getmessageflags(uid)
rtime = self.getmessagetime(uid)
for object in applyto: for object in applyto:
newuid = object.savemessage(uid, message, flags) newuid = object.savemessage(uid, message, flags, rtime)
if newuid > 0 and newuid != uid: if newuid > 0 and newuid != uid:
# Change the local uid. # Change the local uid.
self.savemessage(newuid, message, flags) self.savemessage(newuid, message, flags, rtime)
self.deletemessage(uid) self.deletemessage(uid)
uid = newuid uid = newuid

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseFolder from Base import BaseFolder
from offlineimap import imaputil, imaplib from offlineimap import imaputil, imaplib
@ -84,7 +84,7 @@ class IMAPFolder(BaseFolder):
# Now, get the flags and UIDs for these. # Now, get the flags and UIDs for these.
# We could conceivably get rid of maxmsgid and just say # We could conceivably get rid of maxmsgid and just say
# '1:*' here. # '1:*' here.
response = imapobj.fetch('1:%d' % maxmsgid, '(FLAGS UID)')[1] response = imapobj.fetch('1:%d' % maxmsgid, '(FLAGS UID INTERNALDATE)')[1]
finally: finally:
self.imapserver.releaseconnection(imapobj) self.imapserver.releaseconnection(imapobj)
for messagestr in response: for messagestr in response:
@ -98,7 +98,8 @@ class IMAPFolder(BaseFolder):
else: else:
uid = long(options['UID']) uid = long(options['UID'])
flags = imaputil.flagsimap2maildir(options['FLAGS']) flags = imaputil.flagsimap2maildir(options['FLAGS'])
self.messagelist[uid] = {'uid': uid, 'flags': flags} rtime = imaplib.Internaldate2epoch(messagestr)
self.messagelist[uid] = {'uid': uid, 'flags': flags, 'time': rtime}
def getmessagelist(self): def getmessagelist(self):
return self.messagelist return self.messagelist
@ -115,6 +116,9 @@ class IMAPFolder(BaseFolder):
finally: finally:
self.imapserver.releaseconnection(imapobj) self.imapserver.releaseconnection(imapobj)
def getmessagetime(self, uid):
return self.messagelist[uid]['time']
def getmessageflags(self, uid): def getmessageflags(self, uid):
return self.messagelist[uid]['flags'] return self.messagelist[uid]['flags']
@ -177,7 +181,7 @@ class IMAPFolder(BaseFolder):
matchinguids.sort() matchinguids.sort()
return long(matchinguids[0]) return long(matchinguids[0])
def savemessage(self, uid, content, flags): def savemessage(self, uid, content, flags, rtime):
imapobj = self.imapserver.acquireconnection() imapobj = self.imapserver.acquireconnection()
ui = UIBase.getglobalui() ui = UIBase.getglobalui()
ui.debug('imap', 'savemessage: called') ui.debug('imap', 'savemessage: called')
@ -194,10 +198,17 @@ class IMAPFolder(BaseFolder):
# In order to get the new uid, we need to save off the message ID. # In order to get the new uid, we need to save off the message ID.
message = rfc822.Message(StringIO(content)) message = rfc822.Message(StringIO(content))
datetuple = rfc822.parsedate(message.getheader('Date')) datetuple_msg = rfc822.parsedate(message.getheader('Date'))
# Will be None if missing or not in a valid format. # Will be None if missing or not in a valid format.
if datetuple == None:
# If time isn't known
if rtime == None and datetuple_msg == None:
datetuple = time.localtime() datetuple = time.localtime()
elif rtime == None:
datetuple = datetuple_msg
else:
datetuple = time.localtime(rtime)
try: try:
if datetuple[0] < 1981: if datetuple[0] < 1981:
raise ValueError raise ValueError

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseFolder from Base import BaseFolder
import os, threading import os, threading
@ -98,7 +98,7 @@ class LocalStatusFolder(BaseFolder):
def getmessagelist(self): def getmessagelist(self):
return self.messagelist return self.messagelist
def savemessage(self, uid, content, flags): def savemessage(self, uid, content, flags, rtime):
if uid < 0: if uid < 0:
# We cannot assign a uid. # We cannot assign a uid.
return uid return uid
@ -107,13 +107,16 @@ class LocalStatusFolder(BaseFolder):
self.savemessageflags(uid, flags) self.savemessageflags(uid, flags)
return uid return uid
self.messagelist[uid] = {'uid': uid, 'flags': flags} self.messagelist[uid] = {'uid': uid, 'flags': flags, 'time': rtime}
self.autosave() self.autosave()
return uid return uid
def getmessageflags(self, uid): def getmessageflags(self, uid):
return self.messagelist[uid]['flags'] return self.messagelist[uid]['flags']
def getmessagetime(self, uid):
return self.messagelist[uid]['time']
def savemessageflags(self, uid, flags): def savemessageflags(self, uid, flags):
self.messagelist[uid]['flags'] = flags self.messagelist[uid]['flags'] = flags
self.autosave() self.autosave()

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseFolder from Base import BaseFolder
from offlineimap import imaputil from offlineimap import imaputil
@ -124,7 +124,12 @@ class MaildirFolder(BaseFolder):
file.close() file.close()
return retval.replace("\r\n", "\n") return retval.replace("\r\n", "\n")
def savemessage(self, uid, content, flags): def getmessagetime( self, uid ):
filename = self.messagelist[uid]['filename']
st = os.stat(filename)
return st.st_mtime
def savemessage(self, uid, content, flags, rtime):
ui = UIBase.getglobalui() ui = UIBase.getglobalui()
ui.debug('maildir', 'savemessage: called to write with flags %s and content %s' % \ ui.debug('maildir', 'savemessage: called to write with flags %s and content %s' % \
(repr(flags), repr(content))) (repr(flags), repr(content)))
@ -165,6 +170,7 @@ class MaildirFolder(BaseFolder):
file = open(os.path.join(tmpdir, tmpmessagename), "wt") file = open(os.path.join(tmpdir, tmpmessagename), "wt")
file.write(content) file.write(content)
file.close() file.close()
os.utime(os.path.join(tmpdir,tmpmessagename), (rtime,rtime))
ui.debug('maildir', 'savemessage: moving from %s to %s' % \ ui.debug('maildir', 'savemessage: moving from %s to %s' % \
(tmpmessagename, messagename)) (tmpmessagename, messagename))
os.link(os.path.join(tmpdir, tmpmessagename), os.link(os.path.join(tmpdir, tmpmessagename),

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from threading import * from threading import *
from offlineimap import threadutil from offlineimap import threadutil
@ -130,7 +130,7 @@ class MappingFolderMixIn:
"""Returns the content of the specified message.""" """Returns the content of the specified message."""
return self._mb.getmessage(self, self.r2l[uid]) return self._mb.getmessage(self, self.r2l[uid])
def savemessage(self, uid, content, flags): def savemessage(self, uid, content, flags, rtime):
"""Writes a new message, with the specified uid. """Writes a new message, with the specified uid.
If the uid is < 0, the backend should assign a new uid and return it. If the uid is < 0, the backend should assign a new uid and return it.
@ -153,7 +153,7 @@ class MappingFolderMixIn:
if uid in self.r2l: if uid in self.r2l:
self.savemessageflags(uid, flags) self.savemessageflags(uid, flags)
return uid return uid
newluid = self._mb.savemessage(self, -1, content, flags) newluid = self._mb.savemessage(self, -1, content, flags, rtime)
if newluid < 1: if newluid < 1:
raise ValueError, "Backend could not find uid for message" raise ValueError, "Backend could not find uid for message"
self.maplock.acquire() self.maplock.acquire()
@ -169,6 +169,9 @@ class MappingFolderMixIn:
def getmessageflags(self, uid): def getmessageflags(self, uid):
return self._mb.getmessageflags(self, self.r2l[uid]) return self._mb.getmessageflags(self, self.r2l[uid])
def getmessagetime(self, uid):
return None
def savemessageflags(self, uid, flags): def savemessageflags(self, uid, flags):
self._mb.savemessageflags(self, self.r2l[uid], flags) self._mb.savemessageflags(self, self.r2l[uid], flags)

View File

@ -5,6 +5,7 @@ Based on RFC 2060.
Public class: IMAP4 Public class: IMAP4
Public variable: Debug Public variable: Debug
Public functions: Internaldate2tuple Public functions: Internaldate2tuple
Internaldate2epoch
Int2AP Int2AP
ParseFlags ParseFlags
Time2Internaldate Time2Internaldate
@ -24,7 +25,7 @@ __version__ = "2.52"
import binascii, re, socket, time, random, sys, os import binascii, re, socket, time, random, sys, os
from offlineimap.ui import UIBase from offlineimap.ui import UIBase
__all__ = ["IMAP4", "Internaldate2tuple", __all__ = ["IMAP4", "Internaldate2tuple", "Internaldate2epoch",
"Int2AP", "ParseFlags", "Time2Internaldate"] "Int2AP", "ParseFlags", "Time2Internaldate"]
# Globals # Globals
@ -78,7 +79,7 @@ Commands = {
Continuation = re.compile(r'\+( (?P<data>.*))?') Continuation = re.compile(r'\+( (?P<data>.*))?')
Flags = re.compile(r'.*FLAGS \((?P<flags>[^\)]*)\)') Flags = re.compile(r'.*FLAGS \((?P<flags>[^\)]*)\)')
InternalDate = re.compile(r'.*INTERNALDATE "' InternalDate = re.compile(r'.*INTERNALDATE "'
r'(?P<day>[ 123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9])' r'(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9])'
r' (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9])' r' (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9])'
r' (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])' r' (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])'
r'"') r'"')
@ -1230,10 +1231,10 @@ class _Authenticator:
Mon2num = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, Mon2num = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12} 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
def Internaldate2tuple(resp): def Internaldate2epoch(resp):
"""Convert IMAP4 INTERNALDATE to UT. """Convert IMAP4 INTERNALDATE to UT.
Returns Python time module tuple. Returns seconds since the epoch.
""" """
mo = InternalDate.match(resp) mo = InternalDate.match(resp)
@ -1259,7 +1260,16 @@ def Internaldate2tuple(resp):
tt = (year, mon, day, hour, min, sec, -1, -1, -1) tt = (year, mon, day, hour, min, sec, -1, -1, -1)
utc = time.mktime(tt) return time.mktime(tt)
def Internaldate2tuple(resp):
"""Convert IMAP4 INTERNALDATE to UT.
Returns Python time module tuple.
"""
utc = Internaldate2epoch(resp)
# Following is necessary because the time module has no 'mkgmtime'. # Following is necessary because the time module has no 'mkgmtime'.
# 'mktime' assumes arg in local timezone, so adds timezone/altzone. # 'mktime' assumes arg in local timezone, so adds timezone/altzone.

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import imaplib, imaputil, threadutil from offlineimap import imaplib, imaputil, threadutil
from offlineimap.ui import UIBase from offlineimap.ui import UIBase

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import re, string, types import re, string, types
from offlineimap.ui import UIBase from offlineimap.ui import UIBase

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import imaplib, imapserver, repository, folder, mbnames, threadutil, version, syncmaster, accounts from offlineimap import imaplib, imapserver, repository, folder, mbnames, threadutil, version, syncmaster, accounts
from offlineimap.localeval import LocalEval from offlineimap.localeval import LocalEval

View File

@ -15,7 +15,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import imp import imp
try: try:

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import os.path import os.path
import re # for folderfilter import re # for folderfilter

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import CustomConfig from offlineimap import CustomConfig
import os.path import os.path

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseRepository from Base import BaseRepository
from offlineimap import folder, imaputil, imapserver from offlineimap import folder, imaputil, imapserver

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseRepository from Base import BaseRepository
from offlineimap import folder from offlineimap import folder

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Base import BaseRepository from Base import BaseRepository
from offlineimap import folder, imaputil from offlineimap import folder, imaputil

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from offlineimap import imaplib, imapserver, repository, folder, mbnames, threadutil, version from offlineimap import imaplib, imapserver, repository, folder, mbnames, threadutil, version
from offlineimap.threadutil import InstanceLimitedThread, ExitNotifyThread from offlineimap.threadutil import InstanceLimitedThread, ExitNotifyThread

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from threading import * from threading import *
from StringIO import StringIO from StringIO import StringIO

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from threading import * from threading import *
from offlineimap.ui.UIBase import UIBase from offlineimap.ui.UIBase import UIBase

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from Blinkenlights import BlinkenBase from Blinkenlights import BlinkenBase
from UIBase import UIBase from UIBase import UIBase

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import sys, time import sys, time
from UIBase import UIBase from UIBase import UIBase

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from UIBase import UIBase from UIBase import UIBase
from getpass import getpass from getpass import getpass

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from __future__ import nested_scopes from __future__ import nested_scopes

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import offlineimap.version import offlineimap.version
import re, time, sys, traceback, threading, thread import re, time, sys, traceback, threading, thread

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import UIBase, Blinkenlights import UIBase, Blinkenlights

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from threading import * from threading import *
import traceback import traceback

View File

@ -14,7 +14,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import offlineimap.ui import offlineimap.ui
import sys import sys

View File

@ -36,7 +36,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA""" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA"""
cmdhelp = """ cmdhelp = """
offlineimap [ -1 ] [ -P profiledir ] [ -a accountlist ] [ offlineimap [ -1 ] [ -P profiledir ] [ -a accountlist ] [