From bcf110d85d6ffc1bc11d30155cb77f1112f8df1d Mon Sep 17 00:00:00 2001 From: "Gary V. Vaughan" Date: Thu, 8 Apr 2004 14:01:35 +0000 Subject: [PATCH] Added Files: libltdl/lt__pre89.h libltdl/memcpy.c libltdl/memmove.c libltdl/strchr.c libltdl/strcmp.c libltdl/strrchr.c --- libltdl/lt__pre89.h | 85 +++++++++++++++++++++++++++++++++++++++++++++ libltdl/memcpy.c | 50 ++++++++++++++++++++++++++ libltdl/memmove.c | 58 +++++++++++++++++++++++++++++++ libltdl/strchr.c | 41 ++++++++++++++++++++++ libltdl/strcmp.c | 49 ++++++++++++++++++++++++++ libltdl/strrchr.c | 46 ++++++++++++++++++++++++ 6 files changed, 329 insertions(+) create mode 100644 libltdl/lt__pre89.h create mode 100644 libltdl/memcpy.c create mode 100644 libltdl/memmove.c create mode 100644 libltdl/strchr.c create mode 100644 libltdl/strcmp.c create mode 100644 libltdl/strrchr.c diff --git a/libltdl/lt__pre89.h b/libltdl/lt__pre89.h new file mode 100644 index 000000000..c410f6e6a --- /dev/null +++ b/libltdl/lt__pre89.h @@ -0,0 +1,85 @@ +/* lt__pre89.h -- support for pre-c89 libc implementations + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#ifndef LT__PREC89_H +#define LT__PREC89_H 1 + +#ifdef HAVE_CONFIG_H +# include HAVE_CONFIG_H +#endif + +#include "lt_system.h" + +LT_BEGIN_C_DECLS + +#if ! HAVE_STRCMP +# undef strcmp +# define strcmp lt__strcmp +int strcmp (const char *str1, const char *str2); +#endif + +#if ! HAVE_STRCHR +# if HAVE_INDEX +# define strchr index +# else +# undef strchr +# define strchr lt__strchr +const char *strchr (const char *str, int ch); +# endif +#endif + +#if ! HAVE_STRRCHR +# if HAVE_RINDEX +# define strrchr rindex +# else +# undef strcmp +# define strcmp lt__strcmp +const char *strrchr (const char *str, int ch); +# endif +#endif + +#if ! HAVE_MEMCPY +# if HAVE_BCOPY +# define memcpy(dest, src, size) bcopy((src), (dest), (size)) +# else +# undef memcpy +# define memcpy lt__memcpy +void *memcpy (void *dest, const void *src, size_t size); +# endif +#endif + +#if ! HAVE_MEMMOVE +# undef memmove +# define memmove lt__memmove +void *memmove (void *dest, const void *src, size_t size); +#endif + +LT_END_C_DECLS + +#endif /*!LT__PREC89*/ diff --git a/libltdl/memcpy.c b/libltdl/memcpy.c new file mode 100644 index 000000000..91887120e --- /dev/null +++ b/libltdl/memcpy.c @@ -0,0 +1,50 @@ +/* memcpy.c -- copy a block of memory for pre-c89 libc + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#include "lt__pre89.h" + +#include +#include + +/* NOTE: memcpy does not reliably handle copying in overlapping areas + of memory. Use memmove if you need that behaviour. */ + +void * +memcpy (void *dest, const void *src, size_t size) +{ + char *d = dest; + const char *s = src; + + while (size-- > 0) + { + *d++ = *s++; + } + + return dest; +} diff --git a/libltdl/memmove.c b/libltdl/memmove.c new file mode 100644 index 000000000..6060c43fe --- /dev/null +++ b/libltdl/memmove.c @@ -0,0 +1,58 @@ +/* memmove.c -- move to a possibly overlapping block of memory for pre-c89 libc + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#include "lt__pre89.h" + +#include +#include + +void * +memmove (void * dest, void * src, size_t size) +{ + char *d = dest; + char *s = src; + size_t i; + + if (dest < src) + while (size-- > 0) + { + *d++ = *s++; + } + else if (dest > src) + { + d += size; + s += size; + while (size-- > 0) + { + *--d = *--s; + } + } + + return dest; +} diff --git a/libltdl/strchr.c b/libltdl/strchr.c new file mode 100644 index 000000000..c450f0a06 --- /dev/null +++ b/libltdl/strchr.c @@ -0,0 +1,41 @@ +/* strchr.c -- scan for a char in a string for pre-c89 libc + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#include "lt__pre89.h" + +const char * +strchr (const char *str, int ch) +{ + const char *p; + + for (p = str; *p != (char)ch && *p != '\0'; ++p) + /*NOWORK*/; + + return (*p == (char)ch) ? p : 0; +} diff --git a/libltdl/strcmp.c b/libltdl/strcmp.c new file mode 100644 index 000000000..b726b09ba --- /dev/null +++ b/libltdl/strcmp.c @@ -0,0 +1,49 @@ +/* strcmp.c -- compare strings for pre-c89 libc + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#include "lt__pre89.h" + +int +strcmp (const char *str1, const char *str2) +{ + if (str1 == str2) + return 0; + if (str1 == 0) + return -1; + if (str2 == 0) + return 1; + + for (;*str1 && *str2; ++str1, ++str2) + { + if (*str1 != *str2) + break; + } + + return (int)(*str1 - *str2); +} diff --git a/libltdl/strrchr.c b/libltdl/strrchr.c new file mode 100644 index 000000000..c04f15424 --- /dev/null +++ b/libltdl/strrchr.c @@ -0,0 +1,46 @@ +/* strrchr.c -- reverse scan for a char in a string for pre-c89 libc + Copyright (C) 2004 Free Software Foundation, Inc. + Originally by Gary V. Vaughan + + NOTE: The canonical source of this file is maintained with the + GNU Libtool package. Report bugs to bug-libtool@gnu.org. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU libtool, you may include it under the same +distribution terms that you use for the rest of that program. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +*/ + +#include "lt__pre89.h" + +const char * +strrchr (const char *str, int ch) +{ + const char *p, *q = 0; + + for (p = str; *p != '\0'; ++p) + { + if (*p == (char) ch) + { + q = p; + } + } + + return q; +} -- 2.47.2