From a4b36db458949986bd80257e2e253728ba4d31a8 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 30 Dec 2001 21:06:22 +0000 Subject: [PATCH] * src/system.h: We don't need nor want bcopy. Throw away MS-DOS crap: we don't need getpid. * configure.in: We don't need strndup. It was even causing problems: because Flex includes the headers *before* us, _GNU_SOURCE is not defined by config.h, and therefore strndup was not visible. * lib/xstrndup.c: New. * src/scan-skel.l: Use it. Be sure to initialize yylval.muscle member when scanning a MUSCLE. * src/parse-skel.y: Use %directives instead of #defines. --- ChangeLog | 14 ++++++++++++++ configure.in | 4 ++-- lib/Makefile.am | 2 +- lib/{strndup.c => xstrndup.c} | 35 ++++++++++++----------------------- src/parse-skel.y | 5 +++-- src/scan-skel.l | 28 ++++++++++------------------ src/system.h | 18 ++++-------------- 7 files changed, 46 insertions(+), 60 deletions(-) rename lib/{strndup.c => xstrndup.c} (65%) diff --git a/ChangeLog b/ChangeLog index 57c91724..54b7fd8b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2001-12-30 Akim Demaille + + * src/system.h: We don't need nor want bcopy. + Throw away MS-DOS crap: we don't need getpid. + * configure.in: We don't need strndup. It was even causing + problems: because Flex includes the headers *before* us, + _GNU_SOURCE is not defined by config.h, and therefore strndup was + not visible. + * lib/xstrndup.c: New. + * src/scan-skel.l: Use it. + Be sure to initialize yylval.muscle member when scanning a MUSCLE. + * src/parse-skel.y: Use %directives instead of #defines. + + 2001-12-30 Akim Demaille * src/skeleton.h: New. diff --git a/configure.in b/configure.in index 2cad5761..6211eee4 100644 --- a/configure.in +++ b/configure.in @@ -87,8 +87,8 @@ AC_FUNC_ALLOCA AC_FUNC_OBSTACK AC_FUNC_ERROR_AT_LINE AC_CHECK_FUNCS(mkstemp setlocale) -AC_CHECK_DECLS([stpcpy, strchr, strndup, strspn, strnlen, memchr]) -AC_REPLACE_FUNCS(stpcpy strchr strndup strnlen strspn memchr) +AC_CHECK_DECLS([stpcpy, strchr, strspn, strnlen, memchr]) +AC_REPLACE_FUNCS(stpcpy strchr strnlen strspn memchr) jm_FUNC_MALLOC jm_FUNC_REALLOC jm_PREREQ_QUOTEARG diff --git a/lib/Makefile.am b/lib/Makefile.am index 637f4dee..cec735c3 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -38,7 +38,7 @@ libbison_a_SOURCES = \ getopt.h getopt.c getopt1.c \ hash.h hash.c \ quote.h quote.c quotearg.h quotearg.c \ - xalloc.h xmalloc.c xstrdup.c + xalloc.h xmalloc.c xstrdup.c xstrndup.c libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@ libbison_a_DEPENDENCIES = $(libbison_a_LIBADD) diff --git a/lib/strndup.c b/lib/xstrndup.c similarity index 65% rename from lib/strndup.c rename to lib/xstrndup.c index 136e51c7..594a6c9f 100644 --- a/lib/strndup.c +++ b/lib/xstrndup.c @@ -1,7 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@prep.ai.mit.edu. +/* Copyright (C) 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -17,20 +14,20 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifdef HAVE_CONFIG_H -# include "config.h" +#if HAVE_CONFIG_H +# include #endif -#include -#include - -#if defined _LIBC || defined STDC_HEADERS -# include +#if STDC_HEADERS || HAVE_STRING_H # include #else -char *malloc (); +# include #endif +#include + +#include "xalloc.h" + #ifndef HAVE_DECL_STRNLEN "this configure-time declaration test was not run" #endif @@ -38,18 +35,13 @@ char *malloc (); size_t strnlen (); #endif -#undef __strndup -#undef strndup - -#ifndef weak_alias -# define __strndup strndup -#endif +char *xstrndup (const char *s, size_t n); char * -__strndup (const char *s, size_t n) +xstrndup (const char *s, size_t n) { size_t len = strnlen (s, n); - char *new = malloc (len + 1); + char *new = xmalloc (len + 1); if (new == NULL) return NULL; @@ -57,6 +49,3 @@ __strndup (const char *s, size_t n) new[len] = '\0'; return (char *) memcpy (new, s, len); } -#ifdef weak_alias -weak_alias (__strndup, strndup) -#endif diff --git a/src/parse-skel.y b/src/parse-skel.y index 372320de..0d56dcfe 100644 --- a/src/parse-skel.y +++ b/src/parse-skel.y @@ -21,6 +21,7 @@ %debug %defines +%verbose %error-verbose %{ @@ -47,8 +48,8 @@ static int yyerror PARAMS ((const char* error)); %union { - char* muscle; - char* string; + char *muscle; + char *string; char character; int yacc; } diff --git a/src/scan-skel.l b/src/scan-skel.l index 71577d7e..0bb71d19 100644 --- a/src/scan-skel.l +++ b/src/scan-skel.l @@ -20,11 +20,9 @@ 02111-1307, USA. */ %{ - #include "system.h" #include "skeleton.h" #include "parse-skel.h" - %} %option nounput @@ -49,31 +47,25 @@ "%%{actions}" { return ACTIONS; } "%%{tokendef}" { return TOKENS; } -"%%{"[a-zA-Z][0-9a-zA-Z_-]+"}" { /* Muscle. */ - size_t len = strlen (yytext); - yylval.string = (char*) malloc (len - 3); - strncpy (yylval.string, yytext + 3, len - 4); - yylval.string[len - 4] = 0; + /* Muscle. */ +"%%{"[a-zA-Z][0-9a-zA-Z_-]+"}" { + yylval.muscle = xstrndup (yytext + 3, yyleng - 4); return MUSCLE; } -"%%\"".*"\"" { /* String. */ - size_t len = strlen (yytext); - yylval.string = (char*) malloc (len - 3); - strncpy (yylval.string, yytext + 3, len - 4); - yylval.string[len - 4] = 0; + /* String. */ +"%%\"".*"\"" { + yylval.string = xstrndup (yytext + 3, yyleng - 4); return STRING; } -<> { /* End of file. */ - return 0; -} - -"\n" { /* End of line. */ + /* End of line. */ +"\n" { return '\n'; } -. { /* Character. */ + /* Plain Character. */ +. { yylval.character = *yytext; return CHARACTER; } diff --git a/src/system.h b/src/system.h index efaf554d..b1d15424 100644 --- a/src/system.h +++ b/src/system.h @@ -26,16 +26,6 @@ #include -#ifdef MSDOS -# include -#endif - -#ifdef _MSC_VER -# include -# include -# define getpid _getpid -#endif - #if HAVE_STDLIB_H # include #endif @@ -62,9 +52,6 @@ # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) # include # endif /* not STDC_HEADERS and HAVE_MEMORY_H */ -# ifndef bcopy -# define bcopy(src, dst, num) memcpy((dst), (src), (num)) -# endif #else /* not STDC_HEADERS and not HAVE_STRING_H */ # include /* memory.h and strings.h conflict on some systems. */ @@ -102,6 +89,9 @@ char *alloca (); # include "xalloc.h" +/* From xstrndup.c. */ +char *xstrndup PARAMS ((const char *s, size_t n)); + /*---------------------. | Missing prototypes. | `---------------------*/ @@ -319,4 +309,4 @@ do { \ # include # endif /* WITH_DMALLOC */ -#endif /* BISON_SYSTEM_H */ +#endif /* ! BISON_SYSTEM_H */ -- 2.47.2