diff options
Diffstat (limited to 'mail-client/s-nail')
-rw-r--r-- | mail-client/s-nail/Manifest | 1 | ||||
-rw-r--r-- | mail-client/s-nail/files/s-nail-14.9.15-havenet.patch | 205 | ||||
-rw-r--r-- | mail-client/s-nail/s-nail-14.9.15.ebuild | 94 |
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 +} |