deleted file mode 100644
--- a/mailnews/movemail/README
+++ /dev/null
@@ -1,160 +0,0 @@
-README
-
-just a placeholder for now.
-
-Roland.Mainz@informatik.med.uni-giessen.de wrote:
-
-I don't know whether this is implemented or not...
-
-Is it planned that Mozilla 5 implements support for local Unix mail (e.g. /var/mail/) ?
-
-alecf wrote:
-
-> I don't know whether this is implemented or not...
->
-> Is it planned that Mozilla 5 implements support for local Unix mail (e.g. /var/mail/) ?
->
-
-Hmm... my gut is telling me that nobody from Netscape will be working on this....but I'm
-quite sure that if someone does feel like adding this functionality, many unix mail people
-would be very pleased...
-
-(I'm going to start calling Unix Mail "movemail" because we've called it that in past versions
-of the product)
-
-It's actually probably simpler than your description - we've done a fairly good job at keeping
-the idea of POP (as a protocol for retrieving remote mail) and Local Mail (as a way of storing
-mail messages locally) as separate entities, though there is still work to be done to separate
-the two. Both implementations reside in mozilla/mailnews/local though.
-
-the movemail implementation could leverage the Local Mail work, performing the same function as
-POP is today. Ideally, Local Mail would not be aware of any protocol specifics, so that Pop3
-and movemail are both first class mail protocols.
-
-Scott or Scott could go into more specifics.
-
-If you're interested in helping us, the first thing to do would be to try to break local mail
-apart from POP in a way that POP is just one more pluggable mail protocol that stores mail in
-Local Mail....if you submit patches, I'll be more than happy to review them and check them
-in...
-
->
-> - Does Mozilla 4.x implement local Unix mail ?
-
-Yes, but the code is VERY different than our current codebase, it's fairly simple, and wouldn't
-really be worth the effort of bringing it over
-
-Akkana Peck wrote:
-
-> Is there something else here that's tricky? I never understood why we
-> had all that movemail stuff in 4.x when we already supported Berkeley
-> mail files.
-
-I think one of the main reasons for this is because it's kind of good e-mail karma to move your
-mail OUT of /var/mail and put it in your own directory. I think this is what other unixmail
-clients do....
-
-The other issue is that metadata is kept about each mailbox file - what messages are unread, the
-sorting order, the character set, etc... We do this normally by keeping a .msf file with the same
-name as the directory at the same level as this directory. This means that if I try to point my
-inbox at /var/mail/alecf, messenger will want to create a file /var/mail/alecf.msf
-
-It would likely be difficult to change this, because bits of our architecture depend on in
-
-...our architecture also depends on the folder hierarchy matching a directory structure on
-disk...meaning that if I have, in messenger:
-
-Local Mail
- +- INBOX
- +- My Folder
- +- Another Folder
-
-The assumption is that INBOX is a sibling of My Folder on disk, and that Another Folder is a
-mailbox inside the directory My Folder.sbd (since My Folder is already a file, not a
-subdirectory). This means that My Folder would go into /var/mail/My Folder and Another Folder
-would go in /var/mail/My Folder.sbd/AnotherFolder
-
-it would be alot of overhead to try and abstract this so that each folder's location is
-independant of it's position in messenger's hierarchy. I think this overhead is not worth the
-minimal gain in capability.
-
- Alec
-
-sspitzer wrote:
-
-Alec,
-
-> > Is there something else here that's tricky? I never understood why we
-> > had all that movemail stuff in 4.x when we already supported Berkeley
-> > mail files.
->
-> I think one of the main reasons for this is because it's kind of good e-mail karma to move your
-> mail OUT of /var/mail and put it in your own directory. I think this is what other unixmail
-> clients do....
-
-I just looked at the movemail code from 4.x and alec is right.
-
-ns/cmd/xfe/movemail.c basically did this:
-
-lock /var/spool/mail/$USERNAME
-copy /var/spool/mail/$USERNAME to .netscape.mail-recovery
-call MSG_IncorporateFromFile() with .netscape.mail-recovery
-
-I'm leaving out the gory file locking details and the builtin vs
-external movemail stuff.
-
-movemail in 5.0 is like pop, but you can't leave mail on the "server",
-and the "server" is really your spool file.
-
-> The other issue is that metadata is kept about each mailbox file - what messages are unread, the
-> sorting order, the character set, etc... We do this normally by keeping a .msf file with the same
-> name as the directory at the same level as this directory. This means that if I try to point my
-> inbox at /var/mail/alecf, messenger will want to create a file /var/mail/alecf.msf
->
-> It would likely be difficult to change this, because bits of our architecture depend on in
->
-> ...our architecture also depends on the folder hierarchy matching a directory structure on
-> disk...meaning that if I have, in messenger:
->
-> Local Mail
-> +- INBOX
-> +- My Folder
-> +- Another Folder
->
-> The assumption is that INBOX is a sibling of My Folder on disk, and that Another Folder is a
-> mailbox inside the directory My Folder.sbd (since My Folder is already a file, not a
-> subdirectory). This means that My Folder would go into /var/mail/My Folder and Another Folder
-> would go in /var/mail/My Folder.sbd/AnotherFolder
->
-> it would be alot of overhead to try and abstract this so that each folder's location is
-> independant of it's position in messenger's hierarchy. I think this overhead is not worth the
-> minimal gain in capability.
-
-we have ~/ImapMail, ~/Mail, ~/News, we could have ~/MoveMail
-
-Its all berkeley style mail boxes, and when we process the
-.netscape.mail-recovery file, it writes into ~/MoveMail/Inbox (like what
-pop does to ~/Mail/Inbox)
-
-in 5.0 you could have multiple imap, multiple pop, and local UNIX mail
-all at the same time.
-
-How about them apples?
-
-I've sanitizing the spence's old ns/cmd/xfe/movemail.c code now. I'll
-bring it over into the 5.0 tree, and start up a
-mozilla/mailnews/movemail directory.
-
-One thing: alecf and I (the UNIX people on 5.0 mail / news) will
-probably not have time to implement movemail for 5.0
-
-It would be so cool if someone out there wanted to take this on for 5.0.
-
-Think about it:
-
- movemail users will love you
- your peers will admire you
- free mozilla t-shirts (I'll make sure you get some)
-
-I'm adding adding this task to http://www.mozilla.org/mailnews/jobs.html
-right now.
deleted file mode 100644
--- a/mailnews/movemail/src/movemail.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Originally Created by Spencer Murray <spence@netscape.com>, 15-Sep-95.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/wait.h>
-
-typedef int XP_Bool;
-
-#define TRUE 1
-#define FALSE 0
-
-#define LINUX_GLIBC_2
-
-#include <sys/errno.h>
-#if !defined(__FreeBSD__) && !defined(MACLINUX) && !defined(LINUX_GLIBC_2)
-extern char *sys_errlist[];
-extern int sys_nerr;
-#endif
-
-int XFE_CANT_MOVE_MAIL = 0;
-int XFE_CANT_GET_NEW_MAIL_LOCK_FILE_EXISTS = 0;
-int XFE_CANT_GET_NEW_MAIL_UNABLE_TO_CREATE_LOCK_FILE = 0;
-int XFE_CANT_GET_NEW_MAIL_SYSTEM_ERROR = 0;
-int XFE_CANT_MOVE_MAIL_UNABLE_TO_OPEN = 0;
-int XFE_CANT_MOVE_MAIL_UNABLE_TO_READ = 0;
-int XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE = 0;
-int XFE_THERE_WERE_PROBLEMS_MOVING_MAIL = 0;
-int XFE_THERE_WERE_PROBLEMS_MOVING_MAIL_EXIT_STATUS = 0;
-int XFE_THERE_WERE_PROBLEMS_CLEANING_UP = 0;
-int XFE_MOVEMAIL_FAILURE_SUFFIX = 0;
-int XFE_UNKNOWN_ERROR_CODE = 0;
-int XFE_MOVEMAIL_NO_MESSAGES = 0;
-int XFE_MOVEMAIL_CANT_DELETE_LOCK = 0;
-
-#define TMP_SUFFIX ".nslock"
-#define LOCK_SUFFIX ".lock"
-
-#define NAME_LEN 1024
-
-#ifndef BUFSIZ
-#define BUFSIZ 1024
-#endif /* BUFSIZ */
-
-char *XP_GetString(int i) {
- return NULL;
-}
-
-static void
-fe_movemail_perror(const char *message)
-{
- int e = errno;
- char *es = 0;
- char *buf1 = 0;
- char buf2[512];
- char *suffix;
- int L;
-
- if ((unsigned)e < (unsigned)sys_nerr)
- {
- es = sys_errlist [e];
- }
- else
- {
- snprintf (buf2, sizeof (buf2), XP_GetString( XFE_UNKNOWN_ERROR_CODE ),
- errno);
- printf("XFE_UNKNOWN_ERROR_CODE\n");
- es = buf2;
- }
-
- suffix = XP_GetString(XFE_MOVEMAIL_FAILURE_SUFFIX);
- printf("XFE_MOVEMAIL_FAILURE_SUFFIX\n");
- if(!suffix) suffix = "";
- if(!message) message = "";
- L = strlen(message) + strlen(es) + strlen(suffix) + 40;
- buf1 = (char *) malloc(L);
- if(!buf1) return;
- snprintf (buf1, L-1, "%s\n%s\n\n%s", message, es, suffix);
-#if 0
- FE_Alert (buf1);
-#endif
- free(buf1);
-}
-
-
-int
-fe_MoveMail (char *from, char *to)
-{
- XP_Bool succeeded = FALSE;
- char tmp_file[NAME_LEN];
- char lock_file[NAME_LEN];
- char spool_dir[NAME_LEN];
- char *bp, buf[BUFSIZ];
- char msgbuf[1024];
- int from_fd = -1;
- int to_fd = -1;
- int tmp_fd = -1;
- int nread, nwritten, nbytes, ntodo;
- struct stat st;
-
- *lock_file = 0;
-
- if (!from || !to)
- return FALSE;
-
- if (strlen(from) > NAME_LEN - 1) return FALSE;
-
- /* Make spool_dir be "/var/spool/mail" from "/var/spool/mail/$USER". */
- strcpy(spool_dir, from);
- while ((bp = strrchr(spool_dir, '/')) && bp[1] == '\0')
- *bp = '\0';
- if (!bp) return FALSE;
- *bp = 0;
-
- printf("%s\n", spool_dir);
-
- /* If we can't write into the directory itself, we can't create files,
- so we lose. */
- if (access(spool_dir, R_OK|W_OK) < 0)
- {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString(XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE),
- from);
- printf("XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE\n");
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- /* If the mail-spool file doesn't exist, or is 0-length, bug out.
- */
- if (stat(from, &st) < 0 ||
- st.st_size == 0)
- {
-#if 0
- NET_Progress (XP_GetString(XFE_MOVEMAIL_NO_MESSAGES));
-#endif
- goto FAIL;
- }
-
- snprintf(tmp_file, sizeof (tmp_file), "%s%s", from, TMP_SUFFIX);
-
- if (access(tmp_file, 0) == 0) {
- /* The tmp file exists; try to get rid of it */
-
- if (unlink(tmp_file) < 0) {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_GET_NEW_MAIL_LOCK_FILE_EXISTS ),
- tmp_file);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
- }
-
- snprintf(lock_file, sizeof (lock_file), "%s%s", from, LOCK_SUFFIX);
-
- while (1) {
- int ret;
-
- /* First create a real file, $USER.nslock
- */
- tmp_fd = open(tmp_file, O_WRONLY|O_CREAT|O_EXCL, 0666);
-
- if (tmp_fd < 0) {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_GET_NEW_MAIL_UNABLE_TO_CREATE_LOCK_FILE ),
- tmp_file);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
- close(tmp_fd);
- tmp_fd = -1;
-
- /* Then make a hard link from $USER.lock to $USER.nslock -- this is the
- trick to make NFS behave synchronously.
- */
- ret = link(tmp_file, lock_file);
-
- /* Now we've (attempted to) make the link. `ret' says whether it was
- successful. It would have failed if the lock was already being held.
-
- Regardless of whether it succeeded, we can now delete $USER.nslock
- (the thing to which the hard-link points.)
- */
- if (unlink(tmp_file) < 0) {
- snprintf(msgbuf, sizeof (msgbuf),
- /* This error message isn't quite right; what it really
- means is "can't delete $MAIL.nslock", but I guess that
- could only happen if some other user was the owner of
- it? Or if it was already gone? Weird... */
- XP_GetString(XFE_MOVEMAIL_CANT_DELETE_LOCK), tmp_file);
- printf("XFE_MOVEMAIL_CANT_DELETE_LOCK\n");
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- /* If we didn't obtain the lock (== make the hard-link), above, then
- retry getting it until the file is 60 seconds old... Then get
- Guido to go over and bust its kneecaps.
- */
- if (ret < 0) {
- sleep (1);
- if (stat(lock_file, &st) >= 0) {
- int current = time(NULL);
- if (st.st_ctime < current - 60)
- unlink (lock_file);
- }
- } else {
- /* Got the lock - done waiting. */
- break;
- }
- }
-
- /* All of this junk used to happen in a forked process, but that's not
- necessary any more (actually, hasn't been for a long time) since we
- no longer play any setuid/setgid games -- there is no gain to doing
- this in another fork and waiting for it to complete.
- */
-
- /* Open the mail spool file for input...
- */
- from_fd = open(from, O_RDWR, 0666);
- if (from_fd < 0)
- {
- int err;
- if (access(from, W_OK) < 0) /* look again, for right error message */
- err = XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE;
- else if (access(from, 0) == 0)
- err = XFE_CANT_MOVE_MAIL_UNABLE_TO_READ;
- else
- err = XFE_CANT_MOVE_MAIL_UNABLE_TO_OPEN;
- snprintf(msgbuf, sizeof (msgbuf), XP_GetString(err), from);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- /* Open the destination file for output...
- */
- to_fd = open(to, O_WRONLY|O_CREAT|O_EXCL, 0666);
- if (to_fd < 0) {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_MOVE_MAIL_UNABLE_TO_OPEN ),
- to);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- /* copy the file */
-
- nbytes = BUFSIZ;
-
- while (1) {
- nread = read(from_fd, buf, nbytes);
-
- if (nread < 0) {
- /* we're busted */
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_MOVE_MAIL_UNABLE_TO_READ ), from);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- if (!nread) {
- /* we're done */
- break;
- }
-
- for (ntodo = nread, bp = buf;
- ntodo > 0;
- ntodo -= nwritten, bp += nwritten) {
- nwritten = write(to_fd, bp, ntodo);
-
- if (nwritten < 0) {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE ), to);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
- }
- }
-
- /* if we made it this far, we're done copying the file contents.
- First, close and sync the output file.
- */
-
- if (fsync(to_fd) < 0 ||
- close(to_fd) < 0)
- {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_CANT_MOVE_MAIL_UNABLE_TO_WRITE ), to);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
- to_fd = -1;
-
- /* Now the output file is closed and sync'ed, so we can truncate the
- spool file.
- */
- if (ftruncate(from_fd, (off_t)0) < 0)
- {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_THERE_WERE_PROBLEMS_CLEANING_UP ),
- from);
- fe_movemail_perror(msgbuf);
- goto FAIL;
- }
-
- succeeded = TRUE;
-
- FAIL:
-
- if (to_fd >= 0) close(to_fd);
- if (from_fd >= 0) close(from_fd);
- if (tmp_fd >= 0) close(tmp_fd);
-
- /* Unlink the lock file.
- If this fails, but we were otherwise successful, then whine about it.
- Otherwise, we've already presented an error dialog about something else.
- */
- if (*lock_file && unlink(lock_file) < 0 && succeeded)
- {
- snprintf(msgbuf, sizeof (msgbuf),
- XP_GetString( XFE_THERE_WERE_PROBLEMS_CLEANING_UP ),
- lock_file);
- fe_movemail_perror(msgbuf);
- succeeded = FALSE;
- }
-
- return succeeded;
-}
-
-main()
-{
- fe_MoveMail ("/var/spool/mail/localguy","/home/localguy/mozilla.mail-recovery");
-}