/offlineimap/head: changeset 478

Added -l option. Updated documentation for it. Changed _msg to
_display override in UI modules. Renamed "doc" to "docs" target in
Makefile to avoid conflicting with a subdir.
This commit is contained in:
jgoerzen 2003-06-02 20:06:18 +01:00
parent d52c007857
commit 022655dddd
20 changed files with 788 additions and 715 deletions

View File

@ -17,7 +17,7 @@
SHELL=/bin/bash
clean:
-python2.2 setup.py clean --all
-python2.3 setup.py clean --all
-rm -f `find . -name "*~"`
-rm -f `find . -name "*.tmp"`
-rm -f bin/offlineimapc
@ -34,7 +34,7 @@ clean:
changelog:
svn log -v > ChangeLog
docs:
doc:
docbook2man offlineimap.sgml
docbook2man offlineimap.sgml
docbook2html -u offlineimap.sgml

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python2.2
#!/usr/bin/env python2.3
# Startup from system-wide installation
# Copyright (C) 2002, 2003 John Goerzen
# <jgoerzen@complete.org>

View File

@ -1,6 +1,9 @@
offlineimap (3.99.18) unstable; urgency=low
* Made a fix for Python2.3 compatibility.
This application now defaults to Python2.3! If you do not have Python
2.3, things may not work as expected.
* Removed warning when thread debug is specified. Closes: #195739.
-- John Goerzen <jgoerzen@complete.org> Tue, 27 May 2003 16:58:54 -0500

View File

@ -2,13 +2,13 @@ Source: offlineimap
Section: mail
Priority: optional
Maintainer: John Goerzen <jgoerzen@complete.org>
Build-Depends-Indep: debhelper (>> 3.0.0), python2.2 (>= 2.2.1-4), python2.2-dev (>= 2.2.1-4), groff, docbook-utils
Build-Depends-Indep: debhelper (>> 3.0.0), python2.3 (>= 2.2.104), python2.3-dev (>= 2.2.104), groff, docbook-utils
Standards-Version: 3.5.2
Package: offlineimap
Architecture: all
Depends: python2.2
Suggests: python2.2-tk
Depends: python2.3
Suggests: python2.3-tk
Description: IMAP/Maildir synchronization and reader support
OfflineIMAP is a tool to simplify your e-mail reading. With
OfflimeIMAP, you can:

View File

@ -9,7 +9,7 @@
# This is the debhelper compatibility version to use.
export DH_COMPAT=3
PYTHON=python2.2
PYTHON=python2.3
PACKAGE=offlineimap

View File

@ -5,7 +5,7 @@
>OfflineIMAP Manual</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFERENCE"
BGCOLOR="#FFFFFF"
@ -64,31 +64,24 @@ NAME="AEN18"
><B
CLASS="COMMAND"
>offlineimap</B
> [-1] [-P <TT
> [-1] [-P <VAR
CLASS="REPLACEABLE"
><I
>profiledir</I
></TT
>] [-a <TT
>profiledir</VAR
>] [-a <VAR
CLASS="REPLACEABLE"
><I
>accountlist</I
></TT
>] [-c <TT
>accountlist</VAR
>] [-c <VAR
CLASS="REPLACEABLE"
><I
>configfile</I
></TT
>] [-d <TT
>configfile</VAR
>] [-d <VAR
CLASS="REPLACEABLE"
><I
>debugtype[,...]</I
></TT
>] [-o] [-u <TT
>debugtype[,...]</VAR
>] [-l <VAR
CLASS="REPLACEABLE"
><I
>interface</I
></TT
>filename</VAR
>] [-o] [-u <VAR
CLASS="REPLACEABLE"
>interface</VAR
>]</P
><P
><B
@ -99,7 +92,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN38"
NAME="AEN40"
></A
><H2
>Description</H2
@ -196,7 +189,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN56"
NAME="AEN58"
></A
><H3
>Method of Operation</H3
@ -243,7 +236,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN65"
NAME="AEN67"
></A
><H2
>Quick Start</H2
@ -348,7 +341,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN87"
NAME="AEN89"
></A
><H2
>Installation</H2
@ -376,7 +369,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN93"
NAME="AEN95"
></A
><H3
>Prerequisites</H3
@ -440,7 +433,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN107"
NAME="AEN109"
></A
><H3
>System-Wide Installation, Debian</H3
@ -486,7 +479,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN119"
NAME="AEN121"
></A
><H3
>System-Wide Installation, Other</H3
@ -529,7 +522,7 @@ CLASS="COMMAND"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN129"
NAME="AEN131"
></A
><H3
>Single-Account Installation</H3
@ -614,7 +607,7 @@ CLASS="FILENAME"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN150"
NAME="AEN152"
></A
><H2
>Options</H2
@ -650,11 +643,9 @@ CLASS="PROPERTY"
</P
></DD
><DT
>-P <TT
>-P <VAR
CLASS="REPLACEABLE"
><I
>profiledir</I
></TT
>profiledir</VAR
></DT
><DD
><P
@ -662,11 +653,9 @@ CLASS="REPLACEABLE"
CLASS="APPLICATION"
>OfflineIMAP</SPAN
> into profile mode. The program
will create <TT
will create <VAR
CLASS="REPLACEABLE"
><I
>profiledir</I
></TT
>profiledir</VAR
>
(it must not already exist). As it runs, Python profiling
information
@ -674,22 +663,20 @@ CLASS="REPLACEABLE"
is present for debugging and optimization only, and should NOT be used
unless you have a specific reason to do so. It will significantly
slow program performance, may reduce reliability, and can generate
huge amounts of data. You must use the <TT
huge amounts of data. You must use the <VAR
CLASS="OPTION"
>-1</TT
>-1</VAR
> option when
you use <TT
you use <VAR
CLASS="OPTION"
>-P</TT
>-P</VAR
>.
</P
></DD
><DT
>-a <TT
>-a <VAR
CLASS="REPLACEABLE"
><I
>accountlist</I
></TT
>accountlist</VAR
></DT
><DD
><P
@ -707,11 +694,9 @@ CLASS="PROPERTY"
</P
></DD
><DT
>-c <TT
>-c <VAR
CLASS="REPLACEABLE"
><I
>configfile</I
></TT
>configfile</VAR
></DT
><DD
><P
@ -723,25 +708,23 @@ CLASS="FILENAME"
</P
></DD
><DT
>-d <TT
>-d <VAR
CLASS="REPLACEABLE"
><I
>debugtype[,...]</I
></TT
>debugtype[,...]</VAR
></DT
><DD
><P
>Enables debugging for OfflineIMAP. This is useful if
you are trying to track down a malfunction or figure out what is going
on under the hood. I suggest that you use this with
<TT
<VAR
CLASS="OPTION"
>-1</TT
>-1</VAR
> to make the results more sensible.</P
><P
><TT
><VAR
CLASS="OPTION"
>-d</TT
>-d</VAR
> requires one or more debugtypes,
separated by commas. These define what exactly will be
debugged, and include three options: <SPAN
@ -774,6 +757,20 @@ CLASS="PROPERTY"
</P
></DD
><DT
>-l
<VAR
CLASS="REPLACEABLE"
>filename</VAR
></DT
><DD
><P
> Enables logging to filename. This will log everything
that goes to the screen to the specified file.
Additionally, if any debugging is specified with -d,
then debug messages will not go to the screen, but
instead to the logfile only.</P
></DD
><DT
>-o</DT
><DD
><P
@ -791,11 +788,9 @@ CLASS="PROPERTY"
>Show summary of options.</P
></DD
><DT
>-u <TT
>-u <VAR
CLASS="REPLACEABLE"
><I
>interface</I
></TT
>interface</VAR
></DT
><DD
><P
@ -810,7 +805,7 @@ CLASS="REPLACEABLE"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN212"
NAME="AEN219"
></A
><H2
>User Interfaces</H2
@ -826,9 +821,9 @@ CLASS="APPLICATION"
CLASS="PROPERTY"
>ui</SPAN
> option in the configuration file specifies
user interface preferences. The <TT
user interface preferences. The <VAR
CLASS="OPTION"
>-u</TT
>-u</VAR
> command-line
option can override the configuration file setting. The available
values for the configuration file or command-line are described
@ -836,7 +831,7 @@ CLASS="OPTION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN218"
NAME="AEN225"
></A
><H3
>Tk.Blinkenlights</H3
@ -992,7 +987,7 @@ CLASS="FIRSTTERM"
>, in part, as:
</P
><A
NAME="AEN281"
NAME="AEN288"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
@ -1029,7 +1024,7 @@ CLASS="EMPHASIS"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN287"
NAME="AEN294"
></A
><H3
>Curses.Blinkenlights</H3
@ -1047,7 +1042,7 @@ NAME="AEN287"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN291"
NAME="AEN298"
></A
><H3
>Tk.VerboseUI</H3
@ -1064,7 +1059,7 @@ NAME="AEN291"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN294"
NAME="AEN301"
></A
><H3
>TTY.TTYUI</H3
@ -1077,7 +1072,7 @@ NAME="AEN294"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN297"
NAME="AEN304"
></A
><H3
>Noninteractive.Basic</H3
@ -1097,7 +1092,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN301"
NAME="AEN308"
></A
><H3
>Noninteractive.Quiet</H3
@ -1114,7 +1109,7 @@ NAME="AEN301"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN304"
NAME="AEN311"
></A
><H2
>Examples</H2
@ -1126,7 +1121,7 @@ NAME="AEN304"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN307"
NAME="AEN314"
></A
><H3
>Multiple Accounts with Mutt</H3
@ -1199,7 +1194,7 @@ spoolfile=+Personal/INBOX</PRE
><DIV
CLASS="REFSECT2"
><A
NAME="AEN326"
NAME="AEN333"
></A
><H3
>UW-IMAPD and References</H3
@ -1258,7 +1253,7 @@ holdconnectionopen = no</PRE
><DIV
CLASS="REFSECT2"
><A
NAME="AEN334"
NAME="AEN341"
></A
><H3
>pythonfile Configuration File Option</H3
@ -1324,7 +1319,7 @@ CLASS="PROPERTY"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN347"
NAME="AEN354"
></A
><H2
>Errors</H2
@ -1335,7 +1330,7 @@ NAME="AEN347"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN350"
NAME="AEN357"
></A
><H3
>UID validity problem for folder</H3
@ -1382,17 +1377,13 @@ CLASS="FILENAME"
><PRE
CLASS="PROGRAMLISTING"
>rm -r ~/Folders/INBOX
rm -r ~/.offlineimap/Account-<TT
rm -r ~/.offlineimap/Account-<VAR
CLASS="REPLACEABLE"
><I
>AccountName</I
></TT
>AccountName</VAR
>
rm -r ~/.offlineimap/Repository-<TT
rm -r ~/.offlineimap/Repository-<VAR
CLASS="REPLACEABLE"
><I
>RepositoryName</I
></TT
>RepositoryName</VAR
></PRE
><P
> (Of course, replace AccountName and RepositoryName
@ -1452,7 +1443,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN375"
NAME="AEN382"
></A
><H2
>Other Frequently Asked Questions</H2
@ -1721,7 +1712,7 @@ CLASS="PROPERTY"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN471"
NAME="AEN478"
></A
><H2
>Conforming To</H2
@ -1760,14 +1751,14 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN484"
NAME="AEN491"
></A
><H2
>Notes</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN486"
NAME="AEN493"
></A
><H3
>Deleting Local Folders</H3
@ -1799,7 +1790,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN493"
NAME="AEN500"
></A
><H3
>Multiple Instances</H3
@ -1828,7 +1819,7 @@ CLASS="PROPERTY"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN500"
NAME="AEN507"
></A
><H3
>Copying Messages Between Folders</H3
@ -1858,7 +1849,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN506"
NAME="AEN513"
></A
><H3
>Use with Evolution</H3
@ -1871,9 +1862,9 @@ CLASS="APPLICATION"
CLASS="APPLICATION"
>OfflineIMAP</SPAN
> account to have
<TT
<VAR
CLASS="OPTION"
>sep = /</TT
>sep = /</VAR
> in its configuration. Then, configure
Evolution with the
"Maildir-format mail directories" server type. For the path, you will need to
@ -1894,7 +1885,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN514"
NAME="AEN521"
></A
><H3
>Use with KMail</H3
@ -1928,7 +1919,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN522"
NAME="AEN529"
></A
><H3
>Mailing List</H3
@ -1947,7 +1938,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT2"
><A
NAME="AEN526"
NAME="AEN533"
></A
><H3
>Bugs</H3
@ -1973,12 +1964,12 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN532"
NAME="AEN539"
></A
><H2
>Copyright</H2
><P
>OfflineIMAP, and this manual, are Copyright © 2002, 2003 John Goerzen.</P
>OfflineIMAP, and this manual, are Copyright &copy; 2002, 2003 John Goerzen.</P
><P
> This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -2011,7 +2002,7 @@ CLASS="APPLICATION"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN541"
NAME="AEN548"
></A
><H2
>Author</H2
@ -2020,12 +2011,12 @@ NAME="AEN541"
CLASS="APPLICATION"
>OfflineIMAP</SPAN
>, its libraries, documentation, and all included files, except where
noted, was written by John Goerzen <TT
noted, was written by John Goerzen <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:jgoerzen@complete.org"
>jgoerzen@complete.org</A
>&#62;</TT
>&#62;</CODE
> and
copyright is held as stated in the COPYRIGHT section.
</P
@ -2063,7 +2054,7 @@ TARGET="_top"
><DIV
CLASS="REFSECT1"
><A
NAME="AEN553"
NAME="AEN560"
></A
><H2
>See Also</H2

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ NAME
SYNOPSIS
offlineimap [ -1 ] [ -P profiledir ] [ -a accountlist ] [ -c configfile
] [ -d debugtype[,...] ] [ -o ] [ -u interface ]
] [ -d debugtype[,...] ] [ -l filename ] [ -o ] [ -u interface ]
offlineimap -h | --help
@ -237,6 +237,12 @@ OPTIONS
option will enable debugging for certain Maildir operations.
And thread will debug the threading model.
-l filename
Enables logging to filename. This will log everything that goes
to the screen to the specified file. Additionally, if any
debugging is specified with -d, then debug messages will not go
to the screen, but instead to the logfile only.
-o Run only once, ignoring all autorefresh settings in the configu-
ration file.
@ -708,7 +714,8 @@ NOTES
status or contribute to fixing them.
COPYRIGHT
OfflineIMAP, and this manual, are Copyright 2002, 2003 John Goerzen.
OfflineIMAP, and this manual, are Copyright (C) 2002, 2003 John
Goerzen.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@ -716,9 +723,9 @@ COPYRIGHT
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MER-
CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Gen-
eral Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
@ -748,4 +755,4 @@ SEE ALSO
John Goerzen 22 April 2003 OFFLINEIMAP(1)
John Goerzen 02 June 2003 OFFLINEIMAP(1)

View File

@ -3,13 +3,13 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "OFFLINEIMAP" "1" "22 April 2003" "John Goerzen" "OfflineIMAP Manual"
.TH "OFFLINEIMAP" "1" "02 June 2003" "John Goerzen" "OfflineIMAP Manual"
.SH NAME
OfflineIMAP \- Powerful IMAP/Maildir synchronization and reader support
.SH SYNOPSIS
\fBofflineimap\fR [ \fB-1\fR ] [ \fB-P \fIprofiledir\fB\fR ] [ \fB-a \fIaccountlist\fB\fR ] [ \fB-c \fIconfigfile\fB\fR ] [ \fB-d \fIdebugtype[,...]\fB\fR ] [ \fB-o\fR ] [ \fB-u \fIinterface\fB\fR ]
\fBofflineimap\fR [ \fB-1\fR ] [ \fB-P \fIprofiledir\fB\fR ] [ \fB-a \fIaccountlist\fB\fR ] [ \fB-c \fIconfigfile\fB\fR ] [ \fB-d \fIdebugtype[,...]\fB\fR ] [ \fB-l \fIfilename\fB\fR ] [ \fB-o\fR ] [ \fB-u \fIinterface\fB\fR ]
\fBofflineimap\fR \fB-h\fR | \fB--help\fR
@ -287,6 +287,13 @@ from the debugging output before sending it to anyone else. The
certain Maildir operations. And \fIthread\fR
will debug the threading model.
.TP
\fB-l \fIfilename\fB\fR
Enables logging to filename. This will log everything
that goes to the screen to the specified file.
Additionally, if any debugging is specified with -d,
then debug messages will not go to the screen, but
instead to the logfile only.
.TP
\fB-o\fR
Run only once, ignoring all
\fIautorefresh\fR settings in the configuration
@ -827,7 +834,7 @@ The Web site also lists all current bugs, where you can check their
status or contribute to fixing them.
.SH "COPYRIGHT"
.PP
OfflineIMAP, and this manual, are Copyright © 2002, 2003 John Goerzen.
OfflineIMAP, and this manual, are Copyright (C) 2002, 2003 John Goerzen.
.PP
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python2.2
#!/usr/bin/env python2.3
# Startup from single-user installation
# Copyright (C) 2002, 2003 John Goerzen
# <jgoerzen@complete.org>

View File

@ -10,7 +10,7 @@
<refentryinfo>
<address><email>jgoerzen@complete.org</email></address>
<author><firstname>John</firstname><surname>Goerzen</surname></author>
<date> $Date: 2003-04-22 10:47:25 -0500 (Tue, 22 Apr 2003) $ </date>
<date> $Date: 2003-06-02 09:06:18 -0500 (Mon, 02 Jun 2003) $ </date>
</refentryinfo>
<refmeta>
@ -33,6 +33,7 @@
<arg>-a <replaceable>accountlist</replaceable></arg>
<arg>-c <replaceable>configfile</replaceable></arg>
<arg>-d <replaceable>debugtype[,...]</replaceable></arg>
<arg>-l <replaceable>filename</replaceable></arg>
<arg>-o</arg>
<arg>-u <replaceable>interface</replaceable></arg>
</cmdsynopsis>
@ -370,6 +371,16 @@ cd offlineimap-x.y.z</ProgramListing>
certain Maildir operations. And <property>thread</property>
will debug the threading model.
</para></listitem>
</varlistentry>
<varlistentry><term>-l
<replaceable>filename</replaceable></term>
<listitem><para>
Enables logging to filename. This will log everything
that goes to the screen to the specified file.
Additionally, if any debugging is specified with -d,
then debug messages will not go to the screen, but
instead to the logfile only.</para>
</listitem>
</varlistentry>
<varlistentry><term>-o</term>
<listitem><para>Run only once, ignoring all

View File

@ -1129,6 +1129,9 @@ class IMAP4_SSL(IMAP4):
self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((host, port))
if sys.version_info[0] <= 2 and sys.version_info[1] <= 2:
self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile)
else:
self.sslobj = socket.ssl(self.sock._sock, self.keyfile, self.certfile)
self.sslobj = sslwrapper(self.sslobj)

View File

@ -229,32 +229,48 @@ class IMAPServer:
until the Event object as passed is true. This method is expected
to be invoked in a separate thread, which should be join()'d after
the event is set."""
ui = UIBase.getglobalui()
ui.debug('imap', 'keepalive thread started')
while 1:
ui.debug('imap', 'keepalive: top of loop')
event.wait(timeout)
ui.debug('imap', 'keepalive: after wait')
if event.isSet():
ui.debug('imap', 'keepalive: event is set; exiting')
return
ui.debug('imap', 'keepalive: acquiring connectionlock')
self.connectionlock.acquire()
numconnections = len(self.assignedconnections) + \
len(self.availableconnections)
self.connectionlock.release()
ui.debug('imap', 'keepalive: connectionlock released')
threads = []
imapobjs = []
for i in range(numconnections):
ui.debug('imap', 'keepalive: processing connection %d of %d' % (i, numconnections))
imapobj = self.acquireconnection()
ui.debug('imap', 'keepalive: connection %d acquired' % i)
imapobjs.append(imapobj)
thr = threadutil.ExitNotifyThread(target = imapobj.noop)
thr.setDaemon(1)
thr.start()
threads.append(thr)
ui.debug('imap', 'keepalive: thread started')
ui.debug('imap', 'keepalive: joining threads')
for thr in threads:
# Make sure all the commands have completed.
thr.join()
ui.debug('imap', 'keepalive: releasing connections')
for imapobj in imapobjs:
self.releaseconnection(imapobj)
ui.debug('imap', 'keepalive: bottom of loop')
class ConfigedIMAPServer(IMAPServer):
"""This class is designed for easier initialization given a ConfigParser
object and an account name. The passwordhash is used if

View File

@ -82,6 +82,9 @@ def startup(versionno):
if debugtype == 'thread':
threading._VERBOSE = 1
if '-l' in options:
ui.setlogfd(open(options['-l'], 'wt'))
if '-o' in options:
# FIXME: maybe need a better
for section in accounts.getaccountlist(config):

View File

@ -488,7 +488,7 @@ class Blinkenlights(BlinkenBase, UIBase):
return s.af[accountname]
def _msg(s, msg, color = None):
def _display(s, msg, color = None):
if "\n" in msg:
for thisline in msg.split("\n"):
s._msg(thisline)

View File

@ -30,7 +30,7 @@ class TTYUI(UIBase):
def isusable(s):
return sys.stdout.isatty() and sys.stdin.isatty()
def _msg(s, msg):
def _display(s, msg):
s.outputlock.acquire()
try:
if (currentThread().getName() == 'MainThread'):

View File

@ -222,7 +222,7 @@ class VerboseUI(UIBase):
finally:
s.tflock.release()
def _msg(s, msg):
def _display(s, msg):
s.gettf().setmessage(msg)
def threadExited(s, thread):
@ -504,7 +504,7 @@ class Blinkenlights(BlinkenBase, VerboseUI):
lo, hi = s.text.vbar.get()
s.text.vbar.set(1.0 - (hi - lo), 1.0)
def _msg(s, msg):
def _display(s, msg):
if "\n" in msg:
for thisline in msg.split("\n"):
s._msg(thisline)

View File

@ -21,7 +21,8 @@ import re, time, sys, traceback, threading, thread
from StringIO import StringIO
debugtypes = {'imap': 'IMAP protocol debugging',
'maildir': 'Maildir repository debugging'}
'maildir': 'Maildir repository debugging',
'thread': 'Threading debugging'}
globalui = None
def setglobalui(newui):
@ -39,10 +40,27 @@ class UIBase:
s.debugmessages = {}
s.debugmsglen = 50
s.threadaccounts = {}
s.logfile = None
################################################## UTILS
def _msg(s, msg):
"""Generic tool called when no other works."""
s._log(msg)
s._display(msg)
def _log(s, msg):
"""Log it to disk. Returns true if it wrote something; false
otherwise."""
if s.logfile:
s.logfile.write("%s: %s\n" % (threading.currentThread().getName(),
msg))
return s.logfile
def setlogfd(s, logfd):
s.logfile = logfd
def _display(s, msg):
"""Display a message."""
raise NotImplementedError
def warn(s, msg, minor = 0):
@ -82,8 +100,9 @@ class UIBase:
while len(s.debugmessages[thisthread]) > s.debugmsglen:
s.debugmessages[thisthread] = s.debugmessages[thisthread][1:]
if not s._log("DEBUG[%s]: %s"):
if debugtype in s.debuglist:
s._msg("DEBUG[%s]: %s" % (debugtype, msg))
s._display("DEBUG[%s]: %s" % (debugtype, msg))
def add_debug(s, debugtype):
global debugtypes

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python2.2
#!/usr/bin/env python2.3
# $Id: setup.py,v 1.1 2002/06/21 18:10:49 jgoerzen Exp $