about summary refs log tree commit diff
path: root/REORG.TODO/sysdeps/unix/bsd
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/sysdeps/unix/bsd')
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/Implies2
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/Makefile3
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/Versions6
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/bits/signum.h73
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/bits/sockaddr.h45
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/bsdtty.h218
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/cmsg_nxthdr.c2
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/ftime.c40
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/getpt.c91
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/gtty.c26
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/sigblock.c1
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/sigsetmask.c1
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/stty.c26
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/syscalls.list15
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcdrain.c27
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcflow.c55
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcflush.c48
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcgetattr.c38
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcgetpgrp.c33
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcsendbrk.c53
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcsetattr.c59
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/tcsetpgrp.c28
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/ualarm.c40
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/unlockpt.c36
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/wait.c32
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/wait3.c33
-rw-r--r--REORG.TODO/sysdeps/unix/bsd/waitpid.c42
27 files changed, 1073 insertions, 0 deletions
diff --git a/REORG.TODO/sysdeps/unix/bsd/Implies b/REORG.TODO/sysdeps/unix/bsd/Implies
new file mode 100644
index 0000000000..c30979e17b
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/Implies
@@ -0,0 +1,2 @@
+# The directory unix/inet implements sockets and networking in the usual way.
+unix/inet
diff --git a/REORG.TODO/sysdeps/unix/bsd/Makefile b/REORG.TODO/sysdeps/unix/bsd/Makefile
new file mode 100644
index 0000000000..208fd24484
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),socket)
+sysdep_routines += cmsg_nxthdr
+endif
diff --git a/REORG.TODO/sysdeps/unix/bsd/Versions b/REORG.TODO/sysdeps/unix/bsd/Versions
new file mode 100644
index 0000000000..99b386b670
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/Versions
@@ -0,0 +1,6 @@
+libc {
+  GLIBC_2.2.5 {
+    # functions used in inline functions or macros
+    __cmsg_nxthdr;
+  }
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/bits/signum.h b/REORG.TODO/sysdeps/unix/bsd/bits/signum.h
new file mode 100644
index 0000000000..268c24a702
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/bits/signum.h
@@ -0,0 +1,73 @@
+/* Signal number definitions.  BSD version.
+   Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef	_SIGNAL_H
+
+/* This file defines the fake signal functions and signal
+   number constants for 4.2 or 4.3 BSD-derived Unix system.  */
+
+/* Fake signal functions.  */
+#define	SIG_ERR	((__sighandler_t) -1) /* Error return.  */
+#define	SIG_DFL	((__sighandler_t) 0) /* Default action.  */
+#define	SIG_IGN	((__sighandler_t) 1) /* Ignore signal.  */
+
+#ifdef __USE_XOPEN
+# define SIG_HOLD      ((__sighandler_t) 2)    /* Add signal to hold mask.  */
+#endif
+
+
+/* Signals.  */
+#define	SIGHUP		1	/* Hangup (POSIX).  */
+#define	SIGINT		2	/* Interrupt (ANSI).  */
+#define	SIGQUIT		3	/* Quit (POSIX).  */
+#define	SIGILL		4	/* Illegal instruction (ANSI).  */
+#define	SIGABRT		SIGIOT	/* Abort (ANSI).  */
+#define	SIGTRAP		5	/* Trace trap (POSIX).  */
+#define	SIGIOT		6	/* IOT trap (4.2 BSD).  */
+#define	SIGEMT		7	/* EMT trap (4.2 BSD).  */
+#define	SIGFPE		8	/* Floating-point exception (ANSI).  */
+#define	SIGKILL		9	/* Kill, unblockable (POSIX).  */
+#define	SIGBUS		10	/* Bus error (4.2 BSD).  */
+#define	SIGSEGV		11	/* Segmentation violation (ANSI).  */
+#define	SIGSYS		12	/* Bad argument to system call (4.2 BSD).  */
+#define	SIGPIPE		13	/* Broken pipe (POSIX).  */
+#define	SIGALRM		14	/* Alarm clock (POSIX).  */
+#define	SIGTERM		15	/* Termination (ANSI).  */
+#define	SIGURG		16	/* Urgent condition on socket (4.2 BSD).  */
+#define	SIGSTOP		17	/* Stop, unblockable (POSIX).  */
+#define	SIGTSTP		18	/* Keyboard stop (POSIX).  */
+#define	SIGCONT		19	/* Continue (POSIX).  */
+#define	SIGCHLD		20	/* Child status has changed (POSIX).  */
+#define	SIGCLD		SIGCHLD	/* Same as SIGCHLD (System V).  */
+#define	SIGTTIN		21	/* Background read from tty (POSIX).  */
+#define	SIGTTOU		22	/* Background write to tty (POSIX).  */
+#define	SIGIO		23	/* I/O now possible (4.2 BSD).  */
+#define	SIGPOLL		SIGIO	/* Same as SIGIO? (SVID).  */
+#define	SIGXCPU		24	/* CPU limit exceeded (4.2 BSD).  */
+#define	SIGXFSZ		25	/* File size limit exceeded (4.2 BSD).  */
+#define	SIGVTALRM	26	/* Virtual alarm clock (4.2 BSD).  */
+#define	SIGPROF		27	/* Profiling alarm clock (4.2 BSD).  */
+#define	SIGWINCH	28	/* Window size change (4.3 BSD, Sun).  */
+#define SIGINFO		29	/* Information request (4.4 BSD).  */
+#define	SIGUSR1		30	/* User-defined signal 1 (POSIX).  */
+#define	SIGUSR2		31	/* User-defined signal 2 (POSIX).  */
+#define SIGLOST		32	/* Resource lost (Sun); server died (GNU).  */
+
+#endif	/* <signal.h> included.  */
+
+#define	_NSIG		33	/* Biggest signal number + 1.  */
diff --git a/REORG.TODO/sysdeps/unix/bsd/bits/sockaddr.h b/REORG.TODO/sysdeps/unix/bsd/bits/sockaddr.h
new file mode 100644
index 0000000000..bb98f3a778
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/bits/sockaddr.h
@@ -0,0 +1,45 @@
+/* Definition of struct sockaddr_* common members and sizes, BSD version.
+   Copyright (C) 1995-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/*
+ * Never include this file directly; use <sys/socket.h> instead.
+ */
+
+#ifndef _BITS_SOCKADDR_H
+#define _BITS_SOCKADDR_H	1
+
+
+/* POSIX.1g specifies this type name for the `sa_family' member.  */
+typedef unsigned char sa_family_t;
+
+/* This macro is used to declare the initial common members
+   of the data types used for socket addresses, `struct sockaddr',
+   `struct sockaddr_in', `struct sockaddr_un', etc.  */
+
+#define	__SOCKADDR_COMMON(sa_prefix)	\
+  unsigned char sa_prefix##len;		\
+  sa_family_t sa_prefix##family
+
+#define __SOCKADDR_COMMON_SIZE	(2 * sizeof (unsigned char))
+
+#define _HAVE_SA_LEN	1	/* We have the sa_len field.  */
+
+/* Size of struct sockaddr_storage.  */
+#define _SS_SIZE 128
+
+#endif	/* bits/sockaddr.h */
diff --git a/REORG.TODO/sysdeps/unix/bsd/bsdtty.h b/REORG.TODO/sysdeps/unix/bsd/bsdtty.h
new file mode 100644
index 0000000000..a1da8d5cc3
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/bsdtty.h
@@ -0,0 +1,218 @@
+#undef	B0
+#undef	B50
+#undef	B75
+#undef	B110
+#undef	B134
+#undef	B150
+#undef	B200
+#undef	B300
+#undef	B600
+#undef	B1200
+#undef	B1800
+#undef	B2400
+#undef	B4800
+#undef	B9600
+#undef	B19200
+#undef	B38400
+#undef	EXTA
+#undef	EXTB
+#undef	ECHO
+#undef	TOSTOP
+#undef	NOFLSH
+#undef	MDMBUF
+#undef	FLUSHO
+#undef	PENDIN
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+#undef	CERASE
+#undef	CKILL
+#undef	CINTR
+#undef	CQUIT
+#undef	CSTART
+#undef	CSTOP
+#undef	CEOF
+#undef	CEOT
+#undef	CBRK
+#undef	CSUSP
+#undef	CDSUSP
+#undef	CRPRNT
+#undef	CFLUSH
+#undef	CWERASE
+#undef	CLNEXT
+#undef	CSTATUS
+
+#include <sys/ioctl.h>
diff --git a/REORG.TODO/sysdeps/unix/bsd/cmsg_nxthdr.c b/REORG.TODO/sysdeps/unix/bsd/cmsg_nxthdr.c
new file mode 100644
index 0000000000..1a542fa01a
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/cmsg_nxthdr.c
@@ -0,0 +1,2 @@
+/* The Linux version is perfectly usable on 4.4 BSD.  */
+#include <sysdeps/unix/sysv/linux/cmsg_nxthdr.c>
diff --git a/REORG.TODO/sysdeps/unix/bsd/ftime.c b/REORG.TODO/sysdeps/unix/bsd/ftime.c
new file mode 100644
index 0000000000..0d093eea71
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/ftime.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1994-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/timeb.h>
+#include <sys/time.h>
+
+int
+ftime (struct timeb *timebuf)
+{
+  struct timeval tv;
+  struct timezone tz;
+
+  if (__gettimeofday (&tv, &tz) < 0)
+    return -1;
+
+  timebuf->time = tv.tv_sec;
+  timebuf->millitm = (tv.tv_usec + 500) / 1000;
+  if (timebuf->millitm == 1000)
+    {
+      ++timebuf->time;
+      timebuf->millitm = 0;
+    }
+  timebuf->timezone = tz.tz_minuteswest;
+  timebuf->dstflag = tz.tz_dsttime;
+  return 0;
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/getpt.c b/REORG.TODO/sysdeps/unix/bsd/getpt.c
new file mode 100644
index 0000000000..99e7af15c2
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/getpt.c
@@ -0,0 +1,91 @@
+/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+
+/* Prefix for master pseudo terminal nodes.  */
+#define _PATH_PTY "/dev/pty"
+
+
+/* Letters indicating a series of pseudo terminals.  */
+#ifndef PTYNAME1
+#define PTYNAME1 "pqrsPQRS"
+#endif
+const char __libc_ptyname1[] attribute_hidden = PTYNAME1;
+
+/* Letters indicating the position within a series.  */
+#ifndef PTYNAME2
+#define PTYNAME2 "0123456789abcdefghijklmnopqrstuv";
+#endif
+const char __libc_ptyname2[] attribute_hidden = PTYNAME2;
+
+
+/* Open a master pseudo terminal and return its file descriptor.  */
+int
+__getpt (void)
+{
+  char buf[sizeof (_PATH_PTY) + 2];
+  const char *p, *q;
+  char *s;
+
+  s = __mempcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) - 1);
+  /* s[0] and s[1] will be filled in the loop.  */
+  s[2] = '\0';
+
+  for (p = __libc_ptyname1; *p != '\0'; ++p)
+    {
+      s[0] = *p;
+
+      for (q = __libc_ptyname2; *q != '\0'; ++q)
+	{
+	  int fd;
+
+	  s[1] = *q;
+
+	  fd = __open (buf, O_RDWR);
+	  if (fd != -1)
+	    return fd;
+
+	  if (errno == ENOENT)
+	    return -1;
+	}
+    }
+
+  __set_errno (ENOENT);
+  return -1;
+}
+
+#undef __getpt
+weak_alias (__getpt, getpt)
+
+#ifndef HAVE_POSIX_OPENPT
+/* We cannot define posix_openpt in general for BSD systems.  */
+int
+__posix_openpt (int oflag)
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+weak_alias (__posix_openpt, posix_openpt)
+
+stub_warning (posix_openpt)
+#endif
diff --git a/REORG.TODO/sysdeps/unix/bsd/gtty.c b/REORG.TODO/sysdeps/unix/bsd/gtty.c
new file mode 100644
index 0000000000..2c32136f32
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/gtty.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sgtty.h>
+
+/* Fill in *PARAMS with terminal parameters associated with FD.  */
+int
+gtty (int fd, struct sgttyb *params)
+{
+  return ioctl (fd, TIOCGETP, (void *) params);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/sigblock.c b/REORG.TODO/sysdeps/unix/bsd/sigblock.c
new file mode 100644
index 0000000000..2647327db0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/sigblock.c
@@ -0,0 +1 @@
+#include <sysdeps/posix/sigblock.c>
diff --git a/REORG.TODO/sysdeps/unix/bsd/sigsetmask.c b/REORG.TODO/sysdeps/unix/bsd/sigsetmask.c
new file mode 100644
index 0000000000..47f1e36a7f
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/sigsetmask.c
@@ -0,0 +1 @@
+#include <sysdeps/posix/sigsetmask.c>
diff --git a/REORG.TODO/sysdeps/unix/bsd/stty.c b/REORG.TODO/sysdeps/unix/bsd/stty.c
new file mode 100644
index 0000000000..8593c0e5d8
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/stty.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sgtty.h>
+
+/* Set the terminal parameters associated with FD to *PARAMS.  */
+int
+stty (int fd, const struct sgttyb *params)
+{
+  return ioctl (fd, TIOCSETP, (void *) params);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/syscalls.list b/REORG.TODO/sysdeps/unix/bsd/syscalls.list
new file mode 100644
index 0000000000..0b4d5fcd54
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/syscalls.list
@@ -0,0 +1,15 @@
+# File name	Caller	Syscall name	# args	Strong name	Weak names
+
+chflags		-	chflags		2	chflags
+fchflags	-	fchflags	2	fchflags
+flock		-	flock		2	__flock		flock
+getdents	-	getdirentries	4	__getdirentries	getdirentries
+getdtsz		-	getdtablesize	0	__getdtablesize	getdtablesize
+getpagesize	-	getpagesize	0	__getpagesize	getpagesize
+killpg		-	killpg		2	killpg
+revoke		-	revoke		1	revoke
+setlogin	-	setlogin	2	setlogin
+sigaltstack	-	sigaltstack	2	__sigaltstack	sigaltstack
+sigpause	-	sigpause	1	__sigpause	sigpause
+sigstack	-	sigstack	2	sigstack
+wait4		-	wait4		4	__wait4		wait4
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcdrain.c b/REORG.TODO/sysdeps/unix/bsd/tcdrain.c
new file mode 100644
index 0000000000..ac9d9803a6
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcdrain.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 1992-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+#include <sys/ioctl.h>
+
+/* Wait for pending output to be written on FD.  */
+int
+__libc_tcdrain (int fd)
+{
+  return __ioctl (fd, TIOCDRAIN);
+}
+weak_alias (__libc_tcdrain, tcdrain)
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcflow.c b/REORG.TODO/sysdeps/unix/bsd/tcflow.c
new file mode 100644
index 0000000000..39a13f13ef
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcflow.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stddef.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include "bsdtty.h"
+
+/* Suspend or restart transmission on FD.  */
+int
+tcflow (int fd, int action)
+{
+  switch (action)
+    {
+    case TCOOFF:
+      return __ioctl (fd, TIOCSTOP, (void *) NULL);
+    case TCOON:
+      return __ioctl (fd, TIOCSTART, (void *) NULL);
+
+    case TCIOFF:
+    case TCION:
+      {
+	/* This just writes the START or STOP character with
+	   `write'.  Is there another way to do this?  */
+	struct termios attr;
+	unsigned char c;
+	if (tcgetattr (fd, &attr) < 0)
+	  return -1;
+	c = attr.c_cc[action == TCIOFF ? VSTOP : VSTART];
+	if (c != _POSIX_VDISABLE && write (fd, &c, 1) < 1)
+	  return -1;
+	return 0;
+      }
+
+    default:
+      __set_errno (EINVAL);
+      return -1;
+    }
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcflush.c b/REORG.TODO/sysdeps/unix/bsd/tcflush.c
new file mode 100644
index 0000000000..4d1e933b56
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcflush.c
@@ -0,0 +1,48 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stddef.h>
+#include <termios.h>
+#include <unistd.h>
+#include "bsdtty.h"
+#include <sys/file.h>
+
+/* Flush pending data on FD.  */
+int
+tcflush (int fd, int queue_selector)
+{
+  int arg;
+
+  switch (queue_selector)
+    {
+    case TCIFLUSH:
+      arg = FREAD;
+      break;
+    case TCOFLUSH:
+      arg = FWRITE;
+      break;
+    case TCIOFLUSH:
+      arg = FREAD | FWRITE;
+      break;
+    default:
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  return __ioctl (fd, TIOCFLUSH, (void *) &arg);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcgetattr.c b/REORG.TODO/sysdeps/unix/bsd/tcgetattr.c
new file mode 100644
index 0000000000..1779bb9342
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcgetattr.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+#include <termios.h>
+
+/* These are defined both in <bits/termios.h> and in <bits/ioctls.h>.
+   They should have the same values, but perhaps not written the same way.  */
+#undef ECHO
+#undef MDMBUF
+#undef TOSTOP
+#undef FLUSHO
+#undef PENDIN
+#undef NOFLSH
+#include <sys/ioctl.h>
+
+/* Put the state of FD into *TERMIOS_P.  */
+int
+__tcgetattr (int fd, struct termios *termios_p)
+{
+  return __ioctl (fd, TIOCGETA, termios_p);
+}
+
+weak_alias (__tcgetattr, tcgetattr)
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcgetpgrp.c b/REORG.TODO/sysdeps/unix/bsd/tcgetpgrp.c
new file mode 100644
index 0000000000..6ba19ed351
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcgetpgrp.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+/* Return the foreground process group ID of FD.  */
+pid_t
+tcgetpgrp (int fd)
+{
+  int pgrp;
+
+  if (__ioctl (fd, TIOCGPGRP, &pgrp) < 0)
+    return (pid_t) -1;
+  return (pid_t) pgrp;
+}
+libc_hidden_def (tcgetpgrp)
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcsendbrk.c b/REORG.TODO/sysdeps/unix/bsd/tcsendbrk.c
new file mode 100644
index 0000000000..f074c7a065
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcsendbrk.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stddef.h>
+#include <signal.h>
+#include <termios.h>
+#include <unistd.h>
+#include "bsdtty.h"
+#include <sys/file.h>
+#include <sys/time.h>
+#include <sys/types.h>
+
+/* Send zero bits on FD.  */
+int
+tcsendbreak (int fd, int duration)
+{
+  struct timeval delay;
+
+  /* The break lasts 0.25 to 0.5 seconds if DURATION is zero,
+     and an implementation-defined period if DURATION is nonzero.
+     We define a positive DURATION to be number of microseconds to break.  */
+  if (duration <= 0)
+    duration = 400000;
+
+  delay.tv_sec = 0;
+  delay.tv_usec = duration;
+
+  /* Starting sending break.  */
+  if (__ioctl (fd, TIOCSBRK, (void *) NULL) < 0)
+    return -1;
+
+  /* Wait DURATION microseconds.  */
+  (void) __select (0, (fd_set *) NULL, (fd_set *) NULL, (fd_set *) NULL,
+		   &delay);
+
+  /* Turn off the break.  */
+  return __ioctl (fd, TIOCCBRK, (void *) NULL);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcsetattr.c b/REORG.TODO/sysdeps/unix/bsd/tcsetattr.c
new file mode 100644
index 0000000000..c754e80cbe
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcsetattr.c
@@ -0,0 +1,59 @@
+/* Copyright (C) 1992-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stddef.h>
+#include <termios.h>
+
+/* These are defined both in <bits/termios.h> and in <bits/ioctls.h>.
+   They should have the same values, but perhaps not written the same way.  */
+#undef ECHO
+#undef MDMBUF
+#undef TOSTOP
+#undef FLUSHO
+#undef PENDIN
+#undef NOFLSH
+#include <sys/ioctl.h>
+
+
+/* Set the state of FD to *TERMIOS_P.  */
+int
+tcsetattr (int fd, int optional_actions, const struct termios *termios_p)
+{
+  struct termios myt;
+
+  if (optional_actions & TCSASOFT)
+    {
+      myt = *termios_p;
+      myt.c_cflag |= CIGNORE;
+      termios_p = &myt;
+      optional_actions &= ~TCSASOFT;
+    }
+
+  switch (optional_actions)
+    {
+    case TCSANOW:
+      return __ioctl (fd, TIOCSETA, termios_p);
+
+    case TCSADRAIN:
+      return __ioctl (fd, TIOCSETAW, termios_p);
+
+    default:
+      return __ioctl (fd, TIOCSETAF, termios_p);
+    }
+}
+libc_hidden_def (tcsetattr)
diff --git a/REORG.TODO/sysdeps/unix/bsd/tcsetpgrp.c b/REORG.TODO/sysdeps/unix/bsd/tcsetpgrp.c
new file mode 100644
index 0000000000..b99716adbe
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/tcsetpgrp.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+#include <unistd.h>
+
+/* Set the foreground process group ID of FD set PGRP_ID.  */
+int
+tcsetpgrp (int fd, pid_t pgrp_id)
+{
+  return __ioctl (fd, TIOCSPGRP, &pgrp_id);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/ualarm.c b/REORG.TODO/sysdeps/unix/bsd/ualarm.c
new file mode 100644
index 0000000000..133ed86597
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/ualarm.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/time.h>
+#include <unistd.h>
+
+/* Set an alarm to go off (generating a SIGALRM signal) in VALUE microseconds.
+   If INTERVAL is nonzero, when the alarm goes off, the timer is reset to go
+   off every INTERVAL microseconds thereafter.
+
+   Returns the number of microseconds remaining before the alarm.  */
+useconds_t
+ualarm (useconds_t value, useconds_t interval)
+{
+  struct itimerval timer, otimer;
+
+  timer.it_value.tv_sec = 0;
+  timer.it_value.tv_usec = value;
+  timer.it_interval.tv_sec = 0;
+  timer.it_interval.tv_usec = interval;
+
+  if (__setitimer (ITIMER_REAL, &timer, &otimer) < 0)
+    return -1;
+
+  return (otimer.it_value.tv_sec * 1000000) + otimer.it_value.tv_usec;
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/unlockpt.c b/REORG.TODO/sysdeps/unix/bsd/unlockpt.c
new file mode 100644
index 0000000000..7388c98523
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/unlockpt.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <paths.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+/* Unlock the slave pseudo terminal associated with the master pseudo
+   terminal specified by FD.  */
+int
+unlockpt (int fd)
+{
+  char buf[sizeof (_PATH_TTY) + 2];
+
+  /* BSD doesn't have a lock, but it does have `revoke'.  */
+  if (__ptsname_r (fd, buf, sizeof (buf)))
+    return -1;
+  return revoke (buf);
+}
diff --git a/REORG.TODO/sysdeps/unix/bsd/wait.c b/REORG.TODO/sysdeps/unix/bsd/wait.c
new file mode 100644
index 0000000000..3daed7ee05
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/wait.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/wait.h>
+#include <errno.h>
+#include <sys/resource.h>
+#include <stddef.h>
+
+/* Wait for a child to die.  When one does, put its status in *STAT_LOC
+   and return its process ID.  For errors, return (pid_t) -1.  */
+__pid_t
+__libc_wait (int *stat_loc)
+{
+  return __wait4 (WAIT_ANY, stat_loc, 0, (struct rusage *) NULL);
+}
+
+weak_alias (__libc_wait, __wait)
+weak_alias (__libc_wait, wait)
diff --git a/REORG.TODO/sysdeps/unix/bsd/wait3.c b/REORG.TODO/sysdeps/unix/bsd/wait3.c
new file mode 100644
index 0000000000..feb17e5187
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/wait3.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+
+/* Wait for a child to exit.  When one does, put its status in *STAT_LOC and
+   return its process ID.  For errors return (pid_t) -1.  If USAGE is not nil,
+   store information about the child's resource usage (as a `struct rusage')
+   there.  If the WUNTRACED bit is set in OPTIONS, return status for stopped
+   children; otherwise don't.  */
+pid_t
+__wait3 (int *stat_loc, int options, struct rusage *usage)
+{
+  return __wait4 (WAIT_ANY, stat_loc, options, usage);
+}
+
+weak_alias (__wait3, wait3)
diff --git a/REORG.TODO/sysdeps/unix/bsd/waitpid.c b/REORG.TODO/sysdeps/unix/bsd/waitpid.c
new file mode 100644
index 0000000000..18f680e3c0
--- /dev/null
+++ b/REORG.TODO/sysdeps/unix/bsd/waitpid.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1991-2017 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <stddef.h>
+
+/* Wait for a child matching PID to die.
+   If PID is greater than 0, match any process whose process ID is PID.
+   If PID is (pid_t) -1, match any process.
+   If PID is (pid_t) 0, match any process with the
+   same process group as the current process.
+   If PID is less than -1, match any process whose
+   process group is the absolute value of PID.
+   If the WNOHANG bit is set in OPTIONS, and that child
+   is not already dead, return (pid_t) 0.  If successful,
+   return PID and store the dead child's status in STAT_LOC.
+   Return (pid_t) -1 for errors.  If the WUNTRACED bit is set in OPTIONS,
+   return status for stopped children; otherwise don't.  */
+pid_t
+__waitpid (pid_t pid, int *stat_loc, int options)
+{
+  return __wait4 (pid, stat_loc, options, NULL);
+}
+
+libc_hidden_def (__waitpid)
+weak_alias (__waitpid, waitpid)