--- /dev/null
+/* Copyright (C) 1991 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 General Public License as published by
+the Free Software Foundation; either version 1, 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU C Library; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/*
+ * SVID
+ */
+
+#ifndef _MEMORY_H
+
+#define _MEMORY_H 1
+#include <features.h>
+
+
+#ifndef _STRING_H
+#include <string.h>
+#endif /* string.h */
+
+
+#endif /* memory.h */
--- /dev/null
+/* Copyright (C) 1991 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 General Public License as published by
+the Free Software Foundation; either version 1, 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU C Library; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <ansidecl.h>
+#include <localeinfo.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Compare S1 and S2, returning less than, equal to or
+ greater than zero if the collated form of S1 is lexiographically
+ less than, equal to or greater than the collated form of S2. */
+int
+DEFUN(strcoll, (s1, s2), CONST char *s1 AND CONST char *s2)
+{
+ if (_collate_info == NULL || _collate_info->values == NULL)
+ return strcmp(s1, s2);
+ else
+ {
+ CONST unsigned char *CONST values = _collate_info->values;
+ CONST unsigned char *CONST offsets = _collate_info->offsets;
+
+ while (*s1 != '\0' && *s2 != '\0')
+ {
+ CONST unsigned char c1 = *s1++, c2 = *s2++;
+ CONST unsigned char v1 = values[c1], v2 = values[c2];
+ CONST unsigned char o1 = offsets[c1], o2 = offsets[c2];
+
+ if (v1 == UCHAR_MAX && o1 == 0)
+ /* This is a non-collating element. Skip it. */
+ --s2;
+ else if (v2 == UCHAR_MAX && o2 == 0)
+ --s1;
+ else if (v1 == UCHAR_MAX && o1 == CHAR_MAX)
+ {
+ /* This element collates lower than anything else. */
+ if (v2 != UCHAR_MAX || o2 != CHAR_MAX)
+ return -1;
+ }
+ else if (v2 == UCHAR_MAX && o2 == CHAR_MAX)
+ return 1;
+ else if (v1 != v2)
+ return v1 - v2;
+ else if (o1 != o2)
+ return o1 - o2;
+ }
+
+ if (*s1 == '\0')
+ return *s2 == '\0' ? 0 : -1;
+ else if (*s2 == '\0')
+ return 1;
+ return 0;
+ }
+}
--- /dev/null
+/* Copyright (C) 1991 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 General Public License as published by
+the Free Software Foundation; either version 1, 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU C Library; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <ansidecl.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Duplicate S, returning an identical malloc'd string. */
+char *
+DEFUN(strdup, (s), CONST char *s)
+{
+ size_t len = strlen(s) + 1;
+ PTR new = malloc(len);
+
+ if (new == NULL)
+ return NULL;
+
+ memcpy(new, (PTR) s, len);
+
+ return (char *) new;
+}
--- /dev/null
+/* Copyright (C) 1991 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 General Public License as published by
+the Free Software Foundation; either version 1, 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU C Library; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <ansidecl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+
+
+/* Defined in stdio/sys_siglist.c. */
+extern CONST char *CONST _sys_siglist[];
+
+
+/* Return a string describing the meaning of the signal number SIGNUM. */
+char *
+DEFUN(strsignal, (signum), int signum)
+{
+ if (signum < 0 || signum > NSIG)
+ {
+ static char unknown_signal[] = "Unknown signal 000000000000000000";
+ static char fmt[] = "Unknown signal%d";
+ size_t len = sprintf(unknown_signal, fmt, signum);
+ if (len < sizeof(fmt) - 2)
+ return NULL;
+ unknown_signal[len - 1] = '\0';
+ return unknown_signal;
+ }
+
+ return (char *) _sys_siglist[signum];
+}