From ec2da99ffe7140db191d6683c493ad6936174311 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 27 Dec 2001 18:12:48 +0000 Subject: [PATCH] * configure.in: Check the protos of strchr ans strspn. Replace strchr if needed. * src/system.h: Provide the protos of strchr, strspn and memchr if missing. * lib/strchr.c: New. * src/reader.c (symbols_save): Use strchr. --- ChangeLog | 10 ++++++++++ configure.in | 4 ++-- lib/strchr.c | 32 ++++++++++++++++++++++++++++++++ src/reader.c | 8 ++------ src/system.h | 12 ++++++++++++ 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 lib/strchr.c diff --git a/ChangeLog b/ChangeLog index c6364278..6a336673 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-12-27 Akim Demaille + + * configure.in: Check the protos of strchr ans strspn. + Replace strchr if needed. + * src/system.h: Provide the protos of strchr, strspn and memchr if + missing. + * lib/strchr.c: New. + * src/reader.c (symbols_save): Use strchr. + + 2001-12-27 Akim Demaille * src/print.c, src/print_graph.c (escape): New. diff --git a/configure.in b/configure.in index b6788873..654b3a91 100644 --- a/configure.in +++ b/configure.in @@ -85,8 +85,8 @@ AC_FUNC_ALLOCA AC_FUNC_OBSTACK AC_FUNC_ERROR_AT_LINE AC_CHECK_FUNCS(mkstemp setlocale) -AC_CHECK_DECLS([stpcpy, strndup, strnlen, memchr]) -AC_REPLACE_FUNCS(stpcpy strndup strnlen strspn memchr) +AC_CHECK_DECLS([stpcpy, strchr, strndup, strspn, strnlen, memchr]) +AC_REPLACE_FUNCS(stpcpy strchr strndup strnlen strspn memchr) jm_FUNC_MALLOC jm_FUNC_REALLOC jm_PREREQ_QUOTEARG diff --git a/lib/strchr.c b/lib/strchr.c new file mode 100644 index 00000000..2e897103 --- /dev/null +++ b/lib/strchr.c @@ -0,0 +1,32 @@ +/* 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 Library General Public License + as published by the Free Software Foundation; either version 2 of + the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - + Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_STRING_H +# include +#else +# include +#endif + +char * +strchr (const char *s, int c) +{ + return index (s, c); +} diff --git a/src/reader.c b/src/reader.c index b09b3447..b7fce299 100644 --- a/src/reader.c +++ b/src/reader.c @@ -1647,13 +1647,11 @@ symbols_save (void) { struct obstack tokendefs; bucket *bp; - char *cp, *symbol; - char c; obstack_init (&tokendefs); for (bp = firstsymbol; bp; bp = bp->next) { - symbol = bp->tag; /* get symbol */ + char *symbol = bp->tag; /* get symbol */ if (bp->value >= ntokens) continue; @@ -1673,9 +1671,7 @@ symbols_save (void) } /* Don't #define nonliteral tokens whose names contain periods. */ - cp = symbol; - while ((c = *cp++) && c != '.'); - if (c != '\0') + if (strchr (symbol, '.')) continue; obstack_fgrow2 (&tokendefs, "# define %s\t%d\n", diff --git a/src/system.h b/src/system.h index 850c5a7f..efaf554d 100644 --- a/src/system.h +++ b/src/system.h @@ -110,14 +110,26 @@ char *alloca (); char *stpcpy PARAMS ((char *dest, const char *src)); #endif +#if !HAVE_DECL_STRCHR +char *strchr(const char *s, int c); +#endif + #if !HAVE_DECL_STRNDUP char *strndup PARAMS ((const char *s, size_t size)); #endif +#if !HAVE_DECL_STRSPN +size_t strspn(const char *s, const char *accept); +#endif + #if !HAVE_DECL_STRNLEN size_t strnlen PARAMS ((const char *s, size_t maxlen)); #endif +#if !HAVE_DECL_MEMCHR +void *memchr(const void *s, int c, size_t n); +#endif + /*-----------------. -- 2.45.2