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