From 02fb689ce1a6b3aa329f75969c207150950ecf0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 15 Apr 2024 01:22:50 +0200 Subject: [PATCH] Move heirloom lex and flex after musl, replace heirloom yacc with byacc This way, heirloom-devtools is only linked to a libc with a CDDL-compatible license, making it fully redistributable. Heirloom yacc doesn't work properly with musl libc, but luckily byacc can do its job just fine, so we only need heirloom lex now. Thanks to the more complete libc, and bash being available, heirloom's bootstrap is significantly simplified. --- steps/byacc-20240109/pass1.kaem | 4 +- steps/heirloom-devtools-070527/pass1.kaem | 60 - steps/heirloom-devtools-070527/pass1.sh | 21 + .../patches/lex_remove_wchar.patch | 454 ------- .../patches/yacc_remove_wchar.patch | 1160 ----------------- steps/manifest | 6 +- 6 files changed, 26 insertions(+), 1679 deletions(-) delete mode 100755 steps/heirloom-devtools-070527/pass1.kaem create mode 100644 steps/heirloom-devtools-070527/pass1.sh delete mode 100644 steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch delete mode 100644 steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch diff --git a/steps/byacc-20240109/pass1.kaem b/steps/byacc-20240109/pass1.kaem index f578059..1cfd9bc 100644 --- a/steps/byacc-20240109/pass1.kaem +++ b/steps/byacc-20240109/pass1.kaem @@ -30,14 +30,14 @@ patch -Np0 -i ../../patches/meslibc.patch make CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true # Install yacc -install yacc ${BINDIR}/byacc +install yacc ${BINDIR}/yacc cd ../.. # Checksums if match x${UPDATE_CHECKSUMS} xTrue; then sha256sum -o ${pkg}.checksums \ - /usr/bin/byacc + /usr/bin/yacc install ${pkg}.checksums ${SRCDIR} else diff --git a/steps/heirloom-devtools-070527/pass1.kaem b/steps/heirloom-devtools-070527/pass1.kaem deleted file mode 100755 index 4224455..0000000 --- a/steps/heirloom-devtools-070527/pass1.kaem +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2021 Andrius Štikonas -# SPDX-FileCopyrightText: 2021-22 fosslinux -# -# SPDX-License-Identifier: GPL-3.0-or-later - -set -ex - -# Check tarball checksums -checksum-transcriber sources -sha256sum -c sources.SHA256SUM - -mkdir build src -cd build - -# Extract -cp ${DISTFILES}/${pkg}.tar.bz2 ../src/ -bunzip2 -f ../src/${pkg}.tar.bz2 -tar xf ../src/${pkg}.tar ${pkg}/yacc ${pkg}/lex -rm -r ../src/ -cd ${pkg} - -# Prepare and patch -patch -Np0 -i ../../patches/yacc_remove_wchar.patch -patch -Np0 -i ../../patches/lex_remove_wchar.patch - -# Build yacc -cd yacc -make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DMAXPATHLEN=100\ -DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true - -# Install yacc -install yacc ${BINDIR} -install -m 644 yaccpar ${LIBDIR} - -# Build lex -cd ../lex -make -f Makefile.mk CC=tcc AR=tcc\ -ar CFLAGS=-DEILSEQ=84\ -DMB_LEN_MAX=100 LDFLAGS=-lgetopt\ -static RANLIB=true - -# Install lex -mkdir ${LIBDIR}/lex -install lex ${BINDIR} -install libl.a ${LIBDIR} -install -m 644 ncform ${LIBDIR}/lex - -cd ../../.. - -# Checksums -if match x${UPDATE_CHECKSUMS} xTrue; then - sha256sum -o ${pkg}.checksums \ - /usr/bin/yacc \ - /usr/bin/lex \ - /usr/lib/mes/libl.a \ - /usr/lib/mes/yaccpar \ - /usr/lib/mes/lex/ncform - - install ${pkg}.checksums ${SRCDIR} -else - sha256sum -c ${pkg}.checksums -fi diff --git a/steps/heirloom-devtools-070527/pass1.sh b/steps/heirloom-devtools-070527/pass1.sh new file mode 100644 index 0000000..db9c780 --- /dev/null +++ b/steps/heirloom-devtools-070527/pass1.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2021 Andrius Štikonas +# SPDX-FileCopyrightText: 2021-22 fosslinux +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_compile() { + cd lex + make -f Makefile.mk CC=tcc AR=tcc\ -ar LDFLAGS=-static RANLIB=true + cd .. +} + +src_install() { + mkdir -p "${DESTDIR}${BINDIR}" "${DESTDIR}${LIBDIR}/lex" + install lex/lex "${DESTDIR}${BINDIR}" + install lex/libl.a "${DESTDIR}${LIBDIR}" + install -m 644 lex/ncform "${DESTDIR}${LIBDIR}/lex" +} + diff --git a/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch b/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch deleted file mode 100644 index 91b231c..0000000 --- a/steps/heirloom-devtools-070527/patches/lex_remove_wchar.patch +++ /dev/null @@ -1,454 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas -SPDX-FileCopyrightText: 2021 fosslinux - -SPDX-License-Identifier: CDDL-1.0 - -From 508eb06d40498acf954fc51ecb9171d2ce2236f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= -Date: Wed, 27 Jan 2021 00:40:19 +0000 -Subject: [PATCH] Workaround for lex to work with mes libc. - -Similarly to yacc, remove wchar. See yacc patch for further -information. - ---- - lex/Makefile.mk | 2 +- - lex/allprint.c | 6 ++-- - lex/ldefs.c | 8 ----- - lex/main.c | 1 + - lex/parser.y | 77 +++++++++++++++++++++++++++++++++++-------------- - lex/reject.c | 1 - - lex/sub1.c | 44 ++++++++++++++++++---------- - lex/sub3.c | 2 +- - 8 files changed, 89 insertions(+), 52 deletions(-) - -diff --git lex/Makefile.mk lex/Makefile.mk -index 577f7cb..a413867 100644 ---- lex/Makefile.mk -+++ lex/Makefile.mk -@@ -1,4 +1,4 @@ --XOBJ = main.o sub1.o sub2.o sub3.o header.o wcio.o parser.o getopt.o lsearch.o -+XOBJ = main.o sub1.o sub2.o sub3.o header.o parser.o getopt.o lsearch.o - - LOBJ = allprint.o libmain.o reject.o yyless.o yywrap.o \ - allprint_w.o reject_w.o yyless_w.o reject_e.o yyless_e.o -diff --git lex/allprint.c lex/allprint.c -index 6e82495..cb0c6bb 100644 ---- lex/allprint.c -+++ lex/allprint.c -@@ -42,8 +42,6 @@ - #include - #include - #endif --#include --#include - - extern FILE *yyout; - -@@ -78,10 +76,10 @@ allprint(CHR c) - fprintf(yyout, "\\_"); - break; - default: -- if (!iswprint(c)) -+ if (!iwprint(c)) - fprintf(yyout, "\\x%-2x", (int)c); - else -- putwc(c, yyout); -+ putc(c, yyout); - break; - } - } -diff --git lex/ldefs.c lex/ldefs.c -index ff99665..c5dcbaf 100644 ---- lex/ldefs.c -+++ lex/ldefs.c -@@ -43,7 +43,6 @@ - #ifdef __sun - #include - #endif --#include - - #define CHR wchar_t - #define BYTE char -@@ -296,13 +295,6 @@ int mn1(int a, intptr_t d); - int mn0(int a); - int dupl(int n); - --#undef getwc --#define getwc(f) lex_getwc(f) --extern wint_t lex_getwc(FILE *); --#undef putwc --#define putwc(c, f) lex_putwc(c, f) --extern wint_t lex_putwc(wchar_t, FILE *); -- - #undef index - #define index lex_index - -diff --git lex/main.c lex/main.c -index 8aee8ea..52c892a 100644 ---- lex/main.c -+++ lex/main.c -@@ -38,6 +38,7 @@ - * Sccsid @(#)main.c 1.9 (gritter) 11/26/05 - */ - -+#include - #include - #include "once.h" - #include "sgs.h" -diff --git lex/parser.y lex/parser.y -index b8618e3..34a7e9a 100644 ---- lex/parser.y -+++ lex/parser.y -@@ -43,7 +43,6 @@ - void yyerror(char *); - - #include --#include - #include - #ifndef __sun - #define wcsetno(c) 0 -@@ -289,6 +288,19 @@ r: CHAR - ; - - %% -+ -+/* -+Copy multibyte string into char string. -+Mes C library does not support wide strings, and fprintf truncates all strings to 1 character. -+This happens because wchar_t strings have 0 in a second byte. -+*/ -+int -+wstrcpy(char const *destination, wchar_t const *source) { -+ int i = 0; -+ do { -+ destination[i]=source[i]; -+ } while (source[i++] != 0); -+} - int - yylex(void) - { -@@ -353,7 +365,7 @@ yylex(void) - (*(p+2) == 'O')) { - if(lgatflg) - error("Too late for %%pointer"); -- while(*p && !iswspace(*p)) -+ while(*p && !isspace(*p)) - p++; - isArray = 0; - continue; -@@ -397,7 +409,7 @@ yylex(void) - (*(p+2) == 'R')) { - if(lgatflg) - error("Too late for %%array"); -- while(*p && !iswspace(*p)) -+ while(*p && !isspace(*p)) - p++; - isArray = 1; - continue; -@@ -426,7 +438,7 @@ yylex(void) - if(handleeuc) - error("\ - Character table (%t) is supported only in ASCII compatibility mode.\n"); -- ZCH = wcstol(p+2, NULL, 10); -+ ZCH = strtol(p+2, NULL, 10); - if (ZCH < NCH) ZCH = NCH; - if (ZCH > 2*NCH) error("ch table needs redeclaration"); - chset = TRUE; -@@ -438,13 +450,13 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - continue; - } - while(digit(*p)) p++; -- if(!iswspace(*p)) error("bad translation format"); -- while(iswspace(*p)) p++; -+ if(!isspace(*p)) error("bad translation format"); -+ while(isspace(*p)) p++; - t = p; - while(*t){ - c = ctrans(&t); - if(ctable[(unsigned)c]){ -- if (iswprint(c)) -+ if (isprint(c)) - warning("Character '%lc' used twice",c); - - else -@@ -485,8 +497,12 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - while(getl(p) && scomp(p, L_PctCbr) != 0) - if(p[0]=='/' && p[1]=='*') - cpycom(p); -- else -- fprintf(fout,"%ls\n",p); -+ else { -+ char p2[100]; -+ wstrcpy(p2, p); -+ fprintf(fout,"%ls\n",p2); -+ memset(p2, 0, sizeof p2); -+ } - if(p[0] == '%') continue; - if (*p) error("EOF before %%%%"); - else error("EOF before %%}"); -@@ -501,12 +517,12 @@ Character table (%t) is supported only in ASCII compatibility mode.\n"); - start: - lgate(); - -- while(*p && !iswspace(*p) && ((*p) != (wchar_t)',')) p++; -+ while(*p && !isspace(*p) && ((*p) != (wchar_t)',')) p++; - n = TRUE; - while(n){ -- while(*p && (iswspace(*p) || ((*p) == (wchar_t)','))) p++; -+ while(*p && (isspace(*p) || ((*p) == (wchar_t)','))) p++; - t = p; -- while(*p && !iswspace(*p) && ((*p) != (wchar_t)',')) { -+ while(*p && !isspace(*p) && ((*p) != (wchar_t)',')) { - if(!isascii(*p)) - error("None-ASCII characters in start condition."); - p++; -@@ -516,7 +532,10 @@ start: - if (*t == 0) continue; - i = sptr*2; - if(!ratfor)fprintf(fout,"# "); -- fprintf(fout,"define %ls %d\n",t,i); -+ char t2[100]; -+ wstrcpy(t2, t); -+ fprintf(fout,"define %ls %d\n",t2,i); -+ memset(t2, 0, sizeof t2); - scopy(t,sp); - sname[sptr] = sp; - /* XCU4: save exclusive flag with start name */ -@@ -537,14 +556,20 @@ start: - case ' ': case '\t': /* must be code */ - lgate(); - if( p[1]=='/' && p[2]=='*' ) cpycom(p); -- else fprintf(fout, "%ls\n",p); -+ -+ else { -+ char p2[100]; -+ wstrcpy(p2, p); -+ fprintf(fout, "%ls\n",p2); -+ memset(p2, 0, sizeof p2); -+ } - continue; - case '/': /* look for comments */ - lgate(); - if((*(p+1))=='*') cpycom(p); - /* FALLTHRU */ - default: /* definition */ -- while(*p && !iswspace(*p)) p++; -+ while(*p && !isspace(*p)) p++; - if(*p == 0) - continue; - prev = *p; -@@ -557,7 +582,7 @@ start: - } - } else { /* still sect 1, but prev != '\n' */ - p = bptr; -- while(*p && iswspace(*p)) p++; -+ while(*p && isspace(*p)) p++; - if(*p == 0) - warning("No translation given - null string assumed"); - scopy(p,token); -@@ -632,8 +657,11 @@ start: - while(!eof&& getl(buf) && scomp(L_PctCbr,buf)!=0) - if(buf[0]=='/' && buf[1]=='*') - cpycom(buf); -- else -- fprintf(fout,"%ls\n",buf); -+ else { -+ char buf2[100]; -+ wstrcpy(buf2, p); -+ fprintf(fout,"%ls\n",buf2); -+ } - continue; - } - if(peek == '%'){ -@@ -944,9 +972,16 @@ Character range specified between different codesets."); - else - fprintf(fout, - "\n# line %d \"%s\"\n", yyline-1, sargv[optind]); -- fprintf(fout,"%ls\n",buf); -- while(getl(buf) && !eof) -- fprintf(fout,"%ls\n",buf); -+ char buf2[100]; -+ wstrcpy(buf2, buf); -+ fprintf(fout,"%ls\n",buf2); -+ memset(buf2, 0, sizeof buf2); -+ while(getl(buf) && !eof) { -+ wstrcpy(buf2, buf); -+ fprintf(fout,"%ls\n",buf2); -+ memset(buf2, 0, sizeof buf2); -+ } -+ memset(buf2, 0, sizeof buf2); - } - - return(freturn(0)); -diff --git lex/reject.c lex/reject.c -index 31928e7..ef08c57 100644 ---- lex/reject.c -+++ lex/reject.c -@@ -38,7 +38,6 @@ - #include - #include - #else /* !sun */ --#include - #endif /* !sun */ - #include - #endif -diff --git lex/sub1.c lex/sub1.c -index b867948..eead84b 100644 ---- lex/sub1.c -+++ lex/sub1.c -@@ -38,7 +38,6 @@ - - #include "ldefs.c" - #include --#include - #include - #include - -@@ -394,6 +393,19 @@ cclinter(int sw) - } - } - -+int -+mbtowc(wchar_t *pwc, const char *s, size_t n) -+{ -+ if (s != 0) { -+ if (n < 1) -+ return -1; -+ if (pwc != 0) -+ *pwc = *s & 0377; -+ return *s != '\0'; -+ } else -+ return 0; -+} -+ - int - usescape(int c) - { -@@ -546,7 +558,7 @@ cpyact(void) - break; - case ';': - if (brac == 0) { -- putwc(c, fout); -+ putc(c, fout); - putc('\n', fout); - return (1); - } -@@ -558,26 +570,26 @@ cpyact(void) - case '}': - brac--; - if (brac == 0) { -- putwc(c, fout); -+ putc(c, fout); - putc('\n', fout); - return (1); - } - break; - case '/': -- putwc(c, fout); -+ putc(c, fout); - c = gch(); - if (c != '*') - goto swt; -- putwc(c, fout); -+ putc(c, fout); - savline = yyline; - while (c = gch()) { - while (c == '*') { -- putwc(c, fout); -+ putc(c, fout); - if ((c = gch()) == '/') { - putc('/', fout); - while ((c = gch()) == ' ' || - c == '\t' || c == '\n') -- putwc(c, fout); -+ putc(c, fout); - goto swt; - } - } -@@ -590,16 +602,16 @@ cpyact(void) - case '\'': /* character constant */ - case '"': /* character string */ - mth = c; -- putwc(c, fout); -+ putc(c, fout); - while (c = gch()) { - if (c == '\\') { -- putwc(c, fout); -+ putc(c, fout); - c = gch(); - } - else - if (c == mth) - goto loop; -- putwc(c, fout); -+ putc(c, fout); - if (c == '\n') { - yyline--; - error( -@@ -620,7 +632,7 @@ cpyact(void) - loop: - if (c != ' ' && c != '\t' && c != '\n') - sw = FALSE; -- putwc(c, fout); -+ putc(c, fout); - if (peek == '\n' && !brac && copy_line) { - putc('\n', fout); - return (1); -@@ -636,7 +648,7 @@ gch(void) - int c; - prev = pres; - c = pres = peek; -- peek = pushptr > pushc ? *--pushptr : getwc(fin); -+ peek = pushptr > pushc ? *--pushptr : getc(fin); - while (peek == EOF) { - if (no_input) { - if (!yyline) -@@ -650,7 +662,7 @@ gch(void) - if (fin == NULL) - error("Cannot open file -- %s", - sargv[optind]); -- peek = getwc(fin); -+ peek = getc(fin); - } else - break; - } else { -@@ -856,11 +868,11 @@ allprint(CHR c) - printf("\\_"); - break; - default: -- if (!iswprint(c)) { -+ if (!isprint(c)) { - printf("\\x%-2x", c); /* up to fashion. */ - charc += 3; - } else -- putwc(c, stdout); -+ putc(c, stdout); - break; - } - charc++; -@@ -903,7 +915,7 @@ sect1dump(void) - allprint(i); - putchar(' '); - iswprint(ctable[i]) ? -- putwc(ctable[i], stdout) : -+ putc(ctable[i], stdout) : - printf("%d", ctable[i]); - putchar('\n'); - } -diff --git lex/sub3.c lex/sub3.c -index 186bcbc..aa07f66 100644 ---- lex/sub3.c -+++ lex/sub3.c -@@ -147,7 +147,7 @@ remch(wchar_t c) - */ - if (!handleeuc) { - if (!isascii(c)) -- if (iswprint(c)) -+ if (isprint(c)) - warning( - "Non-ASCII character '%lc' in pattern; use -w or -e lex option.", c); - else warning( --- -2.26.2 - diff --git a/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch b/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch deleted file mode 100644 index 8ce6fd5..0000000 --- a/steps/heirloom-devtools-070527/patches/yacc_remove_wchar.patch +++ /dev/null @@ -1,1160 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas -SPDX-FileCopyrightText: 2021 fosslinux -SPDX-FileCopyrightText: 2023 Emily Trau - -SPDX-License-Identifier: CDDL-1.0 - -Remove all kinds of wchar support. Mes Libc does not support wchar in any form, -so we need to remove it. - -heirloom-devtools is all kinds of broken in this way. C standard dictates that -wchar_t may be defined as char, however heirloom-devtools does not respect this, -which makes this non-trivial. - -diff -U3 -r yacc/dextern yacc/dextern ---- yacc/dextern 2005-11-10 20:31:45.000000000 +0000 -+++ yacc/dextern 2021-01-25 18:21:45.286602527 +0000 -@@ -39,7 +39,6 @@ - #include - #include - #include --#include - - /* MANIFEST CONSTANT DEFINITIONS */ - #define WORD32 -@@ -166,17 +165,17 @@ - } ITEM; - - typedef struct toksymb { -- wchar_t *name; -+ char *name; - int value; - } TOKSYMB; - - typedef struct mbclit { -- wchar_t character; -+ char character; - int tvalue; /* token issued for the character */ - } MBCLIT; - - typedef struct ntsymb { -- wchar_t *name; -+ char *name; - int tvalue; - } NTSYMB; - -@@ -212,7 +211,7 @@ - extern int nprod; /* number of productions */ - extern int **prdptr; /* pointers to descriptions of productions */ - extern int *levprd; /* contains production levels to break conflicts */ --extern wchar_t *had_act; /* set if reduction has associated action code */ -+extern char *had_act; /* set if reduction has associated action code */ - - /* state information */ - -@@ -273,24 +272,15 @@ - extern void go2out(void); - extern void hideprod(void); - extern void callopt(void); --extern void warray(wchar_t *, int *, int); --extern wchar_t *symnam(int); --extern wchar_t *writem(int *); -+extern void warray(char *, int *, int); -+extern char *symnam(int); -+extern char *writem(int *); - extern void exp_mem(int); - extern void exp_act(int **); - extern int apack(int *, int); - extern int state(int); --extern void fprintf3(FILE *, const char *, const wchar_t *, const char *, ...); --extern void error3(const char *, const wchar_t *, const char *, ...); -- -- /* multibyte i/o */ -- --#undef getwc --#define getwc(f) yacc_getwc(f) --extern wint_t yacc_getwc(FILE *); --#undef putwc --#define putwc(c, f) yacc_putwc(c, f) --extern wint_t yacc_putwc(wchar_t, FILE *); -+extern void fprintf3(FILE *, const char *, const char *, const char *, ...); -+extern void error3(const char *, const char *, const char *, ...); - - /* yaccpar location */ - -diff -U3 -r yacc/y1.c yacc/y1.c ---- yacc/y1.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y1.c 2021-01-25 18:02:31.251542365 +0000 -@@ -41,12 +41,11 @@ - #include - #include - #include /* For error() */ --#include - - static void mktbls(void); - static void others(void); - static void summary(void); --static wchar_t *chcopy(wchar_t *, wchar_t *); -+static char *chcopy(char *, char *); - static int setunion(int *, int *); - static void prlook(LOOKSETS *); - static void cpres(void); -@@ -229,13 +228,13 @@ - if (finput == NULL) - error("cannot find parser %s", parser); - -- warray(L"yyr1", levprd, nprod); -+ warray("yyr1", levprd, nprod); - - aryfil(temp1, nprod, 0); - /* had_act[i] is either 1 or 0 */ - PLOOP(1, i) - temp1[i] = ((prdptr[i+1] - prdptr[i]-2) << 1) | had_act[i]; -- warray(L"yyr2", temp1, nprod); -+ warray("yyr2", temp1, nprod); - - aryfil(temp1, nstate, -10000000); - TLOOP(i) -@@ -244,14 +243,14 @@ - NTLOOP(i) - for (j = ntstates[i]; j != 0; j = mstates[j]) - temp1[j] = -i; -- warray(L"yychk", temp1, nstate); -+ warray("yychk", temp1, nstate); - -- warray(L"yydef", defact, nstate); -+ warray("yydef", defact, nstate); - - if ((fdebug = fopen(DEBUGNAME, "r")) == NULL) - error("cannot open yacc.debug"); -- while ((c = getwc(fdebug)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(fdebug)) != EOF) -+ putc(c, ftable); - fclose(fdebug); - ZAPFILE(DEBUGNAME); - -@@ -259,19 +258,19 @@ - fprintf(ftable, "# line\t1 \"%s\"\n", parser); - tmpline = 1; - /* copy parser text */ -- while ((c = getwc(finput)) != EOF) { -+ while ((c = getc(finput)) != EOF) { - if (c == '\n') - tmpline++; - if (c == L'$') { -- if ((c = getwc(finput)) != L'A') -- putwc(L'$', ftable); -+ if ((c = getc(finput)) != L'A') -+ putc(L'$', ftable); - else { /* copy actions */ - tmpline++; - faction = fopen(ACTNAME, "r"); - if (faction == NULL) - error("cannot open action tempfile"); -- while ((c = getwc(faction)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(faction)) != EOF) -+ putc(c, ftable); - fclose(faction); - if (gen_lines) - fprintf(ftable, -@@ -279,18 +278,18 @@ - tmpline, - parser); - ZAPFILE(ACTNAME); -- c = getwc(finput); -+ c = getc(finput); - } - } -- putwc(c, ftable); -+ putc(c, ftable); - } - fclose(ftable); - } - - - /* copies string q into p, returning next free char ptr */ --static wchar_t * --chcopy(wchar_t *p, wchar_t *q) -+static char * -+chcopy(char *p, char *q) - { - while (*p = *q++) - ++p; -@@ -299,16 +298,16 @@ - - #define ISIZE 400 - /* creates output string for item pointed to by pp */ --wchar_t * -+char * - writem(int *pp) - { - int i, *p; - static int isize = ISIZE; -- static wchar_t *sarr = NULL; -- wchar_t *q; -+ static char *sarr = NULL; -+ char *q; - - if (sarr == NULL) { -- sarr = malloc(sizeof (wchar_t) * isize); -+ sarr = malloc(sizeof (char) * isize); - if (sarr == NULL) - error("could not allocate output string array"); - for (i = 0; i < isize; ++i) -@@ -317,7 +316,7 @@ - for (p = pp; *p > 0; ++p) /* EMPTY */; - p = prdptr[-*p]; - q = chcopy(sarr, nontrst[*p-NTBASE].name); -- q = chcopy(q, L" : "); -+ q = chcopy(q, " : "); - - for (;;) { - *q++ = ++p == pp ? L'_' : L' '; -@@ -326,7 +325,7 @@ - break; - q = chcopy(q, symnam(i)); - while (q > &sarr[isize-30]) { -- static wchar_t *sarrbase; -+ static char *sarrbase; - - sarrbase = sarr; - isize += ISIZE; -@@ -339,17 +338,17 @@ - - /* an item calling for a reduction */ - if ((i = *pp) < 0) { -- q = chcopy(q, L" ("); -- swprintf(q, q + isize - sarr, L"%d)", -i); -+ q = chcopy(q, " ("); -+ snprintf(q, q + isize - sarr, "%d)", -i); - } - return (sarr); - } - - /* return a pointer to the name of symbol i */ --wchar_t * -+char * - symnam(int i) - { -- wchar_t *cp; -+ char *cp; - - cp = (i >= NTBASE) ? nontrst[i-NTBASE].name : tokset[i].name; - if (*cp == L' ') -diff -U3 -r yacc/y2.c yacc/y2.c ---- yacc/y2.c 2005-11-26 17:39:44.000000000 +0000 -+++ yacc/y2.c 2021-01-25 19:02:52.472120036 +0000 -@@ -35,9 +35,9 @@ - * Sccsid @(#)y2.c 1.11 (gritter) 11/26/05 - */ - -+#include - #include "dextern" - #include "sgs.h" --#include - #include - #define IDENTIFIER 257 - -@@ -66,17 +66,17 @@ - char *infile; /* input file name */ - static int numbval; /* value of an input number */ - static int toksize = NAMESIZE; --static wchar_t *tokname; /* input token name */ -+static char *tokname; /* input token name */ - char *parser = NULL; /* location of common parser */ - - static void finact(void); --static wchar_t *cstash(wchar_t *); -+static char *cstash(char *); - static void defout(void); - static void cpyunion(void); - static void cpycode(void); - static void cpyact(int); --static void lhsfill(wchar_t *); --static void rhsfill(wchar_t *); -+static void lhsfill(char *); -+static void rhsfill(char *); - static void lrprnt(void); - static void beg_debug(void); - static void end_toks(void); -@@ -85,9 +85,9 @@ - static void exp_prod(void); - static void exp_ntok(void); - static void exp_nonterm(void); --static int defin(int, wchar_t *); -+static int defin(int, char *); - static int gettok(void); --static int chfind(int, wchar_t *); -+static int chfind(int, char *); - static int skipcom(void); - static int findchtok(int); - static void put_prefix_define(char *); -@@ -101,11 +101,11 @@ - * points to initial block - more space - * is allocated as needed. - */ --static wchar_t cnamesblk0[CNAMSZ]; --static wchar_t *cnames = cnamesblk0; -+static char cnamesblk0[CNAMSZ]; -+static char *cnames = cnamesblk0; - - /* place where next name is to be put in */ --static wchar_t *cnamp = cnamesblk0; -+static char *cnamp = cnamesblk0; - - /* number of defined symbols output */ - static int ndefout = 3; -@@ -113,7 +113,7 @@ - /* storage of types */ - static int defunion = 0; /* union of types defined? */ - static int ntypes = 0; /* number of types defined */ --static wchar_t *typeset[NTYPES]; /* pointers to type tags */ -+static char *typeset[NTYPES]; /* pointers to type tags */ - - /* symbol tables for tokens and nonterminals */ - -@@ -143,8 +143,8 @@ - - /* output string */ - --static wchar_t *lhstext; --static wchar_t *rhstext; -+static char *lhstext; -+static char *rhstext; - - /* storage for grammar rules */ - -@@ -158,7 +158,7 @@ - - int **prdptr; - int *levprd; --wchar_t *had_act; -+char *had_act; - - /* flag for generating the # line's default is yes */ - int gen_lines = 1; -@@ -181,7 +181,7 @@ - int c; - int *p; - char *cp; -- wchar_t actname[8]; -+ char actname[8]; - unsigned int options = 0; - char *file_prefix = DEFAULT_PREFIX; - char *sym_prefix = ""; -@@ -192,16 +192,16 @@ - fdefine = NULL; - i = 1; - -- tokname = malloc(sizeof (wchar_t) * toksize); -+ tokname = malloc(sizeof (char) * toksize); - tokset = malloc(sizeof (TOKSYMB) * ntoksz); - toklev = malloc(sizeof (int) * ntoksz); - nontrst = malloc(sizeof (NTSYMB) * nnontersz); - mem0 = malloc(sizeof (int) * new_memsize); - prdptr = malloc(sizeof (int *) * (nprodsz+2)); - levprd = malloc(sizeof (int) * (nprodsz+2)); -- had_act = calloc(nprodsz + 2, sizeof (wchar_t)); -- lhstext = malloc(sizeof (wchar_t) * LHS_TEXT_LEN); -- rhstext = malloc(sizeof (wchar_t) * RHS_TEXT_LEN); -+ had_act = calloc(nprodsz + 2, sizeof (char)); -+ lhstext = malloc(sizeof (char) * LHS_TEXT_LEN); -+ rhstext = malloc(sizeof (char) * RHS_TEXT_LEN); - aryfil(toklev, ntoksz, 0); - aryfil(levprd, nprodsz, 0); - for (ii = 0; ii < ntoksz; ++ii) -@@ -307,10 +307,10 @@ - - lineno = 1; - cnamp = cnames; -- defin(0, L"$end"); -+ defin(0, "$end"); - extval = 0400; -- defin(0, L"error"); -- defin(1, L"$accept"); -+ defin(0, "error"); -+ defin(1, "$accept"); - mem = mem0; - lev = 0; - ty = 0; -@@ -588,7 +588,7 @@ - /* process a rule */ - - if (t == L'|') { -- rhsfill((wchar_t *)0); /* restart fill of rhs */ -+ rhsfill((char *)0); /* restart fill of rhs */ - *mem = *prdptr[nprod-1]; - if (++mem >= &tracemem[new_memsize]) - exp_mem(1); -@@ -638,8 +638,8 @@ - /* action within rule... */ - - lrprnt(); /* dump lhs, rhs */ -- swprintf(actname, sizeof actname, -- L"$$%d", nprod); -+ snprintf(actname, sizeof actname, -+ "$$%d", nprod); - /* - * make it nonterminal - */ -@@ -722,8 +722,8 @@ - if (gen_lines) - fprintf(ftable, "\n# line %d \"%s\"\n", - lineno, infile); -- while ((c = getwc(finput)) != EOF) -- putwc(c, ftable); -+ while ((c = getc(finput)) != EOF) -+ putc(c, ftable); - } - fclose(finput); - } -@@ -736,15 +736,15 @@ - fprintf(ftable, "# define YYERRCODE %d\n", tokset[2].value); - } - --static wchar_t * -+static char * - cstash(s) --register wchar_t *s; -+register char *s; - { -- wchar_t *temp; -+ char *temp; - static int used = 0; - static int used_save = 0; - static int exp_cname = CNAMSZ; -- int len = wcslen(s); -+ int len = strlen(s); - - /* - * 2/29/88 - -@@ -755,7 +755,7 @@ - exp_cname += CNAMSZ; - if (!used) - free(cnames); -- if ((cnames = malloc(sizeof (wchar_t)*exp_cname)) == NULL) -+ if ((cnames = malloc(sizeof (char)*exp_cname)) == NULL) - error("cannot expand string dump"); - cnamp = cnames; - used = 0; -@@ -770,7 +770,7 @@ - } - - static int --defin(int t, register wchar_t *s) -+defin(int t, register char *s) - { - /* define s to be a terminal if t=0 or a nonterminal if t=1 */ - -@@ -820,7 +820,7 @@ - } else if (s[2] <= L'7' && s[2] >= L'0') { /* \nnn sequence */ - int i = 3; - val = s[2] - L'0'; -- while (iswdigit(s[i]) && i <= 4) { -+ while (isdigit(s[i]) && i <= 4) { - if (s[i] >= L'0' && s[i] <= L'7') - val = val * 8 + s[i] - L'0'; - else -@@ -831,17 +831,17 @@ - error("illegal \\nnn construction"); - if (val > 255) - error( --"\\nnn exceed \\377; use \\xnnnnnnnn for wchar_t value of multibyte char"); -+"\\nnn exceed \\377; use \\xnnnnnnnn for char value of multibyte char"); - if (val == 0 && i >= 4) - error("'\\000' is illegal"); - } else if (s[2] == L'x') { /* hexadecimal \xnnn sequence */ - int i = 3; - val = 0; - warning(1, "\\x is ANSI C hex escape"); -- if (iswxdigit(s[i])) -- while (iswxdigit(s[i])) { -+ if (isxdigit(s[i])) -+ while (isxdigit(s[i])) { - int tmpval; -- if (iswdigit(s[i])) -+ if (isdigit(s[i])) - tmpval = s[i] - L'0'; - else if (s[i] >= L'a') - tmpval = s[i] - L'a' + 10; -@@ -876,7 +876,7 @@ - /* write out the defines (at the end of the declaration section) */ - - register int i, c; -- register wchar_t *cp; -+ register char *cp; - - for (i = ndefout; i <= ntokens; ++i) { - -@@ -889,8 +889,8 @@ - } - - for (; (c = *cp) != 0; ++cp) { -- if (iswlower(c) || iswupper(c) || -- iswdigit(c) || c == L'_') /* EMPTY */; -+ if (islower(c) || isupper(c) || -+ isdigit(c) || c == L'_') /* EMPTY */; - else - goto nodef; - } -@@ -919,14 +919,14 @@ - reserve = 0; - lineno += peekline; - peekline = 0; -- c = getwc(finput); -+ c = getc(finput); - /* - * while (c == ' ' || c == '\n' || c == '\t' || c == '\f') { - */ -- while (iswspace(c)) { -+ while (isspace(c)) { - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L'/') { /* skip comment */ - lineno += skipcom(); -@@ -938,11 +938,11 @@ - case EOF: - return (ENDFILE); - case L'{': -- ungetwc(c, finput); -+ ungetc(c, finput); - return (L'='); /* action ... */ - case L'<': /* get, and look up, a type name (union member name) */ - i = 0; -- while ((c = getwc(finput)) != L'>' && -+ while ((c = getc(finput)) != L'>' && - c != EOF && c != L'\n') { - tokname[i] = c; - if (++i >= toksize) -@@ -954,7 +954,7 @@ - if (i == 0) - error("missing type name in < ... > clause"); - for (i = 1; i <= ntypes; ++i) { -- if (!wcscmp(typeset[i], tokname)) { -+ if (!strcmp(typeset[i], tokname)) { - numbval = i; - return (TYPENAME); - } -@@ -968,11 +968,11 @@ - tokname[0] = L' '; - i = 1; - for (;;) { -- c = getwc(finput); -+ c = getc(finput); - if (c == L'\n' || c == EOF) - error("illegal or missing ' or \""); - if (c == L'\\') { -- c = getwc(finput); -+ c = getc(finput); - tokname[i] = L'\\'; - if (++i >= toksize) - exp_tokname(); -@@ -986,7 +986,7 @@ - case L'%': - case L'\\': - -- switch (c = getwc(finput)) { -+ switch (c = getc(finput)) { - - case L'0': return (TERM); - case L'<': return (LEFT); -@@ -1001,81 +1001,81 @@ - - default: - -- if (iswdigit(c)) { /* number */ -+ if (isdigit(c)) { /* number */ - numbval = c - L'0'; - base = (c == L'0') ? 8 : 10; -- for (c = getwc(finput); -- iswdigit(c); -- c = getwc(finput)) { -+ for (c = getc(finput); -+ isdigit(c); -+ c = getc(finput)) { - numbval = numbval*base + c - L'0'; - } -- ungetwc(c, finput); -+ ungetc(c, finput); - return (NUMBER); -- } else if (iswlower(c) || iswupper(c) || -+ } else if (islower(c) || isupper(c) || - c == L'_' || c == L'.' || - c == L'$') { - i = 0; -- while (iswlower(c) || iswupper(c) || -- iswdigit(c) || c == L'_' || -+ while (islower(c) || isupper(c) || -+ isdigit(c) || c == L'_' || - c == L'.' || c == L'$') { - tokname[i] = c; -- if (reserve && iswupper(c)) -- tokname[i] = towlower(c); -+ if (reserve && isupper(c)) -+ tokname[i] = tolower(c); - if (++i >= toksize) - exp_tokname(); -- c = getwc(finput); -+ c = getc(finput); - } - } - else - return (c); - -- ungetwc(c, finput); -+ ungetc(c, finput); - } - - tokname[i] = 0; - - if (reserve) { /* find a reserved word */ -- if (!wcscmp(tokname, L"term")) -+ if (!strcmp(tokname, "term")) - return (TERM); -- if (!wcscmp(tokname, L"token")) -+ if (!strcmp(tokname, "token")) - return (TERM); -- if (!wcscmp(tokname, L"left")) -+ if (!strcmp(tokname, "left")) - return (LEFT); -- if (!wcscmp(tokname, L"nonassoc")) -+ if (!strcmp(tokname, "nonassoc")) - return (BINARY); -- if (!wcscmp(tokname, L"binary")) -+ if (!strcmp(tokname, "binary")) - return (BINARY); -- if (!wcscmp(tokname, L"right")) -+ if (!strcmp(tokname, "right")) - return (RIGHT); -- if (!wcscmp(tokname, L"prec")) -+ if (!strcmp(tokname, "prec")) - return (PREC); -- if (!wcscmp(tokname, L"start")) -+ if (!strcmp(tokname, "start")) - return (START); -- if (!wcscmp(tokname, L"type")) -+ if (!strcmp(tokname, "type")) - return (TYPEDEF); -- if (!wcscmp(tokname, L"union")) -+ if (!strcmp(tokname, "union")) - return (UNION); - error("invalid escape, or illegal reserved word: %ls", tokname); - } - - /* look ahead to distinguish IDENTIFIER from C_IDENTIFIER */ - -- c = getwc(finput); -+ c = getc(finput); - /* - * while (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '/') - * { - */ -- while (iswspace(c) || c == L'/') { -+ while (isspace(c) || c == L'/') { - if (c == L'\n') { - ++peekline; - } else if (c == L'/') { /* look for comments */ - peekline += skipcom(); - } -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L':') - return (C_IDENTIFIER); -- ungetwc(c, finput); -+ ungetc(c, finput); - return (IDENTIFIER); - } - -@@ -1096,19 +1096,19 @@ - } - - static int --chfind(int t, register wchar_t *s) -+chfind(int t, register char *s) - { - int i; - - if (s[0] == ' ') - t = 0; - TLOOP(i) { -- if (!wcscmp(s, tokset[i].name)) { -+ if (!strcmp(s, tokset[i].name)) { - return (i); - } - } - NTLOOP(i) { -- if (!wcscmp(s, nontrst[i].name)) { -+ if (!strcmp(s, nontrst[i].name)) { - return (i + NTBASE); - } - } -@@ -1137,11 +1137,11 @@ - - level = 0; - for (;;) { -- if ((c = getwc(finput)) == EOF) -+ if ((c = getc(finput)) == EOF) - error("EOF encountered while processing %%union"); -- putwc(c, ftable); -+ putc(c, ftable); - if (fdefine) -- putwc(c, fdefine); -+ putc(c, fdefine); - - switch (c) { - -@@ -1172,29 +1172,29 @@ - /* copies code between \{ and \} */ - - int c; -- c = getwc(finput); -+ c = getc(finput); - if (c == L'\n') { -- c = getwc(finput); -+ c = getc(finput); - lineno++; - } - if (gen_lines) - fprintf(ftable, "\n# line %d \"%s\"\n", lineno, infile); - while (c != EOF) { - if (c == L'\\') { -- if ((c = getwc(finput)) == L'}') -+ if ((c = getc(finput)) == L'}') - return; - else -- putwc(L'\\', ftable); -+ putc(L'\\', ftable); - } else if (c == L'%') { -- if ((c = getwc(finput)) == L'}') -+ if ((c = getc(finput)) == L'}') - return; - else -- putwc(L'%', ftable); -+ putc(L'%', ftable); - } -- putwc(c, ftable); -+ putc(c, ftable); - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - error("eof before %%}"); - } -@@ -1207,17 +1207,17 @@ - - /* skipcom is called after reading a / */ - -- if (getwc(finput) != L'*') -+ if (getc(finput) != L'*') - error("illegal comment"); -- c = getwc(finput); -+ c = getc(finput); - while (c != EOF) { - while (c == L'*') { -- if ((c = getwc(finput)) == L'/') -+ if ((c = getc(finput)) == L'/') - return (i); - } - if (c == L'\n') - ++i; -- c = getwc(finput); -+ c = getc(finput); - } - error("EOF inside comment"); - /* NOTREACHED */ -@@ -1229,7 +1229,7 @@ - { - /* copy C action to the next ; or closing } */ - int brac, c, match, i, t, j, s, tok, argument, m; -- wchar_t id_name[NAMESIZE+1]; -+ char id_name[NAMESIZE+1]; - int id_idx = 0; - - if (gen_lines) { -@@ -1239,12 +1239,12 @@ - brac = 0; - id_name[0] = 0; - loop: -- c = getwc(finput); -+ c = getc(finput); - swt: - switch (c) { - case L';': - if (brac == 0) { -- putwc(c, faction); -+ putc(c, faction); - return; - } - goto lcopy; -@@ -1255,13 +1255,13 @@ - s = 1; - tok = -1; - argument = 1; -- while ((c = getwc(finput)) == L' ' || c == L'\t') /* EMPTY */; -+ while ((c = getc(finput)) == L' ' || c == L'\t') /* EMPTY */; - if (c == L'<') { /* type description */ -- ungetwc(c, finput); -+ ungetc(c, finput); - if (gettok() != TYPENAME) - error("bad syntax on $ clause"); - tok = numbval; -- c = getwc(finput); -+ c = getc(finput); - } - if (c == L'$') { - fprintf(faction, "yyval"); -@@ -1272,10 +1272,10 @@ - } - goto loop; - } -- if (iswalpha(c)) { -+ if (isalpha(c)) { - int same = 0; - int id_sw = 0; -- ungetwc(c, finput); -+ ungetc(c, finput); - if (gettok() != IDENTIFIER) - error("bad action format"); - /* -@@ -1290,16 +1290,16 @@ - id_sw = 1; - else - id_sw = 0; -- while ((c = getwc(finput)) == L' ' || -+ while ((c = getc(finput)) == L' ' || - c == L'\t') /* EMPTY */; - if (c == L'#') { -- while ((c = getwc(finput)) == L' ' || -+ while ((c = getc(finput)) == L' ' || - c == L'\t') /* EMPTY */; -- if (iswdigit(c)) { -+ if (isdigit(c)) { - m = 0; -- while (iswdigit(c)) { -+ while (isdigit(c)) { - m = m*10+c-L'0'; -- c = getwc(finput); -+ c = getc(finput); - } - argument = m; - } else -@@ -1339,13 +1339,13 @@ - } - if (c == '-') { - s = -s; -- c = getwc(finput); -+ c = getc(finput); - } -- if (iswdigit(c)) { -+ if (isdigit(c)) { - j = 0; -- while (iswdigit(c)) { -+ while (isdigit(c)) { - j = j*10 + c - L'0'; -- c = getwc(finput); -+ c = getc(finput); - } - j = j*s - offset; - if (j > 0) { -@@ -1363,51 +1363,51 @@ - } - goto swt; - } -- putwc(L'$', faction); -+ putc(L'$', faction); - if (s < 0) -- putwc(L'-', faction); -+ putc(L'-', faction); - goto swt; - case L'}': - if (--brac) - goto lcopy; -- putwc(c, faction); -+ putc(c, faction); - return; - case L'/': /* look for comments */ -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - if (c != L'*') - goto swt; - /* it really is a comment */ -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - while (c != EOF) { - while (c == L'*') { -- putwc(c, faction); -- if ((c = getwc(finput)) == L'/') -+ putc(c, faction); -+ if ((c = getc(finput)) == L'/') - goto lcopy; - } -- putwc(c, faction); -+ putc(c, faction); - if (c == L'\n') - ++lineno; -- c = getwc(finput); -+ c = getc(finput); - } - error("EOF inside comment"); - /* FALLTHRU */ - case L'\'': /* character constant */ - case L'"': /* character string */ - match = c; -- putwc(c, faction); -- while ((c = getwc(finput)) != EOF) { -+ putc(c, faction); -+ while ((c = getc(finput)) != EOF) { - if (c == L'\\') { -- putwc(c, faction); -- c = getwc(finput); -+ putc(c, faction); -+ c = getc(finput); - if (c == L'\n') - ++lineno; - } else if (c == match) - goto lcopy; - else if (c == L'\n') - error("newline in string or char. const."); -- putwc(c, faction); -+ putc(c, faction); - } - error("EOF in string or character constant"); - /* FALLTHRU */ -@@ -1419,7 +1419,7 @@ - goto lcopy; - } - lcopy: -- putwc(c, faction); -+ putc(c, faction); - /* - * Save the possible identifier name. - * Used to print out a warning message. -@@ -1434,7 +1434,7 @@ - * If c has a possibility to be a - * part of identifier, save it. - */ -- else if (iswalnum(c) || c == L'_') { -+ else if (isalnum(c) || c == L'_') { - id_name[id_idx++] = c; - id_name[id_idx] = 0; - } else { -@@ -1446,28 +1446,28 @@ - - static void - lhsfill(s) /* new rule, dump old (if exists), restart strings */ --wchar_t *s; -+char *s; - { - static int lhs_len = LHS_TEXT_LEN; -- int s_lhs = wcslen(s); -+ int s_lhs = strlen(s); - if (s_lhs >= lhs_len) { - lhs_len = s_lhs + 2; -- lhstext = realloc(lhstext, sizeof (wchar_t)*lhs_len); -+ lhstext = realloc(lhstext, sizeof (char)*lhs_len); - if (lhstext == NULL) - error("couldn't expanded LHS length"); - } - rhsfill(NULL); -- wcscpy(lhstext, s); /* don't worry about too long of a name */ -+ strcpy(lhstext, s); /* don't worry about too long of a name */ - } - - static void --rhsfill(wchar_t *s) /* either name or 0 */ -+rhsfill(char *s) /* either name or 0 */ - { -- static wchar_t *loc; /* next free location in rhstext */ -+ static char *loc; /* next free location in rhstext */ - static int rhs_len = RHS_TEXT_LEN; - static int used = 0; -- int s_rhs = (s == NULL ? 0 : wcslen(s)); -- register wchar_t *p; -+ int s_rhs = (s == NULL ? 0 : strlen(s)); -+ register char *p; - - if (!s) /* print out and erase old text */ - { -@@ -1481,10 +1481,10 @@ - - used = loc - rhstext; - if ((s_rhs + 3) >= (rhs_len - used)) { -- static wchar_t *textbase; -+ static char *textbase; - textbase = rhstext; - rhs_len += s_rhs + RHS_TEXT_LEN; -- rhstext = realloc(rhstext, sizeof (wchar_t)*rhs_len); -+ rhstext = realloc(rhstext, sizeof (char)*rhs_len); - if (rhstext == NULL) - error("couldn't expanded RHS length"); - loc = loc - textbase + rhstext; -@@ -1508,15 +1508,15 @@ - static void - lrprnt (void) /* print out the left and right hand sides */ - { -- wchar_t *rhs; -- wchar_t *m_rhs = NULL; -+ char *rhs; -+ char *m_rhs = NULL; - - if (!*rhstext) /* empty rhs - print usual comment */ -- rhs = L" /* empty */"; -+ rhs = " /* empty */"; - else { - int idx1; /* tmp idx used to find if there are d_quotes */ - int idx2; /* tmp idx used to generate escaped string */ -- wchar_t *p; -+ char *p; - /* - * Check if there are any double quote in RHS. - */ -@@ -1525,8 +1525,8 @@ - /* - * A double quote is found. - */ -- idx2 = wcslen(rhstext)*2; -- p = m_rhs = malloc((idx2 + 1)*sizeof (wchar_t)); -+ idx2 = strlen(rhstext)*2; -+ p = m_rhs = malloc((idx2 + 1)*sizeof (char)); - if (m_rhs == NULL) - error( - "Couldn't allocate memory for RHS."); -@@ -1617,7 +1617,7 @@ - exp_tokname(void) - { - toksize += NAMESIZE; -- tokname = realloc(tokname, sizeof (wchar_t) * toksize); -+ tokname = realloc(tokname, sizeof (char) * toksize); - } - - -@@ -1633,7 +1633,7 @@ - - prdptr = realloc(prdptr, sizeof (int *) * (nprodsz+2)); - levprd = realloc(levprd, sizeof (int) * (nprodsz+2)); -- had_act = realloc(had_act, sizeof (wchar_t) * (nprodsz+2)); -+ had_act = realloc(had_act, sizeof (char) * (nprodsz+2)); - for (i = nprodsz-NPROD; i < nprodsz+2; ++i) - had_act[i] = 0; - -diff -U3 -r yacc/y3.c yacc/y3.c ---- yacc/y3.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y3.c 2021-01-25 19:01:48.390375872 +0000 -@@ -41,7 +41,7 @@ - static void precftn(int, int, int); - static void wract(int); - static void wrstate(int); --static void wdef(wchar_t *, int); -+static void wdef(char *, int); - #ifndef NOLIBW - static void wrmbchars(void); - #endif /* !NOLIBW */ -@@ -121,7 +121,7 @@ - } - - fprintf(ftable, "\t};\n"); -- wdef(L"YYNPROD", nprod); -+ wdef("YYNPROD", nprod); - #ifndef NOLIBW - if (nmbchars > 0) { - wrmbchars(); -@@ -485,14 +485,14 @@ - } - - static void --wdef(wchar_t *s, int n) -+wdef(char *s, int n) - { - /* output a definition of s to the value n */ - fprintf(ftable, "# define %ls %d\n", s, n); - } - - void --warray(wchar_t *s, int *v, int n) -+warray(char *s, int *v, int n) - { - register int i; - fprintf(ftable, "static YYCONST yytabelem %ls[]={\n", s); -@@ -549,11 +549,11 @@ - wrmbchars(void) - { - int i; -- wdef(L"YYNMBCHARS", nmbchars); -+ wdef("YYNMBCHARS", nmbchars); - qsort(mbchars, nmbchars, sizeof (*mbchars), - (int (*)(const void *, const void *))cmpmbchars); - fprintf(ftable, -- "static struct{\n\twchar_t character;" -+ "static struct{\n\tchar character;" - "\n\tint tvalue;\n}yymbchars[YYNMBCHARS]={\n"); - for (i = 0; i < nmbchars; ++i) { - fprintf(ftable, "\t{%#x,%d}", -diff -U3 -r yacc/y4.c yacc/y4.c ---- yacc/y4.c 2005-11-26 17:37:56.000000000 +0000 -+++ yacc/y4.c 2021-01-25 19:02:06.780876425 +0000 -@@ -36,7 +36,6 @@ - */ - - #include "dextern" --#include - #include - #define NOMORE -1000 - -@@ -44,7 +43,7 @@ - static void stin(int); - static void osummary(void); - static void aoutput(void); --static void arout(wchar_t *, int *, int); -+static void arout(char *, int *, int); - static int nxti(void); - static int gtnm(void); - -@@ -414,13 +413,13 @@ - /* write out the optimized parser */ - - fprintf(ftable, "# define YYLAST %d\n", maxa-amem + 1); -- arout(L"yyact", amem, (maxa - amem) + 1); -- arout(L"yypact", indgo, nstate); -- arout(L"yypgo", pgo, nnonter + 1); -+ arout("yyact", amem, (maxa - amem) + 1); -+ arout("yypact", indgo, nstate); -+ arout("yypgo", pgo, nnonter + 1); - } - - static void --arout(wchar_t *s, int *v, int n) -+arout(char *s, int *v, int n) - { - register int i; - -@@ -448,8 +447,8 @@ - s = 1; - val = 0; - -- while ((c = getwc(finput)) != EOF) { -- if (iswdigit(c)) -+ while ((c = getc(finput)) != EOF) { -+ if (isdigit(c)) - val = val * 10 + c - L'0'; - else if (c == L'-') - s = -1; -diff -U3 -r yacc/Makefile.mk yacc/Makefile.mk ---- yacc/Makefile.mk 2007-01-04 23:31:24.000000000 +0000 -+++ yacc/Makefile.mk 2021-01-25 01:25:15.592235579 +0000 -@@ -1,4 +1,4 @@ --YOBJ = y1.o y2.o y3.o y4.o y5.o getopt.o -+YOBJ = y1.o y2.o y3.o y4.o getopt.o - - LOBJ = libmai.o libzer.o - diff --git a/steps/manifest b/steps/manifest index 1dcbfbc..8d08ef2 100644 --- a/steps/manifest +++ b/steps/manifest @@ -50,7 +50,6 @@ build: sed-4.0.9 build: bzip2-1.0.8 build: coreutils-5.0 build: byacc-20240109 -build: heirloom-devtools-070527 build: bash-2.05b improve: setup_repo improve: update_env @@ -58,7 +57,6 @@ improve: merged_usr improve: populate_device_nodes define: CONSOLES = ( INTERACTIVE == True && CHROOT == False ) improve: open_console ( CONSOLES == True ) -build: flex-2.5.11 build: tcc-0.9.27 improve: musl_libdir build: musl-1.1.24 @@ -68,8 +66,10 @@ build: tcc-0.9.27 build: sed-4.0.9 build: bzip2-1.0.8 build: m4-1.4.7 +build: heirloom-devtools-070527 +build: flex-2.5.11 build: flex-2.6.4 -uninstall: /usr/bin/yacc +uninstall: heirloom-devtools-070527 build: bison-3.4.1 build: bison-3.4.1 build: bison-3.4.1