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 <akim@epita.fr>
+
+ * 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 <akim@epita.fr>
* src/skeleton.h: New.
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
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)
+++ /dev/null
-/* 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.
-
- 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
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program 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 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"
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#if defined _LIBC || defined STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else
-char *malloc ();
-#endif
-
-#ifndef HAVE_DECL_STRNLEN
-"this configure-time declaration test was not run"
-#endif
-#if !HAVE_DECL_STRNLEN
-size_t strnlen ();
-#endif
-
-#undef __strndup
-#undef strndup
-
-#ifndef weak_alias
-# define __strndup strndup
-#endif
-
-char *
-__strndup (const char *s, size_t n)
-{
- size_t len = strnlen (s, n);
- char *new = malloc (len + 1);
-
- if (new == NULL)
- return NULL;
-
- new[len] = '\0';
- return (char *) memcpy (new, s, len);
-}
-#ifdef weak_alias
-weak_alias (__strndup, strndup)
-#endif
--- /dev/null
+/* 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
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program 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 this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if STDC_HEADERS || HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#include <sys/types.h>
+
+#include "xalloc.h"
+
+#ifndef HAVE_DECL_STRNLEN
+"this configure-time declaration test was not run"
+#endif
+#if !HAVE_DECL_STRNLEN
+size_t strnlen ();
+#endif
+
+char *xstrndup (const char *s, size_t n);
+
+char *
+xstrndup (const char *s, size_t n)
+{
+ size_t len = strnlen (s, n);
+ char *new = xmalloc (len + 1);
+
+ if (new == NULL)
+ return NULL;
+
+ new[len] = '\0';
+ return (char *) memcpy (new, s, len);
+}
%debug
%defines
+%verbose
%error-verbose
%{
%union
{
- char* muscle;
- char* string;
+ char *muscle;
+ char *string;
char character;
int yacc;
}
02111-1307, USA. */
%{
-
#include "system.h"
#include "skeleton.h"
#include "parse-skel.h"
-
%}
%option nounput
"%%{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;
}
-<<EOF>> { /* End of file. */
- return 0;
-}
-
-"\n" { /* End of line. */
+ /* End of line. */
+"\n" {
return '\n';
}
-. { /* Character. */
+ /* Plain Character. */
+. {
yylval.character = *yytext;
return CHARACTER;
}
#include <assert.h>
-#ifdef MSDOS
-# include <io.h>
-#endif
-
-#ifdef _MSC_VER
-# include <stdlib.h>
-# include <process.h>
-# define getpid _getpid
-#endif
-
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
# include <memory.h>
# 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 <strings.h>
/* memory.h and strings.h conflict on some systems. */
# include "xalloc.h"
+/* From xstrndup.c. */
+char *xstrndup PARAMS ((const char *s, size_t n));
+
/*---------------------.
| Missing prototypes. |
`---------------------*/
# include <dmalloc.h>
# endif /* WITH_DMALLOC */
-#endif /* BISON_SYSTEM_H */
+#endif /* ! BISON_SYSTEM_H */