1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-24 00:45:52 +00:00

New port: cclient built with third-party maildir support. Cclient is used

by UW's pine and imapd software to access mailboxes. This port complements
the existing cclient port by building a version that includes support for
qmail's maildir mailbox format.

PR:		19691
This commit is contained in:
Kelly Yancey 2000-08-14 07:49:03 +00:00
parent 67b645cde6
commit c64128b31a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=31639
12 changed files with 307 additions and 0 deletions

View File

@ -9,6 +9,7 @@
SUBDIR += biffer
SUBDIR += bulk_mailer
SUBDIR += cclient
SUBDIR += cclient-maildir
SUBDIR += cmail
SUBDIR += coolmail
SUBDIR += courier-imap

View File

@ -0,0 +1,75 @@
# New ports collection makefile for: c-client-maildir
# Date created: 2 July 2000
# Whom: Kelly Yancey <kbyanc@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= c-client-maildir
PORTVERSION= 4.7c
CATEGORIES= mail devel
MASTER_SITES= ftp://ftp.cac.washington.edu/imap/ \
ftp://ftp.funet.fi/pub/mirrors/ftp.cac.washington.edu/mail/ \
http://mirror.nucba.ac.jp/mirror/imap/ \
ftp://ftp.uni-halle.de/pub/mail/pine/
DISTNAME= imap-${PORTVERSION}
EXTRACT_SUFX= .tar.Z
DISTFILES= ${DISTNAME}2${EXTRACT_SUFX}
PATCH_SITES= ftp://anonymous@highlander.fphil.uniba.sk/pub/pine/ \
http://people.freebsd.org/~kbyanc/patches/
PATCHFILES= pine-4.20-maildir_3.patch
PATCH_DIST_STRIP=-p1 + -p2 + -p2 + -p2 + -p2 + -p2 + -S
MAINTAINER= kbyanc@FreeBSD.org
INSTALLS_SHLIB= yes
PAMAUTH?= yes
.if ${PAMAUTH} != "no"
ALL_TARGET= bfp
.else
ALL_TARGET= bsf
.endif
SHLIBBASE= c-client4
SHLIBMAJ= 7
SHLIBNAME= lib${SHLIBBASE}.so.${SHLIBMAJ}
MAKE_ENV= SHLIBNAME=${SHLIBNAME} SHLIBBASE=${SHLIBBASE}
PLIST_SUB= SHLIBNAME=${SHLIBNAME} SHLIBBASE=${SHLIBBASE}
.include <bsd.port.pre.mk>
.if ${OSVERSION} < 410002 || ${OSVERSION} >= 500000 && ${OSVERSION} < 500011
FORBIDDEN= "requires newer version of the patch utility"
.endif
.if ${PORTOBJFORMAT} == "aout"
SHLIBNAME= lib${SHLIBBASE}.so.${SHLIBMAJ}.0
.endif
post-configure:
@${ECHO_MSG} ">> The c-client shared library will be named ${SHLIBNAME}"
.if ${PAMAUTH} != "no"
@${ECHO_MSG} ">> Building with PAM support"
@${ECHO_MSG} ">> You can disable PAM support building with \"PAMAUTH=no\""
.endif
do-install:
${MKDIR} ${PREFIX}/include/c-client
${INSTALL_DATA} ${WRKSRC}/c-client/mail.h ${PREFIX}/include/c-client
${INSTALL_DATA} ${WRKSRC}/c-client/rfc822.h ${PREFIX}/include/c-client
${INSTALL_DATA} ${WRKSRC}/c-client/linkage.h ${PREFIX}/include/c-client
${INSTALL_DATA} ${WRKSRC}/c-client/misc.h ${PREFIX}/include/c-client
${INSTALL_DATA} ${WRKSRC}/c-client/smtp.h ${PREFIX}/include/c-client
${INSTALL} ${COPY} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${WRKSRC}/c-client/${SHLIBNAME} ${PREFIX}/lib
${LN} -sf ${SHLIBNAME} ${PREFIX}/lib/lib${SHLIBBASE}.so
${INSTALL_DATA} ${WRKSRC}/c-client/c-client.a \
${PREFIX}/lib/lib${SHLIBBASE}.a
post-install:
.if ${PAMAUTH} != "no"
@${CAT} ${FILESDIR}/MESSAGE.PAM
.endif
.include <bsd.port.post.mk>

View File

@ -0,0 +1,2 @@
MD5 (imap-4.7c2.tar.Z) = 1a27c7684094a8c94baf294552467060
MD5 (pine-4.20-maildir_3.patch) = 2f6cd0ed750321d074cc53171d308291

View File

@ -0,0 +1,9 @@
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
PAM authentication support is now compiled in by default; you may need to add
the following lines to /etc/pam.conf:
imap auth required pam_unix.so try_first_pass
imap account required pam_unix.so try_first_pass
pop auth required pam_unix.so try_first_pass
pop account required pam_unix.so try_first_pass
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

View File

@ -0,0 +1,21 @@
--- src/osdep/unix/os_bsi.h.orig Sat Oct 19 20:30:04 1996
+++ src/osdep/unix/os_bsi.h Sun May 24 10:46:33 1998
@@ -37,7 +37,18 @@
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
+
+/*
+ * FreeBSD v3.x and onward whines about <sys/dir.h> being obsolete, so switch
+ * to POSIX semantics.
+ */
+#if __FreeBSD__ >= 3
+#include <dirent.h>
+#define direct dirent
+#else
#include <sys/dir.h>
+#endif
+
#include <fcntl.h>
#include <syslog.h>
#include <sys/file.h>

View File

@ -0,0 +1,113 @@
--- src/osdep/unix/Makefile.orig Mon Jul 3 22:32:37 2000
+++ src/osdep/unix/Makefile Mon Jul 3 22:33:30 2000
@@ -86,7 +86,7 @@
# Commands possibly overriden by the individual port
ARRC=ar rc
-CC=cc
+#CC=cc
LN=ln -s
RANLIB=ranlib
@@ -104,7 +104,7 @@
dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
unix.o mbox.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o maildir.o
-CFLAGS=$(BASECFLAGS) $(EXTRACFLAGS)
+CFLAGS+=$(BASECFLAGS) $(EXTRACFLAGS)
MAKE=make
MV=mv
RM=rm -rf
@@ -119,6 +119,10 @@
PASSWDTYPE=$(PASSWDTYPE) SPECIALAUTHENTICATORS="$(SPECIALAUTHENTICATORS)"
BUILD=$(MAKE) build $(BUILDOPTIONS)
+# Need this for the shared library rule to work correctly
+.SUFFIXES: .o .so
+SOFILES=${BINARIES:.o=.so}
+
# Here if no make argument established
missing: osdep.h
@@ -178,6 +182,15 @@
BASECFLAGS="-g -B/usr/lib/big/ -Dvoid=char -Dconst= -DNFSKLUDGE" \
RANLIB=true ARRC="ar -rc"
+bfp: # FreeBSD Pluggable Authentication Modules
+ $(BUILD) `cat EXTRASPECIALS` OS=bsi SIGTYPE=psx CHECKPW=pam \
+ SPOOLDIR=/var \
+ ACTIVEFILE=/usr/local/news/lib/active \
+ RSHPATH=/usr/bin/rsh \
+ LOCKPGM=$(PREFIX)/libexec/mlock \
+ BASECFLAGS="-DNFSKLUDGE" \
+ BASELDFLAGS="-lpam -lcrypt"
+
bs3: # BSD/i386 3.0 or higher
$(BUILD) `cat EXTRASPECIALS` OS=bsi CHECKPW=bsi LOGINPW=bsi \
SPOOLDIR=/var NEWSSPOOL=/var/news/spool \
@@ -194,7 +207,8 @@
SPOOLDIR=/var \
ACTIVEFILE=/usr/local/news/lib/active \
RSHPATH=/usr/bin/rsh \
- BASECFLAGS="-g -O -pipe -DNFSKLUDGE" \
+ LOCKPGM=$(PREFIX)/libexec/mlock \
+ BASECFLAGS="-DNFSKLUDGE" \
BASELDFLAGS="-lcrypt"
bsi: # BSD/i386
@@ -627,19 +641,31 @@
# Build it!
-build: clean once $(ARCHIVE)
+build: clean once $(ARCHIVE) $(SHLIBNAME)
-all: $(ARCHIVE)
+all: $(ARCHIVE) $(SHLIBNAME)
$(ARCHIVE): $(BINARIES)
sh -c '$(RM) $(ARCHIVE) || true'
@cat ARCHIVE
@$(SH) ARCHIVE
+$(SHLIBNAME): $(SOFILES)
+.if $(PORTOBJFORMAT) == "elf"
+ ld -shared -x -soname $(SHLIBNAME) -o $(SHLIBNAME) $(SOFILES)
+.else
+ ld -Bshareable -x -o $(SHLIBNAME) $(SOFILES)
+.endif
+ ln -s $(SHLIBNAME) lib$(SHLIBBASE).so
+
+.c.so: osdep.h
+ $(CC) -fpic -DPIC -c $(CFLAGS) ${@:.so=.c} -o $@
+
# Cleanup
clean:
sh -c '$(RM) auths.c flockbsd.c linkage.[ch] siglocal.c osdep*.[ch] *.o ARCHIVE *FLAGS *TYPE $(ARCHIVE) || true'
+ $(RM) *.so $(SHLIBNAME)
# Dependencies
@@ -673,7 +699,7 @@
# OS-dependent
-osdep.o:mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
+OSDEPS= mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
osdep.h env_unix.h tcp_unix.h \
osdep.c env_unix.c fs_unix.c ftl_unix.c nl_unix.c tcp_unix.c \
auths.c flock.c flockbsd.c flcksafe.c fsync.c gethstid.c \
@@ -685,7 +711,12 @@
write.c \
strerror.c strpbrk.c strstr.c strtok.c strtoul.c \
OSCFLAGS
+
+osdep.o: $(OSDEPS)
$(CC) $(CFLAGS) `cat OSCFLAGS` -c osdep.c
+
+osdep.so: $(OSDEPS)
+ $(CC) -fpic -DPIC -c $(CFLAGS) `cat OSCFLAGS` osdep.c -o $@
osdep.c: osdepbas.c osdepckp.c osdeplog.c
cat osdepbas.c osdepckp.c osdeplog.c > osdep.c

View File

@ -0,0 +1,19 @@
--- Makefile.orig Mon Nov 15 22:20:34 1999
+++ Makefile Sun Dec 19 14:52:58 1999
@@ -49,6 +49,7 @@
# art AIX 2.2.1 for RT
# asv Altos SVR4
# aux A/UX
+# bfp FreeBSD with Pluggable Authentication Modules (PAM)
# bs3 BSD/i386 3.0 and higher
# bsd generic BSD 4.3 (as in ancient 1980s version)
# bsf FreeBSD
@@ -293,7 +294,7 @@
# Note on SCO you may have to set LN to "ln".
-a32 a41 aix bs3 bsf bsi bso d-g d54 do4 drs epx gas gh9 ghp gs5 gso gsu gul hpp hpx lnp lyn mct mnt neb nxt nx3 osf os4 ptx qnx sc5 sco sgi sg6 shp sl4 sl5 slx snx sol sos uw2: an
+a32 a41 aix bfp bs3 bsf bsi bso d-g d54 do4 drs epx gas gh9 ghp gs5 gso gsu gul hpp hpx lnp lyn mct mnt neb nxt nx3 osf os4 ptx qnx sc5 sco sgi sg6 shp sl4 sl5 slx snx sol sos uw2: an
$(BUILD) OS=$@
# If you use sv4, you may find that it works to move it to use the an process.

View File

@ -0,0 +1,42 @@
--- src/osdep/unix/maildir.h.orig Mon Jul 3 22:51:43 2000
+++ src/osdep/unix/maildir.h Mon Jul 3 22:52:39 2000
@@ -52,5 +52,5 @@
char *maildir_file (char *dst,char *name);
void maildir_copynew (const char *mailbox);
int maildir_select (struct direct *name);
-int maildir_namesort (struct direct **d1,struct direct **d2);
+int maildir_namesort (const void *d1,const void *d2);
void maildir_listwork(char *name, MAILSTREAM *stream, char *s2, char *subdir, int flag);
--- src/osdep/unix/maildir.c.orig Mon Jul 3 22:53:24 2000
+++ src/osdep/unix/maildir.c Mon Jul 3 22:57:50 2000
@@ -417,7 +417,7 @@
mail_exists(stream, i+1);
/* if newly seen, add to list */
- (elt = mail_elt (stream, i + 1))->maildirp = (long) cpystr (names[i]->d_name);
+ (elt = mail_elt (stream, i + 1))->maildirp = cpystr (names[i]->d_name);
elt->valid = T;
/* grab the flags */
@@ -540,9 +540,10 @@
return NIL;
}
-int maildir_namesort (struct direct **d1,struct direct **d2)
+int maildir_namesort (const void *d1,const void *d2)
{
- return strcmp ((*d1)->d_name,(*d2)->d_name);
+ return strcmp ((*(struct direct **) d1)->d_name,
+ (*(struct direct **) d2)->d_name);
}
@@ -786,7 +787,7 @@
}
/* update the file name in cache */
fs_give ((void **) &elt->maildirp);
- elt->maildirp = (long) cpystr (fn);
+ elt->maildirp = cpystr (fn);
/* fix the UID on the file */
tbuf.actime = elt->private.uid;

View File

@ -0,0 +1 @@
Mark Crispen's C-client mail access routines with qmail maildir support

View File

@ -0,0 +1,9 @@
C-client is a common API for accessing mailboxes. It is used internally by
the popular PINE mail reader as well as the University of Washington's IMAP
server.
This port includes the unsupported maildir driver to make c-client understand
qmail's maildir mailbox format.
-Kelly
kbyanc@posi.net

View File

@ -0,0 +1,6 @@
************************* WARNING ***************************
C-client has been built with third-party maildir support.
This support should be considered expermental; use at your
own risk.
************************* WARNING ***************************

View File

@ -0,0 +1,9 @@
include/c-client/mail.h
include/c-client/rfc822.h
include/c-client/linkage.h
include/c-client/misc.h
include/c-client/smtp.h
lib/libc-client4.a
lib/libc-client4.so.7
lib/libc-client4.so
@dirrm include/c-client