mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-02 01:18:08 +01:00
Merge pull request #457 from fosslinux/byacc
Move heirloom lex and flex after musl, replace heirloom yacc with byacc
This commit is contained in:
commit
a5a689c954
14 changed files with 465 additions and 1978 deletions
|
|
@ -45,9 +45,9 @@ bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0
|
|||
9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2
|
||||
0061d240f9bb2bb534db7003ddcc4eae9981954ad72e8f41ff1d76dc449ebd37 file-5.44_0.tar.bz2
|
||||
eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2
|
||||
41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2
|
||||
6c59fe114161d5fb99101e54c3d40b8c9355a6e2705cc8804178a65e976ebfb1 flex-2.5.11_0.tar.bz2
|
||||
b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2
|
||||
57f72a4d1cb89dc1e59af0228fddc0ea97a3588984114f702f142c82aeeef493 flex-2.6.4_0.tar.bz2
|
||||
521bf27dd28461fbc5d80e09bd56ab0f180af70020d74094b8edafae9713fc44 flex-2.6.4_0.tar.bz2
|
||||
f0f1471e4a5ff95749bd655c145311cc03eec80525f2bb0b9b3ac3ff8be29e0b gawk-3.0.4_0.tar.bz2
|
||||
62e90abe883f6ccd679adf42d00c2c18a9809bbab599411c81b6c4ac4d446452 gawk-5.3.0_0.tar.bz2
|
||||
6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2
|
||||
|
|
@ -64,6 +64,7 @@ dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0
|
|||
8035da0f42b40509a1f68c91164f20fec624cf8b61017aa4e135473e547dddf4 grub-2.06_0.tar.bz2
|
||||
e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2
|
||||
6585ae3bc8149ec0e3fba766278fa30e2d7f0e7d1b9a9a4a457e0afa15b109c9 gzip-1.13_0.tar.bz2
|
||||
5de062a49595c0d8cd7ba0efb70b95b8fa3c5a9c61e4eeeeb0bdb26d2e426ae0 heirloom-devtools-070527_0.tar.bz2
|
||||
8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2
|
||||
ea5639dc6198c5f243362a1a7adfbea0cb779e085975712a1b410e82d7e0cf84 kbd-1.15_0.tar.bz2
|
||||
50a0f881161c68fe7c9ec6836b11a905b0d54e08e99b2476e8d1f5ac3212769e kexec-linux-1.0.0_0.tar.bz2
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
dd42ffbc30919b13693cbd58536599907d057dc58aabde2b2b1e36ec0475e694 /usr/bin/bash
|
||||
787a4096636b139d5b278c1a7dea6b2d951406302eca670ccab371b63b9dbb67 /usr/bin/bash
|
||||
|
|
|
|||
1
steps/byacc-20240109/byacc-20240109.checksums
Normal file
1
steps/byacc-20240109/byacc-20240109.checksums
Normal file
|
|
@ -0,0 +1 @@
|
|||
79ff462e4247dc7316a163124b32c54e6c8cb6d2ff4dfb0c1818799efcc1d8a7 /usr/bin/yacc
|
||||
98
steps/byacc-20240109/files/Makefile
Normal file
98
steps/byacc-20240109/files/Makefile
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
# SPDX-FileCopyrightText: 2002-2022 Thomas E. Dickey
|
||||
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
#
|
||||
# From original byacc README:
|
||||
# Berkeley Yacc is in the public domain. The data structures and algorithms
|
||||
# used in Berkeley Yacc are all either taken from documents available to the
|
||||
# general public or are inventions of the author. Anyone may freely distribute
|
||||
# source or binary forms of Berkeley Yacc whether unchanged or modified.
|
||||
# Distributers may charge whatever fees they can obtain for Berkeley Yacc.
|
||||
# Programs generated by Berkeley Yacc may be distributed freely.
|
||||
#
|
||||
# (typo "Distributers" in original)
|
||||
|
||||
DEST = .
|
||||
|
||||
HDRS = defs.h
|
||||
|
||||
CFLAGS ?= -O -DNDEBUG
|
||||
|
||||
LDFLAGS ?=
|
||||
|
||||
LIBS ?=
|
||||
|
||||
LINKER ?= $(CC)
|
||||
|
||||
MAKEFILE = Makefile
|
||||
|
||||
OBJS = closure.o \
|
||||
error.o graph.o \
|
||||
lalr.o \
|
||||
lr0.o \
|
||||
main.o \
|
||||
mkpar.o mstring.o \
|
||||
output.o \
|
||||
reader.o \
|
||||
symtab.o \
|
||||
verbose.o \
|
||||
warshall.o yaccpar.o
|
||||
|
||||
PRINT = pr -f -l88
|
||||
|
||||
PROGRAM = yacc
|
||||
|
||||
SRCS = closure.c \
|
||||
error.c graph.c \
|
||||
lalr.c \
|
||||
lr0.c \
|
||||
main.c \
|
||||
mkpar.c mstring.c \
|
||||
output.c \
|
||||
reader.c \
|
||||
symtab.c \
|
||||
verbose.c \
|
||||
warshall.c yaccpar.c
|
||||
|
||||
all: $(PROGRAM)
|
||||
|
||||
$(PROGRAM): $(OBJS) $(LIBS)
|
||||
@$(LINKER) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
|
||||
|
||||
clean:; @rm -f $(OBJS)
|
||||
|
||||
clobber:; @rm -f $(OBJS) $(PROGRAM)
|
||||
|
||||
depend:; @mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST)
|
||||
|
||||
index:; @ctags -wx $(HDRS) $(SRCS)
|
||||
|
||||
install: $(PROGRAM)
|
||||
@echo Installing $(PROGRAM) in $(DEST)
|
||||
@install -s $(PROGRAM) $(DEST)
|
||||
|
||||
listing:; @$(PRINT) Makefile $(HDRS) $(SRCS) | lpr
|
||||
|
||||
lint:; @lint $(SRCS)
|
||||
|
||||
program: $(PROGRAM)
|
||||
|
||||
tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)
|
||||
|
||||
###
|
||||
closure.o: defs.h
|
||||
error.o: defs.h
|
||||
lalr.o: defs.h
|
||||
lr0.o: defs.h
|
||||
main.o: defs.h
|
||||
mkpar.o: defs.h
|
||||
output.o: defs.h
|
||||
reader.o: defs.h
|
||||
symtab.o: defs.h
|
||||
verbose.o: defs.h
|
||||
warshall.o: defs.h
|
||||
btyaccpar.o: defs.h
|
||||
yaccpar.o: defs.h
|
||||
graph.o: defs.h
|
||||
mstring.o: defs.h
|
||||
45
steps/byacc-20240109/pass1.kaem
Normal file
45
steps/byacc-20240109/pass1.kaem
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
||||
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
|
||||
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||
#
|
||||
# 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}.tgz ../src/${pkg}.tar.gz
|
||||
gunzip -f ../src/${pkg}.tar.gz
|
||||
tar xf ../src/${pkg}.tar
|
||||
rm -r ../src/
|
||||
cd ${pkg}
|
||||
|
||||
# Prepare and patch
|
||||
cp ../../files/Makefile .
|
||||
patch -Np0 -i ../../patches/meslibc.patch
|
||||
|
||||
# Build yacc
|
||||
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}/yacc
|
||||
|
||||
cd ../..
|
||||
|
||||
# Checksums
|
||||
if match x${UPDATE_CHECKSUMS} xTrue; then
|
||||
sha256sum -o ${pkg}.checksums \
|
||||
/usr/bin/yacc
|
||||
|
||||
install ${pkg}.checksums ${SRCDIR}
|
||||
else
|
||||
sha256sum -c ${pkg}.checksums
|
||||
fi
|
||||
170
steps/byacc-20240109/patches/meslibc.patch
Normal file
170
steps/byacc-20240109/patches/meslibc.patch
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
Remove usages of tmpfile(), rewind(), fgetpos(), fsetpos() and bsearch(),
|
||||
which are unsupported by meslibc, and add missing declaration for strdup.
|
||||
|
||||
License note: Berkeley Yacc is in the public domain, but it's linked with
|
||||
meslibc, which is GPL-3.0-or-later, so we apply that license here too.
|
||||
|
||||
diff -ru ../byacc-20240109.bak/main.c ./main.c
|
||||
--- ../byacc-20240109.bak/main.c 2024-04-14 16:06:09.646465507 +0200
|
||||
+++ ./main.c 2024-04-14 20:41:56.227083399 +0200
|
||||
@@ -788,7 +788,7 @@
|
||||
(void)umask(save_umask);
|
||||
}
|
||||
#else
|
||||
- result = tmpfile();
|
||||
+ result = fopen(label, "w+");
|
||||
#endif
|
||||
|
||||
if (result == 0)
|
||||
diff -ru ../byacc-20240109.bak/output.c ./output.c
|
||||
--- ../byacc-20240109.bak/output.c 2024-04-14 16:06:09.646465507 +0200
|
||||
+++ ./output.c 2024-04-14 16:06:24.636465897 +0200
|
||||
@@ -1289,7 +1289,7 @@
|
||||
{
|
||||
if (union_file != 0)
|
||||
{
|
||||
- rewind(union_file);
|
||||
+ fseek(union_file, 0, SEEK_SET);
|
||||
while ((c = getc(union_file)) != EOF)
|
||||
putc_code(fp, c);
|
||||
}
|
||||
@@ -1314,7 +1314,7 @@
|
||||
|
||||
if (text_file == NULL)
|
||||
open_error("text_file");
|
||||
- rewind(text_file);
|
||||
+ fseek(text_file, 0, SEEK_SET);
|
||||
in = text_file;
|
||||
if ((c = getc(in)) == EOF)
|
||||
return;
|
||||
@@ -1684,7 +1684,7 @@
|
||||
int state;
|
||||
char line_state[20];
|
||||
|
||||
- rewind(action_file);
|
||||
+ fseek(action_file, 0, SEEK_SET);
|
||||
if ((c = getc(action_file)) == EOF)
|
||||
return;
|
||||
|
||||
diff -ru ../byacc-20240109.bak/reader.c ./reader.c
|
||||
--- ../byacc-20240109.bak/reader.c 2024-04-14 16:06:09.646465507 +0200
|
||||
+++ ./reader.c 2024-04-14 20:40:58.387082748 +0200
|
||||
@@ -70,7 +70,7 @@
|
||||
char *line_data; /* saved input-line */
|
||||
size_t line_used; /* position within saved input-line */
|
||||
size_t line_size; /* length of saved input-line */
|
||||
- fpos_t line_fpos; /* pointer before reading past saved input-line */
|
||||
+ long line_fpos; /* pointer before reading past saved input-line */
|
||||
}
|
||||
SAVE_LINE;
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
line = save_area.line_data;
|
||||
cptr = save_area.line_used + line;
|
||||
linesize = save_area.line_size;
|
||||
- if (fsetpos(input_file, &save_area.line_fpos) != 0)
|
||||
+ if (fseek(input_file, save_area.line_fpos, SEEK_SET) != 0)
|
||||
on_error();
|
||||
memset(&save_area, 0, sizeof(save_area));
|
||||
}
|
||||
@@ -338,7 +338,7 @@
|
||||
save_area.line_size = linesize;
|
||||
NO_SPACE(save_area.line_data);
|
||||
memcpy(save_area.line_data, line, linesize);
|
||||
- if (fgetpos(f, &save_area.line_fpos) != 0)
|
||||
+ if ((save_area.line_fpos = ftell(f)) == -1)
|
||||
on_error();
|
||||
must_save = -must_save;
|
||||
}
|
||||
@@ -572,6 +572,36 @@
|
||||
return strcmp(p->name, q->name);
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Compare keyword to cached token, treating '_' and '-' the same. Some
|
||||
+ * grammars rely upon this misfeature.
|
||||
+ */
|
||||
+static int
|
||||
+matchec(const char *name)
|
||||
+{
|
||||
+ const char *p = cache;
|
||||
+ const char *q = name;
|
||||
+ int code = 0; /* assume mismatch */
|
||||
+
|
||||
+ while (*p != '\0' && *q != '\0')
|
||||
+ {
|
||||
+ char a = *p++;
|
||||
+ char b = *q++;
|
||||
+ if (a == '_')
|
||||
+ a = '-';
|
||||
+ if (b == '_')
|
||||
+ b = '-';
|
||||
+ if (a != b)
|
||||
+ break;
|
||||
+ if (*p == '\0' && *q == '\0')
|
||||
+ {
|
||||
+ code = 1;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ return code;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
keyword(void)
|
||||
{
|
||||
@@ -612,10 +642,36 @@
|
||||
}
|
||||
cachec(NUL);
|
||||
|
||||
- if ((key = bsearch(cache, keywords,
|
||||
- sizeof(keywords) / sizeof(*key),
|
||||
- sizeof(*key), compare_keys)))
|
||||
- return key->token;
|
||||
+ if (matchec("token") || matchec("term"))
|
||||
+ return (TOKEN);
|
||||
+ if (matchec("type"))
|
||||
+ return (TYPE);
|
||||
+ if (matchec("left"))
|
||||
+ return (LEFT);
|
||||
+ if (matchec("right"))
|
||||
+ return (RIGHT);
|
||||
+ if (matchec("nonassoc") || matchec("binary"))
|
||||
+ return (NONASSOC);
|
||||
+ if (matchec("start"))
|
||||
+ return (START);
|
||||
+ if (matchec("union"))
|
||||
+ return (UNION);
|
||||
+ if (matchec("ident"))
|
||||
+ return (IDENT);
|
||||
+ if (matchec("expect"))
|
||||
+ return (EXPECT);
|
||||
+ if (matchec("expect-rr"))
|
||||
+ return (EXPECT_RR);
|
||||
+ if (matchec("pure-parser"))
|
||||
+ return (PURE_PARSER);
|
||||
+ if (matchec("parse-param"))
|
||||
+ return (PARSE_PARAM);
|
||||
+ if (matchec("lex-param"))
|
||||
+ return (LEX_PARAM);
|
||||
+ if (matchec("token-table"))
|
||||
+ return (TOKEN_TABLE);
|
||||
+ if (matchec("yacc"))
|
||||
+ return (POSIX_YACC);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1178,6 +1234,9 @@
|
||||
return result;
|
||||
}
|
||||
|
||||
+char *
|
||||
+strdup (char const *s);
|
||||
+
|
||||
static void
|
||||
save_param(int k, char *buffer, int name, int type2)
|
||||
{
|
||||
1
steps/byacc-20240109/sources
Normal file
1
steps/byacc-20240109/sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
https://invisible-island.net/archives/byacc/byacc-20240109.tgz f2897779017189f1a94757705ef6f6e15dc9208ef079eea7f28abec577e08446
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
||||
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
|
||||
#
|
||||
# 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
|
||||
21
steps/heirloom-devtools-070527/pass1.sh
Normal file
21
steps/heirloom-devtools-070527/pass1.sh
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
||||
# SPDX-FileCopyrightText: 2021-22 fosslinux <fosslinux@aussies.space>
|
||||
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||
#
|
||||
# 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"
|
||||
}
|
||||
|
||||
|
|
@ -1,454 +0,0 @@
|
|||
SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
||||
SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
|
||||
|
||||
SPDX-License-Identifier: CDDL-1.0
|
||||
|
||||
From 508eb06d40498acf954fc51ecb9171d2ce2236f6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= <andrius@stikonas.eu>
|
||||
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 <sys/euc.h>
|
||||
#include <widec.h>
|
||||
#endif
|
||||
-#include <wctype.h>
|
||||
-#include <wchar.h>
|
||||
|
||||
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 <widec.h>
|
||||
#endif
|
||||
-#include <wctype.h>
|
||||
|
||||
#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 <getopt.h>
|
||||
#include <string.h>
|
||||
#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 <ctype.h>
|
||||
-#include <wchar.h>
|
||||
#include <inttypes.h>
|
||||
#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 <euc.h>
|
||||
#include <widec.h>
|
||||
#else /* !sun */
|
||||
-#include <wchar.h>
|
||||
#endif /* !sun */
|
||||
#include <limits.h>
|
||||
#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 <limits.h>
|
||||
-#include <wchar.h>
|
||||
#include <ctype.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -49,7 +49,7 @@ build: tar-1.12
|
|||
build: sed-4.0.9
|
||||
build: bzip2-1.0.8
|
||||
build: coreutils-5.0
|
||||
build: heirloom-devtools-070527
|
||||
build: byacc-20240109
|
||||
build: bash-2.05b
|
||||
improve: setup_repo
|
||||
improve: update_env
|
||||
|
|
@ -57,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
|
||||
|
|
@ -67,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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue