summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mail-client/s-nail')
-rw-r--r--mail-client/s-nail/Manifest1
-rw-r--r--mail-client/s-nail/files/s-nail-14.9.15-havenet.patch205
-rw-r--r--mail-client/s-nail/s-nail-14.9.15.ebuild94
3 files changed, 300 insertions, 0 deletions
diff --git a/mail-client/s-nail/Manifest b/mail-client/s-nail/Manifest
index 1a48213f1107..91c6b34decde 100644
--- a/mail-client/s-nail/Manifest
+++ b/mail-client/s-nail/Manifest
@@ -1 +1,2 @@
DIST s-nail-14.9.13.tar.xz 734416 BLAKE2B b23de9c32357d5b88ecb723dc875d3366b2b4c57dd654a4f2422e8bb81b781a76568eb0955990d4166f034bf40459fa5d2992da6e7f2b403a641a4d4c0c1e200 SHA512 6467846fab5752c708886ba7a66cd2038effc0cf8d72e2feb670283cf1d5436c27037087eeaa201c074964476ff0c213cffe74169fb03089ebf964fcc766e6ea
+DIST s-nail-14.9.15.tar.xz 757180 BLAKE2B 9d3efe43e6f1f4486bb66bb0060a6b656097c4b6d95e5f22e209e7464bd92bc9cf42a36009d674a3ee032ab32f64ecef2aa0cc1b09519a7760bf5d1145e35c5d SHA512 ca95c544890a13b475fb12f882a172942f29517319956eccab1fbc2a67625fe53e3f0cc10c31daac98e28bb1fae48364d80db9ec35f0e6cc71d748290a2635df
diff --git a/mail-client/s-nail/files/s-nail-14.9.15-havenet.patch b/mail-client/s-nail/files/s-nail-14.9.15-havenet.patch
new file mode 100644
index 000000000000..386e03e174d8
--- /dev/null
+++ b/mail-client/s-nail/files/s-nail-14.9.15-havenet.patch
@@ -0,0 +1,205 @@
+diff --git a/THANKS b/THANKS
+index 9613133d..1d4dfd0d 100644
+--- a/THANKS
++++ b/THANKS
+@@ -43,6 +43,7 @@ Erich Eckner erich dot eckner at gmx dot de
+ Paul Eggert eggert at cs dot ucla dot edu
+ Justin Ellingwood JustinEllingwood at gmail dot com
+ Robert Elz kre at munnari dot OZ dot AU
++Brian Evans grknight at gentoo dot org
+ Rich Felker dalias at libc dot org
+ Dr. Werner Fink werner at suse dot de
+ Felix Fontein felix at fontein dot de
+diff --git a/mx-test.sh b/mx-test.sh
+index 4a60a1b0..201b00e7 100755
+--- a/mx-test.sh
++++ b/mx-test.sh
+@@ -5442,12 +5442,17 @@ t_mta_aliases() {
+ ## xxx The following are actually *expandaddr* tests!!
+
+ # May not send plain names over SMTP!
+- echo | ${MAILX} ${ARGS} -Smta=smtp://laber.backe \
+- -Smta-aliases=./.tali \
+- -b a3 -c a2 a1 > ./.tall 2>&1
+- check_exn0 3
+- check 4 - "${MBOX}" '1172368381 238'
+- if have_feat uistrings; then
++ mtaali=
++ if have_feat smtp; then
++ echo | ${MAILX} ${ARGS} \
++ -Smta=smtp://laber.backe -Ssmtp-auth=none \
++ -Smta-aliases=./.tali \
++ -b a3 -c a2 a1 > ./.tall 2>&1
++ check_exn0 3
++ check 4 - "${MBOX}" '1172368381 238'
++ mtaali=1
++ fi
++ if [ -n "${mtaali}" ] && have_feat uistrings; then
+ check 5 - .tall '771616226 179'
+ else
+ t_echoskip '5:[test unsupported]'
+diff --git a/src/mx/cmd-resend.c b/src/mx/cmd-resend.c
+index 488c9b78..31f20609 100644
+--- a/src/mx/cmd-resend.c
++++ b/src/mx/cmd-resend.c
+@@ -723,7 +723,11 @@ jleave:
+
+ static int
+ a_crese_resend1(void *vp, boole add_resent){
+- struct mx_url url;
++#ifdef mx_HAVE_NET
++ struct mx_url url, *urlp = &url;
++#else
++ struct mx_url *urlp = NIL;
++#endif
+ struct header head;
+ struct mx_name *myto, *myrawto;
+ boole mta_isexe;
+@@ -747,7 +751,7 @@ jedar:
+ goto jleave;
+ }
+
+- if(!(mta_isexe = mx_sendout_mta_url(&url)))
++ if(!(mta_isexe = mx_sendout_mta_url(urlp)))
+ goto jleave;
+ mta_isexe = (mta_isexe != TRU1);
+
+@@ -794,7 +798,7 @@ jedar:
+ head.h_mailx_orig_cc = lextract(hfield1("cc", mp), GCC | gf);
+ head.h_mailx_orig_bcc = lextract(hfield1("bcc", mp), GBCC | gf);
+
+- if(n_resend_msg(mp, (mta_isexe ? NIL : &url), &head, add_resent
++ if(n_resend_msg(mp, (mta_isexe ? NIL : urlp), &head, add_resent
+ ) != OKAY){
+ /* n_autorec_relax_gut(); XXX but is handled automatically? */
+ goto jleave;
+diff --git a/src/mx/sendout.c b/src/mx/sendout.c
+index 2b0e8bf0..c4f373c1 100644
+--- a/src/mx/sendout.c
++++ b/src/mx/sendout.c
+@@ -2060,9 +2060,13 @@ FL enum okay
+ n_mail1(enum n_mailsend_flags msf, struct header *hp, struct message *quote,
+ char const *quotefile)
+ {
+- struct n_sigman sm;
++#ifdef mx_HAVE_NET
+ struct mx_cred_ctx cc;
+- struct mx_url url;
++ struct mx_url url, *urlp = &url;
++#else
++ struct mx_url *urlp = NIL;
++#endif
++ struct n_sigman sm;
+ struct sendbundle sb;
+ struct mx_name *to;
+ boole dosign, mta_isexe;
+@@ -2121,7 +2125,7 @@ n_mail1(enum n_mailsend_flags msf, struct header *hp, struct message *quote,
+ #ifndef mx_HAVE_SMIME
+ if (dosign) {
+ n_err(_("No S/MIME support compiled in\n"));
+- goto jleave;
++ goto jfail_dead;
+ }
+ #endif
+
+@@ -2139,8 +2143,8 @@ n_mail1(enum n_mailsend_flags msf, struct header *hp, struct message *quote,
+ * TODO header fields ONCE, call that ONCE after user editing etc. has
+ * TODO completed (one edit cycle) */
+
+- if(!(mta_isexe = mx_sendout_mta_url(&url)))
+- goto jleave;
++ if(!(mta_isexe = mx_sendout_mta_url(urlp)))
++ goto jfail_dead;
+ mta_isexe = (mta_isexe != TRU1);
+
+ /* Take the user names from the combined to and cc lists and do all the
+@@ -2174,8 +2178,10 @@ n_mail1(enum n_mailsend_flags msf, struct header *hp, struct message *quote,
+ sb.sb_hp = hp;
+ sb.sb_to = to;
+ sb.sb_input = mtf;
+- sb.sb_urlp = mta_isexe ? NIL : &url;
++ sb.sb_urlp = mta_isexe ? NIL : urlp;
++#ifdef mx_HAVE_NET
+ sb.sb_credp = &cc;
++#endif
+
+ if((dosign || count_nonlocal(to) > 0) &&
+ !_sendbundle_setup_creds(&sb, (dosign > 0))){
+@@ -2728,8 +2734,10 @@ FL enum okay
+ n_resend_msg(struct message *mp, struct mx_url *urlp, struct header *hp,
+ boole add_resent)
+ {
+- struct n_sigman sm;
++#ifdef mx_HAVE_NET
+ struct mx_cred_ctx cc;
++#endif
++ struct n_sigman sm;
+ struct sendbundle sb;
+ FILE * volatile ibuf, *nfo, * volatile nfi;
+ struct mx_fs_tmp_ctx *fstcp;
+@@ -2794,7 +2802,9 @@ n_resend_msg(struct message *mp, struct mx_url *urlp, struct header *hp,
+ sb.sb_to = to;
+ sb.sb_input = nfi;
+ sb.sb_urlp = urlp;
++#ifdef mx_HAVE_NET
+ sb.sb_credp = &cc;
++#endif
+
+ if(!_sendout_error &&
+ count_nonlocal(to) > 0 && !_sendbundle_setup_creds(&sb, FAL0)){
+diff --git a/src/mx/url.c b/src/mx/url.c
+index 574e7c56..4bd55fb5 100644
+--- a/src/mx/url.c
++++ b/src/mx/url.c
+@@ -321,29 +321,33 @@ mx_url_parse(struct mx_url *urlp, enum cproto cproto, char const *data){
+
+ rv = FAL0;
+
++#ifdef mx_HAVE_TLS
++# define a_OUCH 0
++#else
++# define a_OUCH 1
++#endif
++
+ /* Network protocol */
+ #define a_PROTOX(X,Y,Z) \
+ urlp->url_portno = Y;\
+ su_mem_copy(urlp->url_proto, X "://\0", sizeof(X "://\0"));\
+ urlp->url_proto[sizeof(X) -1] = '\0';\
+ urlp->url_proto_len = sizeof(X) -1;\
+- do{ Z; }while(0)
++ if(a_OUCH){ Z; }
+ #define a_PRIVPROTOX(X,Y,Z) \
+ do{ a_PROTOX(X, Y, Z); }while(0)
+-#define a__IF(X,Y,Z) \
++
++#define a__IF(T,X,Y,Z) \
+ if(!su_cs_cmp_case_n(data, X "://", sizeof(X "://") -1)){\
++ if(a_OUCH && T)\
++ goto jeproto;\
+ a_PROTOX(X, Y, Z);\
+ data += sizeof(X "://") -1;\
+ goto juser;\
+ }
+-#define a_IF(X,Y) a__IF(X, Y, (void)0)
+-#ifdef mx_HAVE_TLS
+-# define a_IFS(X,Y) a__IF(X, Y, urlp->url_flags |= mx_URL_TLS_REQUIRED)
+-# define a_IFs(X,Y) a__IF(X, Y, urlp->url_flags |= mx_URL_TLS_OPTIONAL)
+-#else
+-# define a_IFS(X,Y) goto jeproto;
+-# define a_IFs(X,Y) a_IF(X, Y)
+-#endif
++#define a_IF(X,Y) a__IF(0, X, Y, (void)0)
++#define a_IFS(X,Y) a__IF(1, X, Y, urlp->url_flags |= mx_URL_TLS_REQUIRED)
++#define a_IFs(X,Y) a__IF(0, X, Y, urlp->url_flags |= mx_URL_TLS_OPTIONAL)
+
+ switch(cproto){
+ case CPROTO_CERTINFO:
+@@ -413,6 +417,7 @@ mx_url_parse(struct mx_url *urlp, enum cproto cproto, char const *data){
+ #endif
+ }
+
++#undef a_OUCH
+ #undef a_PRIVPROTOX
+ #undef a_PROTOX
+ #undef a__IF
diff --git a/mail-client/s-nail/s-nail-14.9.15.ebuild b/mail-client/s-nail/s-nail-14.9.15.ebuild
new file mode 100644
index 000000000000..7ca0db136c29
--- /dev/null
+++ b/mail-client/s-nail/s-nail-14.9.15.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+HOMEPAGE="https://www.sdaoden.eu/code.html"
+DESCRIPTION="Enhanced mailx-compatible mail client based on Hierloom mailx (nail)"
+LICENSE="BSD BSD-4 ISC RSA"
+
+SRC_URI="https://ftp.sdaoden.eu/${P}.tar.xz"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="idn kerberos libressl net ssl"
+
+RDEPEND="
+ sys-libs/ncurses:0=
+ virtual/libiconv
+ idn? ( net-dns/libidn2 )
+ net? (
+ ssl? (
+ !libressl? ( dev-libs/openssl:0 )
+ libressl? ( dev-libs/libressl )
+ )
+ kerberos? ( virtual/krb5 )
+ )
+ !mail-client/mailx
+ !net-mail/mailutils
+ !mail-client/nail
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/awk"
+
+PATCHES=( "${FILESDIR}/s-nail-14.9.15-havenet.patch" )
+
+src_configure() {
+ local confopts=(
+ CC=$(tc-getCC)
+ EXTRA_CFLAGS=-std=c99
+ strip=/bin/true
+ OPT_AUTOCC=no
+ VAL_PREFIX="${EPREFIX}"/usr
+ VAL_SYSCONFDIR="${EPREFIX}"/etc
+ VAL_MTA="${EPREFIX}/usr/sbin/sendmail"
+ VAL_MAIL='/var/spool/mail'
+ VAL_PAGER=less
+ $(usex idn VAL_IDNA=idn2 OPT_IDNA=no)
+ VERBOSE=1
+ )
+
+ if use net; then
+ confopts+=( OPT_TLS=$(usex ssl require no)
+ OPT_GSSAPI=$(usex kerberos require no)
+ )
+ else
+ confopts+=( OPT_NET=no )
+ fi
+
+ tc-is-cross-compiler && confopts+=( OPT_CROSS_BUILD=yes )
+
+ emake "${confopts[@]}" config
+}
+
+src_compile() {
+ emake build
+}
+
+src_install () {
+ # Use /usr/sbin/sendmail by default and provide an example
+ cat <<- EOSMTP >> nail.rc
+
+ # Use the local sendmail (/usr/sbin/sendmail) binary by default.
+ # (Uncomment the following line to use a SMTP server)
+ #set smtp=localhost
+
+ # Ask for CC: list too.
+ set askcc
+ EOSMTP
+
+ emake DESTDIR="${D}" install
+
+ dodoc INSTALL NEWS README THANKS
+
+ dodir /bin
+ dosym ../usr/bin/mailx /bin/mail
+ dosym s-nail /usr/bin/mailx
+ dosym mailx /usr/bin/mail
+ dosym mailx /usr/bin/Mail
+
+ dosym s-nail.1 /usr/share/man/man1/mailx.1
+ dosym mailx.1 /usr/share/man/man1/mail.1
+ dosym mailx.1 /usr/share/man/man1/Mail.1
+}