Hi, >From macppc bulk logs:
> unireverse.c:173:10: warning: result of comparison of constant -1 > with expression of type 'char' is always false On macppc the unireverse runtime goes like this: > $ printf "infinite\nloop" | unireverse > etinifni > pool [hangs forever] On macppc and arm* char is unsigned by default, so a looped getc(3) call in unireverse never reaches EOF there. Using an int instead of a char to store the return value of getc(3) solves that issue. OK? Charlène. Index: Makefile =================================================================== RCS file: /cvs/ports/misc/uniutils/Makefile,v retrieving revision 1.8 diff -u -p -u -p -r1.8 Makefile --- Makefile 12 Jul 2019 20:47:54 -0000 1.8 +++ Makefile 19 Jun 2021 19:23:22 -0000 @@ -3,7 +3,7 @@ COMMENT= Unicode utilities DISTNAME= uniutils-2.27 -REVISION= 2 +REVISION= 3 CATEGORIES= misc HOMEPAGE= http://billposer.org/Software/unidesc.html Index: patches/patch-unireverse_c =================================================================== RCS file: patches/patch-unireverse_c diff -N patches/patch-unireverse_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-unireverse_c 19 Jun 2021 19:23:22 -0000 @@ -0,0 +1,17 @@ +$OpenBSD$ + +Fix an infinite loop on archs where char is unsigned by default (arm* +and powerpc), because EOF (-1) could not be reached by getc(3). + +Index: unireverse.c +--- unireverse.c.orig ++++ unireverse.c +@@ -151,7 +151,7 @@ int main(int ac, char **av) { + + char * GetLine(FILE *fp, int *LineLength) + { +- char c; ++ int c; + int Available; + int CharsRead; + char *Line;
