diff options
Diffstat (limited to 'newlib/libc/string')
37 files changed, 0 insertions, 3762 deletions
diff --git a/newlib/libc/string/Makefile.am b/newlib/libc/string/Makefile.am deleted file mode 100644 index dceb4d9..0000000 --- a/newlib/libc/string/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -## Process this file with automake to generate Makefile.in - -AUTOMAKE_OPTIONS = cygnus - -INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) - -noinst_LIBRARIES = lib.a - -lib_a_SOURCES = \ - bcmp.c \ - bcopy.c \ - bzero.c \ - index.c \ - memchr.c \ - memcmp.c \ - memcpy.c \ - memmove.c \ - memset.c \ - rindex.c \ - strcat.c \ - strchr.c \ - strcmp.c \ - strcasecmp.c \ - strcoll.c \ - strcpy.c \ - strcspn.c \ - strerror.c \ - strlen.c \ - strlwr.c \ - strncat.c \ - strncmp.c \ - strncasecmp.c \ - strncpy.c \ - strpbrk.c \ - strrchr.c \ - strspn.c \ - strtok.c \ - strtok_r.c \ - strupr.c \ - strxfrm.c \ - strstr.c \ - swab.c \ - u_strerr.c - -CHEWOUT_FILES=\ -bcmp.def memcpy.def strcmp.def strncat.def strstr.def \ -bcopy.def memmove.def strcoll.def strncmp.def strtok.def \ -bzero.def memset.def strcpy.def strncpy.def strxfrm.def \ -index.def rindex.def strcspn.def strpbrk.def swab.def \ -memchr.def strcat.def strerror.def strrchr.def \ -memcmp.def strchr.def strlen.def strspn.def \ -strcasecmp.def strncasecmp.def strlwr.def strupr.def - -SUFFIXES = .def - -CHEW = ../../doc/makedoc -f $(srcdir)/../../doc/doc.str - -.c.def: - $(CHEW) < $< > $*.def 2> $*.ref - touch stmp-def - -TARGETDOC = ../tmp.texi - -doc: $(CHEWOUT_FILES) - cat $(srcdir)/strings.tex >> $(TARGETDOC) - -CLEANFILES = $(CHEWOUT_FILES) *.ref diff --git a/newlib/libc/string/Makefile.in b/newlib/libc/string/Makefile.in deleted file mode 100644 index 8139a57..0000000 --- a/newlib/libc/string/Makefile.in +++ /dev/null @@ -1,344 +0,0 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AR = @AR@ -AS = @AS@ -CC = @CC@ -CPP = @CPP@ -CRT0 = @CRT0@ -EXEEXT = @EXEEXT@ -LIBC_MACHINE_LIB = @LIBC_MACHINE_LIB@ -LIBC_POSIX_LIB = @LIBC_POSIX_LIB@ -LIBC_SIGNAL_DEF = @LIBC_SIGNAL_DEF@ -LIBC_SIGNAL_LIB = @LIBC_SIGNAL_LIB@ -LIBC_SYSCALL_LIB = @LIBC_SYSCALL_LIB@ -LIBC_SYS_LIB = @LIBC_SYS_LIB@ -LIBC_UNIX_LIB = @LIBC_UNIX_LIB@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -NEWLIB_CFLAGS = @NEWLIB_CFLAGS@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -VERSION = @VERSION@ -machine_dir = @machine_dir@ -newlib_basedir = @newlib_basedir@ -sys_dir = @sys_dir@ - -AUTOMAKE_OPTIONS = cygnus - -INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) - -noinst_LIBRARIES = lib.a - -lib_a_SOURCES = \ - bcmp.c \ - bcopy.c \ - bzero.c \ - index.c \ - memchr.c \ - memcmp.c \ - memcpy.c \ - memmove.c \ - memset.c \ - rindex.c \ - strcat.c \ - strchr.c \ - strcmp.c \ - strcasecmp.c \ - strcoll.c \ - strcpy.c \ - strcspn.c \ - strerror.c \ - strlen.c \ - strlwr.c \ - strncat.c \ - strncmp.c \ - strncasecmp.c \ - strncpy.c \ - strpbrk.c \ - strrchr.c \ - strspn.c \ - strtok.c \ - strtok_r.c \ - strupr.c \ - strxfrm.c \ - strstr.c \ - swab.c \ - u_strerr.c - - -CHEWOUT_FILES = \ -bcmp.def memcpy.def strcmp.def strncat.def strstr.def \ -bcopy.def memmove.def strcoll.def strncmp.def strtok.def \ -bzero.def memset.def strcpy.def strncpy.def strxfrm.def \ -index.def rindex.def strcspn.def strpbrk.def swab.def \ -memchr.def strcat.def strerror.def strrchr.def \ -memcmp.def strchr.def strlen.def strspn.def \ -strcasecmp.def strncasecmp.def strlwr.def strupr.def - - -SUFFIXES = .def - -CHEW = ../../doc/makedoc -f $(srcdir)/../../doc/doc.str - -TARGETDOC = ../tmp.texi - -CLEANFILES = $(CHEWOUT_FILES) *.ref -mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) - - -DEFS = @DEFS@ -I. -I$(srcdir) -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -lib_a_LIBADD = -lib_a_OBJECTS = bcmp.o bcopy.o bzero.o index.o memchr.o memcmp.o \ -memcpy.o memmove.o memset.o rindex.o strcat.o strchr.o strcmp.o \ -strcasecmp.o strcoll.o strcpy.o strcspn.o strerror.o strlen.o strlwr.o \ -strncat.o strncmp.o strncasecmp.o strncpy.o strpbrk.o strrchr.o \ -strspn.o strtok.o strtok_r.o strupr.o strxfrm.o strstr.o swab.o u_strerr.o -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -SOURCES = $(lib_a_SOURCES) -OBJECTS = $(lib_a_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .def .o .s -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus string/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-noinstLIBRARIES: - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) - -distclean-noinstLIBRARIES: - -maintainer-clean-noinstLIBRARIES: - -.c.o: - $(COMPILE) -c $< - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) - -rm -f lib.a - $(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD) - $(RANLIB) lib.a - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = string - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: -check: check-am -installcheck-am: -installcheck: installcheck-am -install-info-am: -install-info: install-info-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: -uninstall: uninstall-am -all-am: Makefile $(LIBRARIES) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - - -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \ - mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \ - mostlyclean-am - -clean: clean-am - -distclean-am: distclean-noinstLIBRARIES distclean-compile \ - distclean-tags distclean-generic clean-am - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-noinstLIBRARIES \ - maintainer-clean-compile maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ -clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ -check-am installcheck-am installcheck install-info-am install-info \ -install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -.c.def: - $(CHEW) < $< > $*.def 2> $*.ref - touch stmp-def - -doc: $(CHEWOUT_FILES) - cat $(srcdir)/strings.tex >> $(TARGETDOC) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/newlib/libc/string/bcmp.c b/newlib/libc/string/bcmp.c deleted file mode 100644 index b6a4d52..0000000 --- a/newlib/libc/string/bcmp.c +++ /dev/null @@ -1,50 +0,0 @@ -/* -FUNCTION - <<bcmp>>---compare two memory areas - -INDEX - bcmp - -ANSI_SYNOPSIS - #include <string.h> - int bcmp(const char *<[s1]>, const char *<[s2]>, size_t <[n]>); - -TRAD_SYNOPSIS - #include <string.h> - int bcmp(<[s1]>, <[s2]>, <[n]>) - char *<[s1]>; - char *<[s2]>; - size_t <[n]>; - -DESCRIPTION - This function compares not more than <[n]> characters of the - object pointed to by <[s1]> with the object pointed to by <[s2]>. - - This function is identical to <<memcmp>>. - - - -RETURNS - The function returns an integer greater than, equal to or - less than zero according to whether the object pointed to by - <[s1]> is greater than, equal to or less than the object - pointed to by <[s2]>. - -PORTABILITY -<<bcmp>> requires no supporting OS subroutines. - -QUICKREF - bcmp ansi pure -*/ - -#include <string.h> - -int -_DEFUN (bcmp, (m1, m2, n), - _CONST char *m1 _AND - _CONST char *m2 _AND - size_t n) - -{ - return memcmp (m1, m2, n); -} diff --git a/newlib/libc/string/bcopy.c b/newlib/libc/string/bcopy.c deleted file mode 100644 index 733840b..0000000 --- a/newlib/libc/string/bcopy.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -FUNCTION - <<bcopy>>---copy memory regions - -ANSI_SYNOPSIS - #include <string.h> - void bcopy(const char *<[in]>, char *<[out]>, size_t <[n]>); - -TRAD_SYNOPSIS - void bcopy(<[in]>, <[out]>, <[n]> - char *<[in]>; - char *<[out]>; - size_t <[n]>; - -DESCRIPTION - This function copies <[n]> bytes from the memory region - pointed to by <[in]> to the memory region pointed to by - <[out]>. - - This function is implemented in term of <<memmove>>. - -PORTABILITY -<<bcopy>> requires no supporting OS subroutines. - -QUICKREF - bcopy - pure -*/ - -#include <string.h> - -void -_DEFUN (bcopy, (b1, b2, length), - _CONST char *b1 _AND - char *b2 _AND - size_t length) -{ - memmove ((_PTR) b2, (_PTR) b1, length); -} diff --git a/newlib/libc/string/bzero.c b/newlib/libc/string/bzero.c deleted file mode 100644 index e9e78c9..0000000 --- a/newlib/libc/string/bzero.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -FUNCTION -<<bzero>>---initialize memory to zero - -INDEX - bzero - -ANSI_SYNOPSIS - #include <string.h> - void bzero(char *<[b]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - void bzero(<[b]>, <[length]>) - char *<[b]>; - size_t <[length]>; - -DESCRIPTION -<<bzero>> initializes <[length]> bytes of memory, starting at address -<[b]>, to zero. - -RETURNS -<<bzero>> does not return a result. - -PORTABILITY -<<bzero>> is in the Berkeley Software Distribution. -Neither ANSI C nor the System V Interface Definition (Issue 2) require -<<bzero>>. - -<<bzero>> requires no supporting OS subroutines. -*/ - -#include <string.h> - -_VOID -_DEFUN (bzero, (b, length), - char *b _AND - size_t length) -{ - while (length--) - *b++ = 0; -} diff --git a/newlib/libc/string/index.c b/newlib/libc/string/index.c deleted file mode 100644 index 6c165f9..0000000 --- a/newlib/libc/string/index.c +++ /dev/null @@ -1,44 +0,0 @@ -/* -FUNCTION - <<index>>---search for character in string - -INDEX - index - -ANSI_SYNOPSIS - #include <string.h> - char * index(const char *<[string]>, int <[c]>); - -TRAD_SYNOPSIS - #include <string.h> - char * index(<[string]>, <[c]>); - char *<[string]>; - int *<[c]>; - -DESCRIPTION - This function finds the first occurence of <[c]> (converted to - a char) in the string pointed to by <[string]> (including the - terminating null character). - - This function is identical to <<strchr>>. - -RETURNS - Returns a pointer to the located character, or a null pointer - if <[c]> does not occur in <[string]>. - -PORTABILITY -<<index>> requires no supporting OS subroutines. - -QUICKREF - index - pure -*/ - -#include <string.h> - -char * -_DEFUN (index, (s, c), - _CONST char *s _AND - int c) -{ - return strchr (s, c); -} diff --git a/newlib/libc/string/memchr.c b/newlib/libc/string/memchr.c deleted file mode 100644 index 2fd3c86..0000000 --- a/newlib/libc/string/memchr.c +++ /dev/null @@ -1,143 +0,0 @@ -/* -FUNCTION - <<memchr>>---find character in memory - -INDEX - memchr - -ANSI_SYNOPSIS - #include <string.h> - void *memchr(const void *<[src]>, int <[c]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - void *memchr(<[src]>, <[c]>, <[length]>) - void *<[src]>; - void *<[c]>; - size_t <[length]>; - -DESCRIPTION - This function searches memory starting at <<*<[src]>>> for the - character <[c]>. The search only ends with the first - occurrence of <[c]>, or after <[length]> characters; in - particular, <<NULL>> does not terminate the search. - -RETURNS - If the character <[c]> is found within <[length]> characters - of <<*<[src]>>>, a pointer to the character is returned. If - <[c]> is not found, then <<NULL>> is returned. - -PORTABILITY -<<memchr>>> is ANSI C. - -<<memchr>> requires no supporting OS subroutines. - -QUICKREF - memchr ansi pure -*/ - -#include <_ansi.h> -#include <string.h> -#include <limits.h> - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) - -/* How many bytes are loaded each iteration of the word copy loop. */ -#define LBLOCKSIZE (sizeof (long)) - -/* Threshhold for punting to the bytewise iterator. */ -#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - - -_PTR -_DEFUN (memchr, (src_void, c, length), - _CONST _PTR src_void _AND - int c _AND - size_t length) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - _CONST unsigned char *src = (_CONST unsigned char *) src_void; - - c &= 0xff; - - while (length--) - { - if (*src == c) - return (char *) src; - src++; - } - return NULL; -#else - _CONST unsigned char *src = (_CONST unsigned char *) src_void; - unsigned long *asrc; - unsigned long buffer; - unsigned long mask; - int i, j; - - c &= 0xff; - - /* If the size is small, or src is unaligned, then - use the bytewise loop. We can hope this is rare. */ - if (!TOO_SMALL (length) && !UNALIGNED (src)) - { - /* The fast code reads the ASCII one word at a time and only - performs the bytewise search on word-sized segments if they - contain the search character, which is detected by XORing - the word-sized segment with a word-sized block of the search - character and then detecting for the presence of NULL in the - result. */ - asrc = (unsigned long*) src; - mask = 0; - for (i = 0; i < LBLOCKSIZE; i++) - mask = (mask << 8) + c; - - while (length >= LBLOCKSIZE) - { - buffer = *asrc; - buffer ^= mask; - if (DETECTNULL (buffer)) - { - src = (unsigned char*) asrc; - for ( j = 0; j < LBLOCKSIZE; j++ ) - { - if (*src == c) - return (char*) src; - src++; - } - } - length -= LBLOCKSIZE; - asrc++; - } - - /* If there are fewer than LBLOCKSIZE characters left, - then we resort to the bytewise loop. */ - - src = (unsigned char*) asrc; - } - - while (length--) - { - if (*src == c) - return (char*) src; - src++; - } - - return NULL; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/memcmp.c b/newlib/libc/string/memcmp.c deleted file mode 100644 index ac7a194..0000000 --- a/newlib/libc/string/memcmp.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -FUNCTION - <<memcmp>>---compare two memory areas - -INDEX - memcmp - -ANSI_SYNOPSIS - #include <string.h> - int memcmp(const void *<[s1]>, const void *<[s2]>, size_t <[n]>); - -TRAD_SYNOPSIS - #include <string.h> - int memcmp(<[s1]>, <[s2]>, <[n]>) - void *<[s1]>; - void *<[s2]>; - size_t <[n]>; - -DESCRIPTION - This function compares not more than <[n]> characters of the - object pointed to by <[s1]> with the object pointed to by <[s2]>. - - -RETURNS - The function returns an integer greater than, equal to or - less than zero according to whether the object pointed to by - <[s1]> is greater than, equal to or less than the object - pointed to by <[s2]>. - -PORTABILITY -<<memcmp>> is ANSI C. - -<<memcmp>> requires no supporting OS subroutines. - -QUICKREF - memcmp ansi pure -*/ - -#include <string.h> - - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -/* How many bytes are copied each iteration of the word copy loop. */ -#define LBLOCKSIZE (sizeof (long)) - -/* Threshhold for punting to the byte copier. */ -#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) - -int -_DEFUN (memcmp, (m1, m2, n), - _CONST _PTR m1 _AND - _CONST _PTR m2 _AND - size_t n) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - unsigned char *s1 = (unsigned char *) m1; - unsigned char *s2 = (unsigned char *) m2; - - while (n--) - { - if (*s1 != *s2) - { - return *s1 - *s2; - } - s1++; - s2++; - } - return 0; -#else - unsigned char *s1 = (unsigned char *) m1; - unsigned char *s2 = (unsigned char *) m2; - unsigned long *a1; - unsigned long *a2; - - /* If the size is too small, or either pointer is unaligned, - then we punt to the byte compare loop. Hopefully this will - not turn up in inner loops. */ - if (!TOO_SMALL(n) && !UNALIGNED(s1,s2)) - { - /* Otherwise, load and compare the blocks of memory one - word at a time. */ - a1 = (unsigned long*) s1; - a2 = (unsigned long*) s2; - while (n >= LBLOCKSIZE) - { - if (*a1 != *a2) - break; - a1++; - a2++; - n -= LBLOCKSIZE; - } - - /* check m mod LBLOCKSIZE remaining characters */ - - s1 = (char*)a1; - s2 = (char*)a2; - } - - while (n--) - { - if (*s1 != *s2) - return *s1 - *s2; - s1++; - s2++; - } - - return 0; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} - diff --git a/newlib/libc/string/memcpy.c b/newlib/libc/string/memcpy.c deleted file mode 100644 index 5336f25..0000000 --- a/newlib/libc/string/memcpy.c +++ /dev/null @@ -1,111 +0,0 @@ -/* -FUNCTION - <<memcpy>>---copy memory regions - -ANSI_SYNOPSIS - #include <string.h> - void* memcpy(void *<[out]>, const void *<[in]>, size_t <[n]>); - -TRAD_SYNOPSIS - void *memcpy(<[out]>, <[in]>, <[n]> - void *<[out]>; - void *<[in]>; - size_t <[n]>; - -DESCRIPTION - This function copies <[n]> bytes from the memory region - pointed to by <[in]> to the memory region pointed to by - <[out]>. - - If the regions overlap, the behavior is undefined. - -RETURNS - <<memcpy>> returns a pointer to the first byte of the <[out]> - region. - -PORTABILITY -<<memcpy>> is ANSI C. - -<<memcpy>> requires no supporting OS subroutines. - -QUICKREF - memcpy ansi pure - */ - -#include <_ansi.h> -#include <stddef.h> -#include <limits.h> - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -/* How many bytes are copied each iteration of the 4X unrolled loop. */ -#define BIGBLOCKSIZE (sizeof (long) << 2) - -/* How many bytes are copied each iteration of the word copy loop. */ -#define LITTLEBLOCKSIZE (sizeof (long)) - -/* Threshhold for punting to the byte copier. */ -#define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) - -_PTR -_DEFUN (memcpy, (dst0, src0, len0), - _PTR dst0 _AND - _CONST _PTR src0 _AND - size_t len0) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *dst = (char *) dst0; - char *src = (char *) src0; - - _PTR save = dst0; - - while (len0--) - { - *dst++ = *src++; - } - - return save; -#else - char *dst = dst0; - _CONST char *src = src0; - long *aligned_dst; - _CONST long *aligned_src; - int len = len0; - - /* If the size is small, or either SRC or DST is unaligned, - then punt into the byte copy loop. This should be rare. */ - if (!TOO_SMALL(len) && !UNALIGNED (src, dst)) - { - aligned_dst = (long*)dst; - aligned_src = (long*)src; - - /* Copy 4X long words at a time if possible. */ - while (len >= BIGBLOCKSIZE) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= BIGBLOCKSIZE; - } - - /* Copy one long word at a time if possible. */ - while (len >= LITTLEBLOCKSIZE) - { - *aligned_dst++ = *aligned_src++; - len -= LITTLEBLOCKSIZE; - } - - /* Pick up any residual with a byte copier. */ - dst = (char*)aligned_dst; - src = (char*)aligned_src; - } - - while (len--) - *dst++ = *src++; - - return dst0; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/memmove.c b/newlib/libc/string/memmove.c deleted file mode 100644 index 2528e27..0000000 --- a/newlib/libc/string/memmove.c +++ /dev/null @@ -1,143 +0,0 @@ -/* -FUNCTION - <<memmove>>---move possibly overlapping memory - -INDEX - memmove - -ANSI_SYNOPSIS - #include <string.h> - void *memmove(void *<[dst]>, const void *<[src]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - void *memmove(<[dst]>, <[src]>, <[length]>) - void *<[dst]>; - void *<[src]>; - size_t <[length]>; - -DESCRIPTION - This function moves <[length]> characters from the block of - memory starting at <<*<[src]>>> to the memory starting at - <<*<[dst]>>>. <<memmove>> reproduces the characters correctly - at <<*<[dst]>>> even if the two areas overlap. - - -RETURNS - The function returns <[dst]> as passed. - -PORTABILITY -<<memmove>> is ANSI C. - -<<memmove>> requires no supporting OS subroutines. - -QUICKREF - memmove ansi pure -*/ - -#include <string.h> -#include <_ansi.h> -#include <stddef.h> -#include <limits.h> - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -/* How many bytes are copied each iteration of the 4X unrolled loop. */ -#define BIGBLOCKSIZE (sizeof (long) << 2) - -/* How many bytes are copied each iteration of the word copy loop. */ -#define LITTLEBLOCKSIZE (sizeof (long)) - -/* Threshhold for punting to the byte copier. */ -#define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) - -/*SUPPRESS 20*/ -_PTR -_DEFUN (memmove, (dst_void, src_void, length), - _PTR dst_void _AND - _CONST _PTR src_void _AND - size_t length) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *dst = dst_void; - _CONST char *src = src_void; - - if (src < dst && dst < src + length) - { - /* Have to copy backwards */ - src += length; - dst += length; - while (length--) - { - *--dst = *--src; - } - } - else - { - while (length--) - { - *dst++ = *src++; - } - } - - return dst_void; -#else - char *dst = dst_void; - _CONST char *src = src_void; - long *aligned_dst; - _CONST long *aligned_src; - int len = length; - - if (src < dst && dst < src + len) - { - /* Destructive overlap...have to copy backwards */ - src += len; - dst += len; - while (len--) - { - *--dst = *--src; - } - } - else - { - /* Use optimizing algorithm for a non-destructive copy to closely - match memcpy. If the size is small or either SRC or DST is unaligned, - then punt into the byte copy loop. This should be rare. */ - if (!TOO_SMALL(len) && !UNALIGNED (src, dst)) - { - aligned_dst = (long*)dst; - aligned_src = (long*)src; - - /* Copy 4X long words at a time if possible. */ - while (len >= BIGBLOCKSIZE) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= BIGBLOCKSIZE; - } - - /* Copy one long word at a time if possible. */ - while (len >= LITTLEBLOCKSIZE) - { - *aligned_dst++ = *aligned_src++; - len -= LITTLEBLOCKSIZE; - } - - /* Pick up any residual with a byte copier. */ - dst = (char*)aligned_dst; - src = (char*)aligned_src; - } - - while (len--) - { - *dst++ = *src++; - } - } - - return dst_void; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/memset.c b/newlib/libc/string/memset.c deleted file mode 100644 index a5890c8..0000000 --- a/newlib/libc/string/memset.c +++ /dev/null @@ -1,109 +0,0 @@ -/* -FUNCTION - <<memset>>---set an area of memory - -INDEX - memset - -ANSI_SYNOPSIS - #include <string.h> - void *memset(const void *<[dst]>, int <[c]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - void *memset(<[dst]>, <[c]>, <[length]>) - void *<[dst]>; - int <[c]>; - size_t <[length]>; - -DESCRIPTION - This function converts the argument <[c]> into an unsigned - char and fills the first <[length]> characters of the array - pointed to by <[dst]> to the value. - -RETURNS - <<memset>> returns the value of <[m]>. - -PORTABILITY -<<memset>> is ANSI C. - - <<memset>> requires no supporting OS subroutines. - -QUICKREF - memset ansi pure -*/ - -#include <string.h> - -#define LBLOCKSIZE (sizeof(long)) -#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) -#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) - -_PTR -_DEFUN (memset, (m, c, n), - _PTR m _AND - int c _AND - size_t n) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *s = (char *) m; - - while (n-- != 0) - { - *s++ = (char) c; - } - - return m; -#else - char *s = (char *) m; - int i; - unsigned long buffer; - unsigned long *aligned_addr; - - if (!TOO_SMALL (n) && !UNALIGNED (m)) - { - /* If we get this far, we know that n is large and m is word-aligned. */ - - aligned_addr = (unsigned long*)m; - - /* Store C into each char sized location in BUFFER so that - we can set large blocks quickly. */ - c &= 0xff; - if (LBLOCKSIZE == 4) - { - buffer = (c << 8) | c; - buffer |= (buffer << 16); - } - else - { - buffer = 0; - for (i = 0; i < LBLOCKSIZE; i++) - buffer = (buffer << 8) | c; - } - - while (n >= LBLOCKSIZE*4) - { - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - n -= 4*LBLOCKSIZE; - } - - while (n >= LBLOCKSIZE) - { - *aligned_addr++ = buffer; - n -= LBLOCKSIZE; - } - /* Pick up the remainder with a bytewise loop. */ - s = (char*)aligned_addr; - } - - while (n--) - { - *s++ = (char)c; - } - - return m; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/rindex.c b/newlib/libc/string/rindex.c deleted file mode 100644 index 3c6dff9..0000000 --- a/newlib/libc/string/rindex.c +++ /dev/null @@ -1,44 +0,0 @@ -/* -FUNCTION - <<rindex>>---reverse search for character in string - -INDEX - rindex - -ANSI_SYNOPSIS - #include <string.h> - char * rindex(const char *<[string]>, int <[c]>); - -TRAD_SYNOPSIS - #include <string.h> - char * rindex(<[string]>, <[c]>); - char *<[string]>; - int *<[c]>; - -DESCRIPTION - This function finds the last occurence of <[c]> (converted to - a char) in the string pointed to by <[string]> (including the - terminating null character). - - This function is identical to <<strrchr>>. - -RETURNS - Returns a pointer to the located character, or a null pointer - if <[c]> does not occur in <[string]>. - -PORTABILITY -<<rindex>> requires no supporting OS subroutines. - -QUICKREF - rindex - pure -*/ - -#include <string.h> - -char * -_DEFUN (rindex, (s, c), - _CONST char *s _AND - int c) -{ - return strrchr (s, c); -} diff --git a/newlib/libc/string/strcasecmp.c b/newlib/libc/string/strcasecmp.c deleted file mode 100644 index 4dcfc78..0000000 --- a/newlib/libc/string/strcasecmp.c +++ /dev/null @@ -1,56 +0,0 @@ -/* -FUNCTION - <<strcasecmp>>---case insensitive character string compare - -INDEX - strcasecmp - -ANSI_SYNOPSIS - #include <string.h> - int strcasecmp(const char *<[a]>, const char *<[b]>); - -TRAD_SYNOPSIS - #include <string.h> - int strcasecmp(<[a]>, <[b]>) - char *<[a]>; - char *<[b]>; - -DESCRIPTION - <<strcasecmp>> compares the string at <[a]> to - the string at <[b]> in a case-insensitive manner. - -RETURNS - - If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after - both are converted to upper case), <<strcasecmp>> returns a - number greater than zero. If the two strings match, - <<strcasecmp>> returns zero. If <<*<[a]>>> sorts - lexicographically before <<*<[b]>>>, <<strcasecmp>> returns a - number less than zero. - -PORTABILITY -<<strcasecmp>> is in the Berkeley Software Distribution. - -<<strcasecmp>> requires no supporting OS subroutines. It uses -tolower() from elsewhere in this library. - -QUICKREF - strcasecmp -*/ - -#include <string.h> -#include <ctype.h> - -int -_DEFUN (strcasecmp, (s1, s2), - _CONST char *s1 _AND - _CONST char *s2) -{ - while (*s1 != '\0' && tolower(*s1) == tolower(*s2)) - { - s1++; - s2++; - } - - return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); -} diff --git a/newlib/libc/string/strcat.c b/newlib/libc/string/strcat.c deleted file mode 100644 index 411eadb..0000000 --- a/newlib/libc/string/strcat.c +++ /dev/null @@ -1,104 +0,0 @@ -/* -FUNCTION - <<strcat>>---concatenate strings - -INDEX - strcat - -ANSI_SYNOPSIS - #include <string.h> - char *strcat(char *<[dst]>, const char *<[src]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strcat(<[dst]>, <[src]>) - char *<[dst]>; - char *<[src]>; - -DESCRIPTION - <<strcat>> appends a copy of the string pointed to by <[src]> - (including the terminating null character) to the end of the - string pointed to by <[dst]>. The initial character of - <[src]> overwrites the null character at the end of <[dst]>. - -RETURNS - This function returns the initial value of <[dst]> - -PORTABILITY -<<strcat>> is ANSI C. - -<<strcat>> requires no supporting OS subroutines. - -QUICKREF - strcat ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/* Nonzero if X is aligned on a "long" boundary. */ -#define ALIGNED(X) \ - (((long)X & (sizeof (long) - 1)) == 0) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - - -/*SUPPRESS 560*/ -/*SUPPRESS 530*/ - -char * -_DEFUN (strcat, (s1, s2), - char *s1 _AND - _CONST char *s2) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *s = s1; - - while (*s1) - s1++; - - while (*s1++ = *s2++) - ; - return s; -#else - char *s = s1; - - - /* Skip over the data in s1 as quickly as possible. */ - if (ALIGNED (s1)) - { - unsigned long *aligned_s1 = (unsigned long *)s1; - while (!DETECTNULL (*aligned_s1)) - aligned_s1++; - - s1 = (char *)aligned_s1; - } - - while (*s1) - s1++; - - /* s1 now points to the its trailing null character, we can - just use strcpy to do the work for us now. - - ?!? We might want to just include strcpy here. - Also, this will cause many more unaligned string copies because - s1 is much less likely to be aligned. I don't know if its worth - tweaking strcpy to handle this better. */ - strcpy (s1, s2); - - return s; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strchr.c b/newlib/libc/string/strchr.c deleted file mode 100644 index de4585f..0000000 --- a/newlib/libc/string/strchr.c +++ /dev/null @@ -1,108 +0,0 @@ -/* -FUNCTION - <<strchr>>---search for character in string - -INDEX - strchr - -ANSI_SYNOPSIS - #include <string.h> - char * strchr(const char *<[string]>, int <[c]>); - -TRAD_SYNOPSIS - #include <string.h> - char * strchr(<[string]>, <[c]>); - char *<[string]>; - int *<[c]>; - -DESCRIPTION - This function finds the first occurence of <[c]> (converted to - a char) in the string pointed to by <[string]> (including the - terminating null character). - -RETURNS - Returns a pointer to the located character, or a null pointer - if <[c]> does not occur in <[string]>. - -PORTABILITY -<<strchr>> is ANSI C. - -<<strchr>> requires no supporting OS subroutines. - -QUICKREF - strchr ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/* Nonzero if X is not aligned on a "long" boundary. */ -#define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) - -/* How many bytes are loaded each iteration of the word copy loop. */ -#define LBLOCKSIZE (sizeof (long)) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -/* DETECTCHAR returns nonzero if (long)X contains the byte used - to fill (long)MASK. */ -#define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) - -char * -_DEFUN (strchr, (s1, i), - _CONST char *s1 _AND - int i) -{ - _CONST unsigned char *s = (_CONST unsigned char *)s1; -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - unsigned char c = (unsigned int)i; - - while (*s && *s != c) - { - s++; - } - - if (*s != c) - { - s = NULL; - } - - return (char *) s; -#else - unsigned char c = (unsigned char)i; - unsigned long mask,j; - unsigned long *aligned_addr; - - if (!UNALIGNED (s)) - { - mask = 0; - for (j = 0; j < LBLOCKSIZE; j++) - mask = (mask << 8) | c; - - aligned_addr = (unsigned long*)s; - while (!DETECTNULL (*aligned_addr) && !DETECTCHAR (*aligned_addr, mask)) - aligned_addr++; - - /* The block of bytes currently pointed to by aligned_addr - contains either a null or the target char, or both. We - catch it using the bytewise search. */ - - s = (unsigned char*)aligned_addr; - } - - while (*s && *s != c) - s++; - if (*s == c) - return (char *)s; - return NULL; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strcmp.c b/newlib/libc/string/strcmp.c deleted file mode 100644 index 81d6527..0000000 --- a/newlib/libc/string/strcmp.c +++ /dev/null @@ -1,106 +0,0 @@ -/* -FUNCTION - <<strcmp>>---character string compare - -INDEX - strcmp - -ANSI_SYNOPSIS - #include <string.h> - int strcmp(const char *<[a]>, const char *<[b]>); - -TRAD_SYNOPSIS - #include <string.h> - int strcmp(<[a]>, <[b]>) - char *<[a]>; - char *<[b]>; - -DESCRIPTION - <<strcmp>> compares the string at <[a]> to - the string at <[b]>. - -RETURNS - If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, - <<strcmp>> returns a number greater than zero. If the two - strings match, <<strcmp>> returns zero. If <<*<[a]>>> - sorts lexicographically before <<*<[b]>>>, <<strcmp>> returns a - number less than zero. - -PORTABILITY -<<strcmp>> is ANSI C. - -<<strcmp>> requires no supporting OS subroutines. - -QUICKREF - strcmp ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -/* DETECTNULL returns nonzero if (long)X contains a NULL byte. */ -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -int -_DEFUN (strcmp, (s1, s2), - _CONST char *s1 _AND - _CONST char *s2) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - while (*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -#else - unsigned long *a1; - unsigned long *a2; - - /* If s1 or s2 are unaligned, then compare bytes. */ - if (!UNALIGNED (s1, s2)) - { - /* If s1 and s2 are word-aligned, compare them a word at a time. */ - a1 = (unsigned long*)s1; - a2 = (unsigned long*)s2; - while (*a1 == *a2) - { - /* To get here, *a1 == *a2, thus if we find a null in *a1, - then the strings must be equal, so return zero. */ - if (DETECTNULL (*a1)) - return 0; - - a1++; - a2++; - } - - /* A difference was detected in last few bytes of s1, so search bytewise */ - s1 = (char*)a1; - s2 = (char*)a2; - } - - while (*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strcoll.c b/newlib/libc/string/strcoll.c deleted file mode 100644 index 8760b22..0000000 --- a/newlib/libc/string/strcoll.c +++ /dev/null @@ -1,48 +0,0 @@ -/* -FUNCTION - <<strcoll>>---locale specific character string compare - -INDEX - strcoll - -ANSI_SYNOPSIS - #include <string.h> - int strcoll(const char *<[stra]>, const char * <[strb]>); - -TRAD_SYNOPSIS - #include <string.h> - int strcoll(<[stra]>, <[strb]>) - char *<[stra]>; - char *<[strb]>; - -DESCRIPTION - <<strcoll>> compares the string pointed to by <[stra]> to - the string pointed to by <[strb]>, using an interpretation - appropriate to the current <<LC_COLLATE>> state. - -RETURNS - If the first string is greater than the second string, - <<strcoll>> returns a number greater than zero. If the two - strings are equivalent, <<strcoll>> returns zero. If the first - string is less than the second string, <<strcoll>> returns a - number less than zero. - -PORTABILITY -<<strcoll>> is ANSI C. - -<<strcoll>> requires no supporting OS subroutines. - -QUICKREF - strcoll ansi pure -*/ - -#include <string.h> - -int -_DEFUN (strcoll, (a, b), - _CONST char *a _AND - _CONST char *b) - -{ - return strcmp (a, b); -} diff --git a/newlib/libc/string/strcpy.c b/newlib/libc/string/strcpy.c deleted file mode 100644 index 905b254..0000000 --- a/newlib/libc/string/strcpy.c +++ /dev/null @@ -1,99 +0,0 @@ -/* -FUNCTION - <<strcpy>>---copy string - -INDEX - strcpy - -ANSI_SYNOPSIS - #include <string.h> - char *strcpy(char *<[dst]>, const char *<[src]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strcpy(<[dst]>, <[src]>) - char *<[dst]>; - char *<[src]>; - -DESCRIPTION - <<strcpy>> copies the string pointed to by <[src]> - (including the terminating null character) to the array - pointed to by <[dst]>. - -RETURNS - This function returns the initial value of <[dst]>. - -PORTABILITY -<<strcpy>> is ANSI C. - -<<strcpy>> requires no supporting OS subroutines. - -QUICKREF - strcpy ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/*SUPPRESS 560*/ -/*SUPPRESS 530*/ - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -char* -_DEFUN (strcpy, (dst0, src0), - char *dst0 _AND - _CONST char *src0) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *s = dst0; - - while (*dst0++ = *src0++) - ; - - return s; -#else - char *dst = dst0; - _CONST char *src = src0; - long *aligned_dst; - _CONST long *aligned_src; - - /* If SRC or DEST is unaligned, then copy bytes. */ - if (!UNALIGNED (src, dst)) - { - aligned_dst = (long*)dst; - aligned_src = (long*)src; - - /* SRC and DEST are both "long int" aligned, try to do "long int" - sized copies. */ - while (!DETECTNULL(*aligned_src)) - { - *aligned_dst++ = *aligned_src++; - } - - dst = (char*)aligned_dst; - src = (char*)aligned_src; - } - - while (*dst++ = *src++) - ; - return dst0; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strcspn.c b/newlib/libc/string/strcspn.c deleted file mode 100644 index fe68b8f..0000000 --- a/newlib/libc/string/strcspn.c +++ /dev/null @@ -1,54 +0,0 @@ -/* -FUNCTION - <<strcspn>>---count chars not in string - -INDEX - strcspn - -ANSI_SYNOPSIS - size_t strcspn(const char *<[s1]>, const char *<[s2]>); - -TRAD_SYNOPSIS - size_t strcspn(<[s1]>, <[s2]>) - char *<[s1]>; - char *<[s2]>; - -DESCRIPTION - This function computes the length of the initial part of - the string pointed to by <[s1]> which consists entirely of - characters <[NOT]> from the string pointed to by <[s2]> - (excluding the terminating null character). - -RETURNS - <<strcspn>> returns the length of the substring found. - -PORTABILITY -<<strcspn>> is ANSI C. - -<<strcspn>> requires no supporting OS subroutines. - */ - -#include <string.h> - -size_t -_DEFUN (strcspn, (s1, s2), - _CONST char *s1 _AND - _CONST char *s2) -{ - _CONST char *s = s1; - _CONST char *c; - - while (*s1) - { - for (c = s2; *c; c++) - { - if (*s1 == *c) - break; - } - if (*c) - break; - s1++; - } - - return s1 - s; -} diff --git a/newlib/libc/string/strerror.c b/newlib/libc/string/strerror.c deleted file mode 100644 index 7833659..0000000 --- a/newlib/libc/string/strerror.c +++ /dev/null @@ -1,650 +0,0 @@ -/*** -**** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message -**** here, change two places: -**** 1) the leading doc section (alphabetized by macro) -**** 2) the real text inside switch(errnum) -***/ - -/* -FUNCTION - <<strerror>>---convert error number to string - -INDEX - strerror - -ANSI_SYNOPSIS - #include <string.h> - char *strerror(int <[errnum]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strerror(<[errnum]>) - int <[errnum]>; - -DESCRIPTION -<<strerror>> converts the error number <[errnum]> into a -string. The value of <[errnum]> is usually a copy of <<errno>>. -If <<errnum>> is not a known error number, the result points to an -empty string. - -This implementation of <<strerror>> prints out the following strings -for each of the values defined in `<<errno.h>>': - -o+ -o E2BIG -Arg list too long - -o EACCES -Permission denied - -o EADV -Advertise error - -o EAGAIN -No more processes - -o EBADF -Bad file number - -o EBADMSG -Bad message - -o EBUSY -Device or resource busy - -o ECHILD -No children - -o ECOMM -Communication error - -o EDEADLK -Deadlock - -o EEXIST -File exists - -o EDOM -Math argument - -o EFAULT -Bad address - -o EFBIG -File too large - -o EIDRM -Identifier removed - -o EINTR -Interrupted system call - -o EINVAL -Invalid argument - -o EIO -I/O error - -o EISDIR -Is a directory - -o ELIBACC -Cannot access a needed shared library - -o ELIBBAD -Accessing a corrupted shared library - -o ELIBEXEC -Cannot exec a shared library directly - -o ELIBMAX -Attempting to link in more shared libraries than system limit - -o ELIBSCN -<<.lib>> section in a.out corrupted - -o EMFILE -Too many open files - -o EMLINK -Too many links - -o EMULTIHOP -Multihop attempted - -o ENAMETOOLONG -File or path name too long - -o ENFILE -Too many open files in system - -o ENODEV -No such device - -o ENOENT -No such file or directory - -o ENOEXEC -Exec format error - -o ENOLCK -No lock - -o ENOLINK -Virtual circuit is gone - -o ENOMEM -Not enough space - -o ENOMSG -No message of desired type - -o ENONET -Machine is not on the network - -o ENOPKG -No package - -o ENOSPC -No space left on device - -o ENOSR -No stream resources - -o ENOSTR -Not a stream - -o ENOSYS -Function not implemented - -o ENOTBLK -Block device required - -o ENOTDIR -Not a directory - -o ENOTEMPTY -Directory not empty - -o ENOTTY -Not a character device - -o ENXIO -No such device or address - -o EPERM -Not owner - -o EPIPE -Broken pipe - -o EPROTO -Protocol error - -o ERANGE -Result too large - -o EREMOTE -Resource is remote - -o EROFS -Read-only file system - -o ESPIPE -Illegal seek - -o ESRCH -No such process - -o ESRMNT -Srmount error - -o ETIME -Stream ioctl timeout - -o ETXTBSY -Text file busy - -o EXDEV -Cross-device link - -o- - -RETURNS -This function returns a pointer to a string. Your application must -not modify that string. - -PORTABILITY -ANSI C requires <<strerror>>, but does not specify the strings used -for each error number. - -Although this implementation of <<strerror>> is reentrant, ANSI C -declares that subsequent calls to <<strerror>> may overwrite the -result string; therefore portable code cannot depend on the reentrancy -of this subroutine. - -This implementation of <<strerror>> provides for user-defined -extensibility. <<errno.h>> defines <[__ELASTERROR]>, which can be -used as a base for user-defined error values. If the user supplies a -routine named <<_user_strerror>>, and <[errnum]> passed to -<<strerror>> does not match any of the supported values, -<<_user_strerror>> is called with <[errnum]> as its argument. - -<<_user_strerror>> takes one argument of type <[int]>, and returns a -character pointer. If <[errnum]> is unknown to <<_user_strerror>>, -<<_user_strerror>> returns <[NULL]>. The default <<_user_strerror>> -returns <[NULL]> for all input values. - -<<strerror>> requires no supporting OS subroutines. - -QUICKREF - strerror ansi pure -*/ - -#include <errno.h> -#include <string.h> - -char * -_DEFUN (strerror, (errnum), - int errnum) -{ - char *error; - extern char *_user_strerror _PARAMS ((int)); - - switch (errnum) - { -/* go32 defines EPERM as EACCES */ -#if defined (EPERM) && (!defined (EACCES) || (EPERM != EACCES)) - case EPERM: - error = "Not owner"; - break; -#endif -#ifdef ENOENT - case ENOENT: - error = "No such file or directory"; - break; -#endif -#ifdef ESRCH - case ESRCH: - error = "No such process"; - break; -#endif -#ifdef EINTR - case EINTR: - error = "Interrupted system call"; - break; -#endif -#ifdef EIO - case EIO: - error = "I/O error"; - break; -#endif -/* go32 defines ENXIO as ENODEV */ -#if defined (ENXIO) && (!defined (ENODEV) || (ENXIO != ENODEV)) - case ENXIO: - error = "No such device or address"; - break; -#endif -#ifdef E2BIG - case E2BIG: - error = "Arg list too long"; - break; -#endif -#ifdef ENOEXEC - case ENOEXEC: - error = "Exec format error"; - break; -#endif -#ifdef EBADF - case EBADF: - error = "Bad file number"; - break; -#endif -#ifdef ECHILD - case ECHILD: - error = "No children"; - break; -#endif -#ifdef EAGAIN - case EAGAIN: - error = "No more processes"; - break; -#endif -#ifdef ENOMEM - case ENOMEM: - error = "Not enough space"; - break; -#endif -#ifdef EACCES - case EACCES: - error = "Permission denied"; - break; -#endif -#ifdef EFAULT - case EFAULT: - error = "Bad address"; - break; -#endif -#ifdef ENOTBLK - case ENOTBLK: - error = "Block device required"; - break; -#endif -#ifdef EBUSY - case EBUSY: - error = "Device or resource busy"; - break; -#endif -#ifdef EEXIST - case EEXIST: - error = "File exists"; - break; -#endif -#ifdef EXDEV - case EXDEV: - error = "Cross-device link"; - break; -#endif -#ifdef ENODEV - case ENODEV: - error = "No such device"; - break; -#endif -#ifdef ENOTDIR - case ENOTDIR: - error = "Not a directory"; - break; -#endif -#ifdef EISDIR - case EISDIR: - error = "Is a directory"; - break; -#endif -#ifdef EINVAL - case EINVAL: - error = "Invalid argument"; - break; -#endif -#ifdef ENFILE - case ENFILE: - error = "Too many open files in system"; - break; -#endif -#ifdef EMFILE - case EMFILE: - error = "Too many open files"; - break; -#endif -#ifdef ENOTTY - case ENOTTY: - error = "Not a character device"; - break; -#endif -#ifdef ETXTBSY - case ETXTBSY: - error = "Text file busy"; - break; -#endif -#ifdef EFBIG - case EFBIG: - error = "File too large"; - break; -#endif -#ifdef ENOSPC - case ENOSPC: - error = "No space left on device"; - break; -#endif -#ifdef ESPIPE - case ESPIPE: - error = "Illegal seek"; - break; -#endif -#ifdef EROFS - case EROFS: - error = "Read-only file system"; - break; -#endif -#ifdef EMLINK - case EMLINK: - error = "Too many links"; - break; -#endif -#ifdef EPIPE - case EPIPE: - error = "Broken pipe"; - break; -#endif -#ifdef EDOM - case EDOM: - error = "Math argument"; - break; -#endif -#ifdef ERANGE - case ERANGE: - error = "Result too large"; - break; -#endif -#ifdef ENOMSG - case ENOMSG: - error = "No message of desired type"; - break; -#endif -#ifdef EIDRM - case EIDRM: - error = "Identifier removed"; - break; -#endif -#ifdef EDEADLK - case EDEADLK: - error = "Deadlock"; - break; -#endif -#ifdef ENOLCK - case ENOLCK: - error = "No lock"; - break; -#endif -#ifdef ENOSTR - case ENOSTR: - error = "Not a stream"; - break; -#endif -#ifdef ETIME - case ETIME: - error = "Stream ioctl timeout"; - break; -#endif -#ifdef ENOSR - case ENOSR: - error = "No stream resources"; - break; -#endif -#ifdef ENONET - case ENONET: - error = "Machine is not on the network"; - break; -#endif -#ifdef ENOPKG - case ENOPKG: - error = "No package"; - break; -#endif -#ifdef EREMOTE - case EREMOTE: - error = "Resource is remote"; - break; -#endif -#ifdef ENOLINK - case ENOLINK: - error = "Virtual circuit is gone"; - break; -#endif -#ifdef EADV - case EADV: - error = "Advertise error"; - break; -#endif -#ifdef ESRMNT - case ESRMNT: - error = "Srmount error"; - break; -#endif -#ifdef ECOMM - case ECOMM: - error = "Communication error"; - break; -#endif -#ifdef EPROTO - case EPROTO: - error = "Protocol error"; - break; -#endif -#ifdef EMULTIHOP - case EMULTIHOP: - error = "Multihop attempted"; - break; -#endif -#ifdef EBADMSG - case EBADMSG: - error = "Bad message"; - break; -#endif -#ifdef ELIBACC - case ELIBACC: - error = "Cannot access a needed shared library"; - break; -#endif -#ifdef ELIBBAD - case ELIBBAD: - error = "Accessing a corrupted shared library"; - break; -#endif -#ifdef ELIBSCN - case ELIBSCN: - error = ".lib section in a.out corrupted"; - break; -#endif -#ifdef ELIBMAX - case ELIBMAX: - error = "Attempting to link in more shared libraries than system limit"; - break; -#endif -#ifdef ELIBEXEC - case ELIBEXEC: - error = "Cannot exec a shared library directly"; - break; -#endif -#ifdef ENOSYS - case ENOSYS: - error = "Function not implemented"; - break; -#endif -#ifdef ENMFILE - case ENMFILE: - error = "No more files"; - break; -#endif -#ifdef ENOTEMPTY - case ENOTEMPTY: - error = "Directory not empty"; - break; -#endif -#ifdef ENAMETOOLONG - case ENAMETOOLONG: - error = "File or path name too long"; - break; -#endif -#ifdef ELOOP - case ELOOP: - error = "Too many symbolic links"; - break; -#endif -#ifdef ENOBUFS - case ENOBUFS: - error = "No buffer space available"; - break; -#endif -#ifdef EAFNOSUPPORT - case EAFNOSUPPORT: - error = "Address family not supported by protocol family"; - break; -#endif -#ifdef EPROTOTYPE - case EPROTOTYPE: - error = "Protocol wrong type for socket"; - break; -#endif -#ifdef ENOTSOCK - case ENOTSOCK: - error = "Socket operation on non-socket"; - break; -#endif -#ifdef ENOPROTOOPT - case ENOPROTOOPT: - error = "Protocol not available"; - break; -#endif -#ifdef ESHUTDOWN - case ESHUTDOWN: - error = "Can't send after socket shutdown"; - break; -#endif -#ifdef ECONNREFUSED - case ECONNREFUSED: - error = "Connection refused"; - break; -#endif -#ifdef EADDRINUSE - case EADDRINUSE: - error = "Address already in use"; - break; -#endif -#ifdef ECONNABORTED - case ECONNABORTED: - error = "Software caused connection abort"; - break; -#endif -#if (defined(EWOULDBLOCK) && (!defined (EAGAIN) || (EWOULDBLOCK != EAGAIN))) - case EWOULDBLOCK: - error = "Operation would block"; - break; -#endif -#ifdef ENOTCONN - case ENOTCONN: - error = "Socket is not connected"; - break; -#endif -#ifdef ESOCKTNOSUPPORT - case ESOCKTNOSUPPORT: - error = "Socket type not supported"; - break; -#endif -#ifdef EISCONN - case EISCONN: - error = "Socket is already connected"; - break; -#endif -#ifdef EOPNOTSUPP - case EOPNOTSUPP: - error = "Operation not supported on socket"; - break; -#endif -#ifdef EMSGSIZE - case EMSGSIZE: - error = "Message too long"; - break; -#endif -#ifdef ETIMEDOUT - case ETIMEDOUT: - error = "Connection timed out"; - break; -#endif - default: - if ((error = _user_strerror (errnum)) == 0) - error = ""; - break; - } - - return error; -} diff --git a/newlib/libc/string/strings.tex b/newlib/libc/string/strings.tex deleted file mode 100644 index f70580b..0000000 --- a/newlib/libc/string/strings.tex +++ /dev/null @@ -1,137 +0,0 @@ -@node Strings -@chapter Strings and Memory (@file{string.h}) - -This chapter describes string-handling functions and functions for -managing areas of memory. The corresponding declarations are in -@file{string.h}. - -@menu -* bcmp:: Compare two memory areas -* bcopy:: Copy memory regions -* bzero:: Initialize memory to zero -* index:: Search for character in string -* memchr:: Find character in memory -* memcmp:: Compare two memory areas -* memcpy:: Copy memory regions -* memmove:: Move possibly overlapping memory -* memset:: Set an area of memory -* rindex:: Reverse search for character in string -* strcasecmp:: Compare strings ignoring case -* strcat:: Concatenate strings -* strchr:: Search for character in string -* strcmp:: Character string compare -* strcoll:: Locale specific character string compare -* strcpy:: Copy string -* strcspn:: Count chars not in string -* strerror:: Convert error number to string -* strlen:: Character string length -* strlwr:: Convert string to lower case -* strncasecmp:: Compare strings ignoring case -* strncat:: Concatenate strings -* strncmp:: Character string compare -* strncpy:: Counted copy string -* strpbrk:: Find chars in string -* strrchr:: Reverse search for character in string -* strspn:: Find initial match -* strstr:: Find string segment -* strtok:: Get next token from a string -* strupr:: Convert string to upper case -* strxfrm:: Transform string -* swab:: Swap adjacent bytes -@end menu - -@page -@include string/bcmp.def - -@page -@include string/bcopy.def - -@page -@include string/bzero.def - -@page -@include string/index.def - -@page -@include string/memchr.def - -@page -@include string/memcmp.def - -@page -@include string/memcpy.def - -@page -@include string/memmove.def - -@page -@include string/memset.def - -@page -@include string/rindex.def - -@page -@include string/strcasecmp.def - -@page -@include string/strcat.def - -@page -@include string/strchr.def - -@page -@include string/strcmp.def - -@page -@include string/strcoll.def - -@page -@include string/strcpy.def - -@page -@include string/strcspn.def - -@page -@include string/strerror.def - -@page -@include string/strlen.def - -@page -@include string/strlwr.def - -@page -@include string/strncasecmp.def - -@page -@include string/strncat.def - -@page -@include string/strncmp.def - -@page -@include string/strncpy.def - -@page -@include string/strpbrk.def - -@page -@include string/strrchr.def - -@page -@include string/strspn.def - -@page -@include string/strstr.def - -@page -@include string/strtok.def - -@page -@include string/strupr.def - -@page -@include string/strxfrm.def - -@page -@include string/swab.def diff --git a/newlib/libc/string/strlen.c b/newlib/libc/string/strlen.c deleted file mode 100644 index 4249e14..0000000 --- a/newlib/libc/string/strlen.c +++ /dev/null @@ -1,88 +0,0 @@ -/* -FUNCTION - <<strlen>>---character string length - -INDEX - strlen - -ANSI_SYNOPSIS - #include <string.h> - size_t strlen(const char *<[str]>); - -TRAD_SYNOPSIS - #include <string.h> - size_t strlen(<[str]>) - char *<[src]>; - -DESCRIPTION - The <<strlen>> function works out the length of the string - starting at <<*<[str]>>> by counting chararacters until it - reaches a <<NULL>> character. - -RETURNS - <<strlen>> returns the character count. - -PORTABILITY -<<strlen>> is ANSI C. - -<<strlen>> requires no supporting OS subroutines. - -QUICKREF - strlen ansi pure -*/ - -#include <_ansi.h> -#include <string.h> -#include <limits.h> - -#define LBLOCKSIZE (sizeof (long)) -#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -size_t -_DEFUN (strlen, (str), - _CONST char *str) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - _CONST char *start = str; - - while (*str) - str++; - - return str - start; -#else - _CONST char *start = str; - unsigned long *aligned_addr; - - if (!UNALIGNED (str)) - { - /* If the string is word-aligned, we can check for the presence of - a null in each word-sized block. */ - aligned_addr = (unsigned long*)str; - while (!DETECTNULL (*aligned_addr)) - aligned_addr++; - - /* Once a null is detected, we check each byte in that block for a - precise position of the null. */ - str = (char*)aligned_addr; - } - - while (*str) - str++; - return str - start; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strlwr.c b/newlib/libc/string/strlwr.c deleted file mode 100644 index cf0d45f..0000000 --- a/newlib/libc/string/strlwr.c +++ /dev/null @@ -1,50 +0,0 @@ -/* -FUNCTION - <<strlwr>>---force string to lower case - -INDEX - strlwr - -ANSI_SYNOPSIS - #include <string.h> - char *strlwr(char *<[a]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strlwr(<[a]>) - char *<[a]>; - -DESCRIPTION - <<strlwr>> converts each characters in the string at <[a]> to - lower case. - -RETURNS - <<strlwr>> returns its argument, <[a]>. - -PORTABILITY -<<strlwr>> is not widely portable. - -<<strlwr>> requires no supporting OS subroutines. - -QUICKREF - strlwr -*/ - -#include <string.h> -#include <ctype.h> - -char * -strlwr (a) - char *a; -{ - char *ret = a; - - while (*a != '\0') - { - if (isupper (*a)) - *a = tolower (*a); - ++a; - } - - return ret; -} diff --git a/newlib/libc/string/strncasecmp.c b/newlib/libc/string/strncasecmp.c deleted file mode 100644 index 28c6cc4..0000000 --- a/newlib/libc/string/strncasecmp.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -FUNCTION - <<strncasecmp>>---case insensitive character string compare - -INDEX - strncasecmp - -ANSI_SYNOPSIS - #include <string.h> - int strncasecmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - int strncasecmp(<[a]>, <[b]>, <[length]>) - char *<[a]>; - char *<[b]>; - size_t <[length]> - -DESCRIPTION - <<strncasecmp>> compares up to <[length]> characters - from the string at <[a]> to the string at <[b]> in a - case-insensitive manner. - -RETURNS - - If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after - both are converted to upper case), <<strncasecmp>> returns a - number greater than zero. If the two strings are equivalent, - <<strncasecmp>> returns zero. If <<*<[a]>>> sorts - lexicographically before <<*<[b]>>>, <<strncasecmp>> returns a - number less than zero. - -PORTABILITY -<<strncasecmp>> is in the Berkeley Software Distribution. - -<<strncasecmp>> requires no supporting OS subroutines. It uses -tolower() from elsewhere in this library. - -QUICKREF - strncasecmp -*/ - -#include <string.h> -#include <ctype.h> - -int -_DEFUN (strncasecmp, (s1, s2, n), - _CONST char *s1 _AND - _CONST char *s2 _AND - size_t n) -{ - if (n == 0) - return 0; - - while (n-- != 0 && tolower(*s1) == tolower(*s2)) - { - if (n == 0 || *s1 == '\0' || *s2 == '\0') - break; - s1++; - s2++; - } - - return tolower(*(unsigned char *) s1) - tolower(*(unsigned char *) s2); -} diff --git a/newlib/libc/string/strncat.c b/newlib/libc/string/strncat.c deleted file mode 100644 index 57ca068..0000000 --- a/newlib/libc/string/strncat.c +++ /dev/null @@ -1,115 +0,0 @@ -/* -FUNCTION - <<strncat>>---concatenate strings - -INDEX - strncat - -ANSI_SYNOPSIS - #include <string.h> - char *strncat(char *<[dst]>, const char *<[src]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strncat(<[dst]>, <[src]>, <[length]>) - char *<[dst]>; - char *<[src]>; - size_t <[length]>; - -DESCRIPTION - <<strncat>> appends not more than <[length]> characters from - the string pointed to by <[src]> (including the terminating - null character) to the end of the string pointed to by - <[dst]>. The initial character of <[src]> overwrites the null - character at the end of <[dst]>. A terminating null character - is always appended to the result - -WARNINGS - Note that a null is always appended, so that if the copy is - limited by the <[length]> argument, the number of characters - appended to <[dst]> is <<n + 1>>. - - -RETURNS - This function returns the initial value of <[dst]> - -PORTABILITY -<<strncat>> is ANSI C. - -<<strncat>> requires no supporting OS subroutines. - -QUICKREF - strncat ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/* Nonzero if X is aligned on a "long" boundary. */ -#define ALIGNED(X) \ - (((long)X & (sizeof (long) - 1)) == 0) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -char * -_DEFUN (strncat, (s1, s2, n), - char *s1 _AND - _CONST char *s2 _AND - size_t n) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *s = s1; - - while (*s1) - s1++; - while (n-- != 0 && (*s1++ = *s2++)) - { - if (n == 0) - *s1 = '\0'; - } - - return s; -#else - char *s = s1; - - /* Skip over the data in s1 as quickly as possible. */ - if (ALIGNED (s1)) - { - unsigned long *aligned_s1 = (unsigned long *)s1; - while (!DETECTNULL (*aligned_s1)) - aligned_s1++; - - s1 = (char *)aligned_s1; - } - - while (*s1) - s1++; - - /* s1 now points to the its trailing null character, now copy - up to N bytes from S2 into S1 stopping if a NULL is encountered - in S2. - - It is not safe to use strncpy here since it copies EXACTLY N - characters, NULL padding if necessary. */ - while (n-- != 0 && (*s1++ = *s2++)) - { - if (n == 0) - *s1 = '\0'; - } - - return s; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strncmp.c b/newlib/libc/string/strncmp.c deleted file mode 100644 index 9801b7d..0000000 --- a/newlib/libc/string/strncmp.c +++ /dev/null @@ -1,122 +0,0 @@ -/* -FUNCTION - <<strncmp>>---character string compare - -INDEX - strncmp - -ANSI_SYNOPSIS - #include <string.h> - int strncmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - int strncmp(<[a]>, <[b]>, <[length]>) - char *<[a]>; - char *<[b]>; - size_t <[length]> - -DESCRIPTION - <<strncmp>> compares up to <[length]> characters - from the string at <[a]> to the string at <[b]>. - -RETURNS - If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, - <<strncmp>> returns a number greater than zero. If the two - strings are equivalent, <<strncmp>> returns zero. If <<*<[a]>>> - sorts lexicographically before <<*<[b]>>>, <<strncmp>> returns a - number less than zero. - -PORTABILITY -<<strncmp>> is ANSI C. - -<<strncmp>> requires no supporting OS subroutines. - -QUICKREF - strncmp ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -/* DETECTNULL returns nonzero if (long)X contains a NULL byte. */ -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -int -_DEFUN (strncmp, (s1, s2, n), - _CONST char *s1 _AND - _CONST char *s2 _AND - size_t n) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - if (n == 0) - return 0; - - while (n-- != 0 && *s1 == *s2) - { - if (n == 0 || *s1 == '\0') - break; - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -#else - unsigned long *a1; - unsigned long *a2; - - if (n == 0) - return 0; - - /* If s1 or s2 are unaligned, then compare bytes. */ - if (!UNALIGNED (s1, s2)) - { - /* If s1 and s2 are word-aligned, compare them a word at a time. */ - a1 = (unsigned long*)s1; - a2 = (unsigned long*)s2; - while (n >= sizeof (long) && *a1 == *a2) - { - n -= sizeof (long); - - /* If we've run out of bytes or hit a null, return zero - since we already know *a1 == *a2. */ - if (n == 0 || DETECTNULL (*a1)) - return 0; - - a1++; - a2++; - } - - /* A difference was detected in last few bytes of s1, so search bytewise */ - s1 = (char*)a1; - s2 = (char*)a2; - } - - while (n-- > 0 && *s1 == *s2) - { - /* If we've run out of bytes or hit a null, return zero - since we already know *s1 == *s2. */ - if (n == 0 || *s1 == '\0') - return 0; - s1++; - s2++; - } - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strncpy.c b/newlib/libc/string/strncpy.c deleted file mode 100644 index 7c1973b..0000000 --- a/newlib/libc/string/strncpy.c +++ /dev/null @@ -1,125 +0,0 @@ -/* -FUNCTION - <<strncpy>>---counted copy string - -INDEX - strncpy - -ANSI_SYNOPSIS - #include <string.h> - char *strncpy(char *<[dst]>, const char *<[src]>, size_t <[length]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strncpy(<[dst]>, <[src]>, <[length]>) - char *<[dst]>; - char *<[src]>; - size_t <[length]>; - -DESCRIPTION - <<strncpy>> copies not more than <[length]> characters from the - the string pointed to by <[src]> (including the terminating - null character) to the array pointed to by <[dst]>. If the - string pointed to by <[src]> is shorter than <[length]> - characters, null characters are appended to the destination - array until a total of <[length]> characters have been - written. - -RETURNS - This function returns the initial value of <[dst]>. - -PORTABILITY -<<strncpy>> is ANSI C. - -<<strncpy>> requires no supporting OS subroutines. - -QUICKREF - strncpy ansi pure -*/ - -#include <string.h> -#include <limits.h> - -/*SUPPRESS 560*/ -/*SUPPRESS 530*/ - -/* Nonzero if either X or Y is not aligned on a "long" boundary. */ -#define UNALIGNED(X, Y) \ - (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -#ifndef DETECTNULL -#error long int is not a 32bit or 64bit byte -#endif - -#define TOO_SMALL(LEN) ((LEN) < sizeof (long)) - -char * -_DEFUN (strncpy, (dst0, src0), - char *dst0 _AND - _CONST char *src0 _AND - size_t count) -{ -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - char *dscan; - _CONST char *sscan; - - dscan = dst0; - sscan = src0; - while (count > 0) - { - --count; - if ((*dscan++ = *sscan++) == '\0') - break; - } - while (count-- > 0) - *dscan++ = '\0'; - - return dst0; -#else - char *dst = dst0; - _CONST char *src = src0; - long *aligned_dst; - _CONST long *aligned_src; - - /* If SRC and DEST is aligned and count large enough, then copy words. */ - if (!UNALIGNED (src, dst) && !TOO_SMALL (count)) - { - aligned_dst = (long*)dst; - aligned_src = (long*)src; - - /* SRC and DEST are both "long int" aligned, try to do "long int" - sized copies. */ - while (count >= sizeof (long int) && !DETECTNULL(*aligned_src)) - { - count -= sizeof (long int); - *aligned_dst++ = *aligned_src++; - } - - dst = (char*)aligned_dst; - src = (char*)aligned_src; - } - - while (count > 0) - { - --count; - if ((*dst++ = *src++) == '\0') - break; - } - - while (count-- > 0) - *dst++ = '\0'; - - return dst0; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} diff --git a/newlib/libc/string/strpbrk.c b/newlib/libc/string/strpbrk.c deleted file mode 100644 index e7f2dd2..0000000 --- a/newlib/libc/string/strpbrk.c +++ /dev/null @@ -1,58 +0,0 @@ -/* -FUNCTION - <<strpbrk>>---find chars in string - -INDEX - strpbrk - -ANSI_SYNOPSIS - #include <string.h> - char *strpbrk(const char *<[s1]>, const char *<[s2]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strpbrk(<[s1]>, <[s2]>) - char *<[s1]>; - char *<[s2]>; - -DESCRIPTION - This function locates the first occurence in the string - pointed to by <[s1]> of any character in string pointed to by - <[s2]> (excluding the terminating null character). - -RETURNS - <<strpbrk>> returns a pointer to the character found in <[s1]>, or a - null pointer if no character from <[s2]> occurs in <[s1]>. - -PORTABILITY -<<strpbrk>> requires no supporting OS subroutines. -*/ - -#include <string.h> - -char * -_DEFUN (strpbrk, (s1, s2), - _CONST char *s1 _AND - _CONST char *s2) -{ - _CONST char *c = s2; - if (!*s1) - return (char *) NULL; - - while (*s1) - { - for (c = s2; *c; c++) - { - if (*s1 == *c) - break; - } - if (*c) - break; - s1++; - } - - if (*c == '\0') - s1 = NULL; - - return (char *) s1; -} diff --git a/newlib/libc/string/strrchr.c b/newlib/libc/string/strrchr.c deleted file mode 100644 index 65160f5..0000000 --- a/newlib/libc/string/strrchr.c +++ /dev/null @@ -1,61 +0,0 @@ -/* -FUNCTION - <<strrchr>>---reverse search for character in string - -INDEX - strrchr - -ANSI_SYNOPSIS - #include <string.h> - char * strrchr(const char *<[string]>, int <[c]>); - -TRAD_SYNOPSIS - #include <string.h> - char * strrchr(<[string]>, <[c]>); - char *<[string]>; - int *<[c]>; - -DESCRIPTION - This function finds the last occurence of <[c]> (converted to - a char) in the string pointed to by <[string]> (including the - terminating null character). - -RETURNS - Returns a pointer to the located character, or a null pointer - if <[c]> does not occur in <[string]>. - -PORTABILITY -<<strrchr>> is ANSI C. - -<<strrchr>> requires no supporting OS subroutines. - -QUICKREF - strrchr ansi pure -*/ - -#include <string.h> - -char * -_DEFUN (strrchr, (s, i), - _CONST char *s _AND - int i) -{ - _CONST char *last = NULL; - char c = i; - - while (*s) - { - if (*s == c) - { - last = s; - } - s++; - } - - if (*s == c) - { - last = s; - } - - return (char *) last; -} diff --git a/newlib/libc/string/strspn.c b/newlib/libc/string/strspn.c deleted file mode 100644 index 32b921b..0000000 --- a/newlib/libc/string/strspn.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -FUNCTION - <<strspn>>---find initial match - -INDEX - strspn - -ANSI_SYNOPSIS - #include <string.h> - size_t strspn(const char *<[s1]>, const char *<[s2]>); - -TRAD_SYNOPSIS - #include <string.h> - size_t strspn(<[s1]>, <[s2]>) - char *<[s1]>; - char *<[s2]>; - -DESCRIPTION - This function computes the length of the initial segment of - the string pointed to by <[s1]> which consists entirely of - characters from the string pointed to by <[s2]> (excluding the - terminating null character). - -RETURNS - <<strspn>> returns the length of the segment found. - -PORTABILITY -<<strspn>> is ANSI C. - -<<strspn>> requires no supporting OS subroutines. - -QUICKREF - strspn ansi pure -*/ - -#include <string.h> - -size_t -_DEFUN (strspn, (s1, s2), - _CONST char *s1 _AND - _CONST char *s2) -{ - _CONST char *s = s1; - _CONST char *c; - - while (*s1) - { - for (c = s2; *c; c++) - { - if (*s1 == *c) - break; - } - if (*c == '\0') - break; - s1++; - } - - return s1 - s; -} diff --git a/newlib/libc/string/strstr.c b/newlib/libc/string/strstr.c deleted file mode 100644 index dddced3..0000000 --- a/newlib/libc/string/strstr.c +++ /dev/null @@ -1,73 +0,0 @@ -/* -FUNCTION - <<strstr>>---find string segment - -INDEX - strstr - -ANSI_SYNOPSIS - #include <string.h> - char *strstr(const char *<[s1]>, const char *<[s2]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strstr(<[s1]>, <[s2]>) - char *<[s1]>; - char *<[s2]>; - -DESCRIPTION - Locates the first occurence in the string pointed to by <[s1]> of - the sequence of characters in the string pointed to by <[s2]> - (excluding the terminating null character). - -RETURNS - Returns a pointer to the located string segment, or a null - pointer if the string <[s2]> is not found. If <[s2]> points to - a string with zero length, the <[s1]> is returned. - -PORTABILITY -<<strstr>> is ANSI C. - -<<strstr>> requires no supporting OS subroutines. - -QUICKREF - strstr ansi pure -*/ - -#include <string.h> - -char * -_DEFUN (strstr, (searchee, lookfor), - _CONST char *searchee _AND - _CONST char *lookfor) -{ - if (*searchee == 0) - { - if (*lookfor) - return (char *) NULL; - return (char *) searchee; - } - - while (*searchee) - { - size_t i; - i = 0; - - while (1) - { - if (lookfor[i] == 0) - { - return (char *) searchee; - } - - if (lookfor[i] != searchee[i]) - { - break; - } - i++; - } - searchee++; - } - - return (char *) NULL; -} diff --git a/newlib/libc/string/strtok.c b/newlib/libc/string/strtok.c deleted file mode 100644 index bc11f0d..0000000 --- a/newlib/libc/string/strtok.c +++ /dev/null @@ -1,76 +0,0 @@ -/* -FUNCTION - <<strtok>>---get next token from a string - -INDEX - strtok - -INDEX - strtok_r - -ANSI_SYNOPSIS - #include <string.h> - char *strtok(char *<[source]>, const char *<[delimiters]>) - char *strtok_r(char *<[source]>, const char *<[delimiters]>, - char **<[lasts]>) - -TRAD_SYNOPSIS - #include <string.h> - char *strtok(<[source]>, <[delimiters]>) - char *<[source]>; - char *<[delimiters]>; - - char *strtok_r(<[source]>, <[delimiters]>, <[lasts]>) - char *<[source]>; - char *<[delimiters]>; - char **<[lasts]>; - -DESCRIPTION - The <<strtok>> function is used to isolate sequential tokens in a - null-terminated string, <<*<[source]>>>. These tokens are delimited - in the string by at least one of the characters in <<*<[delimiters]>>>. - The first time that <<strtok>> is called, <<*<[source]>>> should be - specified; subsequent calls, wishing to obtain further tokens from - the same string, should pass a null pointer instead. The separator - string, <<*<[delimiters]>>>, must be supplied each time, and may - change between calls. - - The <<strtok>> function returns a pointer to the beginning of each - subsequent token in the string, after replacing the separator - character itself with a NUL character. When no more tokens remain, - a null pointer is returned. - - The <<strtok_r>> function has the same behavior as <<strtok>>, except - a pointer to placeholder <<*[lasts]>> must be supplied by the caller. - -RETURNS - <<strtok>> returns a pointer to the next token, or <<NULL>> if - no more tokens can be found. - -NOTES - <<strtok>> is unsafe for multi-thread applications. <<strtok_r>> - is MT-Safe and should be used instead. - -PORTABILITY -<<strtok>> is ANSI C. - -<<strtok>> requires no supporting OS subroutines. - -QUICKREF - strtok ansi impure -*/ - -#include <string.h> -#include <_ansi.h> -#include <reent.h> - -#ifndef _REENT_ONLY - -char * -_DEFUN (strtok, (s, delim), - register char *s _AND - register const char *delim) -{ - return strtok_r (s, delim, &(_REENT->_new._reent._strtok_last)); -} -#endif diff --git a/newlib/libc/string/strtok_r.c b/newlib/libc/string/strtok_r.c deleted file mode 100644 index ed32336..0000000 --- a/newlib/libc/string/strtok_r.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 1988 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <string.h> - -char * -_DEFUN (strtok_r, (s, delim, lasts), - register char *s _AND - register const char *delim _AND - char **lasts) -{ - register char *spanp; - register int c, sc; - char *tok; - - - if (s == NULL && (s = *lasts) == NULL) - return (NULL); - - /* - * Skip (span) leading delimiters (s += strspn(s, delim), sort of). - */ -cont: - c = *s++; - for (spanp = (char *)delim; (sc = *spanp++) != 0;) { - if (c == sc) - goto cont; - } - - if (c == 0) { /* no non-delimiter characters */ - *lasts = NULL; - return (NULL); - } - tok = s - 1; - - /* - * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). - * Note that delim must have one NUL; we stop if we see that, too. - */ - for (;;) { - c = *s++; - spanp = (char *)delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - *lasts = s; - return (tok); - } - } while (sc != 0); - } - /* NOTREACHED */ -} diff --git a/newlib/libc/string/strupr.c b/newlib/libc/string/strupr.c deleted file mode 100644 index d7f7c12..0000000 --- a/newlib/libc/string/strupr.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -FUNCTION - <<strupr>>---force string to uppercase - -INDEX - strupr - -ANSI_SYNOPSIS - #include <string.h> - char *strupr(char *<[a]>); - -TRAD_SYNOPSIS - #include <string.h> - char *strupr(<[a]>) - char *<[a]>; - -DESCRIPTION - <<strupr>> converts each characters in the string at <[a]> to - upper case. - -RETURNS - <<strupr>> returns its argument, <[a]>. - -PORTABILITY -<<strupr>> is not widely portable. - -<<strupr>> requires no supporting OS subroutines. - -QUICKREF - strupr */ - -#include <string.h> -#include <ctype.h> - -char * -strupr (a) - char *a; -{ - char *ret = a; - - while (*a != '\0') - { - if (islower (*a)) - *a = toupper (*a); - ++a; - } - - return ret; -} diff --git a/newlib/libc/string/strxfrm.c b/newlib/libc/string/strxfrm.c deleted file mode 100644 index 65ed4f1..0000000 --- a/newlib/libc/string/strxfrm.c +++ /dev/null @@ -1,75 +0,0 @@ -/* -FUNCTION - <<strxfrm>>---transform string - -INDEX - strxfrm - -ANSI_SYNOPSIS - #include <string.h> - size_t strxfrm(char *<[s1]>, const char *<[s2]>, size_t <[n]>); - -TRAD_SYNOPSIS - #include <string.h> - size_t strxfrm(<[s1]>, <[s2]>, <[n]>); - char *<[s1]>; - char *<[s2]>; - size_t <[n]>; - -DESCRIPTION - This function transforms the string pointed to by <[s2]> and - places the resulting string into the array pointed to by - <[s1]>. The transformation is such that if the <<strcmp>> - function is applied to the two transformed strings, it returns - a value greater than, equal to, or less than zero, - correspoinding to the result of a <<strcoll>> function applied - to the same two original strings. - - No more than <[n]> characters are placed into the resulting - array pointed to by <[s1]>, including the terminating null - character. If <[n]> is zero, <[s1]> may be a null pointer. If - copying takes place between objects that overlap, the behavior - is undefined. - - With a C locale, this function just copies. - -RETURNS - The <<strxfrm>> function returns the length of the transformed string - (not including the terminating null character). If the value returned - is <[n]> or more, the contents of the array pointed to by - <[s1]> are indeterminate. - -PORTABILITY -<<strxfrm>> is ANSI C. - -<<strxfrm>> requires no supporting OS subroutines. - -QUICKREF - strxfrm ansi pure -*/ - -#include <string.h> - -size_t -_DEFUN (strxfrm, (s1, s2, n), - char *s1 _AND - _CONST char *s2 _AND - size_t n) -{ - size_t res; - res = 0; - while (n-- > 0) - { - if ((*s1++ = *s2++) != '\0') - ++res; - else - return res; - } - while (*s2) - { - ++s2; - ++res; - } - - return res; -} diff --git a/newlib/libc/string/swab.c b/newlib/libc/string/swab.c deleted file mode 100644 index 98daf5a..0000000 --- a/newlib/libc/string/swab.c +++ /dev/null @@ -1,44 +0,0 @@ -/* -FUNCTION - <<swab>>---swap adjacent bytes - -ANSI_SYNOPSIS - #include <string.h> - void swab(const void *<[in]>, void *<[out]>, ssize_t <[n]>); - -TRAD_SYNOPSIS - void swab(<[in]>, <[out]>, <[n]> - void *<[in]>; - void *<[out]>; - ssize_t <[n]>; - -DESCRIPTION - This function copies <[n]> bytes from the memory region - pointed to by <[in]> to the memory region pointed to by - <[out]>, exchanging adjacent even and odd bytes. - -PORTABILITY -<<swab>> requires no supporting OS subroutines. -*/ - -#include <string.h> - -void -_DEFUN (swab, (b1, b2, length), - _CONST void *b1 _AND - void *b2 _AND - ssize_t length) -{ - const char *from = b1; - char *to = b2; - ssize_t ptr; - for (ptr = 1; ptr < length; ptr += 2) - { - char p = from[ptr]; - char q = from[ptr-1]; - to[ptr-1] = p; - to[ptr ] = q; - } - if (ptr == length) /* I.e., if length is odd, */ - to[ptr-1] = 0; /* then pad with a NUL. */ -} diff --git a/newlib/libc/string/u_strerr.c b/newlib/libc/string/u_strerr.c deleted file mode 100644 index fa4605c..0000000 --- a/newlib/libc/string/u_strerr.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <_ansi.h> - -char * -_DEFUN(_user_strerror, (errnum), - int errnum) -{ - return 0; -} |