summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2021-11-01 09:23:49 +0200
committerSergey Poznyakoff <gray@gnu.org>2021-11-01 09:36:01 +0200
commit9792d313e43e735ac69d7be31c55ef9a033d83c6 (patch)
treed672ecfb9ddbb0740356ca26989dd8030362351b
parent305b124c78459fe1d89a6ed4ebf30a955d530a4c (diff)
downloadmailutils-9792d313e43e735ac69d7be31c55ef9a033d83c6.tar.gz
mailutils-9792d313e43e735ac69d7be31c55ef9a033d83c6.tar.bz2
Require GNU bison and flex
* am/bison.m4: Use AC_PATH_PROG. * am/flex.m4: Likewise. * configure.ac: Remove MU_YLWRAP. * include/mailutils/yyloc.h (YYLTYPE): Remove. This needs be defined in each grammar source individually. * mu-aux/Makefile.am: Remove gylwrap. * mu-aux/gylwrap: Remove. * libmailutils/cfg/Makefile.am: Rewrite rules for building grammars and lexers. * libmailutils/datetime/Makefile.am: Likewise. * libmu_sieve/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mh/Makefile.am: Likewise. * mimeview/Makefile.am: Likewise. * libmailutils/cfg/gylwrap.conf: Remove. * libmailutils/datetime/gylwrap.conf: Remove. * libmu_sieve/gylwrap.conf: Remove. * mh/gylwrap.conf: Remove. * mimeview/gylwrap.conf: Remove. * libmailutils/cfg/lexer.l: Use %option prefix * libmu_sieve/sieve-lex.l: Likewise. * mh/mh_alias_lex.l: Likewise. * mimeview/lexer.l: Likewise. * libmailutils/cfg/parser.y: Use api.prefix and %code requires. * libmailutils/datetime/parsedate.y: Likewise. * mh/mh_alias_gram.y: Likewise. * mh/mh_fmtgram.y: Likewise. * mh/pick-gram.y: Likewise. * libmu_sieve/sieve-gram.y: Likewise. * mimeview/grammar.y: Likewise. * testsuite/lib/mailutils.exp (mu_create_config): Fix source location.
-rw-r--r--am/bison.m49
-rw-r--r--am/flex.m412
-rw-r--r--bootstrap.conf11
-rw-r--r--configure.ac3
-rw-r--r--include/mailutils/yyloc.h1
-rw-r--r--libmailutils/cfg/Makefile.am16
-rw-r--r--libmailutils/cfg/gylwrap.conf4
-rw-r--r--libmailutils/cfg/lexer.l1
-rw-r--r--libmailutils/cfg/parser.y6
-rw-r--r--libmailutils/datetime/Makefile.am12
-rw-r--r--libmailutils/datetime/gylwrap.conf3
-rw-r--r--libmailutils/datetime/parsedate.y2
-rw-r--r--libmailutils/stream/file_stream.c1
-rw-r--r--libmu_sieve/Makefile.am16
-rw-r--r--libmu_sieve/gylwrap.conf4
-rw-r--r--libmu_sieve/sieve-gram.y8
-rw-r--r--libmu_sieve/sieve-lex.l13
-rw-r--r--mail/Makefile.am14
-rw-r--r--mh/Makefile.am27
-rw-r--r--mh/gylwrap.conf13
-rw-r--r--mh/mh_alias_gram.y13
-rw-r--r--mh/mh_alias_lex.l16
-rw-r--r--mh/mh_fmtgram.y4
-rw-r--r--mh/pick-gram.y7
-rw-r--r--mimeview/Makefile.am20
-rw-r--r--mimeview/grammar.y13
-rw-r--r--mimeview/gylwrap.conf3
-rw-r--r--mimeview/lexer.l11
-rw-r--r--mu-aux/Makefile.am1
-rwxr-xr-xmu-aux/gylwrap539
-rw-r--r--testsuite/lib/mailutils.exp3
31 files changed, 154 insertions, 652 deletions
diff --git a/am/bison.m4 b/am/bison.m4
index ea691f176..611ff1711 100644
--- a/am/bison.m4
+++ b/am/bison.m4
@@ -1,11 +1,6 @@
-# bison.m4 serial 2
+# bison.m4 serial 3
AC_DEFUN([MU_PROG_BISON],
[
- if test "x$ac_cv_prog_YACC" = x; then
- AC_PROG_YACC
- if ! $YACC --version 2>/dev/null | grep -q '^bison '; then
- YACC="\${SHELL} $am_aux_dir/missing bison"
- fi
- fi
+ AC_PATH_PROG([BISON],[bison],[\$(SHELL) \$(top_srcdir)/build-aux/missing bison])
])
diff --git a/am/flex.m4 b/am/flex.m4
index d29efdbe2..51a2b9fca 100644
--- a/am/flex.m4
+++ b/am/flex.m4
@@ -1,13 +1,5 @@
-# flex.m4 serial 2
+# flex.m4 serial 3
AC_DEFUN([MU_PROG_FLEX],
-[
- if test "x$LEX" = x; then
- AC_PROG_LEX
- if ! $LEX --version 2>/dev/null | grep -q '^flex '; then
- LEX="\${SHELL} $am_aux_dir/missing flex"
- AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
- AC_SUBST([LEXLIB], [''])
- fi
- fi
+[AC_PATH_PROG([FLEX],[flex],[\$(SHELL) \$(top_srcdir)/build-aux/missing flex])
])
diff --git a/bootstrap.conf b/bootstrap.conf
index c097169ba..aec769601 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -97,11 +97,12 @@ if [ -z "$help" ]; then
fi
# Grab the latest radius.m4
- test -f m4/radius.m4 ||
- wget -P m4 http://git.savannah.gnu.org/cgit/radius.git/plain/scripts/radius.m4
-
- # Create included listings for texinfo docs.
- #make -C doc/texinfo -f maint.mk
+ if [ ! -f m4/radius.m4 ]; then
+ if [ ! -d m4 ]; then
+ mkdir m4
+ fi
+ wget -P m4 http://git.savannah.gnu.org/cgit/radius.git/plain/scripts/radius.m4
+ fi
fi
bootstrap_epilogue() {
diff --git a/configure.ac b/configure.ac
index 33fa71452..452b611cc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -66,9 +66,6 @@ AC_SUBST(MU_LIB_COMMON_INCLUDES,'-I${top_builddir} -I${top_srcdir}/include -I${
AC_SUBST(MU_APP_COMMON_INCLUDES,'-I${srcdir} -I${top_srcdir}/include -I${top_srcdir}/lib -I${top_srcdir}/lib/gnu -I${top_builddir}/lib/gnu -I${top_builddir} -I${top_builddir}/include')
-# Use our replacement for the ylwrap tool
-AC_SUBST([MU_YLWRAP],'$(mu_aux_dir)/gylwrap --')
-
dnl Check for programs
AC_PROG_CC
AM_PROG_CC_C_O
diff --git a/include/mailutils/yyloc.h b/include/mailutils/yyloc.h
index a33b83323..58a2856d0 100644
--- a/include/mailutils/yyloc.h
+++ b/include/mailutils/yyloc.h
@@ -23,7 +23,6 @@ void mu_file_print_locus_point (FILE *,
void mu_file_print_locus_range (FILE *,
struct mu_locus_range const *loc);
-#define YYLTYPE struct mu_locus_range
#define YYLLOC_DEFAULT(Current, Rhs, N) \
do \
{ \
diff --git a/libmailutils/cfg/Makefile.am b/libmailutils/cfg/Makefile.am
index a5fb85642..7f99ca6fd 100644
--- a/libmailutils/cfg/Makefile.am
+++ b/libmailutils/cfg/Makefile.am
@@ -20,8 +20,8 @@ noinst_LTLIBRARIES = libcfg.la
libcfg_la_SOURCES = \
driver.c\
format.c\
- lexer.l\
- parser.y
+ lexer.c\
+ parser.c
localedir = $(datadir)/locale
AM_CPPFLAGS = \
@@ -32,12 +32,18 @@ AM_CPPFLAGS = \
EXTRA_DIST = \
lexer.l\
parser.y\
- parser.h\
- gylwrap.conf
+ parser.h
BUILT_SOURCES = parser.c parser.h lexer.c
-YLWRAP = $(MU_YLWRAP)
+parser.c parser.h: parser.y
+lexer.c: lexer.l
+
AM_YFLAGS=-vdt
AM_LFLAGS=-dp
+.l.c:
+ $(FLEX) -o $@ $(AM_LFLAGS) $<
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
+
diff --git a/libmailutils/cfg/gylwrap.conf b/libmailutils/cfg/gylwrap.conf
deleted file mode 100644
index 4a93e6f83..000000000
--- a/libmailutils/cfg/gylwrap.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Configuration settings for gylwrap.
-# See ../../mu-aux/gylwrap --help, for details.
-
-yyrepl = mu_cfg_yy
diff --git a/libmailutils/cfg/lexer.l b/libmailutils/cfg/lexer.l
index 600a4f0ae..c97b49b21 100644
--- a/libmailutils/cfg/lexer.l
+++ b/libmailutils/cfg/lexer.l
@@ -81,6 +81,7 @@ static struct mu_locus_point string_beg;
while (0);
%}
+%option prefix="mu_cfg_yy"
%option nounput
%option noinput
diff --git a/libmailutils/cfg/parser.y b/libmailutils/cfg/parser.y
index 29b7c11f0..4f38a0f1b 100644
--- a/libmailutils/cfg/parser.y
+++ b/libmailutils/cfg/parser.y
@@ -169,6 +169,12 @@ mu_cfg_create_node_list (mu_list_t *plist)
%}
+%define api.prefix {mu_cfg_yy}
+%code requires {
+#define MU_CFG_YYLTYPE struct mu_locus_range
+#define yylloc mu_cfg_yylloc
+#define yylval mu_cfg_yylval
+}
%locations
%expect 1
diff --git a/libmailutils/datetime/Makefile.am b/libmailutils/datetime/Makefile.am
index d670c885b..fe8f0afd7 100644
--- a/libmailutils/datetime/Makefile.am
+++ b/libmailutils/datetime/Makefile.am
@@ -21,7 +21,7 @@ libdatetime_la_SOURCES = \
dow.c\
doy.c\
jd.c\
- parsedate.y\
+ parsedate.c\
scantime.c\
streamftime.c\
strftime.c\
@@ -32,6 +32,12 @@ libdatetime_la_SOURCES = \
utcoff.c\
yd.c
+BUILT_SOURCES = parsedate.c
+EXTRA_DIST = parsedate.y
+
+parsedate.c: parsedate.y
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
+
AM_CPPFLAGS = $(MU_LIB_COMMON_INCLUDES) -I/libmailutils
-YLWRAP = $(MU_YLWRAP)
-EXTRA_DIST = gylwrap.conf
+
diff --git a/libmailutils/datetime/gylwrap.conf b/libmailutils/datetime/gylwrap.conf
deleted file mode 100644
index 33b8c123f..000000000
--- a/libmailutils/datetime/gylwrap.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Configuration settings for gylwrap.
-# See ../../mu-aux/gylwrap --help, for details.
-yyrepl = pd_yy
diff --git a/libmailutils/datetime/parsedate.y b/libmailutils/datetime/parsedate.y
index d69c6d730..729e8ea30 100644
--- a/libmailutils/datetime/parsedate.y
+++ b/libmailutils/datetime/parsedate.y
@@ -213,6 +213,8 @@ static const char *yyinput;
%type <date> item time zone date day rel relspec relunit
%type <datespec> spec
+%define api.prefix {pd_yy}
+
%%
input : spec
diff --git a/libmailutils/stream/file_stream.c b/libmailutils/stream/file_stream.c
index 781fae98c..1e5b97ff1 100644
--- a/libmailutils/stream/file_stream.c
+++ b/libmailutils/stream/file_stream.c
@@ -23,6 +23,7 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <poll.h>
+#include <limits.h>
#if HAVE_TERMIOS_H
# include <termios.h>
diff --git a/libmu_sieve/Makefile.am b/libmu_sieve/Makefile.am
index add78165f..6d2d517a0 100644
--- a/libmu_sieve/Makefile.am
+++ b/libmu_sieve/Makefile.am
@@ -14,9 +14,7 @@
## You should have received a copy of the GNU General Public License
## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>.
-YLWRAP = $(MU_YLWRAP)
AM_YFLAGS = -dtv
-#AM_LFLAGS=-dvp
AM_CPPFLAGS =\
$(MU_LIB_COMMON_INCLUDES)\
-DMU_SIEVE_MODDIR=\"$(MU_SIEVE_MODDIR)\"
@@ -38,8 +36,8 @@ libmu_sieve_la_SOURCES = \
relational.c\
require.c\
runtime.c\
- sieve-gram.y\
- sieve-lex.l\
+ sieve-gram.c\
+ sieve-lex.c\
strexp.c\
string.c\
tests.c\
@@ -53,9 +51,15 @@ noinst_HEADERS = sieve-priv.h sieve-gram.h
BUILT_SOURCES = \
sieve-gram.c sieve-gram.h \
sieve-lex.c
+MAINTAINERCLEANFILES=$(BUILT_SOURCES)
+EXTRA_DIST = sieve-gram.y sieve-lex.l
+sieve-gram.c sieve-gram.h: sieve-gram.y
+sieve-lex.c: sieve-lex.l
-EXTRA_DIST=gylwrap.conf
+.l.c:
+ $(FLEX) -o $@ $(AM_LFLAGS) $<
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
-MAINTAINERCLEANFILES=$(BUILT_SOURCES)
diff --git a/libmu_sieve/gylwrap.conf b/libmu_sieve/gylwrap.conf
deleted file mode 100644
index 3f574d74e..000000000
--- a/libmu_sieve/gylwrap.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Configuration settings for gylwrap.
-# See ../mu-aux/gylwrap --help, for details.
-
-yyrepl=mu_sieve_yy
diff --git a/libmu_sieve/sieve-gram.y b/libmu_sieve/sieve-gram.y
index dae4da70b..44a676dbb 100644
--- a/libmu_sieve/sieve-gram.y
+++ b/libmu_sieve/sieve-gram.y
@@ -37,7 +37,13 @@ static void node_list_add (struct mu_sieve_node_list *list,
%}
-%error-verbose
+%define api.prefix {mu_sieve_yy}
+%code requires {
+#define MU_SIEVE_YYLTYPE struct mu_locus_range
+#define yylloc mu_sieve_yylloc
+#define yylval mu_sieve_yylval
+}
+%define parse.error verbose
%locations
%union {
diff --git a/libmu_sieve/sieve-lex.l b/libmu_sieve/sieve-lex.l
index 4fb572896..0d13a6f4c 100644
--- a/libmu_sieve/sieve-lex.l
+++ b/libmu_sieve/sieve-lex.l
@@ -153,12 +153,12 @@ push_source (const char *name)
if (yylloc.beg.mu_file && st.st_ino == sieve_source_inode)
{
- yyerror (_("recursive inclusion"));
+ mu_sieve_yyerror (_("recursive inclusion"));
return 1;
}
if ((ctx = ctx_lookup (st.st_ino)))
{
- yyerror (_("recursive inclusion"));
+ mu_sieve_yyerror (_("recursive inclusion"));
if (ctx->prev)
{
mu_diag_at_locus_range (MU_LOG_ERROR, &ctx->incl_range,
@@ -232,6 +232,7 @@ pop_source ()
}
%}
+%option prefix="mu_sieve_yy"
%option nounput
%option noinput
@@ -344,7 +345,7 @@ get_file_name (char *p, char *endp, int *usepath)
break;
default:
- yyerror (_("preprocessor syntax"));
+ mu_sieve_yyerror (_("preprocessor syntax"));
return NULL;
}
@@ -353,7 +354,7 @@ get_file_name (char *p, char *endp, int *usepath)
if (*p != exp)
{
- yyerror (_("missing closing quote in preprocessor statement"));
+ mu_sieve_yyerror (_("missing closing quote in preprocessor statement"));
return NULL;
}
@@ -567,7 +568,7 @@ multiline_begin (void)
multiline_delimiter = strdup (".");
if (!multiline_delimiter)
{
- yyerror (_("not enough memory"));
+ mu_sieve_yyerror (_("not enough memory"));
exit (1);
}
}
@@ -587,7 +588,7 @@ ident (const char *text)
yylval.string = strdup (text);
if (!yylval.string)
{
- yyerror (_("not enough memory"));
+ mu_sieve_yyerror (_("not enough memory"));
exit (1);
}
}
diff --git a/mail/Makefile.am b/mail/Makefile.am
index cfbd93f79..a06979532 100644
--- a/mail/Makefile.am
+++ b/mail/Makefile.am
@@ -14,7 +14,6 @@
## You should have received a copy of the GNU General Public License
## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>.
-YLWRAP = $(MU_YLWRAP)
AM_YFLAGS=-vt
AM_CPPFLAGS = \
$(MU_APP_COMMON_INCLUDES) $(MU_AUTHINCS)\
@@ -33,8 +32,6 @@ mail_LDADD = \
$(MU_LIB_MAILUTILS)\
@READLINE_LIBS@ $(MU_COMMON_LIBRARIES)
-EXTRA_DIST = msgset.c
-
mail_SOURCES = \
alias.c\
alt.c\
@@ -63,7 +60,7 @@ mail_SOURCES = \
mailline.c\
mailvar.c\
mbox.c\
- msgset.y\
+ msgset.c\
next.c\
page.c\
pipe.c\
@@ -94,5 +91,14 @@ mail_SOURCES = \
write.c\
z.c
+BUILT_SOURCES = msgset.c
+EXTRA_DIST = msgset.y
+
+msgset.c: msgset.y
+
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
+
+
SUBDIRS = . testsuite tests
diff --git a/mh/Makefile.am b/mh/Makefile.am
index e8325adca..5602552c9 100644
--- a/mh/Makefile.am
+++ b/mh/Makefile.am
@@ -67,14 +67,14 @@ noinst_LIBRARIES = libmh.a
libmh_a_SOURCES= \
compcommon.c\
mboxprop.c\
- mh_alias_gram.y\
- mh_alias_lex.l\
+ mh_alias_gram.c\
+ mh_alias_lex.c\
mh_getopt.c\
mh_global.c\
mh_format.c\
mh_init.c\
mh_list.c\
- mh_fmtgram.y\
+ mh_fmtgram.c\
mh_msgset.c\
mh_sequence.c\
mh_stream.c\
@@ -95,8 +95,6 @@ BUILT_SOURCES=\
MAINTAINERCLEANFILES=$(BUILT_SOURCES)
-EXTRA_DIST = gylwrap.conf
-
mhlibdir = $(pkgdatadir)/mh
AM_CPPFLAGS =\
@@ -115,10 +113,9 @@ mh_LIBS = \
$(MU_COMMON_LIBRARIES)
LDADD = $(mh_LIBS)
scan_LDADD = $(mh_LIBS) @CURSES_LIBS@
-pick_SOURCES = pick.c pick.h pick-gram.y pick-gram.h
+pick_SOURCES = pick.c pick.h pick-gram.c pick-gram.h
-YLWRAP = $(MU_YLWRAP)
-AM_YFLAGS=-vt
+AM_YFLAGS=-dt
inc_LDADD = \
./libmh.a\
@@ -143,3 +140,17 @@ install-exec-hook:
$(LN_S) show next; \
$(LN_S) show prev; \
cd $$here
+
+EXTRA_DIST = pick-gram.y mh_alias_gram.y mh_fmtgram.y mh_alias_lex.l
+
+pick-gram.c pick-gram.h: pick-gram.y
+mh_alias_gram.c mh_alias_gram.h: mh_alias_gram.y
+mh_alias_lex.c: mh_alias_lex.l
+
+mh_fmtgram.c: mh_fmtgram.y
+ $(BISON) -o $@ -t $<
+
+.l.c:
+ $(FLEX) -o $@ $(AM_LFLAGS) $<
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
diff --git a/mh/gylwrap.conf b/mh/gylwrap.conf
deleted file mode 100644
index 995496232..000000000
--- a/mh/gylwrap.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-# Configuration settings for gylwrap.
-# See ../mu-aux/gylwrap --help, for details.
-
-[pick-gram.y]
- yyrepl = pick_yy
- flags = -d
-[mh_fmtgram.y]
- yyrepl = fmt_yy
-[mh_alias_gram.y]
- yyrepl = ali_yy
- flags = -d
-[mh_alias_lex.l]
- yyrepl = ali_yy
diff --git a/mh/mh_alias_gram.y b/mh/mh_alias_gram.y
index a83120d44..653c66823 100644
--- a/mh/mh_alias_gram.y
+++ b/mh/mh_alias_gram.y
@@ -119,6 +119,12 @@ int yylex (void);
%type <string> address
%type <alias> alias
+%define api.prefix {ali_yy}
+%code requires {
+#define ALI_YYLTYPE struct mu_locus_range
+#define yylloc ali_yylloc
+#define yylval ali_yylval
+}
%locations
%%
@@ -207,6 +213,13 @@ string_list : STRING
%%
+int
+yyerror (char *s)
+{
+ mu_error ("%s", s);
+ return 0;
+}
+
static mu_list_t
ali_list_dup (mu_list_t src)
{
diff --git a/mh/mh_alias_lex.l b/mh/mh_alias_lex.l
index 9184c7aa9..6e149aa4d 100644
--- a/mh/mh_alias_lex.l
+++ b/mh/mh_alias_lex.l
@@ -32,13 +32,6 @@
static mu_linetrack_t trk;
static ino_t ali_source_inode;
-int
-yyerror (char *s)
-{
- mu_error ("%s", s);
- return 0;
-}
-
#define xinput() (yyin ? getc(yyin) : EOF)
#undef YY_INPUT
#define YY_INPUT(buf,result,max_size) do { \
@@ -223,6 +216,7 @@ pop_source (void)
extern int yyparse (void);
%}
+%option prefix="ali_yy"
%option nounput
%option noinput
@@ -272,15 +266,15 @@ mh_alias_read (char const *name, int fail)
{
int rc;
int old_mode, mode;
- extern int yydebug;
+ extern int ali_yydebug;
char *p = getenv ("ALI_YYDEBUG");
if (p && *p > '0' && *p < '9')
- yydebug = 1;
+ ali_yydebug = 1;
if (push_source (name, fail))
return 1;
- if (yydebug)
+ if (ali_yydebug)
fprintf (stderr, "Starting parse of %s\n", name);
mu_stream_ioctl (mu_strerr, MU_IOCTL_LOGSTREAM,
@@ -288,7 +282,7 @@ mh_alias_read (char const *name, int fail)
mode = old_mode | MU_LOGMODE_LOCUS;
mu_stream_ioctl (mu_strerr, MU_IOCTL_LOGSTREAM,
MU_IOCTL_LOGSTREAM_SET_MODE, &mode);
- rc = yyparse ();
+ rc = ali_yyparse ();
mu_stream_ioctl (mu_strerr, MU_IOCTL_LOGSTREAM,
MU_IOCTL_LOGSTREAM_SET_MODE, &old_mode);
return rc;
diff --git a/mh/mh_fmtgram.y b/mh/mh_fmtgram.y
index 5ffa93d4d..f1f380c46 100644
--- a/mh/mh_fmtgram.y
+++ b/mh/mh_fmtgram.y
@@ -149,8 +149,8 @@ static struct node *typecast (struct node *node, enum mh_type type);
%type <builtin> function
%type <fmtspec> fmtspec
-%error-verbose
-
+%define api.prefix {fmt_yy}
+%define parse.error verbose
%%
input : list
diff --git a/mh/pick-gram.y b/mh/pick-gram.y
index 07a91dc1e..c2cfb837c 100644
--- a/mh/pick-gram.y
+++ b/mh/pick-gram.y
@@ -38,6 +38,13 @@ static int nesting_level;
static int reg_flags = REG_EXTENDED|REG_ICASE;
%}
+%define api.prefix {pick_yy}
+%code requires {
+#define PICK_YYLTYPE struct mu_locus_range
+#define yylloc pick_yylloc
+#define yylval pick_yylval
+}
+
%token <string> T_COMP T_DATEFIELD T_STRING T_CFLAGS
%token T_LBRACE T_RBRACE T_BEFORE T_AFTER
%left T_OR
diff --git a/mimeview/Makefile.am b/mimeview/Makefile.am
index 3f12908b3..f1d80babd 100644
--- a/mimeview/Makefile.am
+++ b/mimeview/Makefile.am
@@ -24,15 +24,27 @@ AM_CPPFLAGS = \
bin_PROGRAMS = mimeview
mimeview_SOURCES = \
mimeview.c \
- grammar.y \
- lexer.l \
+ grammar.c \
+ lexer.c \
mimeview.h\
grammar.h
-YLWRAP = $(MU_YLWRAP)
AM_YFLAGS=-vtd
AM_LFLAGS=-d
-EXTRA_DIST = gylwrap.conf
+
+grammar.c grammar.h: grammar.y
+lexer.c: lexer.l
+
+BUILT_SOURCES = \
+ grammar.c grammar.h \
+ lexer.c
+
+EXTRA_DIST = grammar.y lexer.l
+
+.l.c:
+ $(FLEX) -o $@ $(AM_LFLAGS) $<
+.y.c:
+ $(BISON) -o $@ $(AM_YFLAGS) $<
mimeview_LDADD = \
$(MU_APP_LIBRARIES)\
diff --git a/mimeview/grammar.y b/mimeview/grammar.y
index 4ff399bdb..e92a459bc 100644
--- a/mimeview/grammar.y
+++ b/mimeview/grammar.y
@@ -124,6 +124,12 @@ static mu_list_t rule_list;
static size_t errors;
%}
+%define api.prefix {mimetypes_yy}
+%code requires {
+#define MIMETYPES_YYLTYPE struct mu_locus_range
+#define yylloc mimetypes_yylloc
+#define yylval mimetypes_yylval
+}
%locations
%expect 15
@@ -297,6 +303,13 @@ arg : STRING
%%
int
+yyerror (char *s)
+{
+ mu_error ("%s", s);
+ return 0;
+}
+
+int
mimetypes_parse (const char *name)
{
int rc;
diff --git a/mimeview/gylwrap.conf b/mimeview/gylwrap.conf
deleted file mode 100644
index cd41ab231..000000000
--- a/mimeview/gylwrap.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Configuration settings for gylwrap.
-# See ../mu-aux/gylwrap --help, for details.
-yyrepl = mimetypes_yy
diff --git a/mimeview/lexer.l b/mimeview/lexer.l
index f62be0097..64e681d74 100644
--- a/mimeview/lexer.l
+++ b/mimeview/lexer.l
@@ -87,6 +87,8 @@ finish_string (void)
%}
+%option prefix="mimetypes_yy"
+
%x RULE ARGS ASTRING
X [0-9a-fA-F]
IDENT [a-zA-Z_\.][a-zA-Z0-9_\.-]*
@@ -274,14 +276,7 @@ mimetypes_close ()
}
int
-yyerror (char *s)
-{
- mu_error ("%s", s);
- return 0;
-}
-
-int
-yywrap ()
+yywrap (void)
{
return 1;
}
diff --git a/mu-aux/Makefile.am b/mu-aux/Makefile.am
index 45a34e8d2..e5be1a407 100644
--- a/mu-aux/Makefile.am
+++ b/mu-aux/Makefile.am
@@ -16,7 +16,6 @@
EXTRA_DIST = \
debcat.awk\
- gylwrap\
mailutils.spec\
mailutils.spec.in\
texify.sed\
diff --git a/mu-aux/gylwrap b/mu-aux/gylwrap
deleted file mode 100755
index 1bcb22c8b..000000000
--- a/mu-aux/gylwrap
+++ /dev/null
@@ -1,539 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
- & eval 'exec perl -wS "$0" $argv:q'
- if 0;
-
-# This file is part of GNU Mailutils.
-# Copyright (C) 2017-2021 Free Software Foundation, Inc.
-#
-# GNU Mailutils is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 3, or (at
-# your option) any later version.
-#
-# GNU Mailutils is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>.
-
-use strict;
-use warnings;
-use Getopt::Long qw(:config gnu_getopt no_ignore_case require_order auto_version);
-use File::Basename;
-use File::Temp qw(tempdir tempfile);
-use Pod::Man;
-use Pod::Usage;
-use Cwd 'abs_path';
-
-=head1 NAME
-
-gylwrap - wrapper for yacc, lex and similar programs
-
-=head1 SYNOPSIS
-
-B<gylwrap>
-[B<-?>]
-[B<--reset>]
-[B<--yyrepl=>I<PREFIX>]
-[B<--yysym=>I<STRING>]
-[B<--help>]
-[B<--version>]
-I<INPUT>
-[I<OUTPUT> I<DESIRED>]...
-B<--> I<PROGRAM> [I<ARGS>]
-
-B<gylwrap>
-B<--dump>
-[B<--reset>]
-[B<--yyrepl=>I<PREFIX>]
-[I<OUTFILE>]
-
-=head1 DESCRIPTION
-
-Wraps B<lex> and B<yacc> invocations to rename their output files.
-It also ensures that multiple I<COMMAND> instances can be invoked
-in a single directory in parallel and allows for renaming global
-symbols to avoid clashes when multiple parsers and/or lexers are
-linked in a single executable.
-
-To achieve this, B<gylwrap> creates a temporary directory, changes
-to it, and runs I<PROGRAM>, with I<ARGS> and I<INPUT> as its arguments.
-Upon successful exit from I<PROGRAM>, B<gylwrap> processes the
-I<OUTPUT>-I<DESIRED> pairs. Each I<OUTPUT> file is then renamed
-to the file I<DESIRED>, taking care to fix up any eventual B<#line>
-directives.
-
-If B<--yyrepl=I<PREFIX>> is given, the global symbols that can cause
-name clashes are renamed by replacing the initial B<yy> with I<PREFIX>.
-For a list of symbols that are subject for replacement, inspect the
-B<@sym> variable at the start of the script. Additional names can be
-added to this list using the B<--yysym> option.
-
-Prior to running the I<PROGRAM>, B<gylwrap> program checks whether the
-file named B<gylwrap.conf> exists in directory of the I<INPUT> file.
-If found, it is parsed as follows. Empty lines and comments (introduced
-by the hash sign) are ignored. Rest of lines are either option
-assignements, or section headings.
-
-Option assignements have the form B<I<OPTION> = I<VALUE>>, and generally,
-have the same meaning as the corresponding command line option without
-the leading two dashes:
-
-=over 4
-
-=item B<yyrepl => I<PREFIX>
-
-Replace the B<yy> prefix with I<PREFIX> in the identifiers.
-
-=item B<yysym => I<NAME>
-
-Add I<NAME> to the list of symbols suitable for prefix replacement.
-This keyword can appear multiple times.
-
-=item B<flags => I<STRING>
-
-Add I<STRING> to the invocation of I<COMMAND>. This is useful, if you
-have several parsers in the same directory, and some of them require
-the B<-d> option, while others don't.
-
-=back
-
-Section headers have the form B<[I<FILE>]>. The settings under a
-section header have effect only if I<FILE> is the same as the I<INPUT>
-command line argument.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--dump>
-
-Dumps the entire program (after applying any eventual B<--yysym> options)
-to I<OUTFILE>. If I<OUTFILE> is not given, rewrite the program file with
-the output. Use this option to hardcode more replaceable symbols into
-this program. See the BOOTSTRAP section for an example.
-
-=item B<--reset>
-
-Clears the yysym array.
-
-=item B<--yyrepl=>I<PREFIX>
-
-Replace the B<yy> prefix in global symbols with I<PREFIX>.
-
-=item B<--yysym=>I<SYMBOL>
-
-Add I<SYMBOL> to the list of symbols subject for replacement.
-
-=item B<-?>, B<--help>
-
-Displays help text and exit
-
-=item B<--version>
-
-Displays program version and exits.
-
-=back
-
-=head1 NOTE
-
-This script is an improved version of the B<ylwrap> script, included
-in the GNU Automake distribution.
-
-=head1 BOOTSTRAP
-
-This version of gylwrap was bootstrapped as follows:
-
- gylwrap --dump --reset --yysym=yyma