summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkolla <kolla@uninett.no>2005-08-02 15:11:20 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-08-02 15:11:20 +0000
commit2c2c957d5b8a09b6bbe1046d802eabf1fc621f59 (patch)
tree997f21b2ac599aca8ac34b0d66a33581d328efe5
parenteea91968ada14180c77ade6d1a906fdb5ee73d90 (diff)
Pine - A tool for reading, sending and managing electronic messages.
With chappa-patches, transparent and more. LDAP- and SSL-support.
-rw-r--r--packages/pine/.mtn2git_empty0
-rw-r--r--packages/pine/pine-4.63/.mtn2git_empty0
-rw-r--r--packages/pine/pine-4.63/imap-2000-time.patch56
-rw-r--r--packages/pine/pine-4.63/pine-4.30-ldap.patch11
-rw-r--r--packages/pine/pine-4.63/pine-4.31-segfix.patch17
-rw-r--r--packages/pine/pine-4.63/pine-4.40-lockfile-perm.patch22
-rw-r--r--packages/pine/pine-4.63/pine-4.56-passfile.patch12
-rw-r--r--packages/pine/pine-4.63/pine-4.61-largeterminal.patch14
-rw-r--r--packages/pine/pine-4.63/pine-4.61-subjectlength.patch59
-rw-r--r--packages/pine/pine-4.63/pine-4.62-spooldir-permissions.patch12
-rw-r--r--packages/pine/pine-4.63/pine-4.63-r2-chappa-all.patch21900
-rw-r--r--packages/pine/pine-4.63/pine-ldap3.patch11
-rw-r--r--packages/pine/pine-4.63/transparency.patch14
-rw-r--r--packages/pine/pine_4.63.bb82
14 files changed, 22210 insertions, 0 deletions
diff --git a/packages/pine/.mtn2git_empty b/packages/pine/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pine/.mtn2git_empty
diff --git a/packages/pine/pine-4.63/.mtn2git_empty b/packages/pine/pine-4.63/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pine/pine-4.63/.mtn2git_empty
diff --git a/packages/pine/pine-4.63/imap-2000-time.patch b/packages/pine/pine-4.63/imap-2000-time.patch
new file mode 100644
index 0000000000..751d1ff506
--- /dev/null
+++ b/packages/pine/pine-4.63/imap-2000-time.patch
@@ -0,0 +1,56 @@
+--- pine4.33/imap/src/osdep/unix/os_lnx.c.time Wed Feb 14 12:25:06 2001
++++ pine4.33/imap/src/osdep/unix/os_lnx.c Wed Feb 14 12:25:16 2001
+@@ -23,6 +23,7 @@
+ #include "osdep.h"
+ #include <stdio.h>
+ #include <sys/time.h>
++#include <time.h>
+ #include <sys/stat.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+--- pine4.33/imap/src/osdep/unix/news.c.time Thu Jan 18 21:28:33 2001
++++ pine4.33/imap/src/osdep/unix/news.c Wed Feb 14 12:24:34 2001
+@@ -21,7 +21,7 @@
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <errno.h>
+-extern int errno; /* just in case */
++#include <time.h>
+ #include "mail.h"
+ #include "osdep.h"
+ #include <sys/stat.h>
+--- pine4.33/imap/src/osdep/unix/phile.c.time Thu Jan 18 21:31:20 2001
++++ pine4.33/imap/src/osdep/unix/phile.c Wed Feb 14 12:24:34 2001
+@@ -21,8 +21,8 @@
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <errno.h>
+-extern int errno; /* just in case */
+ #include <signal.h>
++#include <time.h>
+ #include "mail.h"
+ #include "osdep.h"
+ #include <pwd.h>
+--- pine4.33/imap/src/osdep/unix/mh.c.time Thu Jan 18 21:27:37 2001
++++ pine4.33/imap/src/osdep/unix/mh.c Wed Feb 14 12:24:34 2001
+@@ -21,7 +21,8 @@
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <errno.h>
+-extern int errno; /* just in case */
++#include <time.h>
++
+ #include "mail.h"
+ #include "osdep.h"
+ #include <pwd.h>
+--- pine4.33/imap/src/osdep/unix/mx.c.time Thu Jan 18 21:28:09 2001
++++ pine4.33/imap/src/osdep/unix/mx.c Wed Feb 14 12:24:34 2001
+@@ -21,7 +21,7 @@
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <errno.h>
+-extern int errno; /* just in case */
++#include <time.h>
+ #include "mail.h"
+ #include "osdep.h"
+ #include <pwd.h>
diff --git a/packages/pine/pine-4.63/pine-4.30-ldap.patch b/packages/pine/pine-4.63/pine-4.30-ldap.patch
new file mode 100644
index 0000000000..6b920ade51
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.30-ldap.patch
@@ -0,0 +1,11 @@
+--- pine4.30/build.ldap Fri Oct 27 12:48:05 2000
++++ pine4.30/build Fri Oct 27 12:49:00 2000
+@@ -249,7 +249,7 @@
+ case "$?" in
+ 1) if [ "$LLIBS" != "1" ]
+ then
+- L1="'LDAPLIBS=../ldap/libraries/libldap.a ../ldap/libraries/liblber.a'"
++ L1="'LDAPLIBS=../ldap/libraries/libldap.so ../ldap/libraries/liblber.so ../ldap/libraries/libresolv.so'"
+ fi
+ if [ "$LFLAGS" != "1" ]
+ then
diff --git a/packages/pine/pine-4.63/pine-4.31-segfix.patch b/packages/pine/pine-4.63/pine-4.31-segfix.patch
new file mode 100644
index 0000000000..f65aa60294
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.31-segfix.patch
@@ -0,0 +1,17 @@
+diff -urN pine4.31.orig/pine/osdep/lstcmpnt pine4.31/pine/osdep/lstcmpnt
+--- pine4.31.orig/pine/osdep/lstcmpnt Mon Oct 30 17:45:08 2000
++++ pine4.31/pine/osdep/lstcmpnt Tue Dec 12 06:33:53 2000
+@@ -9,10 +9,10 @@
+ last_cmpnt(filename)
+ char *filename;
+ {
+- register char *p = NULL, *q = filename;
++ char *p = NULL, *q = filename;
+
+- if(!q)
+- return(q);
++ if(filename == 0)
++ return 0;
+
+ while(q = strchr(q, '/'))
+ if(*++q)
diff --git a/packages/pine/pine-4.63/pine-4.40-lockfile-perm.patch b/packages/pine/pine-4.63/pine-4.40-lockfile-perm.patch
new file mode 100644
index 0000000000..f2cb434de2
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.40-lockfile-perm.patch
@@ -0,0 +1,22 @@
+--- pine4.40/imap/src/osdep/unix/env_unix.h.lock_protection_fix Thu Oct 4 05:26:33 2001
++++ pine4.40/imap/src/osdep/unix/env_unix.h Thu Oct 4 05:30:33 2001
+@@ -46,12 +46,15 @@
+
+
+ /*
+- * Attention: all sorcerer's apprentices who think that 0666 is a mistake.
+- * You are wrong. Read the FAQ. Do not meddle in the affairs of wizards,
+- * for they are subtle and quick to anger.
++ * Attention: all people who do not care about OS security, and think that
++ * mode 0666 is a correct. You are wrong. In modern multiuser systems,
++ * both remote and local security is critically important. Allowing 0666
++ * lockfiles, allows all sorts of security problems to occur. Feel free to
++ * meddle with it however, if you do not care about local security.
+ */
+
+-#define MANDATORYLOCKPROT 0666 /* don't change this */
++/* Change this only if you do not want a secure multiuser system */
++#define MANDATORYLOCKPROT 0600
+
+ /* Function prototypes */
+
diff --git a/packages/pine/pine-4.63/pine-4.56-passfile.patch b/packages/pine/pine-4.63/pine-4.56-passfile.patch
new file mode 100644
index 0000000000..bb9813f7c6
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.56-passfile.patch
@@ -0,0 +1,12 @@
+--- pine4.56/pine/osdep/os-lnx.h.orig 2003-07-23 07:23:26.000000000 -0700
++++ pine4.56/pine/osdep/os-lnx.h 2003-07-23 07:23:30.000000000 -0700
+@@ -295,5 +295,9 @@
+ #define MAX_ADDR_EXPN (1000) /* Longest expanded addr */
+ #define MAX_ADDR_FIELD (10000) /* Longest fully-expanded addr field */
+
++/*----------------------------------------------------------------------
++ Allow for caching of passwords between connections.
++ ----*/
++#define PASSFILE ".pinepw"
+
+ #endif /* _OS_INCLUDED */
diff --git a/packages/pine/pine-4.63/pine-4.61-largeterminal.patch b/packages/pine/pine-4.63/pine-4.61-largeterminal.patch
new file mode 100644
index 0000000000..c046546dba
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.61-largeterminal.patch
@@ -0,0 +1,14 @@
+diff -Nur pine4.61.orig/pine/osdep/os-lnx.h pine4.61/pine/osdep/os-lnx.h
+--- pine4.61.orig/pine/osdep/os-lnx.h 2004-12-18 00:33:46.162401405 +0100
++++ pine4.61/pine/osdep/os-lnx.h 2004-12-18 00:34:14.473012057 +0100
+@@ -247,8 +247,8 @@
+
+
+ /*-- Max screen pine will display on. Used to define some array sizes --*/
+-#define MAX_SCREEN_COLS (170)
+-#define MAX_SCREEN_ROWS (200)
++#define MAX_SCREEN_COLS (340)
++#define MAX_SCREEN_ROWS (400)
+
+
+ /*----------------------------------------------------------------------
diff --git a/packages/pine/pine-4.63/pine-4.61-subjectlength.patch b/packages/pine/pine-4.63/pine-4.61-subjectlength.patch
new file mode 100644
index 0000000000..b7a9cdf7b7
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.61-subjectlength.patch
@@ -0,0 +1,59 @@
+--- pine4.61/pine/strings.c_orig 2004-03-12 10:48:17.783992528 +0100
++++ pine4.61/pine/strings.c 2004-03-12 11:01:37.929351944 +0100
+@@ -2912,7 +2912,7 @@ int rfc1522_token PROTO((char *,
+ char **));
+ int rfc1522_valtok PROTO((int));
+ int rfc1522_valenc PROTO((int));
+-int rfc1522_valid PROTO((char *, char **, char **, char **,
++int rfc1522_valid PROTO((char *, int, char **, char **, char **,
+ char **));
+ char *rfc1522_8bit PROTO((void *, int));
+ char *rfc1522_binary PROTO((void *, int));
+@@ -2949,7 +2949,7 @@ rfc1522_decode(d, len, s, charset)
+
+ while(s && (sw = strstr(s, RFC1522_INIT))){
+ /* validate the rest of the encoded-word */
+- if(rfc1522_valid(sw, &cset, &enc, &txt, &ew)){
++ if(rfc1522_valid(sw, 1, &cset, &enc, &txt, &ew)){
+ if(!rv)
+ rv = d; /* remember start of dest */
+
+@@ -3222,10 +3222,15 @@ rfc1522_valenc(c)
+
+ /*
+ * rfc1522_valid - validate the given string as to it's rfc1522-ness
++ * if relaxchk is true, double the maximum length of an encoded word.
++ * this is necessary to decode overlong encoded words generated by
++ * numerous incompliant implementations of RFC 2047 (1522).
++
+ */
+ int
+-rfc1522_valid(s, charset, enc, txt, endp)
++rfc1522_valid(s, relaxchk, charset, enc, txt, endp)
+ char *s;
++ int relaxchk;
+ char **charset;
+ char **enc;
+ char **txt;
+@@ -3237,7 +3242,11 @@ rfc1522_valid(s, charset, enc, txt, endp
+ rv = rfc1522_token(c = s+RFC1522_INIT_L, rfc1522_valtok, RFC1522_DLIM, &e)
+ && rfc1522_token(++e, rfc1522_valtok, RFC1522_DLIM, &t)
+ && rfc1522_token(++t, rfc1522_valenc, RFC1522_TERM, &p)
+- && p - s <= RFC1522_MAXW;
++ && p - s <= RFC1522_MAXW * (relaxchk ? 2 : 1);
++ /*
++ * relax the length condition by doubling the max length of an
++ * encoded word. It's is needed for some longer encoded words.
++ */
+
+ if(charset)
+ *charset = c;
+@@ -3288,7 +3297,7 @@ rfc1522_encode(d, len, s, charset)
+ }
+ else if(*p == RFC1522_INIT[0]
+ && !strncmp((char *) p, RFC1522_INIT, RFC1522_INIT_L)){
+- if(rfc1522_valid((char *) p, NULL, NULL, NULL, (char **) &q))
++ if(rfc1522_valid((char *) p, 0, NULL, NULL, NULL, (char **) &q))
+ p = q + RFC1522_TERM_L - 1; /* advance past encoded gunk */
+ }
+ else if(*p == ESCAPE && match_escapes((char *)(p+1))){
diff --git a/packages/pine/pine-4.63/pine-4.62-spooldir-permissions.patch b/packages/pine/pine-4.63/pine-4.62-spooldir-permissions.patch
new file mode 100644
index 0000000000..eb8c2f3eee
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.62-spooldir-permissions.patch
@@ -0,0 +1,12 @@
+diff -bur pine4.62/imap/src/osdep/unix/env_unix.c pine4.62-gentoo/imap/src/osdep/unix/env_unix.c
+--- pine4.62/imap/src/osdep/unix/env_unix.c 2004-09-13 23:32:11.000000000 +0200
++++ pine4.62-gentoo/imap/src/osdep/unix/env_unix.c 2005-03-24 23:38:13.000000000 +0100
+@@ -106,7 +106,7 @@
+ * on the mail spool, or install mlock.
+ */
+ /* disable warning if can't make .lock file */
+-static short disableLockWarning = NIL;
++static short disableLockWarning = 1;
+
+ /* UNIX namespaces */
+
diff --git a/packages/pine/pine-4.63/pine-4.63-r2-chappa-all.patch b/packages/pine/pine-4.63/pine-4.63-r2-chappa-all.patch
new file mode 100644
index 0000000000..313d4544ef
--- /dev/null
+++ b/packages/pine/pine-4.63/pine-4.63-r2-chappa-all.patch
@@ -0,0 +1,21900 @@
+diff -rc pine4.63/README.maildir pine4.63.I.USE/README.maildir
+*** pine4.63/README.maildir Thu May 19 19:59:15 2005
+--- pine4.63.I.USE/README.maildir Thu May 19 19:57:24 2005
+***************
+*** 0 ****
+--- 1,244 ----
++ -------------------------------------------------------------------------------
++
++ Maildir Driver for Pine4.63
++ By Eduardo Chappa <chappa@math.washington.edu>
++ http://www.math.washington.edu/~chappa/pine/
++
++ -------------------------------------------------------------------------------
++ 1. General Information About This Patch
++ ---------------------------------------
++
++ This patch adds support for the maildir format to Pine. We take the
++ approach that this patch is one more driver among the number of formats
++ supported by Pine (more generally c-client). This approach differs from
++ older versions of similar patches, in that once a maildir patch was
++ applied, it was assumed that all your folders would be created in the
++ maildir format.
++
++ This patch does not assume that maildir is a preferred format, instead
++ puts maildir in equal footing with other formats (mbox, mbx, etc), and so
++ a maildir folder in the mail/ collection is treated in the same way as any
++ other folder in any other format. In another words, just by reading the
++ name of a folder, or opening it, or doing any operation with it, you can
++ not know in which format the folder is.
++
++ This implies that if you want to add a folder in the maildir format to the
++ mail/ collection, then you must add by pressing "A" in the folder list
++ collection and enter "#driver.md/mail/name_maildir_folder".
++
++ If you only want to use maildir, however, you can do so too. In this case,
++ you must create a maildir collection. In that collection, only maildir
++ folders will be listed. If there is any folder in any other format, that
++ folder will be ignored. In another words, any folder listed there is in
++ maildir format and can be accessed through that collection, conversely,
++ any folder not listed there is not in maildir format and there is no way
++ to access it using this collection.
++
++ In order to create a maildir collection, you could press M S L, and "A" to
++ add a collection. Fill in the required fields as follows:
++
++ Nickname : Anything
++ Server :
++ Path : #md/relative/path/to/maildir/collection/
++ View :
++
++ For example, if "path" is set to "#md/mail/", then Pine will look for your
++ maildir folders that are in ~/mail/.
++
++ The code in this patch is mostly based in code for the unix driver plus
++ some combinations of the mh, mbx and nntp drivers for the c-client
++ library. Those drivers were designed by Mark Crispin, and bugs in this
++ code are not his bugs, but my own.
++
++ I got all the specification for this patch from
++ http://cr.yp.to/proto/maildir.html. If you know of a place with a better
++ specification for maildir format please let me know. The method this patch
++ uses to create a unique filename for a message is one of the "old
++ fashioned" methods. I realize that this is old fashioned, but it is
++ portable, and portability is the main reason why I decided to use an old
++ fashioned method (most methods are not portable. See the word
++ "Unfortunately" in that document).
++
++ --------------
++ 2. Other Goals
++ --------------
++
++ It is intended that this code will work well with any application
++ written using the c-client library. Of paramount importance is to make the
++ associated imap server work well when the server accesses a folder in
++ Maildir format. The program mailutil should also work flawlessly with this
++ implemetation of the driver.
++
++ It is intended that this driver be fast and stable. We intend not to
++ patch Pine to make this driver do its work, unless such patching is for
++ fixing bugs in Pine or to pass parameters to the driver.
++
++ ----------------------------------------
++ 3. One sided comparison to other patches
++ ----------------------------------------
++
++ There are two other maildir patches that could be easily adapted for
++ version 4.63.
++
++ The first one is the patch distributed by SuSe which can be downloaded
++ from http://hico.fphil.uniba.sk/pine-patches.html. This patch was last
++ updated for version 4.58. Several hunks fail to be applied when you try to
++ apply it to Pine 4.63. Even if you apply those hunks manually there will
++ still be the following bugs:
++
++ * You can not save between any two storage systems. The old patch did
++ not do this well, because it had to modify the mailcmd.c file in order
++ to save messages to a unix style mailbox, and this is undesirable,
++ because the mailutil application associated to this patch would fail
++ to save messages.
++ * It corrupts messages when it saves them to a mbx format folder.
++ * It could not save messages to the INBOX folder.
++ * It crashes when two different clients are accessing the same mailbox:
++ For example, if a message is marked deleted in one session, then it
++ should be marked deleted in any other session too, but instead it
++ crashes the second session.
++ * Pine crashes when saving several messages to a maildir (not even the
++ prototype of the function is correctly defined).
++ * Pine crashes when checking for the STATUS of a maildir mailbox.
++ * Pine could not delete a maildir folder.
++ * Pine could not rename a maildir folder.
++
++ The other patch is available from Glue Logic (GL), was last updated for
++ version 4.61 and fails to apply a hunk in version 4.63, which must be
++ manually applied. There are, however, several problems and bugs. The patch
++ can be found at http://www.gluelogic.com/code/PINE-maildir/
++
++ * [Bug] It changes the default sort by arrival into sort by Date in
++ every folder. This makes Pine sort incorrectly any folder (no matter
++ in which format such folder is).
++
++ * [Missing Important Feature] Lacks support for dual folder use. You can
++ not create a directory with the same name than a given folder and use
++ it!
++
++ * [Bug] It confuses Unseen and Recent messages. Unseen messages are
++ reported as Recent. An Unseen message is a message that had not been
++ read the last time the folder was closed (or had been read but marked
++ Unseen in an earlier session). A Recent message is one which was not
++ in the folder the last time it was closed. Recent messages are your
++ real new messages, but Unseen are not. In GL patch, every Unseen
++ message is treated as Recent!.
++
++ * [Problem] Large folders take long time to be opened for the first
++ time.
++
++ * [Bug] Reported sizes are the number of bytes in the message and not
++ the "on the wire" size. If you were to manually edit a message and
++ either add or remove information from it, the size reported by Pine
++ would not be affected by this change.
++
++ * [Bug] Crashes when two sessions access the same mailbox and one
++ deletes and expunges a message while the other tries to read that
++ message. (explicitly, if session A uses the GL patch, and session B
++ uses my patch, then the following procedure crashes session A:
++
++ - In session B delete and expunge a message.
++ - Open that message in session A. Session A will notice it is gone
++ and will not crash.
++ - In session A delete and expunge a message.
++ - Open that message in session B. Session B will print a message
++ about no such message, then it will go back to the index screen
++ telling you that the message your were viewing was gone.
++ - Now in session B delete and expunge a message.
++ - Open that message in session A, Pine will crash).
++
++ * [Bug] The patch changes the name of a message-file by adding a place
++ for the size in the name of the message-file. By doing so it breaks
++ the maildir specification which only allows you to change the name by
++ changing flags. If there is another client reading that mailbox, there
++ is a chance that the other client will fail finding messages due to
++ changes made by the GL patch.
++
++ * [Bug] Any patch for Maildir support is NOT a patch for Pine (despite
++ the fact that you have read many times that the patch is for Pine),
++ but a patch for the C-Client library. As such it should work well with
++ any application that can be built with such library, like the UW-IMAP
++ server. The GL patch has a self proclaimed message stating not to use
++ the associated IMAP server to read Maildirs. This restriction does not
++ apply to my patch. I encourage you to use the server built with my
++ patch to access Maildirs.
++
++ ------------------------------------------------------------------------
++ 4. What are the known bugs of this implementation of the Maildir driver?
++ ------------------------------------------------------------------------
++
++ I don't know any at this time. There have been bugs before, though, but
++ I try to fix bugs as soon as they are reported. All bugs of the other
++ patches have been reported but not fixed, either because there was no one
++ maintaining the patch, or the maintainer has not fixed them yet (all these
++ reports were made as late as November 2004). A very complete list of
++ updates for this patch, which includes bug fixes, improvements and
++ addition of new features can be found at
++
++ http://www.math.washington.edu/~chappa/pine/updates/maildir.html
++
++ ----------
++ 5. On UIDs
++ ----------
++
++ This patch does not keep UIDs between sessions, but hopefully it does
++ keep consistent UIDs during one session. This is not a bug of the driver,
++ instead it is a shortcoming of the maildir specification. The main point
++ of the maildir configuration is that you should never (read my lips) ever
++ edit the message, but edit the filename associated to the message. Well, I
++ could not find any single place in the web where it was told how to save
++ the UID of a message, if there is one please let me know and I will add
++ UID support for this driver.
++
++ --------------------------------------------
++ 6. Configuring Pine and Setting up a Maildir
++ --------------------------------------------
++
++ Once this approach was chosen, it implied the following:
++
++ * This patch assumes that your INBOX is located at "$HOME/Maildir".
++ This is a directory which should have three subdirectories "cur",
++ "tmp" and "new". Mail is delivered to 'new' and read from 'cur'. I
++ have added a configuration option "maildir-location" which can be
++ used to tell Pine where your Maildir inbox is, in case your system
++ do not use the above directory (e.g. your system may use
++ "~/.maildir"). In this case define that variable to be the name of
++ the directory where your e-mail is being delivered (e.g.
++ ".maildir").
++
++ * If you want to use the above configuration as your inbox, you must
++ define your inbox-path as "#md/inbox" (no quotes). You can define
++ the inbox-path like above even if you have changed the
++ maildir-location variable. That's the whole point of that variable.
++
++ -----------------------------------
++ 7. What about Courier file systems?
++ -----------------------------------
++
++ In a courier file system all folders are subfolders of a root folder
++ called INBOX. Normally INBOX is located at ~/Maildir and subfolders are
++ "dot" directories in ~/Maildir. For example ~/Maildir/.Trash is a
++ subfolder of INBOX and is accessed with the nickname "INBOX.Trash".
++
++ You can not access folders in this way unless you preceed them with the
++ string "#mc/". The purpose of the string "#mc/" is to warn Pine that a
++ collection in the Courier format is going to be accessed, so you can
++ SELECT a folder like "#mc/INBOX.Trash", but not "INBOX.Trash"
++
++ You can access a collection through a server, but if you want to access a
++ collection of folders created using the Courier server, you MUST edit your
++ ".pinerc" file and enter the definition of the collection as follows:
++
++ folder-collections="Anything you want" #mc/INBOX.[]
++
++ You can replace the string "#mc/INBOX." by something different, for example
++ "#mc/Courier/." will make Pine search for your collection in ~/Courier.
++
++ You can not add this directly into Pine because Pine fails to accept this
++ value from its input, but it takes it correctly when it is added through
++ the ".pinerc" file.
++
++ You can access your inbox as "#mc/INBOX" or "#md/INBOX". Both definitions
++ point to the same place.
++
++ Last Updated April 29, 2005
+diff -rc pine4.63/imap/src/c-client/imap4r1.c pine4.63.I.USE/imap/src/c-client/imap4r1.c
+*** pine4.63/imap/src/c-client/imap4r1.c Fri Apr 8 16:44:01 2005
+--- pine4.63.I.USE/imap/src/c-client/imap4r1.c Thu May 19 19:57:33 2005
+***************
+*** 4396,4401 ****
+--- 4396,4402 ----
+ if (*env) { /* need to merge this header into envelope? */
+ if (!(*env)->newsgroups) { /* need Newsgroups? */
+ (*env)->newsgroups = nenv->newsgroups;
++ (*env)->ngpathexists = nenv->ngpathexists;
+ nenv->newsgroups = NIL;
+ }
+ if (!(*env)->followup_to) { /* need Followup-To? */
+***************
+*** 4450,4455 ****
+--- 4451,4457 ----
+ if (oenv) { /* need to merge old envelope? */
+ (*env)->newsgroups = oenv->newsgroups;
+ oenv->newsgroups = NIL;
++ (*env)->ngpathexists = oenv->ngpathexists;
+ (*env)->followup_to = oenv->followup_to;
+ oenv->followup_to = NIL;
+ (*env)->references = oenv->references;
+diff -rc pine4.63/imap/src/c-client/mail.c pine4.63.I.USE/imap/src/c-client/mail.c
+*** pine4.63/imap/src/c-client/mail.c Wed Mar 16 16:12:17 2005
+--- pine4.63.I.USE/imap/src/c-client/mail.c Thu May 19 19:57:24 2005
+***************
+*** 977,982 ****
+--- 977,983 ----
+ (((*mailbox == '{') || (*mailbox == '#')) &&
+ (stream = mail_open (NIL,mailbox,OP_PROTOTYPE | OP_SILENT))))
+ d = stream->dtb;
++ else if (maildir_valid_name(mailbox)) return maildir_create(stream, mailbox);
+ else if ((*mailbox != '{') && (ts = default_proto (NIL))) d = ts->dtb;
+ else { /* failed utterly */
+ sprintf (tmp,"Can't create mailbox %.80s: indeterminate format",mailbox);
+diff -rc pine4.63/imap/src/c-client/mail.h pine4.63.I.USE/imap/src/c-client/mail.h
+*** pine4.63/imap/src/c-client/mail.h Tue Feb 8 15:44:54 2005
+--- pine4.63.I.USE/imap/src/c-client/mail.h Thu May 19 19:57:33 2005
+***************
+*** 149,154 ****
+--- 149,156 ----
+ #define SET_LOGOUTHOOK (long) 226
+ #define GET_LOGOUTDATA (long) 227
+ #define SET_LOGOUTDATA (long) 228
++ #define SET_PASSWORDFILE 229
++ #define GET_PASSWORDFILE 230
+
+ /* 3xx: TCP/IP */
+ #define GET_OPENTIMEOUT (long) 300
+***************
+*** 311,316 ****
+--- 313,320 ----
+ #define SET_SNARFPRESERVE (long) 567
+ #define GET_INBOXPATH (long) 568
+ #define SET_INBOXPATH (long) 569
++ #define GET_COURIERSTYLE (long) 570
++ #define SET_COURIERSTYLE (long) 571
+
+ /* Driver flags */
+
+***************
+*** 622,627 ****
+--- 626,632 ----
+ /* Message envelope */
+
+ typedef struct mail_envelope {
++ unsigned int ngpathexists : 1; /* newsgroups may be bogus */
+ unsigned int incomplete : 1; /* envelope may be incomplete */
+ unsigned int imapenvonly : 1; /* envelope only has IMAP envelope */
+ char *remail; /* remail header if any */
+***************
+*** 790,795 ****
+--- 795,801 ----
+ unsigned int spare7 : 1; /* seventh spare bit */
+ unsigned int spare8 : 1; /* eighth spare bit */
+ void *sparep; /* spare pointer */
++ void *maildirp; /* for the Maildir driver, can't use sparep */
+ unsigned long user_flags; /* user-assignable flags */
+ } MESSAGECACHE;
+
+diff -rc pine4.63/imap/src/c-client/rfc822.c pine4.63.I.USE/imap/src/c-client/rfc822.c
+*** pine4.63/imap/src/c-client/rfc822.c Tue Jan 18 12:41:09 2005
+--- pine4.63.I.USE/imap/src/c-client/rfc822.c Thu May 19 19:57:33 2005
+***************
+*** 354,359 ****
+--- 354,360 ----
+ ENVELOPE *env = (*en = mail_newenvelope ());
+ BODY *body = bdy ? (*bdy = mail_newbody ()) : NIL;
+ long MIMEp = -1; /* flag that MIME semantics are in effect */
++ long PathP = NIL; /* flag that a Path: was seen */
+ parseline_t pl = (parseline_t) mail_parameters (NIL,GET_PARSELINE,NIL);
+ if (!host) host = BADHOST; /* make sure that host is non-null */
+ while (i && *s != '\n') { /* until end of header */
+***************
+*** 443,448 ****
+--- 444,452 ----
+ *t++ = '\0';
+ }
+ break;
++ case 'P': /* possible Path: */
++ if (!strcmp (tmp+1,"ATH")) env->ngpathexists = T;
++ break;
+ case 'R': /* possible Reply-To: */
+ if (!strcmp (tmp+1,"EPLY-TO"))
+ rfc822_parse_adrlist (&env->reply_to,d,host);
+diff -rc pine4.63/imap/src/mailutil/mailutil.c pine4.63.I.USE/imap/src/mailutil/mailutil.c
+*** pine4.63/imap/src/mailutil/mailutil.c Tue Feb 8 15:50:49 2005
+--- pine4.63.I.USE/imap/src/mailutil/mailutil.c Thu May 19 19:57:33 2005
+***************
+*** 29,34 ****
+--- 29,35 ----
+
+ /* Globals */
+
++ int passfile = NIL; /* password file supplied ? */
+ int debugp = NIL; /* flag saying debug */
+ int verbosep = NIL; /* flag saying verbose */
+ int rwcopyp = NIL; /* flag saying readwrite copy (for POP) */
+***************
+*** 159,164 ****
+--- 160,166 ----
+ for (nargs = argc ? argc - 1 : 0,args = argv + 1; nargs; args++,nargs--) {
+ if (*(s = *args) == '-') { /* parse switches */
+ if (!strcmp (s,"-debug") || !strcmp (s,"-d")) debugp = T;
++ else if (!strcmp (s,"-passfile")) passfile = T;
+ else if (!strcmp (s,"-verbose") || !strcmp (s,"-v")) verbosep = T;
+ else if (!strcmp (s,"-rwcopy") || !strcmp (s,"-rw")) rwcopyp = T;
+ else if ((nargs > 1) && (!strcmp (s,"-merge") || !strcmp (s,"-m"))) {
+***************
+*** 179,184 ****
+--- 181,190 ----
+ exit (ret);
+ }
+ }
++ else if (passfile) {
++ env_parameters(SET_PASSWORDFILE, (void *)s);
++ passfile = NIL;
++ }
+ else if (!cmd) cmd = s; /* first non-switch is command */
+ else if (!src) src = s; /* second non-switch is source */
+ else if (!dst) dst = s; /* third non-switch is destination */
+***************
+*** 665,671 ****
+ username[NETMAXUSER-1] = '\0';
+ if (s = strchr (username,'\n')) *s = '\0';
+ }
+! strcpy (password,getpass ("password: "));
+ }
+
+
+--- 671,679 ----
+ username[NETMAXUSER-1] = '\0';
+ if (s = strchr (username,'\n')) *s = '\0';
+ }
+! mm_userpwd(mb, &username, &password);
+! if (!password || !*password)
+! strcpy (password,getpass ("password: "));
+ }
+
+
+diff -rc pine4.63/imap/src/osdep/unix/Makefile pine4.63.I.USE/imap/src/osdep/unix/Makefile
+*** pine4.63/imap/src/osdep/unix/Makefile Wed Apr 20 17:49:08 2005
+--- pine4.63.I.USE/imap/src/osdep/unix/Makefile Thu May 19 19:57:24 2005
+***************
+*** 119,125 ****
+ # Standard distribution build parameters
+
+ DEFAULTAUTHENTICATORS=md5 pla log
+! DEFAULTDRIVERS=imap nntp pop3 mh mx mbx tenex mtx mmdf unix news phile
+
+
+ # Normally no need to change any of these
+--- 119,125 ----
+ # Standard distribution build parameters
+
+ DEFAULTAUTHENTICATORS=md5 pla log
+! DEFAULTDRIVERS=maildir courier imap nntp pop3 mh mx mbx tenex mtx mmdf unix news phile
+
+
+ # Normally no need to change any of these
+***************
+*** 128,134 ****
+ BINARIES=osdep.o mail.o misc.o newsrc.o smanager.o utf8.o siglocal.o \
+ dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
+ rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
+! unix.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o
+ CFLAGS=-g
+
+ CAT=cat
+--- 128,134 ----
+ BINARIES=osdep.o mail.o misc.o newsrc.o smanager.o utf8.o siglocal.o \
+ dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
+ rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
+! unix.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o maildir.o
+ CFLAGS=-g
+
+ CAT=cat
+***************
+*** 257,263 ****
+
+ cyg: # Cygwin - note that most local file drivers don't work!!
+ $(BUILD) `$(CAT) SPECIALS` OS=$@ \
+! DEFAULTDRIVERS="imap nntp pop3 mbx unix phile" \
+ SIGTYPE=psx CHECKPW=cyg LOGINPW=cyg CRXTYPE=std \
+ SPOOLDIR=/var \
+ ACTIVEFILE=/usr/local/news/lib/active \
+--- 257,263 ----
+
+ cyg: # Cygwin - note that most local file drivers don't work!!
+ $(BUILD) `$(CAT) SPECIALS` OS=$@ \
+! DEFAULTDRIVERS="imap nntp pop3 mbx unix maildir phile" \
+ SIGTYPE=psx CHECKPW=cyg LOGINPW=cyg CRXTYPE=std \
+ SPOOLDIR=/var \
+ ACTIVEFILE=/usr/local/news/lib/active \
+***************
+*** 846,852 ****
+ tenex.o: mail.h misc.h osdep.h dummy.h
+ unix.o: mail.h misc.h osdep.h unix.h pseudo.h dummy.h
+ utf8.o: mail.h misc.h osdep.h utf8.h
+!
+
+ # OS-dependent
+
+--- 846,852 ----
+ tenex.o: mail.h misc.h osdep.h dummy.h
+ unix.o: mail.h misc.h osdep.h unix.h pseudo.h dummy.h
+ utf8.o: mail.h misc.h osdep.h utf8.h
+! maildir.o: mail.h misc.h osdep.h maildir.h dummy.h
+
+ # OS-dependent
+
+diff -rc pine4.63/imap/src/osdep/unix/dummy.c pine4.63.I.USE/imap/src/osdep/unix/dummy.c
+*** pine4.63/imap/src/osdep/unix/dummy.c Wed Nov 10 16:16:23 2004
+--- pine4.63.I.USE/imap/src/osdep/unix/dummy.c Thu May 19 19:57:24 2005
+***************
+*** 104,109 ****
+--- 104,110 ----
+ {
+ char *s,tmp[MAILTMPLEN];
+ struct stat sbuf;
++ maildir_remove_root(&name);
+ /* must be valid local mailbox */
+ if (name && *name && (*name != '{') && (s = mailboxfile (tmp,name))) {
+ /* indeterminate clearbox INBOX */
+***************
+*** 364,370 ****
+ char *s,tmp[MAILTMPLEN];
+ /* don't \NoSelect dir if it has a driver */
+ if ((attributes & LATT_NOSELECT) && (d = mail_valid (NIL,name,NIL)) &&
+! (d != &dummydriver)) attributes &= ~LATT_NOSELECT;
+ if (!contents || /* notify main program */
+ (!(attributes & LATT_NOSELECT) && (csiz = strlen (contents)) &&
+ (s = mailboxfile (tmp,name)) &&
+--- 365,374 ----
+ char *s,tmp[MAILTMPLEN];
+ /* don't \NoSelect dir if it has a driver */
+ if ((attributes & LATT_NOSELECT) && (d = mail_valid (NIL,name,NIL)) &&
+! (d != &dummydriver)){
+! attributes &= ~LATT_NOSELECT;
+! attributes |= LATT_NOINFERIORS;
+! }
+ if (!contents || /* notify main program */
+ (!(attributes & LATT_NOSELECT) && (csiz = strlen (contents)) &&
+ (s = mailboxfile (tmp,name)) &&
+***************
+*** 385,390 ****
+--- 389,396 ----
+ {
+ char *s,tmp[MAILTMPLEN];
+ long ret = NIL;
++ if(!strncmp(mailbox,"#md/",4) || !strncmp(mailbox,"#mc/", 4))
++ return maildir_create(stream, mailbox);
+ /* validate name */
+ if (!(compare_cstring (mailbox,"INBOX") && (s = dummy_file (tmp,mailbox)))) {
+ sprintf (tmp,"Can't create %.80s: invalid name",mailbox);
+***************
+*** 450,455 ****
+--- 456,469 ----
+ {
+ struct stat sbuf;
+ char *s,tmp[MAILTMPLEN];
++ if (!strncmp(mailbox,"#md/",4) || !strncmp(mailbox,"#mc/", 4)
++ || is_valid_maildir(&mailbox)){
++ char tmp[MAILTMPLEN] = {'\0'};
++ strcpy(tmp, mailbox);
++ if(tmp[strlen(tmp) - 1] != '/')
++ tmp[strlen(tmp)] = '/';
++ return maildir_delete(stream, tmp);
++ }
+ if (!(s = dummy_file (tmp,mailbox))) {
+ sprintf (tmp,"Can't delete - invalid name: %.80s",s);
+ MM_LOG (tmp,ERROR);
+***************
+*** 476,481 ****