summaryrefslogtreecommitdiff
path: root/string
diff options
context:
space:
mode:
Diffstat (limited to 'string')
-rw-r--r--string/Makefile3
-rw-r--r--string/argz-append.c26
-rw-r--r--string/argz-count.c26
-rw-r--r--string/argz-create.c28
-rw-r--r--string/argz-delete.c26
-rw-r--r--string/argz-extract.c28
-rw-r--r--string/argz-insert.c26
-rw-r--r--string/argz-next.c25
-rw-r--r--string/argz-stringify.c30
-rw-r--r--string/basename.c30
-rw-r--r--string/envz.c26
-rw-r--r--string/memfrob.c38
-rw-r--r--string/strcoll.c69
-rw-r--r--string/strcoll_l.c21
-rw-r--r--string/strdup.c57
-rw-r--r--string/string.h14
-rw-r--r--string/strndup.c59
-rw-r--r--string/strnlen.c28
-rw-r--r--string/strsignal.c34
-rw-r--r--string/strxfrm.c29
-rw-r--r--string/strxfrm_l.c21
-rw-r--r--string/test-ffs.c35
-rw-r--r--string/testcopy.c35
23 files changed, 426 insertions, 288 deletions
diff --git a/string/Makefile b/string/Makefile
index 97f2eedd79..8f35f207f6 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -37,7 +37,8 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \
$(addprefix argz-,append count create ctsep next \
delete extract insert stringify \
addsep) \
- envz basename
+ envz basename \
+ strcoll_l strxfrm_l
tests := tester testcopy test-ffs tst-strlen stratcliff
distribute := memcopy.h pagecopy.h
diff --git a/string/argz-append.c b/string/argz-append.c
index e61e3acf58..6dd47e7709 100644
--- a/string/argz-append.c
+++ b/string/argz-append.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
diff --git a/string/argz-count.c b/string/argz-count.c
index a10119b722..1bc197a733 100644
--- a/string/argz-count.c
+++ b/string/argz-count.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
diff --git a/string/argz-create.c b/string/argz-create.c
index 2be16b03e7..1f70cfa2c2 100644
--- a/string/argz-create.c
+++ b/string/argz-create.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <stdlib.h>
@@ -40,7 +40,7 @@ __argz_create (char *const argv[], char **argz, size_t *len)
*argz = NULL;
else
{
- *argz = malloc(tlen);
+ *argz = malloc (tlen);
if (*argz == NULL)
return ENOMEM;
diff --git a/string/argz-delete.c b/string/argz-delete.c
index 584270a42f..a556656a9c 100644
--- a/string/argz-delete.c
+++ b/string/argz-delete.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
diff --git a/string/argz-extract.c b/string/argz-extract.c
index 99f6cdf97a..ed3a26604d 100644
--- a/string/argz-extract.c
+++ b/string/argz-extract.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
@@ -27,7 +27,7 @@ __argz_extract (char *argz, size_t len, char **argv)
{
while (len > 0)
{
- size_t part_len = strlen(argz);
+ size_t part_len = strlen (argz);
*argv++ = argz;
argz += part_len + 1;
len -= part_len + 1;
diff --git a/string/argz-insert.c b/string/argz-insert.c
index 3905728f2a..d790bb5fda 100644
--- a/string/argz-insert.c
+++ b/string/argz-insert.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
diff --git a/string/argz-next.c b/string/argz-next.c
index 416b982306..46d393444e 100644
--- a/string/argz-next.c
+++ b/string/argz-next.c
@@ -1,21 +1,22 @@
/* Iterate through the elements of an argz block.
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
diff --git a/string/argz-stringify.c b/string/argz-stringify.c
index c7a109c0fb..cd57b98d42 100644
--- a/string/argz-stringify.c
+++ b/string/argz-stringify.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated arg vectors.
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <argz.h>
#include <string.h>
@@ -24,11 +24,11 @@
/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
except the last into the character SEP. */
void
-__argz_stringify(char *argz, size_t len, int sep)
+__argz_stringify (char *argz, size_t len, int sep)
{
while (len > 0)
{
- size_t part_len = strlen(argz);
+ size_t part_len = strlen (argz);
argz += part_len;
len -= part_len + 1;
if (len > 0)
diff --git a/string/basename.c b/string/basename.c
index 57a59542ca..4f06843aeb 100644
--- a/string/basename.c
+++ b/string/basename.c
@@ -1,21 +1,21 @@
-/* basename -- return the name-within-directory of a file name.
-Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Return the name-within-directory of a file name.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C 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
-Library General Public License for more details.
+ The GNU C 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
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <string.h>
diff --git a/string/envz.c b/string/envz.c
index f00fe24d31..535f42e864 100644
--- a/string/envz.c
+++ b/string/envz.c
@@ -1,22 +1,22 @@
/* Routines for dealing with '\0' separated environment vectors
-
- Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Written by Miles Bader <miles@gnu.ai.mit.edu>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
+ The GNU C 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
- General Public License for more details.
+ Library General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <malloc.h>
#include <string.h>
diff --git a/string/memfrob.c b/string/memfrob.c
index cf3422bdc7..690c53f77d 100644
--- a/string/memfrob.c
+++ b/string/memfrob.c
@@ -1,29 +1,29 @@
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1992, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C 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
-Library General Public License for more details.
+ The GNU C 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
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
-#include <ansidecl.h>
#include <string.h>
-PTR
-DEFUN(memfrob, (s, n),
- PTR s AND size_t n)
+void *
+memfrob (s, n)
+ void *s;
+ size_t n;
{
- register char *p = (char *) s;
+ char *p = (char *) s;
while (n-- > 0)
*p++ ^= 42;
diff --git a/string/strcoll.c b/string/strcoll.c
index fa1025e0d7..e58b74cf51 100644
--- a/string/strcoll.c
+++ b/string/strcoll.c
@@ -1,22 +1,23 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <endian.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
@@ -24,7 +25,11 @@ Boston, MA 02111-1307, USA. */
#ifndef STRING_TYPE
# define STRING_TYPE char
# define USTRING_TYPE unsigned char
-# define STRCOLL strcoll
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define STRCOLL __strcoll_l
+# else
+# define STRCOLL strcoll
+# endif
# define STRCMP strcmp
#endif
@@ -36,11 +41,35 @@ Boston, MA 02111-1307, USA. */
/* Compare S1 and S2, returning less than, equal to or
greater than zero if the collated form of S1 is lexicographically
less than, equal to or greater than the collated form of S2. */
+#ifndef USE_IN_EXTENDED_LOCALE_MODEL
int
STRCOLL (s1, s2)
const STRING_TYPE *s1;
const STRING_TYPE *s2;
+#else
+int
+STRCOLL (s1, s2, l)
+ const STRING_TYPE *s1;
+ const STRING_TYPE *s2;
+ __locale_t l;
+#endif
{
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+ struct locale_data *current = l->__locales[LC_COLLATE];
+# if BYTE_ORDER == BIG_ENDIAN
+ const u_int32_t *collate_table = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_TABLE_EB)].string;
+ const u_int32_t *collate_extra = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_EXTRA_EB)].string;
+# elif BYTE_ORDER == LITTLE_ENDIAN
+ const u_int32_t *collate_table = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_TABLE_EL)].string;
+ const u_int32_t *collate_extra = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_EXTRA_EL)].string;
+# else
+# error bizarre byte order
+# endif
+#endif
weight_t *s1forw = NULL;
weight_t *s1backw = NULL;
weight_t *s2forw = NULL;
diff --git a/string/strcoll_l.c b/string/strcoll_l.c
new file mode 100644
index 0000000000..57e8393f04
--- /dev/null
+++ b/string/strcoll_l.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+#include <strcoll.c>
diff --git a/string/strdup.c b/string/strdup.c
index ef883eecdd..257f428ead 100644
--- a/string/strdup.c
+++ b/string/strdup.c
@@ -1,25 +1,36 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
+/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#if defined _LIBC || defined STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else
+char *malloc ();
+char *strcpy ();
+#endif
+
+#ifndef weak_alias
+# define __strdup strdup
+#endif
/* Duplicate S, returning an identical malloc'd string. */
char *
@@ -33,4 +44,6 @@ __strdup (const char *s)
return (char *) memcpy (new, s, len);
}
+#ifdef weak_alias
weak_alias (__strdup, strdup)
+#endif
diff --git a/string/string.h b/string/string.h
index 12b3a2036d..865007ff99 100644
--- a/string/string.h
+++ b/string/string.h
@@ -83,6 +83,20 @@ extern int strcoll __P ((__const char *__s1, __const char *__s2));
/* Put a transformation of SRC into no more than N bytes of DEST. */
extern size_t strxfrm __P ((char *__dest, __const char *__src, size_t __n));
+#ifdef __USE_GNU
+/* The following functions are equivalent to the both above but they
+ take the locale they use for the collation as an extra argument.
+ This is not standardsized but something like will come. */
+# include <xlocale.h>
+
+/* Compare the collated forms of S1 and S2 using rules from L. */
+extern int __strcoll_l __P ((__const char *__s1, __const char *__s2,
+ __locale_t __l));
+/* Put a transformation of SRC into no more than N bytes of DEST. */
+extern size_t __strxfrm_l __P ((char *__dest, __const char *__src, size_t __n,
+ __locale_t __l));
+#endif
+
#if defined(__USE_SVID) || defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
/* Duplicate S, returning an identical malloc'd string. */
extern char *__strdup __P ((__const char *__s));
diff --git a/string/strndup.c b/string/strndup.c
index 72635bb97c..6bcfa9a445 100644
--- a/string/strndup.c
+++ b/string/strndup.c
@@ -1,25 +1,38 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#if defined _LIBC || defined STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else
+char *malloc ();
+#endif
+
+#ifndef weak_alias
+# define __strndup strndup
+#endif
char *
__strndup (const char *s, size_t n)
@@ -33,4 +46,6 @@ __strndup (const char *s, size_t n)
new[len] = '\0';
return memcpy (new, s, len);
}
+#ifdef weak_alias
weak_alias (__strndup, strndup)
+#endif
diff --git a/string/strnlen.c b/string/strnlen.c
index eb01a63692..ab95d17096 100644
--- a/string/strnlen.c
+++ b/string/strnlen.c
@@ -1,21 +1,21 @@
/* Find the length of STRING, but scan at most MAXLEN characters.
-Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C 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
-Library General Public License for more details.
+ The GNU C 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
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <string.h>
diff --git a/string/strsignal.c b/string/strsignal.c
index a700a9f804..69629b7855 100644
--- a/string/strsignal.c
+++ b/string/strsignal.c
@@ -1,20 +1,20 @@
-/* Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+/* Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <signal.h>
#include <stdio.h>
diff --git a/string/strxfrm.c b/string/strxfrm.c
index 820ad93947..e22738667c 100644
--- a/string/strxfrm.c
+++ b/string/strxfrm.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
@@ -25,7 +25,11 @@
# define STRING_TYPE char
# define USTRING_TYPE unsigned char
# define L_(Ch) Ch
-# define STRXFRM strxfrm
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define STRXFRM __strxfrm_l
+# else
+# define STRXFRM strxfrm
+# endif
# define STRLEN strlen
# define STPNCPY __stpncpy
#endif
@@ -141,9 +145,30 @@ print_val (u_int32_t value, wchar_t *dest, size_t max, size_t act)
the same as the result of strcoll on the two strings before
their transformation. The transformed string is put in at
most N characters of DEST and its length is returned. */
+#ifndef USE_IN_EXTENDED_LOCALE_MODEL
size_t
STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n)
+#else
+size_t
+STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l)
+#endif
{
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+ struct locale_data *current = l->__locales[LC_COLLATE];
+# if BYTE_ORDER == BIG_ENDIAN
+ const u_int32_t *collate_table = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_TABLE_EB)].string;
+ const u_int32_t *collate_extra = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_EXTRA_EB)].string;
+# elif BYTE_ORDER == LITTLE_ENDIAN
+ const u_int32_t *collate_table = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_TABLE_EL)].string;
+ const u_int32_t *collate_extra = (const u_int32_t *)
+ current->values[_NL_ITEM_INDEX (_NL_COLLATE_EXTRA_EL)].string;
+# else
+# error bizarre byte order
+# endif
+#endif
weight_t *forw = NULL;
weight_t *backw = NULL;
size_t pass;
diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c
new file mode 100644
index 0000000000..f91da59f68
--- /dev/null
+++ b/string/strxfrm_l.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+#include <strxfrm.c>
diff --git a/string/test-ffs.c b/string/test-ffs.c
index ef40171551..f691d7f22d 100644
--- a/string/test-ffs.c
+++ b/string/test-ffs.c
@@ -1,32 +1,31 @@
-/* Copyright (C) 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),
On-Line Applications Research Corporation.
-This file is part of the GNU C Library.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C 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
+ Library General Public License for more details.
-The GNU C 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
-Library General Public License for more details.
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
-
-#include <ansidecl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
-DEFUN(main, (argc, argv),
- int argc AND char **argv)
+main (argc, argv)
+ int argc;
+ char **argv;
{
int failures = 0;
int i;
diff --git a/string/testcopy.c b/string/testcopy.c
index 9ec5c7761c..b1c491e62c 100644
--- a/string/testcopy.c
+++ b/string/testcopy.c
@@ -1,32 +1,31 @@
-/* Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
+/* Copyright (C) 1990, 1991, 1992, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
-This file is part of the GNU C Library.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C 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
+ Library General Public License for more details.
-The GNU C 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
-Library General Public License for more details.
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
-
-#include <ansidecl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int
-DEFUN(main, (argc, argv),
- int argc AND char **argv)
+main (argc, argv)
+ int argc;
+ char **argv;
{
char *mem, *memp;
char *rand_mem;