Compared to md5(1) with [-h hashfile], xxhsum(1) has no option to write
to anything but standard output.

Dropping "rpath" later can be done, but needs more patching and testing.

Works for me, tests pass.
Feedback? Objcetion? OK?


Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/xxhash/Makefile,v
retrieving revision 1.13
diff -u -p -r1.13 Makefile
--- Makefile    23 Jul 2023 04:29:44 -0000      1.13
+++ Makefile    17 Aug 2023 01:19:55 -0000
@@ -4,18 +4,20 @@ GH_ACCOUNT =  Cyan4973
 GH_PROJECT =   xxHash
 GH_TAGNAME =   v0.8.2
 PKGNAME =      ${DISTNAME:L}
+REVISION =     0
 
 SHARED_LIBS =  xxhash 0.3      # 0.8.1
 
 CATEGORIES =   sysutils
 
-HOMEPAGE =     https://cyan4973.github.io/xxHash/
+HOMEPAGE =     https://xxhash.com
 
 MAINTAINER =   Bjorn Ketelaars <b...@openbsd.org>
 
 # BSD 2-Clause
 PERMIT_PACKAGE =       Yes
 
+# uses pledge()
 WANTLIB =      c
 
 MAKE_FLAGS =   CC="${CC}" \
Index: patches/patch-cli_xsum_os_specific_c
===================================================================
RCS file: patches/patch-cli_xsum_os_specific_c
diff -N patches/patch-cli_xsum_os_specific_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-cli_xsum_os_specific_c        17 Aug 2023 01:41:40 -0000
@@ -0,0 +1,27 @@
+Use pledge(2), xxhsum(1) only ever reads files or stdin.
+
+Index: cli/xsum_os_specific.c
+--- cli/xsum_os_specific.c.orig
++++ cli/xsum_os_specific.c
+@@ -69,6 +69,9 @@ static int XSUM_IS_CONSOLE(FILE* stdStream)
+  || defined(__DJGPP__) \
+  || defined(__MSYS__) \
+  || defined(__HAIKU__)
++#  ifdef __OpenBSD__
++#    include <err.h>
++#  endif
+ #  include <unistd.h>   /* isatty */
+ #  define XSUM_IS_CONSOLE(stdStream) isatty(fileno(stdStream))
+ #elif defined(MSDOS) || defined(OS2)
+@@ -135,6 +138,11 @@ static int XSUM_stat(const char* infilename, XSUM_stat
+ #ifndef XSUM_NO_MAIN
+ int main(int argc, const char* argv[])
+ {
++#ifdef __OpenBSD__
++    if (pledge("stdio rpath", NULL) == -1)
++        err(1, "pledge");
++#endif
++
+     return XSUM_main(argc, argv);
+ }
+ #endif
Index: patches/patch-tests_sanity_test_c
===================================================================
RCS file: patches/patch-tests_sanity_test_c
diff -N patches/patch-tests_sanity_test_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-tests_sanity_test_c   17 Aug 2023 01:41:40 -0000
@@ -0,0 +1,17 @@
+Use pledge(2), the sanity test does even not read files.
+
+Index: tests/sanity_test.c
+--- tests/sanity_test.c.orig
++++ tests/sanity_test.c
+@@ -639,6 +639,11 @@ int main(int argc, const char* argv[])
+     (void) argc;
+     (void) argv;
+ 
++#ifdef __OpenBSD__
++    if (pledge("stdio", NULL) == -1)
++        err(1, "pledge");
++#endif
++
+     {
+         /* XXH32 */
+         size_t const n = sizeof(XSUM_XXH32_testdata) / 
sizeof(XSUM_XXH32_testdata[0]);

Reply via email to