summaryrefslogtreecommitdiff
path: root/mail
diff options
context:
space:
mode:
authorSteve Price <steve@FreeBSD.org>1998-07-12 23:04:33 +0000
committerSteve Price <steve@FreeBSD.org>1998-07-12 23:04:33 +0000
commitfa1df7b2fd0d954dea6bc0b405706072719ca56b (patch)
tree523f4ef7d9444db2d20aaa0084273f3344a9ede1 /mail
parentTurn on pcre. (diff)
Initial import of coolmail version 1.3.
An xbiff-like mail tool with animated 3D graphics. PR: 7186 Submitted by: Udo Schweigert <Udo.Schweigert@mchp.siemens.de>
Notes
Notes: svn path=/head/; revision=11860
Diffstat (limited to 'mail')
-rw-r--r--mail/coolmail/Makefile28
-rw-r--r--mail/coolmail/distinfo1
-rw-r--r--mail/coolmail/files/patch-aa382
-rw-r--r--mail/coolmail/pkg-comment1
-rw-r--r--mail/coolmail/pkg-descr4
-rw-r--r--mail/coolmail/pkg-plist2
6 files changed, 418 insertions, 0 deletions
diff --git a/mail/coolmail/Makefile b/mail/coolmail/Makefile
new file mode 100644
index 000000000000..809afaff0f58
--- /dev/null
+++ b/mail/coolmail/Makefile
@@ -0,0 +1,28 @@
+# New ports collection makefile for: coolmail
+# Version required: 1.3
+# Date created: Mon 6 Jul 12:00:06 CEST 1998
+# Whom: Udo Schweigert <Udo.Schweigert@mchp.siemens.de>
+#
+# $Id$
+#
+
+DISTNAME= coolmail-1.3
+CATEGORIES= mail
+MASTER_SITES= ${MASTER_SITE_SUNSITE}
+MASTER_SITE_SUBDIR=system/mail/biffs
+EXTRACT_SUFX= .tgz
+
+MAINTAINER= Udo.Schweigert@mchp.siemens.de
+
+PATCH_STRIP= -p1
+
+MAN1= coolmail.1
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/coolmail ${PREFIX}/bin/coolmail
+ ${INSTALL_MAN} ${WRKSRC}/coolmail.man ${PREFIX}/man/man1/coolmail.1
+
+post-install:
+ strip ${PREFIX}/bin/coolmail
+
+.include <bsd.port.mk>
diff --git a/mail/coolmail/distinfo b/mail/coolmail/distinfo
new file mode 100644
index 000000000000..9a108c26fe4f
--- /dev/null
+++ b/mail/coolmail/distinfo
@@ -0,0 +1 @@
+MD5 (coolmail-1.3.tgz) = ee355b05b3ebdb9bcf8e83eda63199df
diff --git a/mail/coolmail/files/patch-aa b/mail/coolmail/files/patch-aa
new file mode 100644
index 000000000000..85af19d705fa
--- /dev/null
+++ b/mail/coolmail/files/patch-aa
@@ -0,0 +1,382 @@
+diff -rc coolmail-1.3.org/Makefile coolmail-1.3/Makefile
+*** coolmail-1.3.org/Makefile Thu Jan 11 18:55:40 1996
+--- coolmail-1.3/Makefile Fri Jul 3 09:02:25 1998
+***************
+*** 22,52 ****
+ # your linker where to find the libraries it will need, and BINDIR and
+ # MANDIR specify the places to install the binary executable and manpage
+ # files for coolmail when you type `make install'.
+! CFLAGS =
+ LINK = $(CC)
+! INCLUDES = -I/usr/X11R5/include
+! LIB_DIRS = -L/usr/X11R5/lib
+ BINDIR = /usr/local/bin
+ MANDIR = /usr/local/man/man1
+
+ # Comment these out if you can't or don't want to use the digitized audio
+ # feature.
+! AUDIO = -DAUDIO
+! AUDIO_MODULE = audio.o
+
+ #### You really don't need to read past this point. ####
+
+ LIBS = $(LIB_DIRS) -lXt -lX11 -lm -lXext
+! COPTS = $(CFLAGS) $(AUDIO)
+
+ all: coolmail
+ # Done.
+
+! new:
+! rm -f *.o coolmail core
+
+ clean:
+! rm -f *.o core
+
+ install:
+ @if [ -w $(BINDIR) ] ; then \
+--- 22,58 ----
+ # your linker where to find the libraries it will need, and BINDIR and
+ # MANDIR specify the places to install the binary executable and manpage
+ # files for coolmail when you type `make install'.
+! CFLAGS = -DNO_CUSERID
+ LINK = $(CC)
+! INCLUDES = -I/usr/X11R6/include
+! LIB_DIRS = -L/usr/X11R6/lib
+ BINDIR = /usr/local/bin
+ MANDIR = /usr/local/man/man1
+
+ # Comment these out if you can't or don't want to use the digitized audio
+ # feature.
+! # AUDIO = -DAUDIO
+! # AUDIO_MODULE = audio.o
+!
+! # Comment these out if you don't want Maildir support
+! MAILDIR = -DSUPPORT_MAILDIR
+! # for debugging:
+! #MAILDIR = $(MAILDIR) -DSUPPORT_MAILDIR_DEBUG
+! # normally ignores non-regular files in the Maildir; uncomment to change
+! #MAILDIR = $(MAILDIR) -DSUPPORT_MAILDIR_STRICTER
+
+ #### You really don't need to read past this point. ####
+
+ LIBS = $(LIB_DIRS) -lXt -lX11 -lm -lXext
+! COPTS = $(CFLAGS) $(AUDIO) $(MAILDIR)
+
+ all: coolmail
+ # Done.
+
+! new: clean all
+
+ clean:
+! rm -f *.o core coolmail
+
+ install:
+ @if [ -w $(BINDIR) ] ; then \
+diff -rc coolmail-1.3.org/audio.c coolmail-1.3/audio.c
+*** coolmail-1.3.org/audio.c Thu Jan 11 18:56:40 1996
+--- coolmail-1.3/audio.c Fri Jul 3 08:47:51 1998
+***************
+*** 128,133 ****
+--- 128,134 ----
+ INIT_FD;
+ audiofd = open( "/dev/audio", O_WRONLY | O_NDELAY );
+ if (audiofd < 0) {
++ perror("/dev/audio");
+ fprintf(stderr, "%s: Problem opening /dev/audio.\n",
+ "Coolmail");
+ END_FD;
+diff -rc coolmail-1.3.org/coolmail.c coolmail-1.3/coolmail.c
+*** coolmail-1.3.org/coolmail.c Thu Jan 11 18:57:24 1996
+--- coolmail-1.3/coolmail.c Fri Jul 3 09:01:05 1998
+***************
+*** 25,32 ****
+--- 25,34 ----
+ #include <sys/wait.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++ #include <dirent.h>
+ #include <fcntl.h>
+
++
+ #ifdef AUDIO
+ #include <string.h>
+ #endif
+***************
+*** 34,41 ****
+ #include "render1.h"
+ #include "mailbox.h"
+
+! #define DEFAULT_MAIL_DIR "/var/spool/mail/"
+! #define DEFAULT_COMMAND "xterm -n Elm -e mail\0"
+ #define DEFAULT_INTERVAL 30
+ #define DEFAULT_FRAMES 15
+
+--- 36,44 ----
+ #include "render1.h"
+ #include "mailbox.h"
+
+! #define DEFAULT_MAIL_DIR "/var/mail/"
+!
+! #define DEFAULT_COMMAND "xterm -n Elm -e elm\0"
+ #define DEFAULT_INTERVAL 30
+ #define DEFAULT_FRAMES 15
+
+***************
+*** 96,102 ****
+--- 99,107 ----
+ int main(int argc, char *argv[])
+ {
+ int reason;
++ #ifndef NO_CUSERID
+ char username[L_cuserid];
++ #endif
+
+ /* Quickly scan for the -h option -- if it is present don't do anything
+ * but print out some help and exit. */
+***************
+*** 104,110 ****
+ return(0);
+
+ /* Get the username and use it to create a default mailfile name */
+! strcat(mailfile_str, cuserid(username));
+
+ /* Initialize the renderer */
+ rend_init(&argc, argv, (float)150.0);
+--- 109,126 ----
+ return(0);
+
+ /* Get the username and use it to create a default mailfile name */
+! #ifdef SUPPORT_MAILDIR
+! if (getenv("MAILDIR") && strlen(getenv("MAILDIR"))) {
+! strcpy(mailfile_str,getenv("MAILDIR"));
+! } else if (getenv("MAIL") && strlen(getenv("MAIL"))) {
+! strcpy(mailfile_str,getenv("MAIL"));
+! } else
+! #endif
+! #ifndef NO_CUSERID
+! strcat(mailfile_str, cuserid(username));
+! #else
+! strcat(mailfile_str, getlogin());
+! #endif
+
+ /* Initialize the renderer */
+ rend_init(&argc, argv, (float)150.0);
+***************
+*** 432,438 ****
+ printf(" -e command Specifies a command (usually in quotes) which\n");
+ printf(" is used to invoke your favorite mail-reading\n");
+ printf(" program.\n\n");
+! printf(" -f filename Watch filename, instead of the default mail\n");
+ printf(" file, %s<username>.\n\n", DEFAULT_MAIL_DIR);
+ printf(" -fr n Number of frames to generate for each animation.\n");
+ printf(" Set to an appropriate value for your machine's.\n");
+--- 448,454 ----
+ printf(" -e command Specifies a command (usually in quotes) which\n");
+ printf(" is used to invoke your favorite mail-reading\n");
+ printf(" program.\n\n");
+! printf(" -f filename Watch filename/maildir, instead of the default mail\n");
+ printf(" file, %s<username>.\n\n", DEFAULT_MAIL_DIR);
+ printf(" -fr n Number of frames to generate for each animation.\n");
+ printf(" Set to an appropriate value for your machine's.\n");
+***************
+*** 626,631 ****
+--- 642,680 ----
+
+ /* Get file modification time */
+
++
++ /* Maildir notes (aqua@sonoma.net, Sun Jan 18 19:42:27 PST 1998):
++ *
++ * The maildir mail-storage standard is a replacement for the traditional
++ * 'mbox' format, intended to remove problems with file contention, locking,
++ * reduce corruption in the case of a program or system crash, etc, etc.
++ * Fairly detailed description of it can be had as part of the Qmail MTA
++ * documentation, http://www.qmail.org/qmail-manual-html/man5/maildir.html.
++ *
++ * The general gist of the maildir approach is that mail is stored, one
++ # message per file, in a subtree of ~/Maildir. New mail goes in /new,
++ * the "spool" goes in /cur, and /tmp is available to MUAs &c. Mail is
++ * theoretically supposed to be removed from /new immediately by the
++ * MUA, but I've observed that with mutt 0.88, at least, it isn't if
++ * the mailfile was generated by an import script (e.g. mbox2maildir)
++ * rather than the normal delivery agent, presumably due to naming
++ * differences.
++ *
++ * Checking for new mail mostly entails checking the mtime vs. atime of
++ * every file in /new, and the number of messages in /new; if the latter
++ * increases, new mail was delivered -- if not, but the files' atimes
++ * are all later than their mtimes, the MUA read the /new spool.
++ *
++ * The specifications suggest skipping over every .file, but reading all
++ * the others -- I've extended this to include skipping of all non-regular
++ * files, which seemed to make sense -- define SUPPORT_MAILDIR_STRICTER to
++ * override this behavior.
++ *
++ * This process is more resource-intensive than the old scheme of merely
++ * calling stat() for a single file -- it's an O(n) rather than O(1)
++ * operation.
++ *
++ */
+ void cool_get_inboxstatus(char *filename, int *anymail, int *unreadmail,
+ int *newmail)
+ {
+***************
+*** 633,670 ****
+ off_t newsize;
+ struct stat st;
+ int fd;
+
+- fd = open (filename, O_RDONLY, 0);
+- if (fd < 0)
+- {
+- *anymail = 0;
+- *newmail = 0;
+- *unreadmail = 0;
+- newsize = 0;
+- }
+- else
+- {
+- fstat(fd, &st);
+- close(fd);
+- newsize = st.st_size;
+-
+- if (newsize > 0)
+- *anymail = 1;
+- else
+- *anymail = 0;
+-
+- if (st.st_mtime >= st.st_atime && newsize > 0)
+- *unreadmail = 1;
+- else
+- *unreadmail = 0;
+
+! if (newsize > oldsize && *unreadmail)
+! *newmail = 1;
+! else
+! *newmail = 0;
+! }
+!
+! oldsize = newsize;
+ }
+
+ /*---------------------------------------------------------------------------*/
+--- 682,800 ----
+ off_t newsize;
+ struct stat st;
+ int fd;
++ #ifdef SUPPORT_MAILDIR
++ DIR *d;
++ struct dirent *de;
++ char maildir[256],mfn[256];
++ #endif
+
+
+! #ifdef SUPPORT_MAILDIR_DEBUG
+! printf("B anymail=%d, newmail=%d, unreadmail=%d, oldsize=%d, newsize=%d\n",
+! *anymail,*newmail,*unreadmail,oldsize,newsize);
+! #endif
+! #ifdef SUPPORT_MAILDIR
+! if (stat(filename,&st)==-1) {
+! *anymail = *newmail = *unreadmail = 0;
+! newsize = oldsize = 0;
+! perror(filename);
+! return;
+! }
+! if (S_ISDIR(st.st_mode)) {
+! /* likely a maildir */
+! strcpy(maildir,filename);
+! if (maildir[strlen(maildir)-1]!='/')
+! strcat(maildir,"/");
+! strcat(maildir,"new");
+! if (stat(maildir,&st)==-1) {
+! perror(maildir);
+! printf("%s is not a maildir (missing/inaccessible %s)\n",filename,maildir);
+! *anymail = *newmail = *unreadmail = 0;
+! newsize = oldsize = 0;
+! return;
+! }
+! if (!S_ISDIR(st.st_mode)) {
+! printf("%s is not a directory (mode %d)\n",maildir,st.st_mode);
+! *anymail = *newmail = *unreadmail = 0;
+! newsize = oldsize = 0;
+! return;
+! }
+! d=opendir(maildir);
+! newsize=0;
+! *unreadmail = 0;
+! while ((de=readdir(d))) {
+! if (de->d_name[0]=='.') /* dotfiles ignored per the maildir specs */
+! continue;
+! strcpy(mfn,maildir);
+! if (mfn[strlen(mfn)-1]!='/')
+! strcat(mfn,"/");
+! strcat(mfn,de->d_name);
+! if (stat(mfn,&st)==-1) {
+! perror(mfn);
+! continue;
+! }
+! #ifndef SUPPORT_MAILDIR_STRICTER
+! if (S_ISREG(st.st_mode))
+! #endif
+! newsize++;
+! if (st.st_mtime>=st.st_atime) {
+! #ifdef SUPPORT_MAILDIR_DEBUG
+! printf("unread: %s mtime = %d, atime = %d\n",de->d_name,st.st_mtime,st.st_atime);
+! #endif
+! *unreadmail = 1;
+! }
+! }
+! closedir(d);
+! if (newsize) {
+! *anymail = 1;
+! if (newsize>oldsize && *unreadmail)
+! *newmail = 1;
+! else
+! *newmail = 0;
+! } else {
+! *anymail = *newmail = *unreadmail = 0;
+! newsize = 0;
+! }
+! #ifdef SUPPORT_MAILDIR_DEBUG
+! printf("A anymail=%d, newmail=%d, unreadmail=%d, oldsize=%d, newsize=%d\n",
+! *anymail,*newmail,*unreadmail,oldsize,newsize);
+! #endif
+! oldsize=newsize;
+! } else {
+! #endif /* SUPPORT_MAILDIR */
+! fd = open (filename, O_RDONLY, 0);
+! if (fd < 0)
+! {
+! *anymail = 0;
+! *newmail = 0;
+! *unreadmail = 0;
+! newsize = 0;
+! }
+! else
+! {
+! fstat(fd, &st);
+! close(fd);
+! newsize = st.st_size;
+!
+! if (newsize > 0)
+! *anymail = 1;
+! else
+! *anymail = 0;
+!
+! if (st.st_mtime >= st.st_atime && newsize > 0)
+! *unreadmail = 1;
+! else
+! *unreadmail = 0;
+!
+! if (newsize > oldsize && *unreadmail)
+! *newmail = 1;
+! else
+! *newmail = 0;
+! }
+! #ifdef SUPPORT_MAILDIR
+! }
+! #endif
+! oldsize = newsize;
+ }
+
+ /*---------------------------------------------------------------------------*/
diff --git a/mail/coolmail/pkg-comment b/mail/coolmail/pkg-comment
new file mode 100644
index 000000000000..1992ec2c6c25
--- /dev/null
+++ b/mail/coolmail/pkg-comment
@@ -0,0 +1 @@
+A Xbiff like mail tool with animated 3D graphics.
diff --git a/mail/coolmail/pkg-descr b/mail/coolmail/pkg-descr
new file mode 100644
index 000000000000..932373915122
--- /dev/null
+++ b/mail/coolmail/pkg-descr
@@ -0,0 +1,4 @@
+Coolmail is like xbiff -- it watches your inbox mail file
+and lets you know when you have mail. But unlike xbiff, it can launch
+your favorite mail utility when you click on it, and it has cool
+animated 3D graphics.
diff --git a/mail/coolmail/pkg-plist b/mail/coolmail/pkg-plist
new file mode 100644
index 000000000000..ef84a3fc6624
--- /dev/null
+++ b/mail/coolmail/pkg-plist
@@ -0,0 +1,2 @@
+bin/coolmail
+man/man1/coolmail.1.gz