/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 SHELL=/bin/bash
clean: clean:
-python2.2 setup.py clean --all -python2.3 setup.py clean --all
-rm -f `find . -name "*~"` -rm -f `find . -name "*~"`
-rm -f `find . -name "*.tmp"` -rm -f `find . -name "*.tmp"`
-rm -f bin/offlineimapc -rm -f bin/offlineimapc
@ -34,7 +34,7 @@ clean:
changelog: changelog:
svn log -v > ChangeLog svn log -v > ChangeLog
docs: doc:
docbook2man offlineimap.sgml docbook2man offlineimap.sgml
docbook2man offlineimap.sgml docbook2man offlineimap.sgml
docbook2html -u 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 # Startup from system-wide installation
# Copyright (C) 2002, 2003 John Goerzen # Copyright (C) 2002, 2003 John Goerzen
# <jgoerzen@complete.org> # <jgoerzen@complete.org>

View File

@ -1,6 +1,9 @@
offlineimap (3.99.18) unstable; urgency=low offlineimap (3.99.18) unstable; urgency=low
* Made a fix for Python2.3 compatibility. * 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 -- John Goerzen <jgoerzen@complete.org> Tue, 27 May 2003 16:58:54 -0500

View File

@ -2,13 +2,13 @@ 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 (>> 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 Standards-Version: 3.5.2
Package: offlineimap Package: offlineimap
Architecture: all Architecture: all
Depends: python2.2 Depends: python2.3
Suggests: python2.2-tk Suggests: python2.3-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
OfflimeIMAP, you can: OfflimeIMAP, you can:

View File

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

View File

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

View File

@ -10,7 +10,7 @@
<refentryinfo> <refentryinfo>
<address><email>jgoerzen@complete.org</email></address> <address><email>jgoerzen@complete.org</email></address>
<author><firstname>John</firstname><surname>Goerzen</surname></author> <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> </refentryinfo>
<refmeta> <refmeta>
@ -33,6 +33,7 @@
<arg>-a <replaceable>accountlist</replaceable></arg> <arg>-a <replaceable>accountlist</replaceable></arg>
<arg>-c <replaceable>configfile</replaceable></arg> <arg>-c <replaceable>configfile</replaceable></arg>
<arg>-d <replaceable>debugtype[,...]</replaceable></arg> <arg>-d <replaceable>debugtype[,...]</replaceable></arg>
<arg>-l <replaceable>filename</replaceable></arg>
<arg>-o</arg> <arg>-o</arg>
<arg>-u <replaceable>interface</replaceable></arg> <arg>-u <replaceable>interface</replaceable></arg>
</cmdsynopsis> </cmdsynopsis>
@ -370,6 +371,16 @@ cd offlineimap-x.y.z</ProgramListing>
certain Maildir operations. And <property>thread</property> certain Maildir operations. And <property>thread</property>
will debug the threading model. will debug the threading model.
</para></listitem> </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>
<varlistentry><term>-o</term> <varlistentry><term>-o</term>
<listitem><para>Run only once, ignoring all <listitem><para>Run only once, ignoring all

View File

@ -1129,6 +1129,9 @@ class IMAP4_SSL(IMAP4):
self.port = port self.port = port
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((host, port)) 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 = socket.ssl(self.sock._sock, self.keyfile, self.certfile)
self.sslobj = sslwrapper(self.sslobj) 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 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 to be invoked in a separate thread, which should be join()'d after
the event is set.""" the event is set."""
ui = UIBase.getglobalui()
ui.debug('imap', 'keepalive thread started')
while 1: while 1:
ui.debug('imap', 'keepalive: top of loop')
event.wait(timeout) event.wait(timeout)
ui.debug('imap', 'keepalive: after wait')
if event.isSet(): if event.isSet():
ui.debug('imap', 'keepalive: event is set; exiting')
return return
ui.debug('imap', 'keepalive: acquiring connectionlock')
self.connectionlock.acquire() self.connectionlock.acquire()
numconnections = len(self.assignedconnections) + \ numconnections = len(self.assignedconnections) + \
len(self.availableconnections) len(self.availableconnections)
self.connectionlock.release() self.connectionlock.release()
ui.debug('imap', 'keepalive: connectionlock released')
threads = [] threads = []
imapobjs = [] imapobjs = []
for i in range(numconnections): for i in range(numconnections):
ui.debug('imap', 'keepalive: processing connection %d of %d' % (i, numconnections))
imapobj = self.acquireconnection() imapobj = self.acquireconnection()
ui.debug('imap', 'keepalive: connection %d acquired' % i)
imapobjs.append(imapobj) imapobjs.append(imapobj)
thr = threadutil.ExitNotifyThread(target = imapobj.noop) thr = threadutil.ExitNotifyThread(target = imapobj.noop)
thr.setDaemon(1) thr.setDaemon(1)
thr.start() thr.start()
threads.append(thr) threads.append(thr)
ui.debug('imap', 'keepalive: thread started')
ui.debug('imap', 'keepalive: joining threads')
for thr in threads: for thr in threads:
# Make sure all the commands have completed. # Make sure all the commands have completed.
thr.join() thr.join()
ui.debug('imap', 'keepalive: releasing connections')
for imapobj in imapobjs: for imapobj in imapobjs:
self.releaseconnection(imapobj) self.releaseconnection(imapobj)
ui.debug('imap', 'keepalive: bottom of loop')
class ConfigedIMAPServer(IMAPServer): class ConfigedIMAPServer(IMAPServer):
"""This class is designed for easier initialization given a ConfigParser """This class is designed for easier initialization given a ConfigParser
object and an account name. The passwordhash is used if object and an account name. The passwordhash is used if

View File

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

View File

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

View File

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

View File

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

View File

@ -21,7 +21,8 @@ import re, time, sys, traceback, threading, thread
from StringIO import StringIO from StringIO import StringIO
debugtypes = {'imap': 'IMAP protocol debugging', debugtypes = {'imap': 'IMAP protocol debugging',
'maildir': 'Maildir repository debugging'} 'maildir': 'Maildir repository debugging',
'thread': 'Threading debugging'}
globalui = None globalui = None
def setglobalui(newui): def setglobalui(newui):
@ -39,10 +40,27 @@ class UIBase:
s.debugmessages = {} s.debugmessages = {}
s.debugmsglen = 50 s.debugmsglen = 50
s.threadaccounts = {} s.threadaccounts = {}
s.logfile = None
################################################## UTILS ################################################## UTILS
def _msg(s, msg): def _msg(s, msg):
"""Generic tool called when no other works.""" """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 raise NotImplementedError
def warn(s, msg, minor = 0): def warn(s, msg, minor = 0):
@ -82,8 +100,9 @@ class UIBase:
while len(s.debugmessages[thisthread]) > s.debugmsglen: while len(s.debugmessages[thisthread]) > s.debugmsglen:
s.debugmessages[thisthread] = s.debugmessages[thisthread][1:] s.debugmessages[thisthread] = s.debugmessages[thisthread][1:]
if not s._log("DEBUG[%s]: %s"):
if debugtype in s.debuglist: if debugtype in s.debuglist:
s._msg("DEBUG[%s]: %s" % (debugtype, msg)) s._display("DEBUG[%s]: %s" % (debugtype, msg))
def add_debug(s, debugtype): def add_debug(s, debugtype):
global debugtypes 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 $ # $Id: setup.py,v 1.1 2002/06/21 18:10:49 jgoerzen Exp $