pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Add (so far not quite working) miranda, the inspiration for Haskell.



Module Name:	pkgsrc-wip
Committed By:	Olaf Seibert <rhialto%falu.nl@localhost>
Pushed By:	rhialto
Date:		Tue Sep 29 22:38:17 2026 +0200
Changeset:	4b70fb7d493935821ad79ceac22d7cde339978d5

Added Files:
	miranda/DESCR
	miranda/Makefile
	miranda/PLIST
	miranda/TODO
	miranda/distinfo
	miranda/patches/patch-Makefile
	miranda/patches/patch-big.c
	miranda/patches/patch-just.c
	miranda/patches/patch-lex.c
	miranda/patches/patch-steer.c

Log Message:
Add (so far not quite working) miranda, the inspiration for Haskell.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=4b70fb7d493935821ad79ceac22d7cde339978d5

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 miranda/DESCR                  |   3 +
 miranda/Makefile               |  35 ++++++++
 miranda/PLIST                  | 146 +++++++++++++++++++++++++++++++++
 miranda/TODO                   |  11 +++
 miranda/distinfo               |  10 +++
 miranda/patches/patch-Makefile |  60 ++++++++++++++
 miranda/patches/patch-big.c    |  15 ++++
 miranda/patches/patch-just.c   |  27 +++++++
 miranda/patches/patch-lex.c    | 179 +++++++++++++++++++++++++++++++++++++++++
 miranda/patches/patch-steer.c  |  30 +++++++
 10 files changed, 516 insertions(+)

diffs:
diff --git a/miranda/DESCR b/miranda/DESCR
new file mode 100644
index 0000000000..877b6d7b0d
--- /dev/null
+++ b/miranda/DESCR
@@ -0,0 +1,3 @@
+Miranda is Professor David Turner's pure, non-strict, polymorphic,
+higher order functional programming language, which was the main
+inspiration for Haskell. 
diff --git a/miranda/Makefile b/miranda/Makefile
new file mode 100644
index 0000000000..1b1a7f8530
--- /dev/null
+++ b/miranda/Makefile
@@ -0,0 +1,35 @@
+# $NetBSD$
+
+DISTNAME=		miranda-2.068
+CATEGORIES=		lang
+MASTER_SITES=		${MASTER_SITE_CODEBERG:=DATurner/}
+CODEBERG_RELEASE=	${DISTNAME}
+# https://codeberg.org/DATurner/miranda/releases/download/miranda-2.068/miranda-2.068.tar.gz
+
+MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	http://miranda.org.uk/
+COMMENT=	pure, non-strict, polymorphic, functional programming language
+#LICENSE=	# TODO: (see mk/license.mk)
+
+USE_TOOLS+=	gmake
+
+INSTALLATION_DIRS=      bin lib ${PKGMANDIR}/man1
+
+TOOL_DEPENDS+=	byacc-[0-9]*:../../devel/byacc/
+
+SUBST_CLASSES+=		prefix
+SUBST_STAGE.prefix=	pre-configure
+SUBST_FILES.prefix+=	Makefile
+SUBST_FILES.prefix+=	steer.c
+SUBST_VARS.prefix=	PREFIX PKGMANDIR
+
+REPLACE_INTERPRETER+=	mira
+REPLACE.mira.old=	.*/mira
+REPLACE.mira.new=	${PREFIX}/bin/mira
+REPLACE_FILES.mira+=	miralib/ex/box
+REPLACE_FILES.mira+=	miralib/ex/box.m
+REPLACE_FILES.mira+=	miralib/ex/mrev
+
+.include "../../devel/linenoise/buildlink3.mk"
+# url2pkg-marker (please do not remove this line.)
+.include "../../mk/bsd.pkg.mk"
diff --git a/miranda/PLIST b/miranda/PLIST
new file mode 100644
index 0000000000..d4df9dd152
--- /dev/null
+++ b/miranda/PLIST
@@ -0,0 +1,146 @@
+@comment $NetBSD$
+bin/mira
+lib/miralib/.version
+lib/miralib/COPYING
+lib/miralib/auxfile
+lib/miralib/ex/README
+lib/miralib/ex/ack.m
+lib/miralib/ex/ack.x
+lib/miralib/ex/barry.m
+lib/miralib/ex/barry.x
+lib/miralib/ex/bignum.m
+lib/miralib/ex/bignum.x
+lib/miralib/ex/box
+lib/miralib/ex/box.m
+lib/miralib/ex/box.x
+lib/miralib/ex/divmodtest.m
+lib/miralib/ex/divmodtest.x
+lib/miralib/ex/edigits.m
+lib/miralib/ex/edigits.x
+lib/miralib/ex/fib.m
+lib/miralib/ex/fib.x
+lib/miralib/ex/fibs.m
+lib/miralib/ex/fibs.x
+lib/miralib/ex/genmat.m
+lib/miralib/ex/genmat.x
+lib/miralib/ex/golden.m
+lib/miralib/ex/golden.x
+lib/miralib/ex/graphics.m
+lib/miralib/ex/graphics.x
+lib/miralib/ex/hamming.m
+lib/miralib/ex/hamming.x
+lib/miralib/ex/hanoi.m
+lib/miralib/ex/hanoi.x
+lib/miralib/ex/just.m
+lib/miralib/ex/just.x
+lib/miralib/ex/kate.lit.m
+lib/miralib/ex/kate.lit.x
+lib/miralib/ex/kate.pdf
+lib/miralib/ex/kate.tex
+lib/miralib/ex/keith.m
+lib/miralib/ex/keith.x
+lib/miralib/ex/makebug.m
+lib/miralib/ex/makebug.x
+lib/miralib/ex/matrix.m
+lib/miralib/ex/matrix.x
+lib/miralib/ex/mrev
+lib/miralib/ex/parafs.m
+lib/miralib/ex/parafs.x
+lib/miralib/ex/polish.m
+lib/miralib/ex/polish.x
+lib/miralib/ex/powers.m
+lib/miralib/ex/powers.x
+lib/miralib/ex/primes.m
+lib/miralib/ex/primes.x
+lib/miralib/ex/pyths.m
+lib/miralib/ex/pyths.x
+lib/miralib/ex/queens.m
+lib/miralib/ex/queens.x
+lib/miralib/ex/queens1.m
+lib/miralib/ex/queens1.x
+lib/miralib/ex/quicksort.m
+lib/miralib/ex/quicksort.x
+lib/miralib/ex/rational.m
+lib/miralib/ex/rational.x
+lib/miralib/ex/refoliate.m
+lib/miralib/ex/refoliate.x
+lib/miralib/ex/selflines.m
+lib/miralib/ex/selflines.x
+lib/miralib/ex/set.m
+lib/miralib/ex/set.x
+lib/miralib/ex/stack.m
+lib/miralib/ex/stack.x
+lib/miralib/ex/topsort.m
+lib/miralib/ex/topsort.x
+lib/miralib/ex/treesort.m
+lib/miralib/ex/treesort.x
+lib/miralib/ex/unify.m
+lib/miralib/ex/unify.x
+lib/miralib/helpfile
+lib/miralib/manual/.epoch
+lib/miralib/manual/1
+lib/miralib/manual/10
+lib/miralib/manual/100
+lib/miralib/manual/11
+lib/miralib/manual/12
+lib/miralib/manual/13/1
+lib/miralib/manual/13/2
+lib/miralib/manual/13/3
+lib/miralib/manual/13/contents
+lib/miralib/manual/14
+lib/miralib/manual/15
+lib/miralib/manual/16
+lib/miralib/manual/17
+lib/miralib/manual/18
+lib/miralib/manual/19
+lib/miralib/manual/2
+lib/miralib/manual/20
+lib/miralib/manual/21
+lib/miralib/manual/22
+lib/miralib/manual/23
+lib/miralib/manual/24
+lib/miralib/manual/25
+lib/miralib/manual/26
+lib/miralib/manual/27/1
+lib/miralib/manual/27/2
+lib/miralib/manual/27/3
+lib/miralib/manual/27/4
+lib/miralib/manual/27/5
+lib/miralib/manual/27/contents
+lib/miralib/manual/28
+lib/miralib/manual/29
+lib/miralib/manual/29.m
+lib/miralib/manual/3
+lib/miralib/manual/30
+lib/miralib/manual/31/1
+lib/miralib/manual/31/2
+lib/miralib/manual/31/3
+lib/miralib/manual/31/4
+lib/miralib/manual/31/5
+lib/miralib/manual/31/6
+lib/miralib/manual/31/7
+lib/miralib/manual/31/8
+lib/miralib/manual/31/9
+lib/miralib/manual/31/contents
+lib/miralib/manual/32
+lib/miralib/manual/33
+lib/miralib/manual/34
+lib/miralib/manual/4
+lib/miralib/manual/5
+lib/miralib/manual/6
+lib/miralib/manual/7
+lib/miralib/manual/8
+lib/miralib/manual/9
+lib/miralib/manual/99
+lib/miralib/manual/contents
+lib/miralib/manual/howtoprint
+lib/miralib/manual/permission
+lib/miralib/manual/printman
+lib/miralib/menudriver
+lib/miralib/menudriver.csh
+lib/miralib/menudriver.sh
+lib/miralib/prelude
+lib/miralib/preludx
+lib/miralib/stdenv.m
+lib/miralib/stdenv.x
+man/man1/mira.1
diff --git a/miranda/TODO b/miranda/TODO
new file mode 100644
index 0000000000..d42e8f11f7
--- /dev/null
+++ b/miranda/TODO
@@ -0,0 +1,11 @@
+The ctype patches seem to have broken interactive mode:
+the first command you type needs an extra return character to be typed
+and all subsequent ones print unknown command " ":
+
+Miranda /h
+unknown command " "
+type /h for help
+
+Miranda
+
+Upstream issue https://codeberg.org/DATurner/miranda/issues/53
diff --git a/miranda/distinfo b/miranda/distinfo
new file mode 100644
index 0000000000..db174212ef
--- /dev/null
+++ b/miranda/distinfo
@@ -0,0 +1,10 @@
+$NetBSD$
+
+BLAKE2s (miranda-2.068.tar.gz) = 48aa009849a76e250b5e222ddf209b6bc6b1b2c2b88265acfc197aa5cef7cd79
+SHA512 (miranda-2.068.tar.gz) = 21e8991602930f1587f374483f3a5f7a8f2f08ca530aa066e19e18041695674470ede6389ecfc385b1a47992a1c96895a6eeafe7b43be5eba783a7d8d1ce29ee
+Size (miranda-2.068.tar.gz) = 715769 bytes
+SHA1 (patch-Makefile) = ad3eac400fa1ad5768a9918238318ba3a6ce6b86
+SHA1 (patch-big.c) = 4e2c782646df5b37c4f982d37ee742f83805294c
+SHA1 (patch-just.c) = 4032a0562b8d3a10cf39e1799b97c83d636b947a
+SHA1 (patch-lex.c) = df5594ee2be72362a8f70d6c4654cb47516b37c1
+SHA1 (patch-steer.c) = f7d71c7bdac74ce539cb38ae2dc057d4d1f8f334
diff --git a/miranda/patches/patch-Makefile b/miranda/patches/patch-Makefile
new file mode 100644
index 0000000000..46e38e73db
--- /dev/null
+++ b/miranda/patches/patch-Makefile
@@ -0,0 +1,60 @@
+$NetBSD$
+
+--- Makefile.orig	2026-08-31 17:20:47.000000000 +0000
++++ Makefile
+@@ -1,11 +1,12 @@
+ #install paths
+ #for linux, MacOS X, Cygwin:
+-BIN=/usr/local/bin
+-LIB=/usr/local/lib
+-MAN=/usr/local/share/man/man1
++BIN=@PREFIX@/bin
++LIB=@PREFIX@/lib
++MAN=@PREFIX@/@PKGMANDIR@/man1
+ #for Solaris:
+ #MAN=/usr/local/man/man1
+-CFLAGS = #-O #-DCYGWIN #-DUWIN #-DIBMRISC #-Dsparc7 #-Dsparc8
++CFLAGS += #-O #-DCYGWIN #-DUWIN #-DIBMRISC #-Dsparc7 #-Dsparc8
++LDFLAGS +=
+ #be wary of using anything higher than -O as the garbage collector may fall over
+ #if using gcc rather than clang try without -O first
+ EX = #.exe        #needed for CYGWIN, UWIN
+@@ -29,7 +30,7 @@ all: FORCE
+ # -Dsparc8 needed for Solaris 2.8 or later
+ mira$(EX): big.o cmbnms.o data.o lex.o reduce.o signals.o steer.o trans.o types.o \
+       utf8.o y.tab.o version.o $(LINENOISEOBJ) Makefile
+-	$(CC) $(CFLAGS) -o mira$(EX) version.o cmbnms.o y.tab.o data.o lex.o \
++	$(CC) $(CFLAGS) $(LDFLAGS) -o mira$(EX) version.o cmbnms.o y.tab.o data.o lex.o \
+ 	    big.o reduce.o signals.o steer.o trans.o types.o utf8.o \
+             $(LINENOISE) -lm
+ 
+@@ -71,12 +72,12 @@ combs.h: cmbnms.c gencdecs
+ cmbnms.c: gencdecs
+ 	./gencdecs
+ miralib/menudriver$(EX): menudriver.c signals.c Makefile
+-	$(CC) $(CFLAGS) menudriver.c signals.c -o miralib/menudriver$(EX)
++	$(CC) $(CFLAGS) $(LDFLAGS) menudriver.c signals.c -o miralib/menudriver$(EX)
+ 	chmod 755 miralib/menudriver$(EX)
+ #alternative: use shell script
+ #	ln -s miralib/menudriver.sh miralib/menudriver
+ tellcc:
+-	@echo $(CC) $(CFLAGS)
++	@echo $(CC) $(CFLAGS) $(LDFLAGS)
+ clean: cleanup
+ cleanup:
+ #to be done on moving to a new host
+@@ -86,11 +87,11 @@ cleanup:
+ install:
+ 	make -s all
+ 	strip mira$(EX)
+-	cp mira$(EX) $(BIN)/
+-	cp mira.1 $(MAN)/
++	cp mira$(EX) $(DESTDIR)$(BIN)/
++	cp mira.1 $(DESTDIR)$(MAN)/
+ 	rm -rf $(LIB)/miralib
+ 	strip miralib/menudriver$(EX)
+-	cp -rp miralib $(LIB)/
++	cp -rp miralib $(DESTDIR)$(LIB)/
+ SOURCES = .xversion big.c big.h gencdecs data.h data.c lex.h lex.c reduce.c rules.y \
+           signals.c signals.h  steer.c trans.c types.c utf8.h utf8.c version.c fdate.c
+ sources: $(SOURCES); @echo $(SOURCES)
diff --git a/miranda/patches/patch-big.c b/miranda/patches/patch-big.c
new file mode 100644
index 0000000000..69bf3bf07d
--- /dev/null
+++ b/miranda/patches/patch-big.c
@@ -0,0 +1,15 @@
+$NetBSD$
+
+--- big.c.orig	2026-09-29 19:07:17.976039282 +0000
++++ big.c
+@@ -473,8 +473,8 @@ word bigoscan(char *p,char *q)  /* read 
+ }
+ 
+ word digitval(char c)
+-{ return isdigit(c)?c-'0':
+-         isupper(c)?10+c-'A':
++{ return isdigit((unsigned char)c)?c-'0':
++         isupper((unsigned char)c)?10+c-'A':
+          10+c-'a'; }
+ 
+ word strtobig(word z,int base) /* numeral (as Miranda string) to big number */
diff --git a/miranda/patches/patch-just.c b/miranda/patches/patch-just.c
new file mode 100644
index 0000000000..f96d828a43
--- /dev/null
+++ b/miranda/patches/patch-just.c
@@ -0,0 +1,27 @@
+$NetBSD$
+
+--- just.c.orig	2026-06-24 09:34:45.000000000 +0000
++++ just.c
+@@ -42,11 +42,11 @@ char *argv[];
+   if(j_in){ if(fscanf(j_in,"%d",&width)!=1)width=72;
+ 	    fclose(j_in); }
+   while(argc>1&&argv[1][0]=='-')
+-    if(argv[1][1]=='t'&&isdigit(argv[1][2]))
++    if(argv[1][1]=='t'&&(unsigned char)isdigit(argv[1][2]))
+     { sscanf(argv[1]+2,"%d",&tolerance);
+       argc--; argv++;
+     }else
+-    if(isdigit(argv[1][1])||argv[1][1]=='-'&&isdigit(argv[1][2]))
++    if(isdigit((unsigned char)argv[1][1])||argv[1][1]=='-'&&isdigit((unsigned char)argv[1][2]))
+     { sscanf(argv[1]+1,"%d",&width);
+       argc--; argv++;
+     }
+@@ -98,7 +98,7 @@ char *fn;
+       { puts(bp=buf); continue; }
+   /*otherwise perform justification up to next indented,blank or frozen line*/
+     squeeze(buf);
+-    while(bp-buf>(w=width+bs_cor(buf))||!isspace(c=peek(fp))&&c!=EOF&&c!='>')
++    while(bp-buf>(w=width+bs_cor(buf))||!isspace((unsigned char)c=peek(fp))&&c!=EOF&&c!='>')
+       if(bp-buf<=w/*idth+bs_cor(buf)*/)
+         { pad(); getln(fp,1); }
+       else{ /* cut off as much as you can use */
diff --git a/miranda/patches/patch-lex.c b/miranda/patches/patch-lex.c
new file mode 100644
index 0000000000..621b720bcc
--- /dev/null
+++ b/miranda/patches/patch-lex.c
@@ -0,0 +1,179 @@
+$NetBSD$
+
+--- lex.c.orig	2026-09-29 19:08:36.978950725 +0000
++++ lex.c
+@@ -97,7 +97,7 @@ char *token() /* lex analyser for comman
+     { char *h;
+       *dicq++ = ch;
+       ch=cmdgetchar();
+-      while(isalnum(ch)||ch=='-'||ch=='_'||ch=='.')
++      while(isalnum((unsigned char)ch)||ch=='-'||ch=='_'||ch=='.')
+ 	   *dicq++ = ch,ch=cmdgetchar();
+ 	   /* NB csh does not allow `.' in user ids when expanding `~'
+ 	      but this may be a mistake */
+@@ -108,7 +108,7 @@ char *token() /* lex analyser for comman
+ #ifdef SPACEINFILENAMES
+   if(ch!='"'&&ch!='<')        /* test added 9.5.06 see else part */
+ #endif
+-  while(!isspace(ch)&&ch!=EOF)
++  while(!isspace((unsigned char)ch)&&ch!=EOF)
+        { *dicq++ = ch;
+ 	 if(ch=='%')
+            {
+@@ -277,15 +277,15 @@ int getlitch()
+     case 't': return('\t');
+     case 'v': return('\v');
+     case 'X': /* omit for Haskell escape rules, see also lines marked H */
+-    case 'x': if(isxdigit(c))
++    case 'x': if(isxdigit((unsigned char)c))
+               { int value, N=ch=='x'?4:6; /* N=7 for Haskell escape rules */
+                 char hold[8];
+                 int count=0;
+                 ch = c;
+ #ifdef HASKELL
+-             while(ch=='0'&&isxdigit(peekch()))ch=getch(); /* lose leading 0s */
++             while(ch=='0'&&isxdigit((unsigned char)peekch()))ch=getch(); /* lose leading 0s */
+ #endif
+-                while(isxdigit(ch)&&count<N)
++                while(isxdigit((unsigned char)ch)&&count<N)
+                      hold[count++]=ch,ch=getch();
+                 /* read upto N hex digits */
+                 hold[count] = '\0';
+@@ -298,9 +298,9 @@ int getlitch()
+              { word n=ch-'0',count=1,N=3; /* N=8 for Haskell escape rules */
+                ch = c;
+ #ifdef HASKELL
+-               while(ch=='0'&&isdigit(peekch()))ch=getch(); /* lose leading 0s */
++               while(ch=='0'&&isdigit((unsigned char)peekch()))ch=getch(); /* lose leading 0s */
+ #endif
+-               while(isdigit(ch)&&count<N)
++               while(isdigit((unsigned char)ch)&&count<N)
+                /* read upto N digits */
+                { n = 10*n+ch-'0';
+                  count++;
+@@ -400,7 +400,7 @@ int yylex()         /* called by YACC to
+         }
+       else return(';');
+     }
+-  if(isalpha(c)){ kollect(okid);
++  if(isalpha((unsigned char)c)){ kollect(okid);
+                    if(inlex==1){ layout();
+                                  yylval=name();
+                                  return(c=='='?LEXDEF:
+@@ -486,7 +486,7 @@ int yylex()         /* called by YACC to
+                 if(c=='<'){ c=getch(); return(LE); }
+                 if(c=='>'){ c=getch(); return(GE); }
+                 if(c=='%'&&!commandmode)return(directive());
+-                if(isalpha(c)) /* underlined reserved word */
++                if(isalpha((unsigned char)c)) /* underlined reserved word */
+ 	          { kollect(okulid);
+                     if(dicp[1]=='_'&&dicp[2]=='')
+ 	              return(identifier(1)); }
+@@ -522,7 +522,7 @@ int yylex()         /* called by YACC to
+ 	      }
+ 	    return(lastc);
+   case '$': if(
+-              isalpha(c))
++              isalpha((unsigned char)c))
+               { int t;
+                 kollect(okid);
+                 t=identifier(0);
+@@ -530,7 +530,7 @@ int yylex()         /* called by YACC to
+                 /* the last alternative is an error - caveat */
+ 	    if('1'<=c&&c<='9')
+ 	      { int n=0;
+-		while(isdigit(c)&&n<1e6)n=10*n+c-'0',c=getch();
++		while(isdigit((unsigned char)c)&&n<1e6)n=10*n+c-'0',c=getch();
+ 		if(n>sreds)
+ 		  /* sreds==0 everywhere except in semantic redn clause */
+ 		  printf("%ssyntax error: illegal symbol $%d%s\n",
+@@ -660,7 +660,7 @@ char *pathname() /* returns NULL if not 
+       extern char linebuf[];
+       *dicp++ = c;
+       c=getch();
+-      while(isalnum(c)||c=='-'||c=='_'||c=='.')
++      while(isalnum((unsigned char)c)||c=='-'||c=='_'||c=='.')
+            *dicp++ = c, c=getch();
+       *dicp='\0';
+       if((h=gethome(hold+1)))
+@@ -913,22 +913,22 @@ void dic_check()  /* called from REDUCE 
+ void numeral()
+ { word nflag=1;
+   dicq= dicp;
+-  while(isdigit(c))
++  while(isdigit((unsigned char)c))
+        *dicq++ = c, c=getch();
+   if(c=='.'&&peekdig())
+     { *dicq++ = c, c=getch(); nflag=0;
+-      while(isdigit(c))
++      while(isdigit((unsigned char)c))
+            *dicq++ = c, c=getch(); }
+   if(c=='e')
+     { word np=0;
+       *dicq++ = c, c=getch(); nflag=0;
+       if(c=='+')c=getch(); else  /* ignore + before exponent */
+       if(c=='-')*dicq++ = c, c=getch();
+-      if(!isdigit(c))  /* e must be followed by some digits */
++      if(!isdigit((unsigned char)c))  /* e must be followed by some digits */
+ 	syntax("badly formed floating point number\n");
+       while(c=='0')
+            *dicq++ = c, c=getch();
+-      while(isdigit(c))
++      while(isdigit((unsigned char)c))
+            np++, *dicq++ = c, c=getch();
+       if(!nflag&&np>3) /* scanf falls over with silly exponents */
+ 	{ syntax("floating point number out of range\n");
+@@ -952,22 +952,22 @@ void hexnumeral()   /* added 21.11.2013 
+ { dicq= dicp;
+   *dicq++ = c, c=getch(); /* 0 */
+   *dicq++ = c, c=getch(); /* x */
+-  if(!isxdigit(c)&&c!='.')syntax("malformed hex number\n");
+-  while(c=='0'&&isxdigit(peekch()))c=getch(); /* skip zeros before first nonzero digit */
+-  while(isxdigit(c))
++  if(!isxdigit((unsigned char)c)&&c!='.')syntax("malformed hex number\n");
++  while(c=='0'&&isxdigit((unsigned char)peekch()))c=getch(); /* skip zeros before first nonzero digit */
++  while(isxdigit((unsigned char)c))
+        *dicq++ = c, c=getch();
+   ovflocheck;
+   if(c=='.'||tolower(c)=='p') /* hex float, added 20.11.19 */
+     { double d;
+       if(c=='.')
+         { *dicq++ = c, c=getch();
+-          while(isxdigit(c))
++          while(isxdigit((unsigned char)c))
+           *dicq++ = c, c=getch(); }
+       if(c=='p')
+         { *dicq++ = c, c=getch();
+           if(c=='+'||c=='-')*dicq++ = c, c=getch();
+-          if(!isdigit(c))syntax("malformed hex float\n");
+-          while(isdigit(c))
++          if(!isdigit((unsigned char)c))syntax("malformed hex float\n");
++          while(isdigit((unsigned char)c))
+           *dicq++ = c, c=getch(); }
+       ovflocheck;
+       *dicq='\0';
+@@ -981,11 +981,11 @@ void hexnumeral()   /* added 21.11.2013 
+ 
+ void octnumeral()   /* added 21.11.2013 */
+ { dicq= dicp;
+-  if(!isdigit(c))syntax("malformed octal number\n");
+-  while(c=='0'&&isdigit(peekch()))c=getch(); /* skip zeros before first nonzero digit */
+-  while(isdigit(c)&&c<='7')
++  if(!isdigit((unsigned char)c))syntax("malformed octal number\n");
++  while(c=='0'&&isdigit((unsigned char)peekch()))c=getch(); /* skip zeros before first nonzero digit */
++  while(isdigit((unsigned char)c)&&c<='7')
+        *dicq++ = c, c=getch();
+-  if(isdigit(c))syntax("illegal digit in octal number\n");
++  if(isdigit((unsigned char)c))syntax("illegal digit in octal number\n");
+   ovflocheck;
+   *dicq = '\0';
+   yylval= bigoscan(dicp,dicq);
+@@ -1001,7 +1001,7 @@ int hash(char *s) /* returns a value in 
+ 
+ int isconstrname(char *s)
+ { if(s[0]=='$')s++;
+-  return isupper((int)*s); /* formerly !islower */
++  return isupper((unsigned char)*s); /* formerly !islower */
+ }
+ 
+ word getfname(word x)
diff --git a/miranda/patches/patch-steer.c b/miranda/patches/patch-steer.c
new file mode 100644
index 0000000000..55fd712522
--- /dev/null
+++ b/miranda/patches/patch-steer.c
@@ -0,0 +1,30 @@
+$NetBSD$
+
+--- steer.c.orig	2026-08-31 16:10:00.000000000 +0000
++++ steer.c
+@@ -269,6 +269,7 @@ int main(int argc,char *argv[])
+     { char *m;
+       /* note search order */
+       if((m=getenv("MIRALIB")))miralib=m; else
++      if(checkversion(m="@PREFIX@/lib/miralib"))miralib=m; else
+       if(checkversion(m="/usr/lib/miralib"))miralib=m; else
+       if(checkversion(m="/usr/local/lib/miralib"))miralib=m; else
+       if(checkversion(m="miralib"))miralib=m; else
+@@ -581,7 +582,7 @@ int cmdgetchar(void)
+   }
+   if(lnpos) {
+     if(*lnpos)
+-      return *lnpos++;
++      return (unsigned char)*lnpos++;
+     lnpos = NULL;
+     return '\n';  /* end of line */
+   }
+@@ -1192,7 +1193,7 @@ void finger(char *n) /* find info about 
+ 
+ void diagnose(char *n)
+ { int i=0;
+-  if(isalpha((int)n[0]))
++  if(isalpha((unsigned char)n[0]))
+     while(n[i]&&okid(n[i]))i++;
+   if(n[i]){ printf("\"%s\" -- not an identifier\n",n); return; }
+   for(i=0;presym[i];i++)


Home | Main Index | Thread Index | Old Index