# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit toolchain-funcs

MY_PV=$(ver_cut 1-2)
DESCRIPTION="The OpenBSD network swiss army knife"
HOMEPAGE="https://cvsweb.openbsd.org/src/usr.bin/nc/ https://salsa.debian.org/debian/netcat-openbsd"
SRC_URI="
	mirror://debian/pool/main/n/netcat-openbsd/netcat-openbsd_${MY_PV}.orig.tar.gz
	mirror://debian/pool/main/n/netcat-openbsd/netcat-openbsd_${MY_PV}-$(ver_cut 4).debian.tar.xz
"
S="${WORKDIR}"/netcat-openbsd-${MY_PV}

LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 ~arm arm64 ~ppc ppc64 ~riscv x86 ~amd64-linux ~x64-macos"

RDEPEND="
	!net-analyzer/netcat
	!elibc_Darwin? ( dev-libs/libbsd )
"
BDEPEND="virtual/pkgconfig"

src_prepare() {
	local i
	for i in $(<"${WORKDIR}"/debian/patches/series) ; do
		PATCHES+=( "${WORKDIR}"/debian/patches/${i} )
	done

	if [[ ${CHOST} == *-darwin* ]] ; then
		# This undoes some of the Debian/Linux changes
		PATCHES+=( "${FILESDIR}"/${PN}-1.219-darwin.patch )

		if [[ ${CHOST##*-darwin} -lt 20 ]] ; then
			PATCHES+=( "${FILESDIR}"/${PN}-1.190-darwin13.patch )
		fi
	fi

	if use elibc_musl ; then
		PATCHES+=( "${FILESDIR}"/${PN}-1.105-musl-b64_ntop.patch )
	fi

	default
}

src_compile() {
	# gnu99 for bug #943711
	emake CC="$(tc-getCC) -std=gnu99" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
}

src_install() {
	dobin nc
	doman nc.1

	cd "${WORKDIR}"/debian || die
	newdoc netcat-openbsd.README.Debian README
	dodoc -r examples
}

pkg_postinst() {
	if use kernel_linux ; then
		ewarn "SO_REUSEPORT is introduced in linux 3.9. If your running kernel is older"
		ewarn "and kernel header is newer, nc will not listen correctly. Matching the header"
		ewarn "to the running kernel will do. See bug #490246 for details."
	fi
}