~alpine/aports

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch
5 2

[alpine-aports] [PATCH] testing/opensmtpd: new aport

Jonathan Curran <jonathan@curran.in>
Details
Message ID
<1441830663-23827-1-git-send-email-jonathan@curran.in>
Sender timestamp
1441830663
DKIM signature
missing
Download raw message
Patch: +674 -0
This aport provides the portable version of OpenSMTPD patched to work
with musl.

Parts of the patch will be submitted upstream soon.

https://opensmtpd.org
---
 testing/opensmtpd/00-opensmtpd.patch     | 498 +++++++++++++++++++++++++++++++
 testing/opensmtpd/APKBUILD               |  73 +++++
 testing/opensmtpd/aliases                |  63 ++++
 testing/opensmtpd/opensmtpd.post-install |   5 +
 testing/opensmtpd/opensmtpd.pre-install  |  11 +
 testing/opensmtpd/smtpd.initd            |  24 ++
 6 files changed, 674 insertions(+)
 create mode 100644 testing/opensmtpd/00-opensmtpd.patch
 create mode 100644 testing/opensmtpd/APKBUILD
 create mode 100644 testing/opensmtpd/aliases
 create mode 100644 testing/opensmtpd/opensmtpd.post-install
 create mode 100644 testing/opensmtpd/opensmtpd.pre-install
 create mode 100644 testing/opensmtpd/smtpd.initd

diff --git a/testing/opensmtpd/00-opensmtpd.patch b/testing/opensmtpd/00-opensmtpd.patch
new file mode 100644
index 0000000..243b0a4
--- /dev/null
+++ b/testing/opensmtpd/00-opensmtpd.patch
@@ -0,0 +1,498 @@
diff --git a/configure.ac b/configure.ac
index a93a08f..55f41c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -685,6 +685,7 @@ AC_CHECK_FUNCS([ \
 	getpeereid \
 	getspnam \
 	inet_aton \
+	inet_net_pton \
 	inet_ntoa \
 	inet_ntop \
 	isblank \
@@ -693,6 +694,7 @@ AC_CHECK_FUNCS([ \
 	pidfile \
 	pw_dup \
 	reallocarray \
+	res_hnok \
 	setenv \
 	setlinebuf \
 	setproctitle \
diff --git a/openbsd-compat/Makefile.am b/openbsd-compat/Makefile.am
index 5c55faa..fdee88e 100644
--- a/openbsd-compat/Makefile.am
+++ b/openbsd-compat/Makefile.am
@@ -5,9 +5,9 @@ libopenbsd_compat_a_SOURCES =							\
 		bsd-getpeereid.c bsd-misc.c bsd-waitpid.c clock_gettime.c	\
 		daemon.c dirname.c entropy.c errc.c event_asr_run.c explicit_bzero.c	\
 		fgetln.c fmt_scaled.c fparseln.c getopt.c imsg.c imsg-buffer.c	\
-		libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c setresguid.c	\
-		setproctitle.c strlcat.c strlcpy.c strmode.c strtonum.c		\
-		strsep.c vis.c xmalloc.c
+		inet_net_pton.c libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c	\
+		res_hnok.c setresguid.c setproctitle.c strlcat.c strlcpy.c strmode.c	\
+		strtonum.c strsep.c vis.c xmalloc.c
 
 EXTRA_DIST =	base64.h bsd-misc.h bsd-waitpid.h chacha_private.h defines.h	\
 		entropy.h imsg.h includes.h log.h openbsd-compat.h sys/queue.h	\
diff --git a/openbsd-compat/defines.h b/openbsd-compat/defines.h
index e1abee6..f0f5f59 100644
--- a/openbsd-compat/defines.h
+++ b/openbsd-compat/defines.h
@@ -857,4 +857,12 @@ struct winsize {
 #define FPARSELN_UNESCALL       0x0f
 #endif
 
+#ifndef SCOPE_DELIMITER
+#define SCOPE_DELIMITER '%'
+#endif
+
+#ifndef WAIT_MYPGRP
+#define WAIT_MYPGRP 0
+#endif
+
 #endif /* _DEFINES_H */
diff --git a/openbsd-compat/inet_net_pton.c b/openbsd-compat/inet_net_pton.c
new file mode 100644
index 0000000..0831e25
--- /dev/null
+++ b/openbsd-compat/inet_net_pton.c
@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 1996 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static const char orig_rcsid[] = "From Id: inet_net_pton.c,v 1.8 1996/11/21 10:28:12 vixie Exp $";
+#endif
+//#include <sys/cdefs.h>
+//__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.9 2003/09/15 23:38:06 fenner Exp $");
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef SPRINTF_CHAR
+# define SPRINTF(x) strlen(sprintf/**/x)
+#else
+# define SPRINTF(x) ((size_t)sprintf x)
+#endif
+
+static int	inet_net_pton_ipv4(const char *src, u_char *dst, size_t size);
+
+/*
+ * static int
+ * inet_net_pton(af, src, dst, size)
+ *	convert network number from presentation to network format.
+ *	accepts hex octets, hex strings, decimal octets, and /CIDR.
+ *	"size" is in bytes and describes "dst".
+ * return:
+ *	number of bits, either imputed classfully or specified with /CIDR,
+ *	or -1 if some failure occurred (check errno).  ENOENT means it was
+ *	not a valid network specification.
+ * author:
+ *	Paul Vixie (ISC), June 1996
+ */
+int
+inet_net_pton(af, src, dst, size)
+	int af;
+	const char *src;
+	void *dst;
+	size_t size;
+{
+	switch (af) {
+	case AF_INET:
+		return (inet_net_pton_ipv4(src, dst, size));
+	default:
+		errno = EAFNOSUPPORT;
+		return (-1);
+	}
+}
+
+/*
+ * static int
+ * inet_net_pton_ipv4(src, dst, size)
+ *	convert IPv4 network number from presentation to network format.
+ *	accepts hex octets, hex strings, decimal octets, and /CIDR.
+ *	"size" is in bytes and describes "dst".
+ * return:
+ *	number of bits, either imputed classfully or specified with /CIDR,
+ *	or -1 if some failure occurred (check errno).  ENOENT means it was
+ *	not an IPv4 network specification.
+ * note:
+ *	network byte order assumed.  this means 192.5.5.240/28 has
+ *	0x11110000 in its fourth octet.
+ * author:
+ *	Paul Vixie (ISC), June 1996
+ */
+static int
+inet_net_pton_ipv4(src, dst, size)
+	const char *src;
+	u_char *dst;
+	size_t size;
+{
+	static const char
+		xdigits[] = "0123456789abcdef",
+		digits[] = "0123456789";
+	int n, ch, tmp, dirty, bits;
+	const u_char *odst = dst;
+
+	ch = *src++;
+	if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
+	    && isascii(src[1]) && isxdigit(src[1])) {
+		/* Hexadecimal: Eat nybble string. */
+		if (size <= 0)
+			goto emsgsize;
+		*dst = 0, dirty = 0;
+		src++;	/* skip x or X. */
+		while ((ch = *src++) != '\0' &&
+		       isascii(ch) && isxdigit(ch)) {
+			if (isupper(ch))
+				ch = tolower(ch);
+			n = strchr(xdigits, ch) - xdigits;
+			assert(n >= 0 && n <= 15);
+			*dst |= n;
+			if (!dirty++)
+				*dst <<= 4;
+			else if (size-- > 0)
+				*++dst = 0, dirty = 0;
+			else
+				goto emsgsize;
+		}
+		if (dirty)
+			size--;
+	} else if (isascii(ch) && isdigit(ch)) {
+		/* Decimal: eat dotted digit string. */
+		for (;;) {
+			tmp = 0;
+			do {
+				n = strchr(digits, ch) - digits;
+				assert(n >= 0 && n <= 9);
+				tmp *= 10;
+				tmp += n;
+				if (tmp > 255)
+					goto enoent;
+			} while ((ch = *src++) != '\0' &&
+				 isascii(ch) && isdigit(ch));
+			if (size-- <= 0)
+				goto emsgsize;
+			*dst++ = (u_char) tmp;
+			if (ch == '\0' || ch == '/')
+				break;
+			if (ch != '.')
+				goto enoent;
+			ch = *src++;
+			if (!isascii(ch) || !isdigit(ch))
+				goto enoent;
+		}
+	} else
+		goto enoent;
+
+	bits = -1;
+	if (ch == '/' && isascii(src[0]) && isdigit(src[0]) && dst > odst) {
+		/* CIDR width specifier.  Nothing can follow it. */
+		ch = *src++;	/* Skip over the /. */
+		bits = 0;
+		do {
+			n = strchr(digits, ch) - digits;
+			assert(n >= 0 && n <= 9);
+			bits *= 10;
+			bits += n;
+		} while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch));
+		if (ch != '\0')
+			goto enoent;
+		if (bits > 32)
+			goto emsgsize;
+	}
+
+	/* Firey death and destruction unless we prefetched EOS. */
+	if (ch != '\0')
+		goto enoent;
+
+	/* If nothing was written to the destination, we found no address. */
+	if (dst == odst)
+		goto enoent;
+	/* If no CIDR spec was given, infer width from net class. */
+	if (bits == -1) {
+		if (*odst >= 240)	/* Class E */
+			bits = 32;
+		else if (*odst >= 224)	/* Class D */
+			bits = 4;
+		else if (*odst >= 192)	/* Class C */
+			bits = 24;
+		else if (*odst >= 128)	/* Class B */
+			bits = 16;
+		else			/* Class A */
+			bits = 8;
+		/* If imputed mask is narrower than specified octets, widen. */
+		if (bits < ((dst - odst) * 8))
+			bits = (dst - odst) * 8;
+	}
+	/* Extend network to cover the actual mask. */
+	while (bits > ((dst - odst) * 8)) {
+		if (size-- <= 0)
+			goto emsgsize;
+		*dst++ = '\0';
+	}
+	return (bits);
+
+ enoent:
+	errno = ENOENT;
+	return (-1);
+
+ emsgsize:
+	errno = EMSGSIZE;
+	return (-1);
+}
+
+/*
+ * Weak aliases for applications that use certain private entry points,
+ * and fail to include <arpa/inet.h>.
+ */
+#undef inet_net_pton
+/* __weak_reference(__inet_net_pton, inet_net_pton); */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index e345a9d..a3fa80c 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -184,8 +184,20 @@ int vsnprintf(char *, size_t, const char *, va_list);
 void explicit_bzero(void *p, size_t n);
 #endif
 
+#ifndef HAVE_INET_NET_PTON
+int inet_net_pton(int, const char *, void *, size_t);
+#endif
+
+#ifndef HAVE_RES_HNOK
+int res_hnok(const char *);
+#endif
+
 /* OpenSMTPD-portable specific entries */
 
+#ifndef FILE
+#include <stdio.h>
+#endif
+
 #ifndef HAVE_FGETLN
 #include <stdio.h>
 #include <string.h>
diff --git a/openbsd-compat/res_hnok.c b/openbsd-compat/res_hnok.c
new file mode 100644
index 0000000..06a3e8a
--- /dev/null
+++ b/openbsd-compat/res_hnok.c
@@ -0,0 +1,168 @@
+/*	$OpenBSD: res_comp.c,v 1.14 2008/04/16 22:35:23 deraadt Exp $	*/
+
+/*
+ * ++Copyright++ 1985, 1993
+ * -
+ * Copyright (c) 1985, 1993
+ *    The Regents of the University of California.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ * 
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
+ */
+
+/* OPENBSD ORIGINAL: lib/libc/net/res_comp.c */
+
+#include "includes.h"
+#ifndef HAVE_RES_HNOK
+
+/*
+ * Verify that a domain name uses an acceptable character set.
+ */
+
+/*
+ * Note the conspicuous absence of ctype macros in these definitions.  On
+ * non-ASCII hosts, we can't depend on string literals or ctype macros to
+ * tell us anything about network-format data.  The rest of the BIND system
+ * is not careful about this, but for some reason, we're doing it right here.
+ */
+#define PERIOD 0x2e
+#define	hyphenchar(c) ((c) == 0x2d)
+#define bslashchar(c) ((c) == 0x5c)
+#define underscorechar(c) ((c) == 0x5f)
+#define periodchar(c) ((c) == PERIOD)
+#define asterchar(c) ((c) == 0x2a)
+#define alphachar(c) (((c) >= 0x41 && (c) <= 0x5a) \
+		   || ((c) >= 0x61 && (c) <= 0x7a))
+#define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
+
+#define borderchar(c) (alphachar(c) || digitchar(c))
+#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c))
+#define	domainchar(c) ((c) > 0x20 && (c) < 0x7f)
+
+int
+res_hnok(const char *dn)
+{
+	int pch = PERIOD, ch = *dn++;
+
+	while (ch != '\0') {
+		int nch = *dn++;
+
+		if (periodchar(ch)) {
+			;
+		} else if (periodchar(pch)) {
+			if (!borderchar(ch))
+				return (0);
+		} else if (periodchar(nch) || nch == '\0') {
+			if (!borderchar(ch))
+				return (0);
+		} else {
+			if (!middlechar(ch))
+				return (0);
+		}
+		pch = ch, ch = nch;
+	}
+	return (1);
+}
+
+/*
+ * hostname-like (A, MX, WKS) owners can have "*" as their first label
+ * but must otherwise be as a host name.
+ */
+int
+res_ownok(const char *dn)
+{
+	if (asterchar(dn[0])) {
+		if (periodchar(dn[1]))
+			return (res_hnok(dn+2));
+		if (dn[1] == '\0')
+			return (1);
+	}
+	return (res_hnok(dn));
+}
+
+/*
+ * SOA RNAMEs and RP RNAMEs can have any printable character in their first
+ * label, but the rest of the name has to look like a host name.
+ */
+int
+res_mailok(const char *dn)
+{
+	int ch, escaped = 0;
+
+	/* "." is a valid missing representation */
+	if (*dn == '\0')
+		return(1);
+
+	/* otherwise <label>.<hostname> */
+	while ((ch = *dn++) != '\0') {
+		if (!domainchar(ch))
+			return (0);
+		if (!escaped && periodchar(ch))
+			break;
+		if (escaped)
+			escaped = 0;
+		else if (bslashchar(ch))
+			escaped = 1;
+	}
+	if (periodchar(ch))
+		return (res_hnok(dn));
+	return(0);
+}
+
+/*
+ * This function is quite liberal, since RFC 1034's character sets are only
+ * recommendations.
+ */
+int
+res_dnok(const char *dn)
+{
+	int ch;
+
+	while ((ch = *dn++) != '\0')
+		if (!domainchar(ch))
+			return (0);
+	return (1);
+}
+
+#endif /* !HAVE_RES_HNOK */
diff --git a/openbsd-compat/strmode.c b/openbsd-compat/strmode.c
index 4a81614..535edfb 100644
--- a/openbsd-compat/strmode.c
+++ b/openbsd-compat/strmode.c
@@ -33,6 +33,8 @@
 #include "includes.h"
 #ifndef HAVE_STRMODE
 
+#undef S_IRUSR
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <string.h>
diff --git a/smtpd/smtpd.c b/smtpd/smtpd.c
index 763a62d..dfab650 100644
--- a/smtpd/smtpd.c
+++ b/smtpd/smtpd.c
@@ -26,6 +26,7 @@
 #include <sys/tree.h>
 #include <sys/socket.h>
 #include <sys/wait.h>
+#undef S_IRUSR
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/mman.h>
diff --git a/testing/opensmtpd/APKBUILD b/testing/opensmtpd/APKBUILD
new file mode 100644
index 0000000..4b6793a
--- /dev/null
+++ b/testing/opensmtpd/APKBUILD
@@ -0,0 +1,73 @@
# Contributor: Jonathan Curran <jonathan@curran.in>
# Maintainer: Jonathan Curran <jonathan@curran.in>
pkgname=opensmtpd
pkgver=5.7.1p1
pkgrel=0
pkgdesc="secure, reliable, lean, and easy-to configure SMTP server"
url="http://www.opensmtpd.org"
arch="all"
license="ISC"
depends=""
depends_dev=""
makedepends="automake autoconf libtool mdocml db-dev libasr libevent-dev openssl-dev"
install="$pkgname.pre-install $pkgname.post-install"
subpackages="$pkgname-doc"
source="https://www.opensmtpd.org/archives/opensmtpd-${pkgver}.tar.gz
	00-opensmtpd.patch
	smtpd.initd
	aliases"

_builddir=${srcdir}/${pkgname}-${pkgver}
prepare() {
	local i
	cd "$_builddir"
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done
}

build() {
	cd "$_builddir"
	aclocal -I m4
	autoconf
	autoheader
	automake --foreign --add-missing --copy
        ./configure --build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc/smtpd \
		--enable-table-db \
		--with-privsep-user=smtpd \
		--with-queue-user=smtpq \
		--with-maildir=/var/spool/mail \
		--with-sock-dir=/run \
		--with-libs="-lfts" \
		--with-pie \
		--with-Werror \
		--mandir=/usr/share/man \
		--with-mantype=man || return 1
        make || return 1
}

package() {
	cd "$_builddir"
        make DESTDIR=${pkgdir} install || return 1
	sed -i 's#/etc/mail#/etc/smtpd#g' "$pkgdir"/etc/smtpd/smtpd.conf
	install -Dm755 "$srcdir"/smtpd.initd "$pkgdir"/etc/init.d/smtpd
	install -Dm644 "$srcdir"/aliases "$pkgdir"/etc/smtpd/aliases
}

md5sums="bf81fdc691808efa6acd7bdde5df757f  opensmtpd-5.7.1p1.tar.gz
e90e077ee170c7806a4657f0fd5778b1  00-opensmtpd.patch
f2043d24cfd3b70821f9f62270d8d092  smtpd.initd
561d2aead043a64a4ce5d66b4f78223e  aliases"
sha256sums="67e9dd9682ca8c181e84e66c76245a4a8f6205834f915a2c021cdfeb22049e3a  opensmtpd-5.7.1p1.tar.gz
1daa9b94e598db9b34e9a1fc717c834519824bdf7e87f1d6729c815ea5ca6acf  00-opensmtpd.patch
aa58a27872044462b3551b2ed21ef27acffc9e9d1b1cceb1ceae07f03bdcce78  smtpd.initd
7bef80f8d86aa5463c864681482a4908d22ff8b6f3e47d2a410ef2d59b316b53  aliases"
sha512sums="df09c980b25a6e91a62f6de83b18e376f6c81a5bf0039fa91da90b2fe4d67bf4bc2dc6787b2d9aca0eb859cc149f980dd9c342516af5262231c97b133f804c1a  opensmtpd-5.7.1p1.tar.gz
c3a60ec3785903b3118feebde6021e20f1eb26a8d6e8b8c72ae19c6f9d6a9a2ceaee32c45a0ac3ff29d24018d169273f931378c1269eec32d7e36e5d98dd475d  00-opensmtpd.patch
1b471dd4b6b18d0e1ee7af269567b0e3772c8a8e5bc9521125261a38b018fce4ee02458fb14dfb94a75ef73b979884aa81a9316917b31742db1a0140294aa248  smtpd.initd
929ba0b8befca6cad558602f9793a9c653923924ee524902916b8ef4952d1ea8a391895e7450ed9768eb82a07bd307b49561f5d49ea4711bd87a1a73eb8d7dad  aliases"
diff --git a/testing/opensmtpd/aliases b/testing/opensmtpd/aliases
new file mode 100644
index 0000000..766dc3e
--- /dev/null
+++ b/testing/opensmtpd/aliases
@@ -0,0 +1,63 @@
#  Aliases in this file will NOT be expanded in the header from
#  Mail, but WILL be visible over networks or from /usr/libexec/mail.local.
#
#	>>>>>>>>>>	The program "newaliases" must be run after
#	>> NOTE >>	this file is updated for any changes to
#	>>>>>>>>>>	show through to smtpd.
#

# Well-known aliases -- this should be filled in!
# root: your-every-day-user

# Basic system aliases -- these MUST be present
MAILER-DAEMON: postmaster
postmaster: root
operator: root

# General redirections for important pseudo accounts
daemon:	root
uucp: root

# Redirections for pseudo accounts that should not receive mail
bin: /dev/null
adm: /dev/null
lp: /dev/null
sync: /dev/null
shutdown: /dev/null
halt: /dev/null
mail: /dev/null
news: /dev/null
man: /dev/null
cron: /dev/null
ftp: /dev/null
sshd: /dev/null
at: /dev/null
squid: /dev/null
gdm: /dev/null
xfs: /dev/null
games: /dev/null
named: /dev/null
mysql: /dev/null
postgres: /dev/null
apache: /dev/null
nut: /dev/null
cyrus: /dev/null
vpopmail: /dev/null
ntp: /dev/null
postfix: /dev/null
smmsp: /dev/null
distcc: /dev/null
guest: /dev/null
nobody: /dev/null

# RFC 2142: NETWORK OPERATIONS MAILBOX NAMES
abuse:		root
# noc:		root
security:	root

# RFC 2142: SUPPORT MAILBOX NAMES FOR SPECIFIC INTERNET SERVICES
# hostmaster:	root
# usenet:	root
# news:		usenet
# webmaster:	root
# ftp:		root
\ No newline at end of file
diff --git a/testing/opensmtpd/opensmtpd.post-install b/testing/opensmtpd/opensmtpd.post-install
new file mode 100644
index 0000000..f7acfaf
--- /dev/null
+++ b/testing/opensmtpd/opensmtpd.post-install
@@ -0,0 +1,5 @@
#!/bin/sh

/usr/sbin/newaliases

exit 0
diff --git a/testing/opensmtpd/opensmtpd.pre-install b/testing/opensmtpd/opensmtpd.pre-install
new file mode 100644
index 0000000..af0620e
--- /dev/null
+++ b/testing/opensmtpd/opensmtpd.pre-install
@@ -0,0 +1,11 @@
#!/bin/sh

addgroup -S smtpd 2>/dev/null
addgroup -S smtpq 2>/dev/null

adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTP Daemon' -G smtpd smtpd 2>/dev/null
adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTPD Queue' -G smtpq smtpq 2>/dev/null

mkdir -p /var/spool/mail

exit 0
diff --git a/testing/opensmtpd/smtpd.initd b/testing/opensmtpd/smtpd.initd
new file mode 100644
index 0000000..b88f5ba
--- /dev/null
+++ b/testing/opensmtpd/smtpd.initd
@@ -0,0 +1,24 @@
#!/sbin/openrc-run

name="busybox $SVCNAME"
command="/usr/sbin/$SVCNAME"
command_args="$SMTPD_OPTS"

depend() {
	need net localmount
	after bootmisc firewall
	use logger dns
	provide mta
}

start() {
	ebegin "Starting smtpd ${CONF_MESSAGE}"
	/usr/sbin/smtpd
	eend $?
}

stop() {
       ebegin "Stopping smtpd ${CONF_MESSAGE}"
       /usr/sbin/smtpctl stop &> /dev/null
       eend $?
}
\ No newline at end of file
-- 
2.4.1



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---

[alpine-aports] [PATCH v2] testing/opensmtpd: new aport

Jonathan Curran <jonathan@curran.in>
Details
Message ID
<1441918874-31745-1-git-send-email-jonathan@curran.in>
In-Reply-To
<1441830663-23827-1-git-send-email-jonathan@curran.in> (view parent)
Sender timestamp
1441918874
DKIM signature
missing
Download raw message
Patch: +674 -0
This aport provides the portable version of OpenSMTPD patched to work
with musl.

Parts of the patch will be submitted upstream soon.

https://opensmtpd.org
---
Changes v1 -> v2:
 - updated smtpd.initd

 testing/opensmtpd/00-opensmtpd.patch     | 498 +++++++++++++++++++++++++++++++
 testing/opensmtpd/APKBUILD               |  73 +++++
 testing/opensmtpd/aliases                |  63 ++++
 testing/opensmtpd/opensmtpd.post-install |   5 +
 testing/opensmtpd/opensmtpd.pre-install  |  11 +
 testing/opensmtpd/smtpd.initd            |  24 ++
 6 files changed, 674 insertions(+)
 create mode 100644 testing/opensmtpd/00-opensmtpd.patch
 create mode 100644 testing/opensmtpd/APKBUILD
 create mode 100644 testing/opensmtpd/aliases
 create mode 100644 testing/opensmtpd/opensmtpd.post-install
 create mode 100644 testing/opensmtpd/opensmtpd.pre-install
 create mode 100644 testing/opensmtpd/smtpd.initd

diff --git a/testing/opensmtpd/00-opensmtpd.patch b/testing/opensmtpd/00-opensmtpd.patch
new file mode 100644
index 0000000..243b0a4
--- /dev/null
+++ b/testing/opensmtpd/00-opensmtpd.patch
@@ -0,0 +1,498 @@
diff --git a/configure.ac b/configure.ac
index a93a08f..55f41c1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -685,6 +685,7 @@ AC_CHECK_FUNCS([ \
 	getpeereid \
 	getspnam \
 	inet_aton \
+	inet_net_pton \
 	inet_ntoa \
 	inet_ntop \
 	isblank \
@@ -693,6 +694,7 @@ AC_CHECK_FUNCS([ \
 	pidfile \
 	pw_dup \
 	reallocarray \
+	res_hnok \
 	setenv \
 	setlinebuf \
 	setproctitle \
diff --git a/openbsd-compat/Makefile.am b/openbsd-compat/Makefile.am
index 5c55faa..fdee88e 100644
--- a/openbsd-compat/Makefile.am
+++ b/openbsd-compat/Makefile.am
@@ -5,9 +5,9 @@ libopenbsd_compat_a_SOURCES =							\
 		bsd-getpeereid.c bsd-misc.c bsd-waitpid.c clock_gettime.c	\
 		daemon.c dirname.c entropy.c errc.c event_asr_run.c explicit_bzero.c	\
 		fgetln.c fmt_scaled.c fparseln.c getopt.c imsg.c imsg-buffer.c	\
-		libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c setresguid.c	\
-		setproctitle.c strlcat.c strlcpy.c strmode.c strtonum.c		\
-		strsep.c vis.c xmalloc.c
+		inet_net_pton.c libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c	\
+		res_hnok.c setresguid.c setproctitle.c strlcat.c strlcpy.c strmode.c	\
+		strtonum.c strsep.c vis.c xmalloc.c
 
 EXTRA_DIST =	base64.h bsd-misc.h bsd-waitpid.h chacha_private.h defines.h	\
 		entropy.h imsg.h includes.h log.h openbsd-compat.h sys/queue.h	\
diff --git a/openbsd-compat/defines.h b/openbsd-compat/defines.h
index e1abee6..f0f5f59 100644
--- a/openbsd-compat/defines.h
+++ b/openbsd-compat/defines.h
@@ -857,4 +857,12 @@ struct winsize {
 #define FPARSELN_UNESCALL       0x0f
 #endif
 
+#ifndef SCOPE_DELIMITER
+#define SCOPE_DELIMITER '%'
+#endif
+
+#ifndef WAIT_MYPGRP
+#define WAIT_MYPGRP 0
+#endif
+
 #endif /* _DEFINES_H */
diff --git a/openbsd-compat/inet_net_pton.c b/openbsd-compat/inet_net_pton.c
new file mode 100644
index 0000000..0831e25
--- /dev/null
+++ b/openbsd-compat/inet_net_pton.c
@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 1996 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static const char orig_rcsid[] = "From Id: inet_net_pton.c,v 1.8 1996/11/21 10:28:12 vixie Exp $";
+#endif
+//#include <sys/cdefs.h>
+//__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.9 2003/09/15 23:38:06 fenner Exp $");
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef SPRINTF_CHAR
+# define SPRINTF(x) strlen(sprintf/**/x)
+#else
+# define SPRINTF(x) ((size_t)sprintf x)
+#endif
+
+static int	inet_net_pton_ipv4(const char *src, u_char *dst, size_t size);
+
+/*
+ * static int
+ * inet_net_pton(af, src, dst, size)
+ *	convert network number from presentation to network format.
+ *	accepts hex octets, hex strings, decimal octets, and /CIDR.
+ *	"size" is in bytes and describes "dst".
+ * return:
+ *	number of bits, either imputed classfully or specified with /CIDR,
+ *	or -1 if some failure occurred (check errno).  ENOENT means it was
+ *	not a valid network specification.
+ * author:
+ *	Paul Vixie (ISC), June 1996
+ */
+int
+inet_net_pton(af, src, dst, size)
+	int af;
+	const char *src;
+	void *dst;
+	size_t size;
+{
+	switch (af) {
+	case AF_INET:
+		return (inet_net_pton_ipv4(src, dst, size));
+	default:
+		errno = EAFNOSUPPORT;
+		return (-1);
+	}
+}
+
+/*
+ * static int
+ * inet_net_pton_ipv4(src, dst, size)
+ *	convert IPv4 network number from presentation to network format.
+ *	accepts hex octets, hex strings, decimal octets, and /CIDR.
+ *	"size" is in bytes and describes "dst".
+ * return:
+ *	number of bits, either imputed classfully or specified with /CIDR,
+ *	or -1 if some failure occurred (check errno).  ENOENT means it was
+ *	not an IPv4 network specification.
+ * note:
+ *	network byte order assumed.  this means 192.5.5.240/28 has
+ *	0x11110000 in its fourth octet.
+ * author:
+ *	Paul Vixie (ISC), June 1996
+ */
+static int
+inet_net_pton_ipv4(src, dst, size)
+	const char *src;
+	u_char *dst;
+	size_t size;
+{
+	static const char
+		xdigits[] = "0123456789abcdef",
+		digits[] = "0123456789";
+	int n, ch, tmp, dirty, bits;
+	const u_char *odst = dst;
+
+	ch = *src++;
+	if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
+	    && isascii(src[1]) && isxdigit(src[1])) {
+		/* Hexadecimal: Eat nybble string. */
+		if (size <= 0)
+			goto emsgsize;
+		*dst = 0, dirty = 0;
+		src++;	/* skip x or X. */
+		while ((ch = *src++) != '\0' &&
+		       isascii(ch) && isxdigit(ch)) {
+			if (isupper(ch))
+				ch = tolower(ch);
+			n = strchr(xdigits, ch) - xdigits;
+			assert(n >= 0 && n <= 15);
+			*dst |= n;
+			if (!dirty++)
+				*dst <<= 4;
+			else if (size-- > 0)
+				*++dst = 0, dirty = 0;
+			else
+				goto emsgsize;
+		}
+		if (dirty)
+			size--;
+	} else if (isascii(ch) && isdigit(ch)) {
+		/* Decimal: eat dotted digit string. */
+		for (;;) {
+			tmp = 0;
+			do {
+				n = strchr(digits, ch) - digits;
+				assert(n >= 0 && n <= 9);
+				tmp *= 10;
+				tmp += n;
+				if (tmp > 255)
+					goto enoent;
+			} while ((ch = *src++) != '\0' &&
+				 isascii(ch) && isdigit(ch));
+			if (size-- <= 0)
+				goto emsgsize;
+			*dst++ = (u_char) tmp;
+			if (ch == '\0' || ch == '/')
+				break;
+			if (ch != '.')
+				goto enoent;
+			ch = *src++;
+			if (!isascii(ch) || !isdigit(ch))
+				goto enoent;
+		}
+	} else
+		goto enoent;
+
+	bits = -1;
+	if (ch == '/' && isascii(src[0]) && isdigit(src[0]) && dst > odst) {
+		/* CIDR width specifier.  Nothing can follow it. */
+		ch = *src++;	/* Skip over the /. */
+		bits = 0;
+		do {
+			n = strchr(digits, ch) - digits;
+			assert(n >= 0 && n <= 9);
+			bits *= 10;
+			bits += n;
+		} while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch));
+		if (ch != '\0')
+			goto enoent;
+		if (bits > 32)
+			goto emsgsize;
+	}
+
+	/* Firey death and destruction unless we prefetched EOS. */
+	if (ch != '\0')
+		goto enoent;
+
+	/* If nothing was written to the destination, we found no address. */
+	if (dst == odst)
+		goto enoent;
+	/* If no CIDR spec was given, infer width from net class. */
+	if (bits == -1) {
+		if (*odst >= 240)	/* Class E */
+			bits = 32;
+		else if (*odst >= 224)	/* Class D */
+			bits = 4;
+		else if (*odst >= 192)	/* Class C */
+			bits = 24;
+		else if (*odst >= 128)	/* Class B */
+			bits = 16;
+		else			/* Class A */
+			bits = 8;
+		/* If imputed mask is narrower than specified octets, widen. */
+		if (bits < ((dst - odst) * 8))
+			bits = (dst - odst) * 8;
+	}
+	/* Extend network to cover the actual mask. */
+	while (bits > ((dst - odst) * 8)) {
+		if (size-- <= 0)
+			goto emsgsize;
+		*dst++ = '\0';
+	}
+	return (bits);
+
+ enoent:
+	errno = ENOENT;
+	return (-1);
+
+ emsgsize:
+	errno = EMSGSIZE;
+	return (-1);
+}
+
+/*
+ * Weak aliases for applications that use certain private entry points,
+ * and fail to include <arpa/inet.h>.
+ */
+#undef inet_net_pton
+/* __weak_reference(__inet_net_pton, inet_net_pton); */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index e345a9d..a3fa80c 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -184,8 +184,20 @@ int vsnprintf(char *, size_t, const char *, va_list);
 void explicit_bzero(void *p, size_t n);
 #endif
 
+#ifndef HAVE_INET_NET_PTON
+int inet_net_pton(int, const char *, void *, size_t);
+#endif
+
+#ifndef HAVE_RES_HNOK
+int res_hnok(const char *);
+#endif
+
 /* OpenSMTPD-portable specific entries */
 
+#ifndef FILE
+#include <stdio.h>
+#endif
+
 #ifndef HAVE_FGETLN
 #include <stdio.h>
 #include <string.h>
diff --git a/openbsd-compat/res_hnok.c b/openbsd-compat/res_hnok.c
new file mode 100644
index 0000000..06a3e8a
--- /dev/null
+++ b/openbsd-compat/res_hnok.c
@@ -0,0 +1,168 @@
+/*	$OpenBSD: res_comp.c,v 1.14 2008/04/16 22:35:23 deraadt Exp $	*/
+
+/*
+ * ++Copyright++ 1985, 1993
+ * -
+ * Copyright (c) 1985, 1993
+ *    The Regents of the University of California.  All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ * 
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
+ */
+
+/* OPENBSD ORIGINAL: lib/libc/net/res_comp.c */
+
+#include "includes.h"
+#ifndef HAVE_RES_HNOK
+
+/*
+ * Verify that a domain name uses an acceptable character set.
+ */
+
+/*
+ * Note the conspicuous absence of ctype macros in these definitions.  On
+ * non-ASCII hosts, we can't depend on string literals or ctype macros to
+ * tell us anything about network-format data.  The rest of the BIND system
+ * is not careful about this, but for some reason, we're doing it right here.
+ */
+#define PERIOD 0x2e
+#define	hyphenchar(c) ((c) == 0x2d)
+#define bslashchar(c) ((c) == 0x5c)
+#define underscorechar(c) ((c) == 0x5f)
+#define periodchar(c) ((c) == PERIOD)
+#define asterchar(c) ((c) == 0x2a)
+#define alphachar(c) (((c) >= 0x41 && (c) <= 0x5a) \
+		   || ((c) >= 0x61 && (c) <= 0x7a))
+#define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
+
+#define borderchar(c) (alphachar(c) || digitchar(c))
+#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c))
+#define	domainchar(c) ((c) > 0x20 && (c) < 0x7f)
+
+int
+res_hnok(const char *dn)
+{
+	int pch = PERIOD, ch = *dn++;
+
+	while (ch != '\0') {
+		int nch = *dn++;
+
+		if (periodchar(ch)) {
+			;
+		} else if (periodchar(pch)) {
+			if (!borderchar(ch))
+				return (0);
+		} else if (periodchar(nch) || nch == '\0') {
+			if (!borderchar(ch))
+				return (0);
+		} else {
+			if (!middlechar(ch))
+				return (0);
+		}
+		pch = ch, ch = nch;
+	}
+	return (1);
+}
+
+/*
+ * hostname-like (A, MX, WKS) owners can have "*" as their first label
+ * but must otherwise be as a host name.
+ */
+int
+res_ownok(const char *dn)
+{
+	if (asterchar(dn[0])) {
+		if (periodchar(dn[1]))
+			return (res_hnok(dn+2));
+		if (dn[1] == '\0')
+			return (1);
+	}
+	return (res_hnok(dn));
+}
+
+/*
+ * SOA RNAMEs and RP RNAMEs can have any printable character in their first
+ * label, but the rest of the name has to look like a host name.
+ */
+int
+res_mailok(const char *dn)
+{
+	int ch, escaped = 0;
+
+	/* "." is a valid missing representation */
+	if (*dn == '\0')
+		return(1);
+
+	/* otherwise <label>.<hostname> */
+	while ((ch = *dn++) != '\0') {
+		if (!domainchar(ch))
+			return (0);
+		if (!escaped && periodchar(ch))
+			break;
+		if (escaped)
+			escaped = 0;
+		else if (bslashchar(ch))
+			escaped = 1;
+	}
+	if (periodchar(ch))
+		return (res_hnok(dn));
+	return(0);
+}
+
+/*
+ * This function is quite liberal, since RFC 1034's character sets are only
+ * recommendations.
+ */
+int
+res_dnok(const char *dn)
+{
+	int ch;
+
+	while ((ch = *dn++) != '\0')
+		if (!domainchar(ch))
+			return (0);
+	return (1);
+}
+
+#endif /* !HAVE_RES_HNOK */
diff --git a/openbsd-compat/strmode.c b/openbsd-compat/strmode.c
index 4a81614..535edfb 100644
--- a/openbsd-compat/strmode.c
+++ b/openbsd-compat/strmode.c
@@ -33,6 +33,8 @@
 #include "includes.h"
 #ifndef HAVE_STRMODE
 
+#undef S_IRUSR
+
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <string.h>
diff --git a/smtpd/smtpd.c b/smtpd/smtpd.c
index 763a62d..dfab650 100644
--- a/smtpd/smtpd.c
+++ b/smtpd/smtpd.c
@@ -26,6 +26,7 @@
 #include <sys/tree.h>
 #include <sys/socket.h>
 #include <sys/wait.h>
+#undef S_IRUSR
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/mman.h>
diff --git a/testing/opensmtpd/APKBUILD b/testing/opensmtpd/APKBUILD
new file mode 100644
index 0000000..555e043
--- /dev/null
+++ b/testing/opensmtpd/APKBUILD
@@ -0,0 +1,73 @@
# Contributor: Jonathan Curran <jonathan@curran.in>
# Maintainer: Jonathan Curran <jonathan@curran.in>
pkgname=opensmtpd
pkgver=5.7.1p1
pkgrel=0
pkgdesc="secure, reliable, lean, and easy-to configure SMTP server"
url="http://www.opensmtpd.org"
arch="all"
license="ISC"
depends=""
depends_dev=""
makedepends="automake autoconf libtool mdocml db-dev libasr libevent-dev openssl-dev"
install="$pkgname.pre-install $pkgname.post-install"
subpackages="$pkgname-doc"
source="https://www.opensmtpd.org/archives/opensmtpd-${pkgver}.tar.gz
	00-opensmtpd.patch
	smtpd.initd
	aliases"

_builddir=${srcdir}/${pkgname}-${pkgver}
prepare() {
	local i
	cd "$_builddir"
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done
}

build() {
	cd "$_builddir"
	aclocal -I m4
	autoconf
	autoheader
	automake --foreign --add-missing --copy
        ./configure --build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc/smtpd \
		--enable-table-db \
		--with-privsep-user=smtpd \
		--with-queue-user=smtpq \
		--with-maildir=/var/spool/mail \
		--with-sock-dir=/run \
		--with-libs="-lfts" \
		--with-pie \
		--with-Werror \
		--mandir=/usr/share/man \
		--with-mantype=man || return 1
        make || return 1
}

package() {
	cd "$_builddir"
        make DESTDIR=${pkgdir} install || return 1
	sed -i 's#/etc/mail#/etc/smtpd#g' "$pkgdir"/etc/smtpd/smtpd.conf
	install -Dm755 "$srcdir"/smtpd.initd "$pkgdir"/etc/init.d/smtpd
	install -Dm644 "$srcdir"/aliases "$pkgdir"/etc/smtpd/aliases
}

md5sums="bf81fdc691808efa6acd7bdde5df757f  opensmtpd-5.7.1p1.tar.gz
e90e077ee170c7806a4657f0fd5778b1  00-opensmtpd.patch
a2f311a82c9a85f5c52975c4dbbdbd53  smtpd.initd
561d2aead043a64a4ce5d66b4f78223e  aliases"
sha256sums="67e9dd9682ca8c181e84e66c76245a4a8f6205834f915a2c021cdfeb22049e3a  opensmtpd-5.7.1p1.tar.gz
1daa9b94e598db9b34e9a1fc717c834519824bdf7e87f1d6729c815ea5ca6acf  00-opensmtpd.patch
ab4b7f066a38dadd7a2dc6d7c3a06c3a8ac2367340d97e2a8b54f571ea0f8cf8  smtpd.initd
7bef80f8d86aa5463c864681482a4908d22ff8b6f3e47d2a410ef2d59b316b53  aliases"
sha512sums="df09c980b25a6e91a62f6de83b18e376f6c81a5bf0039fa91da90b2fe4d67bf4bc2dc6787b2d9aca0eb859cc149f980dd9c342516af5262231c97b133f804c1a  opensmtpd-5.7.1p1.tar.gz
c3a60ec3785903b3118feebde6021e20f1eb26a8d6e8b8c72ae19c6f9d6a9a2ceaee32c45a0ac3ff29d24018d169273f931378c1269eec32d7e36e5d98dd475d  00-opensmtpd.patch
8152fecadeb1d818b7865eae040123f855e81fafbb4b40d12a64336e09dc486c10e6828809182c8172bfd9f54dc7d050a154b61d5e6049df6ffd8a7b6e5e1277  smtpd.initd
929ba0b8befca6cad558602f9793a9c653923924ee524902916b8ef4952d1ea8a391895e7450ed9768eb82a07bd307b49561f5d49ea4711bd87a1a73eb8d7dad  aliases"
diff --git a/testing/opensmtpd/aliases b/testing/opensmtpd/aliases
new file mode 100644
index 0000000..766dc3e
--- /dev/null
+++ b/testing/opensmtpd/aliases
@@ -0,0 +1,63 @@
#  Aliases in this file will NOT be expanded in the header from
#  Mail, but WILL be visible over networks or from /usr/libexec/mail.local.
#
#	>>>>>>>>>>	The program "newaliases" must be run after
#	>> NOTE >>	this file is updated for any changes to
#	>>>>>>>>>>	show through to smtpd.
#

# Well-known aliases -- this should be filled in!
# root: your-every-day-user

# Basic system aliases -- these MUST be present
MAILER-DAEMON: postmaster
postmaster: root
operator: root

# General redirections for important pseudo accounts
daemon:	root
uucp: root

# Redirections for pseudo accounts that should not receive mail
bin: /dev/null
adm: /dev/null
lp: /dev/null
sync: /dev/null
shutdown: /dev/null
halt: /dev/null
mail: /dev/null
news: /dev/null
man: /dev/null
cron: /dev/null
ftp: /dev/null
sshd: /dev/null
at: /dev/null
squid: /dev/null
gdm: /dev/null
xfs: /dev/null
games: /dev/null
named: /dev/null
mysql: /dev/null
postgres: /dev/null
apache: /dev/null
nut: /dev/null
cyrus: /dev/null
vpopmail: /dev/null
ntp: /dev/null
postfix: /dev/null
smmsp: /dev/null
distcc: /dev/null
guest: /dev/null
nobody: /dev/null

# RFC 2142: NETWORK OPERATIONS MAILBOX NAMES
abuse:		root
# noc:		root
security:	root

# RFC 2142: SUPPORT MAILBOX NAMES FOR SPECIFIC INTERNET SERVICES
# hostmaster:	root
# usenet:	root
# news:		usenet
# webmaster:	root
# ftp:		root
\ No newline at end of file
diff --git a/testing/opensmtpd/opensmtpd.post-install b/testing/opensmtpd/opensmtpd.post-install
new file mode 100644
index 0000000..f7acfaf
--- /dev/null
+++ b/testing/opensmtpd/opensmtpd.post-install
@@ -0,0 +1,5 @@
#!/bin/sh

/usr/sbin/newaliases

exit 0
diff --git a/testing/opensmtpd/opensmtpd.pre-install b/testing/opensmtpd/opensmtpd.pre-install
new file mode 100644
index 0000000..af0620e
--- /dev/null
+++ b/testing/opensmtpd/opensmtpd.pre-install
@@ -0,0 +1,11 @@
#!/bin/sh

addgroup -S smtpd 2>/dev/null
addgroup -S smtpq 2>/dev/null

adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTP Daemon' -G smtpd smtpd 2>/dev/null
adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTPD Queue' -G smtpq smtpq 2>/dev/null

mkdir -p /var/spool/mail

exit 0
diff --git a/testing/opensmtpd/smtpd.initd b/testing/opensmtpd/smtpd.initd
new file mode 100644
index 0000000..52ffd99
--- /dev/null
+++ b/testing/opensmtpd/smtpd.initd
@@ -0,0 +1,24 @@
#!/sbin/openrc-run

name="$SVCNAME"
command="/usr/sbin/$SVCNAME"
command_args="$SMTPD_OPTS"

depend() {
	need net localmount
	after bootmisc firewall
	use logger dns
	provide mta
}

start() {
	ebegin "Starting smtpd ${CONF_MESSAGE}"
	/usr/sbin/smtpd
	eend $?
}

stop() {
       ebegin "Stopping smtpd ${CONF_MESSAGE}"
       /usr/sbin/smtpctl stop &> /dev/null
       eend $?
}
\ No newline at end of file
-- 
2.4.1



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150915094812.29279018@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1441830663-23827-1-git-send-email-jonathan@curran.in> (view parent)
Sender timestamp
1442303292
DKIM signature
missing
Download raw message
On Wed,  9 Sep 2015 20:31:03 +0000
Jonathan Curran <jonathan@curran.in> wrote:

> This aport provides the portable version of OpenSMTPD patched to work
> with musl.
> 
> Parts of the patch will be submitted upstream soon.
> 
> https://opensmtpd.org
> ---
>  testing/opensmtpd/00-opensmtpd.patch     | 498 +++++++++++++++++++++++++++++++
>  testing/opensmtpd/APKBUILD               |  73 +++++
>  testing/opensmtpd/aliases                |  63 ++++
>  testing/opensmtpd/opensmtpd.post-install |   5 +
>  testing/opensmtpd/opensmtpd.pre-install  |  11 +
>  testing/opensmtpd/smtpd.initd            |  24 ++
>  6 files changed, 674 insertions(+)
>  create mode 100644 testing/opensmtpd/00-opensmtpd.patch
>  create mode 100644 testing/opensmtpd/APKBUILD
>  create mode 100644 testing/opensmtpd/aliases
>  create mode 100644 testing/opensmtpd/opensmtpd.post-install
>  create mode 100644 testing/opensmtpd/opensmtpd.pre-install
>  create mode 100644 testing/opensmtpd/smtpd.initd

It seems like we already have a opensmtpd implementation in aports.

Can you please test it and rebase your patch if needed?

-nc


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150915095508.0e8f6524@ncopa-desktop.alpinelinux.org>
In-Reply-To
<20150915094812.29279018@ncopa-desktop.alpinelinux.org> (view parent)
Sender timestamp
1442303708
DKIM signature
missing
Download raw message
On Tue, 15 Sep 2015 09:48:12 +0200
Natanael Copa <ncopa@alpinelinux.org> wrote:

> On Wed,  9 Sep 2015 20:31:03 +0000
> Jonathan Curran <jonathan@curran.in> wrote:
> 
> > This aport provides the portable version of OpenSMTPD patched to work
> > with musl.
> > 
> > Parts of the patch will be submitted upstream soon.
> > 
> > https://opensmtpd.org
> > ---
> >  testing/opensmtpd/00-opensmtpd.patch     | 498 +++++++++++++++++++++++++++++++
> >  testing/opensmtpd/APKBUILD               |  73 +++++
> >  testing/opensmtpd/aliases                |  63 ++++
> >  testing/opensmtpd/opensmtpd.post-install |   5 +
> >  testing/opensmtpd/opensmtpd.pre-install  |  11 +
> >  testing/opensmtpd/smtpd.initd            |  24 ++
> >  6 files changed, 674 insertions(+)
> >  create mode 100644 testing/opensmtpd/00-opensmtpd.patch
> >  create mode 100644 testing/opensmtpd/APKBUILD
> >  create mode 100644 testing/opensmtpd/aliases
> >  create mode 100644 testing/opensmtpd/opensmtpd.post-install
> >  create mode 100644 testing/opensmtpd/opensmtpd.pre-install
> >  create mode 100644 testing/opensmtpd/smtpd.initd
> 
> It seems like we already have a opensmtpd implementation in aports.

Sorry. it was something i had locally only. It does apply.

But I get a checksum error on smtpd.initd.

> diff --git a/testing/opensmtpd/smtpd.initd b/testing/opensmtpd/smtpd.initd
> new file mode 100644
> index 0000000..b88f5ba
> --- /dev/null
> +++ b/testing/opensmtpd/smtpd.initd
> @@ -0,0 +1,24 @@
> +#!/sbin/openrc-run
> +
> +name="busybox $SVCNAME"

opensmtpd is not a busybox applet so busybox should not be in the
service name.


Care to fix the init.d script and send a v2 patch?

see
http://wiki.alpinelinux.org/wiki/Creating_patches#Resend_an_updated_patch

-nc


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---

Re: [alpine-aports] [PATCH v2] testing/opensmtpd: new aport

Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150915154752.7eeb92f0@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1441918874-31745-1-git-send-email-jonathan@curran.in> (view parent)
Sender timestamp
1442324872
DKIM signature
missing
Download raw message
Patch: +2 -1
On Thu, 10 Sep 2015 21:01:14 +0000
Jonathan Curran <jonathan@curran.in> wrote:

> This aport provides the portable version of OpenSMTPD patched to work
> with musl.
> 
> Parts of the patch will be submitted upstream soon.
> 
> https://opensmtpd.org
> ---
> Changes v1 -> v2:
>  - updated smtpd.initd


Thanks!

checking compiler and flags for sanity... no
configure: error: *** compiler cannot create working executables, check
config.log ***

from config.log:


configure:13867: gcc -o conftest -Os -fomit-frame-pointer  -fPIC -DPIC -Wall -Wp
ointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-m
emaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -fno-builtin-
memset -Os -fomit-frame-pointer -Wl,--as-needed conftest.c  -lfts >&5
conftest.c: In function 'main':
conftest.c:46:2: warning: implicit declaration of function 'exit' [-Wimplicit-fu
nction-declaration]
  exit(0);
  ^
conftest.c:46:2: warning: incompatible implicit declaration of built-in function 'exit'
conftest.c:46:2: note: include '<stdlib.h>' or provide a declaration of 'exit'
/usr/lib/gcc/x86_64-alpine-linux-musl/5.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lfts
collect2: error: ld returned 1 exit status
configure:13867: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "opensmtpd"
| #define PACKAGE_TARNAME "opensmtpd"
| #define PACKAGE_VERSION "portable"
| #define PACKAGE_STRING "opensmtpd portable"
| #define PACKAGE_BUGREPORT "bugs@opensmtpd.org"
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "opensmtpd"
| #define VERSION "portable"
| #define HAVE_ATTRIBUTE__NONNULL__ 1
| #define HAVE_CRYPT_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_GETOPT_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_PATHS_H 1
| #define HAVE_SHADOW_H 1
| #define HAVE_SYS_DIR_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_MOUNT_H 1
| #define HAVE_SYS_STATFS_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_UN_H 1
| #define HAVE_TIME_H 1
| #define HAVE_UTIME_H 1
| #define HAVE_SYS_MOUNT_H 1
| #define SPT_TYPE SPT_REUSEARGV
| /* end confdefs.h.  */
|  #include <stdio.h>
| int
| main ()
| {
|  exit(0);
|   ;
|   return 0;
| }
configure:13872: result: no
configure:13874: error: *** compiler cannot create working executables, check config.log ***



After adding fts-dev to makedepeneds it fails on missing yacc:

make[3]: Entering directory '/home/ncopa/aports/testing/opensmtpd/src/opensmtpd-5.7.1p1/mk/smtpd'
/bin/bash ../../ylwrap ../../smtpd/parse.y y.tab.c ../../smtpd/parse.c y.tab.h `echo ../../smtpd/parse.c | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/` y.output ../../smtpd/parse.output -- yacc  
../../ylwrap: line 175: yacc: command not found

I applied you patch and added the following fix:

diff --git a/testing/opensmtpd/APKBUILD b/testing/opensmtpd/APKBUILD
index 555e043..a250d60 100644
--- a/testing/opensmtpd/APKBUILD
+++ b/testing/opensmtpd/APKBUILD
@@ -9,7 +9,8 @@ arch="all"
license="ISC"
depends=""
depends_dev=""
makedepends="automake autoconf libtool mdocml db-dev libasr libevent-dev openssl-dev"
makedepends="automake autoconf libtool mdocml db-dev libasr-dev libevent-dev
       fts-dev openssl-dev bison flex-dev"
install="$pkgname.pre-install $pkgname.post-install"
subpackages="$pkgname-doc"
source="https://www.opensmtpd.org/archives/opensmtpd-${pkgver}.tar.gz


thanks!

nc


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---

Re: [alpine-aports] [PATCH v2] testing/opensmtpd: new aport

Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150915155502.029426b3@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1441918874-31745-1-git-send-email-jonathan@curran.in> (view parent)
Sender timestamp
1442325302
DKIM signature
missing
Download raw message
On Thu, 10 Sep 2015 21:01:14 +0000
Jonathan Curran <jonathan@curran.in> wrote:

> This aport provides the portable version of OpenSMTPD patched to work
> with musl.
> 
> Parts of the patch will be submitted upstream soon.
> 
> https://opensmtpd.org
> ---
> Changes v1 -> v2:
>  - updated smtpd.initd

I let it only build on x86_64 for now because it failed on 32bit:

gcc -DHAVE_CONFIG_H -I. -I../..  -I../../smtpd -I../../openbsd-compat -I. -I/usr/include -Os -fomit-frame-pointer -DSMTPD_CONFDIR=\"/etc/smtpd\" -DPATH_CHROOT=\"/var/empty\" -DPATH_SMTPCTL=\"/usr/sbin/smtpctl\" -DPATH_MAILLOCAL=\"/usr/libexec/opensmtpd/mail.local\" -DPATH_LIBEXEC=\"/usr/libexec/opensmtpd\" -DHAVE_CONFIG_H -DNO_IO -DPATH_GZCAT=\"/bin/zcat\" -DPATH_ENCRYPT=\"/usr/libexec/opensmtpd/encrypt\" -Os -fomit-frame-pointer  -fPIC -DPIC -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -fno-builtin-memset -fPIE -Werror -D_GNU_SOURCE -c -o ../../smtpd/smtpctl-crypto.o `test -f '../../smtpd/crypto.c' || echo './'`../../smtpd/crypto.c
../../smtpd/smtpctl.c: In function 'do_show_sizes':
../../smtpd/smtpctl.c:726:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct userinfo=%ld\n", sizeof (struct userinfo));
         ^
../../smtpd/smtpctl.c:727:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct netaddr=%ld\n", sizeof (struct netaddr));
         ^
../../smtpd/smtpctl.c:728:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct relayhost=%ld\n", sizeof (struct relayhost));
         ^
../../smtpd/smtpctl.c:729:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct credentials=%ld\n", sizeof (struct credentials));
         ^
../../smtpd/smtpctl.c:730:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct destination=%ld\n", sizeof (struct destination));
         ^
../../smtpd/smtpctl.c:731:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct source=%ld\n", sizeof (struct source));
         ^
../../smtpd/smtpctl.c:732:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct addrname=%ld\n", sizeof (struct addrname));
         ^
../../smtpd/smtpctl.c:733:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("union lookup=%ld\n", sizeof (union lookup));
         ^
../../smtpd/smtpctl.c:734:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct delivery_mda=%ld\n", sizeof (struct delivery_mda));
         ^
../../smtpd/smtpctl.c:735:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct delivery_mta=%ld\n", sizeof (struct delivery_mta));
         ^
../../smtpd/smtpctl.c:736:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct envelope=%ld\n", sizeof (struct envelope));
         ^
../../smtpd/smtpctl.c:737:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct forward_req=%ld\n", sizeof (struct forward_req));
         ^
../../smtpd/smtpctl.c:738:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct deliver=%ld\n", sizeof (struct deliver));
         ^
../../smtpd/smtpctl.c:739:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct bounce_req_msg=%ld\n", sizeof (struct bounce_req_msg));
         ^
../../smtpd/smtpctl.c:740:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct ca_cert_req_msg=%ld\n", sizeof (struct ca_cert_req_msg));
         ^
../../smtpd/smtpctl.c:741:9: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'unsigned int' [-Werror=format=]
  printf("struct ca_vrfy_req_msg=%ld\n", sizeof (struct ca_vrfy_req_msg));
         ^
cc1: all warnings being treated as errors


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Reply to thread Export thread (mbox)