From 44deef06e9c6a357e0482f097477a2f4045ae003 Mon Sep 17 00:00:00 2001
From: Alexander Golubev <fatzer2@gmail.com>
Date: Tue, 17 Mar 2026 08:16:16 +0300
Subject: media-sound/bonk: new package, add 0.6

An optional dependency for trinity-apps/soundkonverter

Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
---
 media-sound/bonk/Manifest                          |  1 +
 media-sound/bonk/bonk-0.6.ebuild                   | 27 ++++++++++
 .../bonk/files/bonk-0.6-include-string-h.patch     | 63 ++++++++++++++++++++++
 3 files changed, 91 insertions(+)
 create mode 100644 media-sound/bonk/Manifest
 create mode 100644 media-sound/bonk/bonk-0.6.ebuild
 create mode 100644 media-sound/bonk/files/bonk-0.6-include-string-h.patch

diff --git a/media-sound/bonk/Manifest b/media-sound/bonk/Manifest
new file mode 100644
index 00000000..6dccb943
--- /dev/null
+++ b/media-sound/bonk/Manifest
@@ -0,0 +1 @@
+DIST bonk-0.6.tar.gz 17995 BLAKE2B 067b896c9e01c56fe2de88f49206839e92088a11b82b31b0eebad6d0eb63385ec02e0d657696db47afebf2bc379d332600f6c09b4d707a9d570d991701d1a2a5 SHA512 1c8fdbd7343c26657de3112f6d4e6d4b16868d2c037b38cbe34fa95dbffce4b39e22128dfbba4bca0a859774b2429b92f38f830f1408a4a4ca872edd0290d29b
diff --git a/media-sound/bonk/bonk-0.6.ebuild b/media-sound/bonk/bonk-0.6.ebuild
new file mode 100644
index 00000000..6c84c024
--- /dev/null
+++ b/media-sound/bonk/bonk-0.6.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2026 The Trinity Desktop Project
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="An audio compression program with a codec of its own"
+HOMEPAGE="https://www.logarithmic.net/pfh/bonk"
+SRC_URI="https://logarithmic.net/pfh-files/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+PATCHES=(
+	"${FILESDIR}/${P}-include-string-h.patch"
+)
+
+src_compile() {
+	emake CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS} ${LDFLAGS}"
+}
+
+src_install() {
+	dobin "${PN}"
+	dodoc README
+}
diff --git a/media-sound/bonk/files/bonk-0.6-include-string-h.patch b/media-sound/bonk/files/bonk-0.6-include-string-h.patch
new file mode 100644
index 00000000..0fdd6041
--- /dev/null
+++ b/media-sound/bonk/files/bonk-0.6-include-string-h.patch
@@ -0,0 +1,63 @@
+Fix build with modern comillers. Technically only #include <string.h> is
+necessary, and "const char*" just cuts down on a lot of warnings.
+
+Author: Alexander Golubev (Fat-Zer) <fatzer2@gmail.com>
+Origin: Original patch for trinity-official Gentoo overlay
+diff --git a/bonk.cc b/bonk.cc
+index 6c34b07..dcf6d26 100644
+--- a/bonk.cc
++++ b/bonk.cc
+@@ -29,6 +29,7 @@ const char *version = "0.6";
+ #include <math.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <time.h>
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+@@ -559,7 +560,7 @@ FILE *open_dsp(int rate,bool stereo) {
+   return fdopen(device,"wb"); 
+ }
+ 
+-bool has_parameter(int &argc,char **&argv,char *name,char *&value) {
++bool has_parameter(int &argc,char **&argv,const char *name,char *&value) {
+   for(int i=1;i<argc-1;i++) {
+     if (strcasecmp(argv[i],name) == 0) {
+       value = argv[i+1];
+@@ -573,7 +574,7 @@ bool has_parameter(int &argc,char **&argv,char *name,char *&value) {
+   return false;
+ }
+ 
+-bool has_flag(int &argc,char **&argv,char *name) {
++bool has_flag(int &argc,char **&argv,const char *name) {
+   for(int i=1;i<argc;i++) {
+     if (strcasecmp(argv[i],name) == 0) {
+       for(int j=i;j<argc-1;j++)
+diff --git a/utility.h b/utility.h
+index c36f685..c17feb3 100644
+--- a/utility.h
++++ b/utility.h
+@@ -54,8 +54,8 @@ uint16 read_uint16(FILE *f) {
+ // Throwable error structure:
+ 
+ struct error { 
+-  char *message; 
+-  error(char *_message) : message(_message) { } 
++  const char *message;
++  error(const char *_message) : message(_message) { }
+ };
+ 
+ // Number of bits required to store a value:
+diff --git a/wav.h b/wav.h
+index 7c04237..c15ce91 100644
+--- a/wav.h
++++ b/wav.h
+@@ -4,7 +4,7 @@
+ #include <stdio.h>
+ #include "utility.h"
+ 
+-bool read_pattern(FILE *file,char *pattern) {
++bool read_pattern(FILE *file,const char *pattern) {
+   while(*pattern) {
+     if (fgetc(file) != *pattern)
+       return false;
-- 
cgit v1.2.3

