summaryrefslogtreecommitdiffstats
path: root/libc/unistd
diff options
context:
space:
mode:
Diffstat (limited to 'libc/unistd')
-rw-r--r--libc/unistd/abort.c101
-rw-r--r--libc/unistd/alarm.c58
-rw-r--r--libc/unistd/brk.c45
-rw-r--r--libc/unistd/creat.c34
-rw-r--r--libc/unistd/daemon.c68
-rw-r--r--libc/unistd/exec.c244
-rw-r--r--libc/unistd/fcntl.c43
-rw-r--r--libc/unistd/fnmatch.c205
-rw-r--r--libc/unistd/ftime.c49
-rw-r--r--libc/unistd/ftok.c40
-rw-r--r--libc/unistd/getcwd.c35
-rw-r--r--libc/unistd/getdtablesize.c39
-rw-r--r--libc/unistd/gethostname.c51
-rw-r--r--libc/unistd/getopt_long.c537
-rw-r--r--libc/unistd/getpgrp.c33
-rw-r--r--libc/unistd/getpriority.c37
-rw-r--r--libc/unistd/getpt.c34
-rw-r--r--libc/unistd/initgroups.c58
-rw-r--r--libc/unistd/isatty.c39
-rw-r--r--libc/unistd/issetugid.c35
-rw-r--r--libc/unistd/lseek64.c40
-rw-r--r--libc/unistd/mmap.c43
-rw-r--r--libc/unistd/nice.c35
-rw-r--r--libc/unistd/open.c53
-rw-r--r--libc/unistd/openat.c53
-rw-r--r--libc/unistd/opendir.c267
-rw-r--r--libc/unistd/pathconf.c273
-rw-r--r--libc/unistd/perror.c44
-rw-r--r--libc/unistd/popen.c167
-rw-r--r--libc/unistd/pread.c34
-rw-r--r--libc/unistd/pselect.c59
-rw-r--r--libc/unistd/ptsname.c44
-rw-r--r--libc/unistd/ptsname_r.c56
-rw-r--r--libc/unistd/pwrite.c37
-rw-r--r--libc/unistd/raise.c34
-rw-r--r--libc/unistd/reboot.c34
-rw-r--r--libc/unistd/recv.c34
-rw-r--r--libc/unistd/sbrk.c60
-rw-r--r--libc/unistd/send.c34
-rw-r--r--libc/unistd/setegid.c33
-rw-r--r--libc/unistd/seteuid.c33
-rw-r--r--libc/unistd/setpgrp.c33
-rw-r--r--libc/unistd/sigblock.c49
-rw-r--r--libc/unistd/siginterrupt.c45
-rw-r--r--libc/unistd/siglist.c33
-rw-r--r--libc/unistd/signal.c57
-rw-r--r--libc/unistd/sigsetmask.c47
-rw-r--r--libc/unistd/sigsuspend.c37
-rw-r--r--libc/unistd/sigwait.c74
-rw-r--r--libc/unistd/sleep.c52
-rw-r--r--libc/unistd/socketcalls.c259
-rw-r--r--libc/unistd/statfs.c35
-rw-r--r--libc/unistd/strsignal.c38
-rw-r--r--libc/unistd/sysconf.c434
-rw-r--r--libc/unistd/syslog.c368
-rw-r--r--libc/unistd/system.c74
-rw-r--r--libc/unistd/tcgetpgrp.c34
-rw-r--r--libc/unistd/tcsetpgrp.c33
-rw-r--r--libc/unistd/time.c62
-rw-r--r--libc/unistd/umount.c35
-rw-r--r--libc/unistd/unlockpt.c36
-rw-r--r--libc/unistd/usleep.c52
-rw-r--r--libc/unistd/wait.c46
63 files changed, 0 insertions, 5185 deletions
diff --git a/libc/unistd/abort.c b/libc/unistd/abort.c
deleted file mode 100644
index d4e40e1..0000000
--- a/libc/unistd/abort.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* $OpenBSD: abort.c,v 1.14 2005/08/08 08:05:36 espie Exp $ */
-/*
- * Copyright (c) 1985 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. 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 <signal.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "thread_private.h"
-#include "atexit.h"
-
-/* temporary, for bug hunting */
-#include "logd.h"
-#define debug_log(format, ...) \
- __libc_android_log_print(ANDROID_LOG_DEBUG, "libc-abort", (format), ##__VA_ARGS__ )
-
-void
-abort(void)
-{
- struct atexit *p = __atexit;
- static int cleanup_called = 0;
- sigset_t mask;
-
-
- sigfillset(&mask);
- /*
- * don't block SIGABRT to give any handler a chance; we ignore
- * any errors -- X311J doesn't allow abort to return anyway.
- */
- sigdelset(&mask, SIGABRT);
- /* temporary, so deliberate seg fault can be caught by debuggerd */
- sigdelset(&mask, SIGSEGV);
- /* -- */
- (void)sigprocmask(SIG_SETMASK, &mask, (sigset_t *)NULL);
-
- /*
- * POSIX requires we flush stdio buffers on abort
- */
- if (cleanup_called == 0) {
- while (p != NULL && p->next != NULL)
- p = p->next;
- /* the check for fn_dso == NULL is mostly paranoia */
- if (p != NULL && p->fns[0].fn_dso == NULL &&
- p->fns[0].fn_ptr.std_func != NULL) {
- cleanup_called = 1;
- (*p->fns[0].fn_ptr.std_func)();
- }
- }
-
- /* temporary, for bug hunting */
- debug_log("abort() called in pid %d\n", getpid());
- /* seg fault seems to produce better debuggerd results than SIGABRT */
- *((char*)0xdeadbaad) = 39;
- debug_log("somehow we're not dead?\n");
- /* -- */
-
- (void)kill(getpid(), SIGABRT);
-
- /*
- * if SIGABRT ignored, or caught and the handler returns, do
- * it again, only harder.
- */
- {
- struct sigaction sa;
-
- sa.sa_handler = SIG_DFL;
- sa.sa_flags = SA_RESTART;
- sigemptyset(&sa.sa_mask);
-
- (void)sigaction( SIGABRT, &sa, &sa );
- }
-
- (void)sigprocmask(SIG_SETMASK, &mask, (sigset_t *)NULL);
- (void)kill(getpid(), SIGABRT);
- _exit(1);
-}
diff --git a/libc/unistd/alarm.c b/libc/unistd/alarm.c
deleted file mode 100644
index 01863a4..0000000
--- a/libc/unistd/alarm.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The 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.
- * 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.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)alarm.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-//__FBSDID("$FreeBSD: /repoman/r/ncvs/src/lib/libc/gen/alarm.c,v 1.3 2007/01/09 00:27:53 imp Exp $");
-
-/*
- * Backwards compatible alarm.
- */
-#include <sys/time.h>
-#include <unistd.h>
-
-unsigned int
-alarm(secs)
- unsigned int secs;
-{
- struct itimerval it, oitv;
- struct itimerval *itp = &it;
-
- itp->it_interval.tv_usec = 0;
- itp->it_interval.tv_sec = 0;
- itp->it_value.tv_sec = secs;
- itp->it_value.tv_usec = 0;
- if (setitimer(ITIMER_REAL, itp, &oitv) < 0)
- return (-1);
- if (oitv.it_value.tv_usec)
- oitv.it_value.tv_sec++;
- return (oitv.it_value.tv_sec);
-}
diff --git a/libc/unistd/brk.c b/libc/unistd/brk.c
deleted file mode 100644
index bf2f108..0000000
--- a/libc/unistd/brk.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stddef.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-/* shared with sbrk.c */
-char *__bionic_brk;
-
-int brk(void* end_data)
-{
- char* new_brk = __brk( end_data );
-
- if (new_brk != end_data)
- return -1;
-
- __bionic_brk = new_brk;
-
- return 0;
-}
diff --git a/libc/unistd/creat.c b/libc/unistd/creat.c
deleted file mode 100644
index 1b14465..0000000
--- a/libc/unistd/creat.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <fcntl.h>
-
-int creat(const char* pathname, mode_t mode)
-{
- return open(pathname, O_WRONLY|O_TRUNC|O_CREAT, mode);
-}
diff --git a/libc/unistd/daemon.c b/libc/unistd/daemon.c
deleted file mode 100644
index 8181d16..0000000
--- a/libc/unistd/daemon.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-int daemon( int nochdir, int noclose )
-{
- pid_t pid;
-
- if ( !nochdir && chdir("/") != 0 )
- return -1;
-
- if ( !noclose )
- {
- int fd = open("/dev/null", O_RDWR);
-
- if ( fd < 0 )
- return -1;
-
- if ( dup2( fd, 0 ) < 0 ||
- dup2( fd, 1 ) < 0 ||
- dup2( fd, 2 ) < 0 )
- {
- close(fd);
- return -1;
- }
- close(fd);
- }
-
- pid = fork();
- if (pid < 0)
- return -1;
-
- if (pid > 0)
- _exit(0);
-
- if ( setsid() < 0 )
- return -1;
-
- return 0;
-}
-
diff --git a/libc/unistd/exec.c b/libc/unistd/exec.c
deleted file mode 100644
index cbb98b3..0000000
--- a/libc/unistd/exec.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* $OpenBSD: exec.c,v 1.18 2005/08/08 08:05:34 espie Exp $ */
-/*-
- * Copyright (c) 1991, 1993
- * The 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. 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 <sys/param.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <paths.h>
-#include <stdarg.h>
-#include <alloca.h>
-
-extern char **environ;
-
-int
-execl(const char *name, const char *arg, ...)
-{
- va_list ap;
- char **argv;
- int n;
-
- va_start(ap, arg);
- n = 1;
- while (va_arg(ap, char *) != NULL)
- n++;
- va_end(ap);
- argv = alloca((n + 1) * sizeof(*argv));
- if (argv == NULL) {
- errno = ENOMEM;
- return (-1);
- }
- va_start(ap, arg);
- n = 1;
- argv[0] = (char *)arg;
- while ((argv[n] = va_arg(ap, char *)) != NULL)
- n++;
- va_end(ap);
- return (execve(name, argv, environ));
-}
-
-int
-execle(const char *name, const char *arg, ...)
-{
- va_list ap;
- char **argv, **envp;
- int n;
-
- va_start(ap, arg);
- n = 1;
- while (va_arg(ap, char *) != NULL)
- n++;
- va_end(ap);
- argv = alloca((n + 1) * sizeof(*argv));
- if (argv == NULL) {
- errno = ENOMEM;
- return (-1);
- }
- va_start(ap, arg);
- n = 1;
- argv[0] = (char *)arg;
- while ((argv[n] = va_arg(ap, char *)) != NULL)
- n++;
- envp = va_arg(ap, char **);
- va_end(ap);
- return (execve(name, argv, envp));
-}
-
-int
-execlp(const char *name, const char *arg, ...)
-{
- va_list ap;
- char **argv;
- int n;
-
- va_start(ap, arg);
- n = 1;
- while (va_arg(ap, char *) != NULL)
- n++;
- va_end(ap);
- argv = alloca((n + 1) * sizeof(*argv));
- if (argv == NULL) {
- errno = ENOMEM;
- return (-1);
- }
- va_start(ap, arg);
- n = 1;
- argv[0] = (char *)arg;
- while ((argv[n] = va_arg(ap, char *)) != NULL)
- n++;
- va_end(ap);
- return (execvp(name, argv));
-}
-
-int
-execv(const char *name, char * const *argv)
-{
- (void)execve(name, argv, environ);
- return (-1);
-}
-
-int
-execvp(const char *name, char * const *argv)
-{
- char **memp;
- int cnt, lp, ln, len;
- char *p;
- int eacces = 0;
- char *bp, *cur, *path, buf[MAXPATHLEN];
-
- /*
- * Do not allow null name
- */
- if (name == NULL || *name == '\0') {
- errno = ENOENT;
- return (-1);
- }
-
- /* If it's an absolute or relative path name, it's easy. */
- if (strchr(name, '/')) {
- bp = (char *)name;
- cur = path = NULL;
- goto retry;
- }
- bp = buf;
-
- /* Get the path we're searching. */
- if (!(path = getenv("PATH")))
- path = _PATH_DEFPATH;
- len = strlen(path) + 1;
- cur = alloca(len);
- if (cur == NULL) {
- errno = ENOMEM;
- return (-1);
- }
- strlcpy(cur, path, len);
- path = cur;
- while ((p = strsep(&cur, ":"))) {
- /*
- * It's a SHELL path -- double, leading and trailing colons
- * mean the current directory.
- */
- if (!*p) {
- p = ".";
- lp = 1;
- } else
- lp = strlen(p);
- ln = strlen(name);
-
- /*
- * If the path is too long complain. This is a possible
- * security issue; given a way to make the path too long
- * the user may execute the wrong program.
- */
- if (lp + ln + 2 > (int)sizeof(buf)) {
- struct iovec iov[3];
-
- iov[0].iov_base = "execvp: ";
- iov[0].iov_len = 8;
- iov[1].iov_base = p;
- iov[1].iov_len = lp;
- iov[2].iov_base = ": path too long\n";
- iov[2].iov_len = 16;
- (void)writev(STDERR_FILENO, iov, 3);
- continue;
- }
- bcopy(p, buf, lp);
- buf[lp] = '/';
- bcopy(name, buf + lp + 1, ln);
- buf[lp + ln + 1] = '\0';
-
-retry: (void)execve(bp, argv, environ);
- switch(errno) {
- case E2BIG:
- goto done;
- case EISDIR:
- case ELOOP:
- case ENAMETOOLONG:
- case ENOENT:
- break;
- case ENOEXEC:
- for (cnt = 0; argv[cnt]; ++cnt)
- ;
- memp = alloca((cnt + 2) * sizeof(char *));
- if (memp == NULL)
- goto done;
- memp[0] = "sh";
- memp[1] = bp;
- bcopy(argv + 1, memp + 2, cnt * sizeof(char *));
- (void)execve(_PATH_BSHELL, memp, environ);
- goto done;
- case ENOMEM:
- goto done;
- case ENOTDIR:
- break;
- case ETXTBSY:
- /*
- * We used to retry here, but sh(1) doesn't.
- */
- goto done;
- case EACCES:
- eacces = 1;
- break;
- default:
- goto done;
- }
- }
- if (eacces)
- errno = EACCES;
- else if (!errno)
- errno = ENOENT;
-done:
- return (-1);
-}
diff --git a/libc/unistd/fcntl.c b/libc/unistd/fcntl.c
deleted file mode 100644
index b49db0a..0000000
--- a/libc/unistd/fcntl.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stdarg.h>
-#include <errno.h>
-
-extern int __fcntl64(int, int, void *);
-
-int fcntl(int fd, int cmd, ...)
-{
- va_list ap;
- void * arg;
-
- va_start(ap, cmd);
- arg = va_arg(ap, void *);
- va_end(ap);
-
- return __fcntl64(fd, cmd, arg);
-}
diff --git a/libc/unistd/fnmatch.c b/libc/unistd/fnmatch.c
deleted file mode 100644
index ad31c9e..0000000
--- a/libc/unistd/fnmatch.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/* $OpenBSD: fnmatch.c,v 1.13 2006/03/31 05:34:14 deraadt Exp $ */
-
-/*
- * Copyright (c) 1989, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Guido van Rossum.
- *
- * 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. 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.
- */
-
-/*
- * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6.
- * Compares a filename or pathname to a pattern.
- */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <fnmatch.h>
-
-#define EOS '\0'
-
-#define RANGE_MATCH 1
-#define RANGE_NOMATCH 0
-#define RANGE_ERROR (-1)
-
-static int rangematch(const char *, char, int, char **);
-
-int
-fnmatch(const char *pattern, const char *string, int flags)
-{
- const char *stringstart;
- char *newp;
- char c, test;
-
- for (stringstart = string;;)
- switch (c = *pattern++) {
- case EOS:
- if ((flags & FNM_LEADING_DIR) && *string == '/')
- return (0);
- return (*string == EOS ? 0 : FNM_NOMATCH);
- case '?':
- if (*string == EOS)
- return (FNM_NOMATCH);
- if (*string == '/' && (flags & FNM_PATHNAME))
- return (FNM_NOMATCH);
- if (*string == '.' && (flags & FNM_PERIOD) &&
- (string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
- return (FNM_NOMATCH);
- ++string;
- break;
- case '*':
- c = *pattern;
- /* Collapse multiple stars. */
- while (c == '*')
- c = *++pattern;
-
- if (*string == '.' && (flags & FNM_PERIOD) &&
- (string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
- return (FNM_NOMATCH);
-
- /* Optimize for pattern with * at end or before /. */
- if (c == EOS) {
- if (flags & FNM_PATHNAME)
- return ((flags & FNM_LEADING_DIR) ||
- strchr(string, '/') == NULL ?
- 0 : FNM_NOMATCH);
- else
- return (0);
- } else if (c == '/' && (flags & FNM_PATHNAME)) {
- if ((string = strchr(string, '/')) == NULL)
- return (FNM_NOMATCH);
- break;
- }
-
- /* General case, use recursion. */
- while ((test = *string) != EOS) {
- if (!fnmatch(pattern, string, flags & ~FNM_PERIOD))
- return (0);
- if (test == '/' && (flags & FNM_PATHNAME))
- break;
- ++string;
- }
- return (FNM_NOMATCH);
- case '[':
- if (*string == EOS)
- return (FNM_NOMATCH);
- if (*string == '/' && (flags & FNM_PATHNAME))
- return (FNM_NOMATCH);
- if (*string == '.' && (flags & FNM_PERIOD) &&
- (string == stringstart ||
- ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
- return (FNM_NOMATCH);
-
- switch (rangematch(pattern, *string, flags, &newp)) {
- case RANGE_ERROR:
- /* not a good range, treat as normal text */
- goto normal;
- case RANGE_MATCH:
- pattern = newp;
- break;
- case RANGE_NOMATCH:
- return (FNM_NOMATCH);
- }
- ++string;
- break;
- case '\\':
- if (!(flags & FNM_NOESCAPE)) {
- if ((c = *pattern++) == EOS) {
- c = '\\';
- --pattern;
- }
- }
- /* FALLTHROUGH */
- default:
- normal:
- if (c != *string && !((flags & FNM_CASEFOLD) &&
- (tolower((unsigned char)c) ==
- tolower((unsigned char)*string))))
- return (FNM_NOMATCH);
- ++string;
- break;
- }
- /* NOTREACHED */
-}
-
-static int
-rangematch(const char *pattern, char test, int flags, char **newp)
-{
- int negate, ok;
- char c, c2;
-
- /*
- * A bracket expression starting with an unquoted circumflex
- * character produces unspecified results (IEEE 1003.2-1992,
- * 3.13.2). This implementation treats it like '!', for
- * consistency with the regular expression syntax.
- * J.T. Conklin (conklin@ngai.kaleida.com)
- */
- if ((negate = (*pattern == '!' || *pattern == '^')))
- ++pattern;
-
- if (flags & FNM_CASEFOLD)
- test = (char)tolower((unsigned char)test);
-
- /*
- * A right bracket shall lose its special meaning and represent
- * itself in a bracket expression if it occurs first in the list.
- * -- POSIX.2 2.8.3.2
- */
- ok = 0;
- c = *pattern++;
- do {
- if (c == '\\' && !(flags & FNM_NOESCAPE))
- c = *pattern++;
- if (c == EOS)
- return (RANGE_ERROR);
- if (c == '/' && (flags & FNM_PATHNAME))
- return (RANGE_NOMATCH);
- if ((flags & FNM_CASEFOLD))
- c = (char)tolower((unsigned char)c);
- if (*pattern == '-'
- && (c2 = *(pattern+1)) != EOS && c2 != ']') {
- pattern += 2;
- if (c2 == '\\' && !(flags & FNM_NOESCAPE))
- c2 = *pattern++;
- if (c2 == EOS)
- return (RANGE_ERROR);
- if (flags & FNM_CASEFOLD)
- c2 = (char)tolower((unsigned char)c2);
- if (c <= test && test <= c2)
- ok = 1;
- } else if (c == test)
- ok = 1;
- } while ((c = *pattern++) != ']');
-
- *newp = (char *)pattern;
- return (ok == negate ? RANGE_NOMATCH : RANGE_MATCH);
-}
diff --git a/libc/unistd/ftime.c b/libc/unistd/ftime.c
deleted file mode 100644
index 6513593..0000000
--- a/libc/unistd/ftime.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/timeb.h>
-
-int ftime(struct timeb *tb)
-{
- struct timeval tv;
- struct timezone tz;
-
- if (gettimeofday (&tv, &tz) < 0)
- return -1;
-
- tb->time = tv.tv_sec;
- tb->millitm = (tv.tv_usec + 500) / 1000;
-
- if (tb->millitm == 1000) {
- ++tb->time;
- tb->millitm = 0;
- }
- tb->timezone = tz.tz_minuteswest;
- tb->dstflag = tz.tz_dsttime;
-
- return 0;
-}
diff --git a/libc/unistd/ftok.c b/libc/unistd/ftok.c
deleted file mode 100644
index 638bd0a..0000000
--- a/libc/unistd/ftok.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <sys/ipc.h>
-#include <sys/stat.h>
-
-key_t ftok(const char* path, int id)
-{
- struct stat st;
-
- if ( lstat(path, &st) < 0 )
- return -1;
-
- return (key_t)( (st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) | ((id & 255) << 24) );
-}
diff --git a/libc/unistd/getcwd.c b/libc/unistd/getcwd.c
deleted file mode 100644
index 1cf80e9..0000000
--- a/libc/unistd/getcwd.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-extern int __getcwd(char * buf, size_t size);
-
-char *getcwd(char *buf, size_t size)
-{
- return ( __getcwd(buf, size) < 0 ) ? NULL : buf;
-}
diff --git a/libc/unistd/getdtablesize.c b/libc/unistd/getdtablesize.c
deleted file mode 100644
index 91315a5..0000000
--- a/libc/unistd/getdtablesize.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/resource.h>
-#include <sys/sysconf.h>
-
-int getdtablesize()
-{
- struct rlimit r;
-
- if (getrlimit(RLIMIT_NOFILE, &r) < 0) {
- return sysconf(_SC_OPEN_MAX);
- }
- return r.rlim_cur;
-}
diff --git a/libc/unistd/gethostname.c b/libc/unistd/gethostname.c
deleted file mode 100644
index 369d21e..0000000
--- a/libc/unistd/gethostname.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/utsname.h>
-
-int gethostname(char* buff, size_t buflen)
-{
- struct utsname name;
- int result = 0;
-
- result = uname(&name);
- if (result != -1)
- {
- int namelen = strlen(name.nodename);
-
- if ((int)buflen < namelen+1) {
- errno = EINVAL;
- result = -1;
- } else {
- memcpy( buff, name.nodename, namelen+1 );
- }
- }
- return result;
-}
diff --git a/libc/unistd/getopt_long.c b/libc/unistd/getopt_long.c
deleted file mode 100644
index dbdf01a..0000000
--- a/libc/unistd/getopt_long.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/* $OpenBSD: getopt_long.c,v 1.20 2005/10/25 15:49:37 jmc Exp $ */
-/* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */
-
-/*
- * Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Sponsored in part by the Defense Advanced Research Projects
- * Agency (DARPA) and Air Force Research Laboratory, Air Force
- * Materiel Command, USAF, under agreement number F39502-99-1-0512.
- */
-/*-
- * Copyright (c) 2000 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Dieter Baron and Thomas Klausner.
- *
- * 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 NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 <err.h>
-#include <errno.h>
-#include <getopt.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#define REPLACE_GETOPT /* use this getopt as the system getopt(3) */
-
-#ifdef REPLACE_GETOPT
-int opterr = 1; /* if error message should be printed */
-int optind = 1; /* index into parent argv vector */
-int optopt = '?'; /* character checked for validity */
-char *optarg; /* argument associated with option */
-#endif
-int optreset; /* reset getopt */
-
-#define PRINT_ERROR ((opterr) && (*options != ':'))
-
-#define FLAG_PERMUTE 0x01 /* permute non-options to the end of argv */
-#define FLAG_ALLARGS 0x02 /* treat non-options as args to option "-1" */
-#define FLAG_LONGONLY 0x04 /* operate as getopt_long_only */
-
-/* return values */
-#define BADCH (int)'?'
-#define BADARG ((*options == ':') ? (int)':' : (int)'?')
-#define INORDER (int)1
-
-#define EMSG ""
-
-static int getopt_internal(int, char * const *, const char *,
- const struct option *, int *, int);
-static int parse_long_options(char * const *, const char *,
- const struct option *, int *, int);
-static int gcd(int, int);
-static void permute_args(int, int, int, char * const *);
-
-static char *place = EMSG; /* option letter processing */
-
-/* XXX: set optreset to 1 rather than these two */
-static int nonopt_start = -1; /* first non option argument (for permute) */
-static int nonopt_end = -1; /* first option after non options (for permute) */
-
-/* Error messages */
-static const char recargchar[] = "option requires an argument -- %c";
-static const char recargstring[] = "option requires an argument -- %s";
-static const char ambig[] = "ambiguous option -- %.*s";
-static const char noarg[] = "option doesn't take an argument -- %.*s";
-static const char illoptchar[] = "unknown option -- %c";
-static const char illoptstring[] = "unknown option -- %s";
-
-/*
- * Compute the greatest common divisor of a and b.
- */
-static int
-gcd(int a, int b)
-{
- int c;
-
- c = a % b;
- while (c != 0) {
- a = b;
- b = c;
- c = a % b;
- }
-
- return (b);
-}
-
-/*
- * Exchange the block from nonopt_start to nonopt_end with the block
- * from nonopt_end to opt_end (keeping the same order of arguments
- * in each block).
- */
-static void
-permute_args(int panonopt_start, int panonopt_end, int opt_end,
- char * const *nargv)
-{
- int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos;
- char *swap;
-
- /*
- * compute lengths of blocks and number and size of cycles
- */
- nnonopts = panonopt_end - panonopt_start;
- nopts = opt_end - panonopt_end;
- ncycle = gcd(nnonopts, nopts);
- cyclelen = (opt_end - panonopt_start) / ncycle;
-
- for (i = 0; i < ncycle; i++) {
- cstart = panonopt_end+i;
- pos = cstart;
- for (j = 0; j < cyclelen; j++) {
- if (pos >= panonopt_end)
- pos -= nnonopts;
- else
- pos += nopts;
- swap = nargv[pos];
- /* LINTED const cast */
- ((char **) nargv)[pos] = nargv[cstart];
- /* LINTED const cast */
- ((char **)nargv)[cstart] = swap;
- }
- }
-}
-
-/*
- * parse_long_options --
- * Parse long options in argc/argv argument vector.
- * Returns -1 if short_too is set and the option does not match long_options.
- */
-static int
-parse_long_options(char * const *nargv, const char *options,
- const struct option *long_options, int *idx, int short_too)
-{
- char *current_argv, *has_equal;
- size_t current_argv_len;
- int i, match;
-
- current_argv = place;
- match = -1;
-
- optind++;
-
- if ((has_equal = strchr(current_argv, '=')) != NULL) {
- /* argument found (--option=arg) */
- current_argv_len = has_equal - current_argv;
- has_equal++;
- } else
- current_argv_len = strlen(current_argv);
-
- for (i = 0; long_options[i].name; i++) {
- /* find matching long option */
- if (strncmp(current_argv, long_options[i].name,
- current_argv_len))
- continue;
-
- if (strlen(long_options[i].name) == current_argv_len) {
- /* exact match */
- match = i;
- break;
- }
- /*
- * If this is a known short option, don't allow
- * a partial match of a single character.
- */
- if (short_too && current_argv_len == 1)
- continue;
-
- if (match == -1) /* partial match */
- match = i;
- else {
- /* ambiguous abbreviation */
- if (PRINT_ERROR)
- fprintf(stderr,
- ambig, (int)current_argv_len,
- current_argv);
- optopt = 0;
- return (BADCH);
- }
- }
- if (match != -1) { /* option found */
- if (long_options[match].has_arg == no_argument
- && has_equal) {
- if (PRINT_ERROR)
- fprintf(stderr,
- noarg, (int)current_argv_len,
- current_argv);
- /*
- * XXX: GNU sets optopt to val regardless of flag
- */
- if (long_options[match].flag == NULL)
- optopt = long_options[match].val;
- else
- optopt = 0;
- return (BADARG);
- }
- if (long_options[match].has_arg == required_argument ||
- long_options[match].has_arg == optional_argument) {
- if (has_equal)
- optarg = has_equal;
- else if (long_options[match].has_arg ==
- required_argument) {
- /*
- * optional argument doesn't use next nargv
- */
- optarg = nargv[optind++];
- }
- }
- if ((long_options[match].has_arg == required_argument)
- && (optarg == NULL)) {
- /*
- * Missing argument; leading ':' indicates no error
- * should be generated.
- */
- if (PRINT_ERROR)
- fprintf(stderr,
- recargstring,
- current_argv);
- /*
- * XXX: GNU sets optopt to val regardless of flag
- */
- if (long_options[match].flag == NULL)
- optopt = long_options[match].val;
- else
- optopt = 0;
- --optind;
- return (BADARG);
- }
- } else { /* unknown option */
- if (short_too) {
- --optind;
- return (-1);
- }
- if (PRINT_ERROR)
- fprintf(stderr, illoptstring, current_argv);
- optopt = 0;
- return (BADCH);
- }
- if (idx)
- *idx = match;
- if (long_options[match].flag) {
- *long_options[match].flag = long_options[match].val;
- return (0);
- } else
- return (long_options[match].val);
-}
-
-/*
- * getopt_internal --
- * Parse argc/argv argument vector. Called by user level routines.
- */
-static int
-getopt_internal(int nargc, char * const *nargv, const char *options,
- const struct option *long_options, int *idx, int flags)
-{
- char *oli; /* option letter list index */
- int optchar, short_too;
- static int posixly_correct = -1;
-
- if (options == NULL)
- return (-1);
-
- /*
- * Disable GNU extensions if POSIXLY_CORRECT is set or options
- * string begins with a '+'.
- */
- if (posixly_correct == -1)
- posixly_correct = (getenv("POSIXLY_CORRECT") != NULL);
- if (posixly_correct || *options == '+')
- flags &= ~FLAG_PERMUTE;
- else if (*options == '-')
- flags |= FLAG_ALLARGS;
- if (*options == '+' || *options == '-')
- options++;
-
- /*
- * XXX Some GNU programs (like cvs) set optind to 0 instead of
- * XXX using optreset. Work around this braindamage.
- */
- if (optind == 0)
- optind = optreset = 1;
-
- optarg = NULL;
- if (optreset)
- nonopt_start = nonopt_end = -1;
-start:
- if (optreset || !*place) { /* update scanning pointer */
- optreset = 0;
- if (optind >= nargc) { /* end of argument vector */
- place = EMSG;
- if (nonopt_end != -1) {
- /* do permutation, if we have to */
- permute_args(nonopt_start, nonopt_end,
- optind, nargv);
- optind -= nonopt_end - nonopt_start;
- }
- else if (nonopt_start != -1) {
- /*
- * If we skipped non-options, set optind
- * to the first of them.
- */
- optind = nonopt_start;
- }
- nonopt_start = nonopt_end = -1;
- return (-1);
- }
- if (*(place = nargv[optind]) != '-' ||
- (place[1] == '\0' && strchr(options, '-') == NULL)) {
- place = EMSG; /* found non-option */
- if (flags & FLAG_ALLARGS) {
- /*
- * GNU extension:
- * return non-option as argument to option 1
- */
- optarg = nargv[optind++];
- return (INORDER);
- }
- if (!(flags & FLAG_PERMUTE)) {
- /*
- * If no permutation wanted, stop parsing
- * at first non-option.
- */
- return (-1);
- }
- /* do permutation */
- if (nonopt_start == -1)
- nonopt_start = optind;
- else if (nonopt_end != -1) {
- permute_args(nonopt_start, nonopt_end,
- optind, nargv);
- nonopt_start = optind -
- (nonopt_end - nonopt_start);
- nonopt_end = -1;
- }
- optind++;
- /* process next argument */
- goto start;
- }
- if (nonopt_start != -1 && nonopt_end == -1)
- nonopt_end = optind;
-
- /*
- * If we have "-" do nothing, if "--" we are done.
- */
- if (place[1] != '\0' && *++place == '-' && place[1] == '\0') {
- optind++;
- place = EMSG;
- /*
- * We found an option (--), so if we skipped
- * non-options, we have to permute.
- */
- if (nonopt_end != -1) {
- permute_args(nonopt_start, nonopt_end,
- optind, nargv);
- optind -= nonopt_end - nonopt_start;
- }
- nonopt_start = nonopt_end = -1;
- return (-1);
- }
- }
-
- /*
- * Check long options if:
- * 1) we were passed some
- * 2) the arg is not just "-"
- * 3) either the arg starts with -- we are getopt_long_only()
- */
- if (long_options != NULL && place != nargv[optind] &&
- (*place == '-' || (flags & FLAG_LONGONLY))) {
- short_too = 0;
- if (*place == '-')
- place++; /* --foo long option */
- else if (*place != ':' && strchr(options, *place) != NULL)
- short_too = 1; /* could be short option too */
-
- optchar = parse_long_options(nargv, options, long_options,
- idx, short_too);
- if (optchar != -1) {
- place = EMSG;
- return (optchar);
- }
- }
-
- if (((optchar = (int)*place++) == (int)':') ||
- (optchar == (int)'-' && *place != '\0') ||
- (oli = strchr(options, optchar)) == NULL) {
- /*
- * If the user specified "-" and '-' isn't listed in
- * options, return -1 (non-option) as per POSIX.
- * Otherwise, it is an unknown option character (or ':').
- */
- if (optchar == (int)'-' && *place == '\0')
- return (-1);
- if (!*place)
- ++optind;
- if (PRINT_ERROR)
- fprintf(stderr, illoptchar, optchar);
- optopt = optchar;
- return (BADCH);
- }
- if (long_options != NULL && optchar == 'W' && oli[1] == ';') {
- /* -W long-option */
- if (*place) /* no space */
- /* NOTHING */;
- else if (++optind >= nargc) { /* no arg */
- place = EMSG;
- if (PRINT_ERROR)
- fprintf(stderr, recargchar, optchar);
- optopt = optchar;
- return (BADARG);
- } else /* white space */
- place = nargv[optind];
- optchar = parse_long_options(nargv, options, long_options,
- idx, 0);
- place = EMSG;
- return (optchar);
- }
- if (*++oli != ':') { /* doesn't take argument */
- if (!*place)
- ++optind;
- } else { /* takes (optional) argument */
- optarg = NULL;
- if (*place) /* no white space */
- optarg = place;
- /* XXX: disable test for :: if PC? (GNU doesn't) */
- else if (oli[1] != ':') { /* arg not optional */
- if (++optind >= nargc) { /* no arg */
- place = EMSG;
- if (PRINT_ERROR)
- fprintf(stderr, recargchar, optchar);
- optopt = optchar;
- return (BADARG);
- } else
- optarg = nargv[optind];
- } else if (!(flags & FLAG_PERMUTE)) {
- /*
- * If permutation is disabled, we can accept an
- * optional arg separated by whitespace so long
- * as it does not start with a dash (-).
- */
- if (optind + 1 < nargc && *nargv[optind + 1] != '-')
- optarg = nargv[++optind];
- }
- place = EMSG;
- ++optind;
- }
- /* dump back option letter */
- return (optchar);
-}
-
-#ifdef REPLACE_GETOPT
-/*
- * getopt --
- * Parse argc/argv argument vector.
- *
- * [eventually this will replace the BSD getopt]
- */
-int
-getopt(int nargc, char * const *nargv, const char *options)
-{
-
- /*
- * We don't pass FLAG_PERMUTE to getopt_internal() since
- * the BSD getopt(3) (unlike GNU) has never done this.
- *
- * Furthermore, since many privileged programs call getopt()
- * before dropping privileges it makes sense to keep things
- * as simple (and bug-free) as possible.
- */
- return (getopt_internal(nargc, nargv, options, NULL, NULL, 0));
-}
-#endif /* REPLACE_GETOPT */
-
-/*
- * getopt_long --
- * Parse argc/argv argument vector.
- */
-int
-getopt_long(int nargc, char * const *nargv, const char *options,
- const struct option *long_options, int *idx)
-{
-
- return (getopt_internal(nargc, nargv, options, long_options, idx,
- FLAG_PERMUTE));
-}
-
-/*
- * getopt_long_only --
- * Parse argc/argv argument vector.
- */
-int
-getopt_long_only(int nargc, char * const *nargv, const char *options,
- const struct option *long_options, int *idx)
-{
-
- return (getopt_internal(nargc, nargv, options, long_options, idx,
- FLAG_PERMUTE|FLAG_LONGONLY));
-}
diff --git a/libc/unistd/getpgrp.c b/libc/unistd/getpgrp.c
deleted file mode 100644
index af7ced5..0000000
--- a/libc/unistd/getpgrp.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-pid_t getpgrp(void)
-{
- return getpgid(0);
-}
diff --git a/libc/unistd/getpriority.c b/libc/unistd/getpriority.c
deleted file mode 100644
index efc9d4e..0000000
--- a/libc/unistd/getpriority.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/resource.h>
-
-extern int __getpriority(int, int);
-
-int getpriority(int which, int who)
-{
- int result = __getpriority(which, who);
-
- return ( result < 0 ) ? result : 20-result;
-}
diff --git a/libc/unistd/getpt.c b/libc/unistd/getpt.c
deleted file mode 100644
index 8bb5c11..0000000
--- a/libc/unistd/getpt.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <fcntl.h>
-
-int getpt(void)
-{
- return open("/dev/ptmx", O_RDWR|O_NOCTTY);
-}
diff --git a/libc/unistd/initgroups.c b/libc/unistd/initgroups.c
deleted file mode 100644
index dea6d96..0000000
--- a/libc/unistd/initgroups.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <grp.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#define INIT_GROUPS 2
-
-int
-initgroups (const char *user, gid_t group)
-{
- gid_t groups0[ INIT_GROUPS ];
- gid_t* groups = groups0;
- int ret = -1;
- int numgroups = INIT_GROUPS;
-
- if (getgrouplist(user, group, groups, &numgroups) < 0) {
- groups = malloc(numgroups*sizeof(groups[0]));
- if (groups == NULL)
- return -1;
- if (getgrouplist(user,group,groups,&numgroups) < 0) {
- goto EXIT;
- }
- }
-
- ret = setgroups(numgroups, groups);
-
-EXIT:
- if (groups != groups0)
- free(groups);
-
- return ret;
-}
diff --git a/libc/unistd/isatty.c b/libc/unistd/isatty.c
deleted file mode 100644
index 93af6c5..0000000
--- a/libc/unistd/isatty.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <termios.h>
-#include <errno.h>
-
-int
-isatty (int fd)
-{
- struct termios term;
-
- return tcgetattr (fd, &term) == 0;
-}
diff --git a/libc/unistd/issetugid.c b/libc/unistd/issetugid.c
deleted file mode 100644
index 81f8e41..0000000
--- a/libc/unistd/issetugid.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-int issetugid(void)
-{
- /* for Bionic, this is sufficient */
- return 0;
-}
-
diff --git a/libc/unistd/lseek64.c b/libc/unistd/lseek64.c
deleted file mode 100644
index 017b331..0000000
--- a/libc/unistd/lseek64.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-extern int __llseek(int fd, unsigned long offset_hi, unsigned long offset_lo, loff_t* result, int whence);
-
-loff_t lseek64(int fd, loff_t off, int whence)
-{
- loff_t result;
-
- if ( __llseek(fd, (unsigned long)(off >> 32),(unsigned long)(off), &result, whence ) < 0 )
- return -1;
-
- return result;
-}
diff --git a/libc/unistd/mmap.c b/libc/unistd/mmap.c
deleted file mode 100644
index 848abbb..0000000
--- a/libc/unistd/mmap.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <errno.h>
-#include <sys/mman.h>
-
-extern void* __mmap2(void*, size_t, int, int, int, size_t);
-
-#define MMAP2_SHIFT 12
-void* mmap( void* addr, size_t size, int prot, int flags, int fd, long offset )
-{
- if ( offset & ((1UL << MMAP2_SHIFT)-1) ) {
- errno = EINVAL;
- return MAP_FAILED;
- }
-
- return __mmap2(addr, size, prot, flags, fd, (size_t)offset >> MMAP2_SHIFT);
-}
diff --git a/libc/unistd/nice.c b/libc/unistd/nice.c
deleted file mode 100644
index 09b6469..0000000
--- a/libc/unistd/nice.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/resource.h>
-
-int nice(int increment)
-{
- int priority = getpriority(PRIO_PROCESS, 0);
-
- return setpriority( PRIO_PROCESS, 0, priority+increment);
-}
diff --git a/libc/unistd/open.c b/libc/unistd/open.c
deleted file mode 100644
index e8b1c89..0000000
--- a/libc/unistd/open.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <fcntl.h>
-#include <stdarg.h>
-
-extern int __open(const char*, int, int);
-
-int open(const char *pathname, int flags, ...)
-{
- mode_t mode = 0;
-
-#if !defined(__i386__)
- flags |= O_LARGEFILE;
-#endif
-
- if (flags & O_CREAT)
- {
- va_list args;
-
- va_start(args, flags);
- mode = (mode_t) va_arg(args, int);
- va_end(args);
- }
-
- return __open(pathname, flags, mode);
-}
-
diff --git a/libc/unistd/openat.c b/libc/unistd/openat.c
deleted file mode 100644
index 88b39a4..0000000
--- a/libc/unistd/openat.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <fcntl.h>
-#include <stdarg.h>
-
-extern int __openat(int, const char*, int, int);
-
-int openat(int fd, const char *pathname, int flags, ...)
-{
- mode_t mode = 0;
-
-#if !defined(__i386__)
- flags |= O_LARGEFILE;
-#endif
-
- if (flags & O_CREAT)
- {
- va_list args;
-
- va_start(args, flags);
- mode = (mode_t) va_arg(args, int);
- va_end(args);
- }
-
- return __openat(fd, pathname, flags, mode);
-}
-
diff --git a/libc/unistd/opendir.c b/libc/unistd/opendir.c
deleted file mode 100644
index afa3ea0..0000000
--- a/libc/unistd/opendir.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <dirent.h>
-#include <memory.h>
-#include <string.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <errno.h>
-
-struct DIR
-{
- int _DIR_fd;
- size_t _DIR_avail;
- struct dirent* _DIR_next;
- pthread_mutex_t _DIR_lock;
- struct dirent _DIR_buff[15];
-};
-
-int dirfd(DIR* dirp)
-{
- return dirp->_DIR_fd;
-}
-
-DIR* opendir( const char* dirpath )
-{
- DIR* dir = malloc(sizeof(DIR));
-
- if (!dir)
- goto Exit;
-
- dir->_DIR_fd = open(dirpath, O_RDONLY|O_DIRECTORY);
- if (dir->_DIR_fd < 0)
- {
- free(dir);
- dir = NULL;
- }
- else
- {
- dir->_DIR_avail = 0;
- dir->_DIR_next = NULL;
- pthread_mutex_init( &dir->_DIR_lock, NULL );
- }
-Exit:
- return dir;
-}
-
-
-DIR* fdopendir(int fd)
-{
- DIR* dir = malloc(sizeof(DIR));
-
- if (!dir)
- return 0;
-
- dir->_DIR_fd = fd;
- dir->_DIR_avail = 0;
- dir->_DIR_next = NULL;
- pthread_mutex_init( &dir->_DIR_lock, NULL );
-
- return dir;
-}
-
-
-static struct dirent*
-_readdir_unlocked(DIR* dir)
-{
- struct dirent* entry;
-
- if ( !dir->_DIR_avail )
- {
- int rc;
-
- for (;;) {
- rc = getdents( dir->_DIR_fd, dir->_DIR_buff, sizeof(dir->_DIR_buff));
- if (rc >= 0 || errno != EINTR)
- break;
- }
- if (rc <= 0)
- return NULL;
-
- dir->_DIR_avail = rc;
- dir->_DIR_next = dir->_DIR_buff;
- }
-
- entry = dir->_DIR_next;
-
- /* perform some sanity checks here */
- if (((long)(void*)entry & 3) != 0)
- return NULL;
-
- if ( (unsigned)entry->d_reclen > sizeof(*entry) ||
- entry->d_reclen <= offsetof(struct dirent, d_name) )
- goto Bad;
-
- if ( (char*)entry + entry->d_reclen > (char*)dir->_DIR_buff + sizeof(dir->_DIR_buff) )
- goto Bad;
-
- if ( !memchr( entry->d_name, 0, entry->d_reclen - offsetof(struct dirent, d_name)) )
- goto Bad;
-
- dir->_DIR_next = (struct dirent*)((char*)entry + entry->d_reclen);
- dir->_DIR_avail -= entry->d_reclen;
-
- return entry;
-
- Bad:
- errno = EINVAL;
- return NULL;
-}
-
-
-struct dirent*
-readdir(DIR * dir)
-{
- struct dirent *entry = NULL;
-
- pthread_mutex_lock( &dir->_DIR_lock );
- entry = _readdir_unlocked(dir);
- pthread_mutex_unlock( &dir->_DIR_lock );
-
- return entry;
-}
-
-
-int readdir_r(DIR* dir, struct dirent *entry, struct dirent **result)
-{
- struct dirent* ent;
- int save_errno = errno;
- int retval;
-
- *result = NULL;
- errno = 0;
-
- pthread_mutex_lock( &dir->_DIR_lock );
-
- ent = _readdir_unlocked(dir);
- retval = errno;
- if (ent == NULL) {
- if (!retval) {
- errno = save_errno;
- }
- } else {
- if (!retval) {
- errno = save_errno;
- *result = entry;
- memcpy( entry, ent, ent->d_reclen );
- }
- }
-
- pthread_mutex_unlock( &dir->_DIR_lock );
-
- return retval;
-}
-
-
-
-int closedir(DIR *dir)
-{
- int rc;
-
- rc = close(dir->_DIR_fd);
- dir->_DIR_fd = -1;
-
- pthread_mutex_destroy( &dir->_DIR_lock );
-
- free(dir);
- return rc;
-}
-
-
-void rewinddir(DIR *dir)
-{
- pthread_mutex_lock( &dir->_DIR_lock );
- lseek( dir->_DIR_fd, 0, SEEK_SET );
- dir->_DIR_avail = 0;
- pthread_mutex_unlock( &dir->_DIR_lock );
-}
-
-
-int alphasort(const void *a, const void *b)
-{
- struct dirent **d1, **d2;
-
- d1 = (struct dirent **) a;
- d2 = (struct dirent **) b;
- return strcmp((*d1)->d_name, (*d2)->d_name);
-}
-
-
-int scandir(const char *dir, struct dirent ***namelist,
- int(*filter)(const struct dirent *),
- int(*compar)(const struct dirent **, const struct dirent **))
-{
- DIR *d;
- int n_elem = 0;
- struct dirent *this_de, *de;
- struct dirent **de_list = NULL;
- int de_list_size = 0;
-
- d = opendir(dir);
- if (d == NULL) {
- return -1;
- }
-
- while ((this_de = readdir(d)) != NULL) {
- if (filter && (*filter)(this_de) == 0) {
- continue;
- }
- if (n_elem == 0) {
- de_list_size = 4;
- de_list = (struct dirent **)
- malloc(sizeof(struct dirent *)*de_list_size);
- if (de_list == NULL) {
- return -1;
- }
- }
- else if (n_elem == de_list_size) {
- struct dirent **de_list_new;
-
- de_list_size += 10;
- de_list_new = (struct dirent **)
- realloc(de_list, sizeof(struct dirent *)*de_list_size);
- if (de_list_new == NULL) {
- free(de_list);
- return -1;
- }
- de_list = de_list_new;
- }
- de = (struct dirent *) malloc(sizeof(struct dirent));
- *de = *this_de;
- de_list[n_elem++] = de;
- }
- closedir(d);
- if (n_elem && compar) {
- qsort(de_list, n_elem, sizeof(struct dirent *),
- (int (*)(const void *, const void *)) compar);
- }
- *namelist = de_list;
- return n_elem;
-}
diff --git a/libc/unistd/pathconf.c b/libc/unistd/pathconf.c
deleted file mode 100644
index 032f918..0000000
--- a/libc/unistd/pathconf.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <pathconf.h>
-#include <sys/vfs.h>
-#include <sys/limits.h>
-#include <linux/ext2_fs.h>
-#include <linux/ext3_fs.h>
-#include <errno.h>
-
-/* these may not be defined yet by our headers */
-#ifndef _POSIX_VDISABLE
-#define _POSIX_VDISABLE -1
-#endif
-
-#ifndef _POSIX_SYNC_IO
-#define _POSIX_SYNC_IO -1
-#endif
-
-#ifndef _POSIX_PRIO_IO
-#define _POSIX_PRIO_IO -1
-#endif
-
-#ifndef _POSIX_ASYNC_IO
-#define _POSIX_ASYNC_IO -1
-#endif
-
-
-static long
-__filesizebits( struct statfs* s )
-{
-#define EOL_MAGIC 0x0000U
-
- /* list of known 64-bit aware filesystems */
- static const uint32_t known64[] = {
- EXT2_SUPER_MAGIC,
- UFS_MAGIC,
- REISERFS_SUPER_MAGIC,
- XFS_SUPER_MAGIC,
- SMB_SUPER_MAGIC,
- UDF_SUPER_MAGIC,
- JFS_SUPER_MAGIC,
- NTFS_SB_MAGIC,
- VXFS_SUPER_MAGIC,
- EOL_MAGIC
- };
- int nn = 0;
-
- for (;;) {
- if ( known64[nn] == EOL_MAGIC )
- return 32;
-
- if ( known64[nn] == s->f_type )
- return 64;
- }
-}
-
-
-static long
-__link_max( struct statfs* s )
-{
- /* constant values were taken from official kernel headers.
- * I don't think this justified bringing in <linux/minix_fs.h> et al
- * into our cleaned-up kernel three
- */
- static const struct { uint32_t type; int max; } knownMax[] =
- {
- { EXT2_SUPER_MAGIC, EXT2_LINK_MAX },
- { EXT3_SUPER_MAGIC, EXT3_LINK_MAX },
- { MINIX_SUPER_MAGIC, 250 },
- { MINIX2_SUPER_MAGIC, 65530 },
- { REISERFS_SUPER_MAGIC, 0xffff - 1000 },
- { UFS_MAGIC, 32000 },
- { EOL_MAGIC, 0 }
- };
- int nn = 0;
-
- for (;;) {
- if ( knownMax[nn].type == EOL_MAGIC )
- return LINK_MAX;
-
- if ( knownMax[nn].type == s->f_type )
- return knownMax[nn].max;
- }
- return LINK_MAX;
-}
-
-static long
-__2_symlinks( struct statfs* s )
-{
- /* list of know filesystems that don't support symlinks */
- static const uint32_t knownNoSymlinks[] = {
- ADFS_SUPER_MAGIC, BFS_MAGIC, CRAMFS_MAGIC,
- EFS_SUPER_MAGIC, MSDOS_SUPER_MAGIC, NTFS_SB_MAGIC,
- QNX4_SUPER_MAGIC,
- EOL_MAGIC
- };
- int nn = 0;
-
- for (;;) {
- if (knownNoSymlinks[nn] == 0)
- return 1;
- if (knownNoSymlinks[nn] == s->f_type)
- return 0;
- }
-}
-
-static long
-__name_max( struct statfs* s )
-{
- return s->f_namelen;
-}
-
-long
-pathconf(const char *path, int name)
-{
- struct statfs buf;
- int ret = statfs( path, &buf );
-
- if (ret < 0)
- return -1;
-
- switch (name) {
- case _PC_FILESIZEBITS:
- return __filesizebits(&buf);
-
- case _PC_LINK_MAX:
- return __link_max(&buf);
-
- case _PC_MAX_CANON:
- return MAX_CANON;
-
- case _PC_MAX_INPUT:
- return MAX_INPUT;
-
- case _PC_NAME_MAX:
- return __name_max(&buf);
-
- case _PC_PATH_MAX:
- return PATH_MAX;
-
- case _PC_PIPE_BUF:
- return PIPE_BUF;
-
- case _PC_2_SYMLINKS:
- return __2_symlinks(&buf);
-
-#if 0 /* don't know what to do there, the specs are really weird */
- case _PC_ALLOC_SIZE_MIN:
- case _PC_REC_INCR_XFER_SIZE:
- case _PC_REC_MAX_XFER_SIZE:
- case _PC_REC_MIN_XFER_SIZE:
- case _PC_REC_XFER_ALIGN:
-#endif
-
- case _PC_SYMLINK_MAX:
- return -1; /* no limit */
-
- case _PC_CHOWN_RESTRICTED:
- return _POSIX_CHOWN_RESTRICTED;
-
- case _PC_NO_TRUNC:
- return _POSIX_NO_TRUNC;
-
- case _PC_VDISABLE:
- return _POSIX_VDISABLE;
-
- case _PC_ASYNC_IO:
- return _POSIX_ASYNC_IO;
-
- case _PC_PRIO_IO:
- return _POSIX_PRIO_IO;
-
- case _PC_SYNC_IO:
- return _POSIX_SYNC_IO;
-
- default:
- errno = EINVAL;
- return -1;
- }
-}
-
-long fpathconf(int fildes, int name)
-{
- struct statfs buf;
- int ret = fstatfs(fildes, &buf);
-
- if (ret < 0)
- return -1;
-
- switch (name) {
- case _PC_FILESIZEBITS:
- return __filesizebits(&buf);
-
- case _PC_LINK_MAX:
- return __link_max(&buf);
-
- case _PC_MAX_CANON:
- return MAX_CANON;
-
- case _PC_MAX_INPUT:
- return MAX_INPUT;
-
- case _PC_NAME_MAX:
- return __name_max(&buf);
-
- case _PC_PATH_MAX:
- return PATH_MAX;
-
- case _PC_PIPE_BUF:
- return PIPE_BUF;
-
- case _PC_2_SYMLINKS:
- return __2_symlinks(&buf);
-
-#if 0 /* don't know what to do there, the specs are really weird */
- case _PC_ALLOC_SIZE_MIN:
- case _PC_REC_INCR_XFER_SIZE:
- case _PC_REC_MAX_XFER_SIZE:
- case _PC_REC_MIN_XFER_SIZE:
- case _PC_REC_XFER_ALIGN:
-#endif
-
- case _PC_SYMLINK_MAX:
- return -1; /* no limit */
-
- case _PC_CHOWN_RESTRICTED:
- return _POSIX_CHOWN_RESTRICTED;
-
- case _PC_NO_TRUNC:
- return _POSIX_NO_TRUNC;
-
- case _PC_VDISABLE:
- return _POSIX_VDISABLE;
-
- case _PC_ASYNC_IO:
- return _POSIX_ASYNC_IO;
-
- case _PC_PRIO_IO:
- return _POSIX_PRIO_IO;
-
- case _PC_SYNC_IO:
- return _POSIX_SYNC_IO;
-
- default:
- errno = EINVAL;
- return -1;
- }
-}
diff --git a/libc/unistd/perror.c b/libc/unistd/perror.c
deleted file mode 100644
index de55f72..0000000
--- a/libc/unistd/perror.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-void perror(const char *prefix)
-{
- char buff[256];
-
- strerror_r( errno, buff, sizeof(buff) );
-
- if (prefix) {
- write( 2, prefix, strlen(prefix) );
- write( 2, ": ", 2 );
- }
- write( 2, buff, strlen(buff) );
- write( 2, "\n", 1 );
-}
diff --git a/libc/unistd/popen.c b/libc/unistd/popen.c
deleted file mode 100644
index 15f8325..0000000
--- a/libc/unistd/popen.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* $OpenBSD: popen.c,v 1.17 2005/08/08 08:05:34 espie Exp $ */
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software written by Ken Arnold and
- * published in UNIX Review, Vol. 6, No. 8.
- *
- * 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. 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 <sys/param.h>
-#include <sys/wait.h>
-
-#include <signal.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <paths.h>
-
-static struct pid {
- struct pid *next;
- FILE *fp;
- pid_t pid;
-} *pidlist;
-
-FILE *
-popen(const char *program, const char *type)
-{
- struct pid * volatile cur;
- FILE *iop;
- int pdes[2];
- pid_t pid;
-
- if ((*type != 'r' && *type != 'w') || type[1] != '\0') {
- errno = EINVAL;
- return (NULL);
- }
-
- if ((cur = malloc(sizeof(struct pid))) == NULL)
- return (NULL);
-
- if (pipe(pdes) < 0) {
- free(cur);
- return (NULL);
- }
-
- switch (pid = vfork()) {
- case -1: /* Error. */
- (void)close(pdes[0]);
- (void)close(pdes[1]);
- free(cur);
- return (NULL);
- /* NOTREACHED */
- case 0: /* Child. */
- {
- struct pid *pcur;
- /*
- * because vfork() instead of fork(), must leak FILE *,
- * but luckily we are terminally headed for an execl()
- */
- for (pcur = pidlist; pcur; pcur = pcur->next)
- close(fileno(pcur->fp));
-
- if (*type == 'r') {
- int tpdes1 = pdes[1];
-
- (void) close(pdes[0]);
- /*
- * We must NOT modify pdes, due to the
- * semantics of vfork.
- */
- if (tpdes1 != STDOUT_FILENO) {
- (void)dup2(tpdes1, STDOUT_FILENO);
- (void)close(tpdes1);
- tpdes1 = STDOUT_FILENO;
- }
- } else {
- (void)close(pdes[1]);
- if (pdes[0] != STDIN_FILENO) {
- (void)dup2(pdes[0], STDIN_FILENO);
- (void)close(pdes[0]);
- }
- }
- execl(_PATH_BSHELL, "sh", "-c", program, (char *)NULL);
- _exit(127);
- /* NOTREACHED */
- }
- }
-
- /* Parent; assume fdopen can't fail. */
- if (*type == 'r') {
- iop = fdopen(pdes[0], type);
- (void)close(pdes[1]);
- } else {
- iop = fdopen(pdes[1], type);
- (void)close(pdes[0]);
- }
-
- /* Link into list of file descriptors. */
- cur->fp = iop;
- cur->pid = pid;
- cur->next = pidlist;
- pidlist = cur;
-
- return (iop);
-}
-
-/*
- * pclose --
- * Pclose returns -1 if stream is not associated with a `popened' command,
- * if already `pclosed', or waitpid returns an error.
- */
-int
-pclose(FILE *iop)
-{
- struct pid *cur, *last;
- int pstat;
- pid_t pid;
-
- /* Find the appropriate file pointer. */
- for (last = NULL, cur = pidlist; cur; last = cur, cur = cur->next)
- if (cur->fp == iop)
- break;
-
- if (cur == NULL)
- return (-1);
-
- (void)fclose(iop);
-
- do {
- pid = waitpid(cur->pid, &pstat, 0);
- } while (pid == -1 && errno == EINTR);
-
- /* Remove the entry from the linked list. */
- if (last == NULL)
- pidlist = cur->next;
- else
- last->next = cur->next;
- free(cur);
-
- return (pid == -1 ? -1 : pstat);
-}
diff --git a/libc/unistd/pread.c b/libc/unistd/pread.c
deleted file mode 100644
index d2f71f7..0000000
--- a/libc/unistd/pread.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. nor the names of its contributors may
- * be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
-*/
-#include <sys/types.h>
-#include <unistd.h>
-
-extern int __pread64(int fd, void *buf, size_t nbytes, off_t lo, off_t hi);
-
-ssize_t pread(int fd, void *buf, size_t nbytes, off_t offset)
-{
- return __pread64(fd, buf, nbytes, offset, 0);
-}
-
diff --git a/libc/unistd/pselect.c b/libc/unistd/pselect.c
deleted file mode 100644
index 76ce2c0..0000000
--- a/libc/unistd/pselect.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/select.h>
-#include <signal.h>
-#include <pthread.h>
-
-int
-pselect(int n, fd_set* readfds, fd_set* writefds, fd_set* errfds,
- const struct timespec* timeout, const sigset_t* sigmask)
-{
- sigset_t oldmask;
- int result;
- struct timeval tv, *tv_timeout = NULL;
-
- if (sigmask != NULL)
- pthread_sigmask( SIG_SETMASK, sigmask, &oldmask );
-
- if (timeout != NULL) {
- tv_timeout = &tv;
- tv.tv_sec = timeout->tv_sec;
- tv.tv_usec = (timeout->tv_nsec + 999)/1000; // round up
- if (tv.tv_usec >= 1000000) {
- tv.tv_sec += 1;
- tv.tv_usec -= 1000000;
- }
- }
-
- result = select( n, readfds, writefds, errfds, tv_timeout );
-
- if (sigmask != NULL)
- pthread_sigmask( SIG_SETMASK, &oldmask, NULL );
-
- return result;
-}
diff --git a/libc/unistd/ptsname.c b/libc/unistd/ptsname.c
deleted file mode 100644
index 24d5d30..0000000
--- a/libc/unistd/ptsname.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stdio.h>
-#include <unistd.h>
-#include <termios.h>
-#include <sys/ioctl.h>
-
-/* not thread-safe */
-char* ptsname( int fd )
-{
- unsigned int pty_num;
- static char buff[64];
-
- if ( ioctl( fd, TIOCGPTN, &pty_num ) != 0 )
- return NULL;
-
- snprintf( buff, sizeof(buff), "/dev/pts/%u", pty_num );
- return buff;
-}
diff --git a/libc/unistd/ptsname_r.c b/libc/unistd/ptsname_r.c
deleted file mode 100644
index 1ed067b..0000000
--- a/libc/unistd/ptsname_r.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stdio.h>
-#include <unistd.h>
-#include <termios.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <string.h>
-
-char* ptsname_r( int fd, char* buf, size_t buflen)
-{
- unsigned int pty_num;
- char buff[64];
- int len;
-
- if (buf == NULL) {
- errno = EINVAL;
- return NULL;
- }
-
- if ( ioctl( fd, TIOCGPTN, &pty_num ) != 0 )
- return NULL;
-
- len = snprintf( buff, sizeof(buff), "/dev/pts/%u", pty_num );
- if (len+1 > (int)buflen) {
- errno = ERANGE;
- return NULL;
- }
- memcpy( buf, buff, len+1 );
- return buf;
-}
diff --git a/libc/unistd/pwrite.c b/libc/unistd/pwrite.c
deleted file mode 100644
index 5adf40a..0000000
--- a/libc/unistd/pwrite.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/types.h>
-#include <unistd.h>
-
-extern int __pwrite64(int fd, void *buf, size_t nbytes, off_t lo, off_t hi);
-
-ssize_t pwrite(int fd, void *buf, size_t nbytes, off_t offset)
-{
- return __pwrite64(fd, buf, nbytes, offset, 0);
-}
-
diff --git a/libc/unistd/raise.c b/libc/unistd/raise.c
deleted file mode 100644
index de099da..0000000
--- a/libc/unistd/raise.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <signal.h>
-
-int raise(int signum)
-{
- return kill(getpid(), signum);
-}
diff --git a/libc/unistd/reboot.c b/libc/unistd/reboot.c
deleted file mode 100644
index 0fe8cdc..0000000
--- a/libc/unistd/reboot.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <sys/reboot.h>
-
-int reboot (int mode)
-{
- return __reboot( LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, mode, NULL );
-}
diff --git a/libc/unistd/recv.c b/libc/unistd/recv.c
deleted file mode 100644
index 779d7fa..0000000
--- a/libc/unistd/recv.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stddef.h>
-#include <sys/socket.h>
-
-ssize_t recv(int socket, void *buf, size_t buflen, unsigned int flags)
-{
- return recvfrom(socket, buf, buflen, flags, NULL, 0);
-}
diff --git a/libc/unistd/sbrk.c b/libc/unistd/sbrk.c
deleted file mode 100644
index a112b6c..0000000
--- a/libc/unistd/sbrk.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <errno.h>
-
-
-#define SBRK_ALIGN 32
-
-/* shared with brk() implementation */
-char* __bionic_brk;
-
-void *sbrk(ptrdiff_t increment)
-{
- char* start;
- char* end;
- char* new_brk;
-
- if ( !__bionic_brk)
- __bionic_brk = __brk((void*)0);
-
- start = (char*)(((long)__bionic_brk + SBRK_ALIGN-1) & ~(SBRK_ALIGN-1));
- end = start + increment;
-
- new_brk = __brk(end);
- if (new_brk == (void*)-1)
- return new_brk;
- else if (new_brk < end)
- {
- errno = ENOMEM;
- return (void*)-1;
- }
-
- __bionic_brk = new_brk;
- return start;
-}
diff --git a/libc/unistd/send.c b/libc/unistd/send.c
deleted file mode 100644
index 9978f98..0000000
--- a/libc/unistd/send.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <stddef.h>
-#include <sys/socket.h>
-
-ssize_t send(int socket, const void *buf, size_t buflen, unsigned int flags)
-{
- return (ssize_t) sendto(socket, buf, buflen, flags, NULL, 0);
-}
diff --git a/libc/unistd/setegid.c b/libc/unistd/setegid.c
deleted file mode 100644
index 9bd697b..0000000
--- a/libc/unistd/setegid.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-int setegid(gid_t egid)
-{
- return setresgid(-1, egid, -1);
-}
diff --git a/libc/unistd/seteuid.c b/libc/unistd/seteuid.c
deleted file mode 100644
index 42ee780..0000000
--- a/libc/unistd/seteuid.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-int seteuid(uid_t euid)
-{
- return setresuid(-1, euid,-1);
-}
diff --git a/libc/unistd/setpgrp.c b/libc/unistd/setpgrp.c
deleted file mode 100644
index 6dff822..0000000
--- a/libc/unistd/setpgrp.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-int setpgrp(void)
-{
- return setpgid(0,0);
-}
diff --git a/libc/unistd/sigblock.c b/libc/unistd/sigblock.c
deleted file mode 100644
index 863d7da..0000000
--- a/libc/unistd/sigblock.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-/* this function is called from the ARM assembly setjmp fragments */
-int
-sigblock(int mask)
-{
- int n;
- union {
- int the_mask;
- sigset_t the_sigset;
- } in, out;
-
- in.the_mask = mask;
-
- n = sigprocmask(SIG_BLOCK, &in.the_sigset, &out.the_sigset);
- if (n)
- return n;
-
- return out.the_mask;
-}
-
-
diff --git a/libc/unistd/siginterrupt.c b/libc/unistd/siginterrupt.c
deleted file mode 100644
index 4e91edb..0000000
--- a/libc/unistd/siginterrupt.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-/* this is only useful for legacy programs */
-int siginterrupt(int sig, int flag)
-{
- struct sigaction act;
-
- (void) sigaction(sig, NULL, &act);
-
- if (flag)
- act.sa_flags &= ~SA_RESTART;
- else
- act.sa_flags |= SA_RESTART;
-
- return sigaction(sig, &act, NULL);
-}
-
diff --git a/libc/unistd/siglist.c b/libc/unistd/siglist.c
deleted file mode 100644
index a2ac9fe..0000000
--- a/libc/unistd/siglist.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-const char * const sys_siglist[NSIG] = {
-#define __BIONIC_SIGDEF(x,y,z) [ x ] = z,
-#include <sys/_sigdefs.h>
-};
diff --git a/libc/unistd/signal.c b/libc/unistd/signal.c
deleted file mode 100644
index 949db13..0000000
--- a/libc/unistd/signal.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-
-static __sighandler_t
-_signal(int signum, __sighandler_t handler, int flags)
-{
- struct sigaction sa;
- __sighandler_t result = SIG_ERR;
-
- sigemptyset( &sa.sa_mask );
-
- sa.sa_handler = handler;
- sa.sa_flags = flags;
-
- if ( !sigaction( signum, &sa, &sa ) )
- result = (__sighandler_t) sa.sa_handler;
-
- return result;
-}
-
-
-__sighandler_t bsd_signal(int signum, __sighandler_t handler)
-{
- return _signal(signum, handler, SA_RESTART);
-}
-
-__sighandler_t sysv_signal(int signum, __sighandler_t handler)
-{
- return _signal(signum, handler, SA_RESETHAND);
-}
diff --git a/libc/unistd/sigsetmask.c b/libc/unistd/sigsetmask.c
deleted file mode 100644
index b987595..0000000
--- a/libc/unistd/sigsetmask.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-/* called from setjmp assembly fragment */
-int
-sigsetmask(int mask)
-{
- int n;
-
- union {
- int the_mask;
- sigset_t the_sigset;
- } in, out;
-
- n = sigprocmask(SIG_SETMASK, &in.the_sigset, &out.the_sigset);
- if (n)
- return n;
-
- return out.the_mask;
-}
-
diff --git a/libc/unistd/sigsuspend.c b/libc/unistd/sigsuspend.c
deleted file mode 100644
index 0db05ed..0000000
--- a/libc/unistd/sigsuspend.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-
-extern int __sigsuspend(int, int, unsigned int);
-
-int sigsuspend(const sigset_t *_mask)
-{
- unsigned int mask = (unsigned int)*_mask;
-
- return __sigsuspend(0, 0, mask);
-}
diff --git a/libc/unistd/sigwait.c b/libc/unistd/sigwait.c
deleted file mode 100644
index c9c2a54..0000000
--- a/libc/unistd/sigwait.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <errno.h>
-#include <signal.h>
-#include <string.h>
-#include <time.h>
-
-int __rt_sigtimedwait(const sigset_t *uthese, siginfo_t *uinfo, const struct timespec *uts, size_t sigsetsize);
-
-/* ok, this is really subtle: <asm/signal.h> defines sigset_t differently
- * when you're in the kernel or in the C library.
- *
- * in the kernel, this is an array of 2 32-bit unsigned longs
- * in the C library, this is a single 32-bit unsigned long
- *
- * moreover, the kernel implementation of rt_sigtimedwait doesn't
- * accept anything except kernel-sized signal sets (probably a bug !)
- *
- * we thus need to create a fake kernel sigset !!
- */
-
-int sigwait(const sigset_t *set, int *sig)
-{
- int ret;
- /* use a union to get rid of aliasing warnings */
- union {
- unsigned long kernel_sigset[2];
- sigset_t dummy_sigset;
- } u;
-
- u.kernel_sigset[0] = *set;
- u.kernel_sigset[1] = 0; /* no real-time signals supported ? */
- for (;;)
- {
- /* __rt_sigtimedwait can return EAGAIN or EINTR, we need to loop
- * around them since sigwait is only allowed to return EINVAL
- */
- ret = __rt_sigtimedwait ( &u.dummy_sigset, NULL, NULL, sizeof(u.kernel_sigset));
- if (ret >= 0)
- break;
-
- if (errno != EAGAIN && errno != EINTR)
- return errno;
- }
-
- *sig = ret;
- return 0;
-}
-
diff --git a/libc/unistd/sleep.c b/libc/unistd/sleep.c
deleted file mode 100644
index aafbd60..0000000
--- a/libc/unistd/sleep.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <time.h>
-#include <errno.h>
-
-unsigned int sleep(unsigned int seconds)
-{
- struct timespec t;
-
- /* seconds is unsigned, while t.tv_sec is signed
- * some people want to do sleep(UINT_MAX), so fake
- * support for it by only sleeping 2 billion seconds
- */
- if ((int)seconds < 0)
- seconds = 0x7fffffff;
-
- t.tv_sec = seconds;
- t.tv_nsec = 0;
-
- if ( !nanosleep( &t, &t ) )
- return 0;
-
- if ( errno == EINTR )
- return t.tv_sec;
-
- return -1;
-}
diff --git a/libc/unistd/socketcalls.c b/libc/unistd/socketcalls.c
deleted file mode 100644
index d97abc2..0000000
--- a/libc/unistd/socketcalls.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <sys/socket.h>
-#include <sys/linux-syscalls.h>
-
-enum
-{
- SYS_SOCKET = 1,
- SYS_BIND,
- SYS_CONNECT,
- SYS_LISTEN,
- SYS_ACCEPT,
- SYS_GETSOCKNAME,
- SYS_GETPEERNAME,
- SYS_SOCKETPAIR,
- SYS_SEND,
- SYS_RECV,
- SYS_SENDTO,
- SYS_RECVFROM,
- SYS_SHUTDOWN,
- SYS_SETSOCKOPT,
- SYS_GETSOCKOPT,
- SYS_SENDMSG,
- SYS_RECVMSG
-};
-
-#ifndef __NR_socket
-int socket(int domain, int type, int protocol)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) domain;
- t[1] = (unsigned long) type;
- t[2] = (unsigned long) protocol;
-
- return (int) __socketcall( SYS_SOCKET, t );
-}
-#endif /* !__NR_socket */
-
-
-#ifndef __NR_bind
-int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) sockfd;
- t[1] = (unsigned long) my_addr;
- t[2] = (unsigned long) addrlen;
-
- return (int) __socketcall( SYS_BIND, t );
-}
-#endif /* !__NR_bind */
-
-#ifndef __NR_connect
-int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen )
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) sockfd;
- t[1] = (unsigned long) serv_addr;
- t[2] = (unsigned long) addrlen;
-
- return (int) __socketcall( SYS_CONNECT, t );
-}
-#endif /* !__NR_connect */
-
-#ifndef __NR_listen
-int listen(int s, int backlog)
-{
- unsigned long t[2];
-
- t[0] = (unsigned long) s;
- t[1] = (unsigned long) backlog;
-
- return (int) __socketcall( SYS_LISTEN, t );
-}
-#endif /* __NR_listen */
-
-#ifndef __NR_accept
-int accept(int sock, struct sockaddr *adresse, socklen_t *longueur)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) sock;
- t[1] = (unsigned long) adresse;
- t[2] = (unsigned long) longueur;
-
- return (int) __socketcall( SYS_ACCEPT, t );
-}
-#endif /* __NR_accept */
-
-#ifndef __NR_getsockname
-int getsockname(int s, struct sockaddr * name, socklen_t * namelen )
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) s;
- t[1] = (unsigned long) name;
- t[2] = (unsigned long) namelen;
-
- return (int) __socketcall( SYS_GETSOCKNAME, t );
-}
-#endif /* __NR_getsockname */
-
-#ifndef __NR_getpeername
-int getpeername(int s, struct sockaddr *name, socklen_t *namelen)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) s;
- t[1] = (unsigned long) name;
- t[2] = (unsigned long) namelen;
-
- return (int) __socketcall( SYS_GETPEERNAME, t );
-}
-#endif /* !__NR_getpeername */
-
-#ifndef __NR_socketpair
-int socketpair(int d, int type, int protocol, int sv[2])
-{
- unsigned long t[4];
-
- t[0] = (unsigned long) d;
- t[1] = (unsigned long) type;
- t[2] = (unsigned long) protocol;
- t[3] = (unsigned long) sv;
-
- return (int) __socketcall( SYS_SOCKETPAIR, t );
-}
-#endif /* __NR_socketpair */
-
-#ifndef __NR_sendto
-ssize_t sendto(int socket, const void *message, size_t length, int flags,
- const struct sockaddr *dest_addr, socklen_t dest_len)
-{
- unsigned long t[6];
-
- t[0] = (unsigned long) socket;
- t[1] = (unsigned long) message;
- t[2] = (unsigned long) length;
- t[3] = (unsigned long) flags;
- t[4] = (unsigned long) dest_addr;
- t[5] = (unsigned long) dest_len;
-
- return __socketcall( SYS_SENDTO, t );
-}
-#endif /* !__NR_sendto */
-
-#ifndef __NR_recvfrom
-ssize_t recvfrom(int socket, void *buffer, size_t length, unsigned int flags,
- const struct sockaddr *address, socklen_t *address_len)
-{
- unsigned long t[6];
-
- t[0] = (unsigned long) socket;
- t[1] = (unsigned long) buffer;
- t[2] = (unsigned long) length;
- t[3] = (unsigned long) flags;
- t[4] = (unsigned long) address;
- t[5] = (unsigned long) address_len;
-
- return __socketcall( SYS_RECVFROM, t );
-}
-#endif /* !__NR_recvfrom */
-
-#ifndef __NR_shutdown
-int shutdown(int socket, int how)
-{
- unsigned long t[2];
-
- t[0] = (unsigned long) socket;
- t[1] = (unsigned long) how;
-
- return (int) __socketcall( SYS_SHUTDOWN, t );
-}
-#endif /* !__NR_shutdown */
-
-#ifndef __NR_setsockopt
-int setsockopt( int s, int level, int optname, const void* optval, socklen_t optlen )
-{
- unsigned long t[5];
-
- t[0] = (unsigned long) s;
- t[1] = (unsigned long) level;
- t[2] = (unsigned long) optname;
- t[3] = (unsigned long) optval;
- t[4] = (unsigned long) optlen;
-
- return (int) __socketcall( SYS_SETSOCKOPT, t );
-}
-#endif /* !__NR_setsockopt */
-
-#ifndef __NR_getsockopt
-int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
-{
- unsigned long t[5];
-
- t[0] = (unsigned long) s;
- t[1] = (unsigned long) level;
- t[2] = (unsigned long) optname;
- t[3] = (unsigned long) optval;
- t[4] = (unsigned long) optlen;
-
- return (int) __socketcall( SYS_GETSOCKOPT, t );
-}
-#endif /* !__NR_getsockopt */
-
-#ifndef __NR_sendmsg
-ssize_t sendmsg (int socket, const struct msghdr *message, unsigned int flags)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) socket;
- t[1] = (unsigned long) message;
- t[2] = (unsigned long) flags;
-
- return __socketcall( SYS_SENDMSG, t );
-}
-#endif /* __NR_sendmsg */
-
-#ifndef __NR_recvmsg
-ssize_t recvmsg(int socket, struct msghdr *message, unsigned int flags)
-{
- unsigned long t[3];
-
- t[0] = (unsigned long) socket;
- t[1] = (unsigned long) message;
- t[2] = (unsigned long) flags;
-
- return __socketcall( SYS_RECVMSG, t );
-}
-#endif /* __NR_recvmsg */
-
diff --git a/libc/unistd/statfs.c b/libc/unistd/statfs.c
deleted file mode 100644
index 491ef7a..0000000
--- a/libc/unistd/statfs.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/vfs.h>
-
-extern int __statfs64(const char *, size_t, struct statfs *);
-
-int statfs(const char* path, struct statfs* stat)
-{
- return __statfs64(path, sizeof(struct statfs), stat);
-}
diff --git a/libc/unistd/strsignal.c b/libc/unistd/strsignal.c
deleted file mode 100644
index 171de3d..0000000
--- a/libc/unistd/strsignal.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <signal.h>
-#include <string.h>
-
-char*
-strsignal(int sig)
-{
- if ((unsigned)sig < NSIG)
- return (char*) sys_siglist[sig];
- else
- return "Invalid signal number";
-}
diff --git a/libc/unistd/sysconf.c b/libc/unistd/sysconf.c
deleted file mode 100644
index d3089a4..0000000
--- a/libc/unistd/sysconf.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <sys/sysconf.h>
-#include <limits.h>
-#include <bionic_tls.h>
-#include <asm/page.h>
-#include <stdio.h> /* for FOPEN_MAX */
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-
-/* seems to be the default on Linux, per the GLibc sources and my own digging */
-
-#define SYSTEM_CLK_TCK 100
-#define SYSTEM_IOV_MAX 1024
-#define SYSTEM_DELAYTIMER_MAX 2147483647
-#define SYSTEM_MQ_OPEN_MAX 8
-#define SYSTEM_MQ_PRIO_MAX 32768
-#define SYSTEM_SEM_NSEMS_MAX 256
-#define SYSTEM_SEM_VALUE_MAX (2147483647)
-#define SYSTEM_SIGQUEUE_MAX 32
-#define SYSTEM_TIMER_MAX 32
-#define SYSTEM_LOGIN_NAME_MAX 256
-#define SYSTEM_TTY_NAME_MAX 32
-
-/* the following depends on our implementation */
-#define SYSTEM_ATEXIT_MAX 65536 /* our implementation is unlimited */
-#define SYSTEM_THREAD_KEYS_MAX BIONIC_TLS_SLOTS
-#define SYSTEM_THREAD_STACK_MIN 32768 /* lower values may be possible, but be conservative */
-#define SYSTEM_THREAD_THREADS_MAX 2048 /* really unlimited */
-
-#define SYSTEM_2_C_BIND _POSIX_VERSION /* Posix C binding version */
-#define SYSTEM_2_C_VER _POSIX2_C_VERSION
-#define SYSTEM_2_C_DEV -1 /* Posix C development tools unsupported on the device */
-#define SYSTEM_2_FORT_DEV -1 /* Fortran development unsupported */
-#define SYSTEM_2_FORT_RUN -1 /* Fortran runtime unsupported */
-#define SYSTEM_2_SW_DEV -1 /* posix software dev utilities unsupported */
-#define SYSTEM_2_LOCALEDEF -1 /* localdef() unimplemented */
-#define SYSTEM_2_UPE -1 /* No UPE for you ! (User Portability Utilities) */
-#define SYSTEM_2_VERSION -1 /* No posix command-line tools */
-
-static int __get_nproc_conf(void);
-static int __get_nproc_onln(void);
-static int __get_phys_pages(void);
-static int __get_avphys_pages(void);
-
-int
-sysconf( int name )
-{
- switch (name) {
-#ifdef _POSIX_ARG_MAX
- case _SC_ARG_MAX: return _POSIX_ARG_MAX;
-#endif
-#ifdef _POSIX2_BC_BASE_MAX
- case _SC_BC_BASE_MAX: return _POSIX2_BC_BASE_MAX;
-#endif
-#ifdef _POSIX2_BC_DIM_MAX
- case _SC_BC_DIM_MAX: return _POSIX2_BC_DIM_MAX;
-#endif
-#ifdef _POSIX2_BC_SCALE_MAX
- case _SC_BC_SCALE_MAX: return _POSIX2_BC_SCALE_MAX;
-#endif
-#ifdef _POSIX2_BC_STRING_MAX
- case _SC_BC_STRING_MAX: return _POSIX2_BC_STRING_MAX;
-#endif
- case _SC_CHILD_MAX: return CHILD_MAX;
- case _SC_CLK_TCK: return SYSTEM_CLK_TCK;
-#ifdef _POSIX2_COLL_WEIGHTS_MASK
- case _SC_COLL_WEIGHTS_MAX: return _POSIX2_COLL_WEIGHTS_MASK;
-#endif
-#ifdef _POSIX2_EXPR_NEST_MAX
- case _SC_EXPR_NEXT_MASK: return _POSIX2_EXPR_NEST_MAX;
-#endif
-#ifdef _POSIX2_LINE_MAX
- case _SC_LINE_MAX: return _POSIX2_LINE_MAX;
-#endif
- case _SC_NGROUPS_MAX: return NGROUPS_MAX;
- case _SC_OPEN_MAX: return OPEN_MAX;
- //case _SC_PASS_MAX: return PASS_MAX;
- case _SC_2_C_BIND: return SYSTEM_2_C_BIND;
- case _SC_2_C_DEV: return SYSTEM_2_C_DEV;
- case _SC_2_C_VERSION: return SYSTEM_2_C_VER;
- //case _SC_2_CHAR_TERM: return ;
- case _SC_2_FORT_DEV: return SYSTEM_2_FORT_DEV;
- case _SC_2_FORT_RUN: return SYSTEM_2_FORT_RUN;
- case _SC_2_LOCALEDEF: return SYSTEM_2_LOCALEDEF;
- case _SC_2_SW_DEV: return SYSTEM_2_SW_DEV;
- case _SC_2_UPE: return SYSTEM_2_UPE;
- case _SC_2_VERSION: return SYSTEM_2_VERSION;
-#ifdef _POSIX_JOB_CONTROL
- case _SC_JOB_CONTROL: return _POSIX_JOB_CONTROL;
-#endif
-#ifdef _POSIX_SAVED_IDS
- case _SC_SAVED_IDS: return _POSIX_SAVED_IDS;
-#endif
-#ifdef _POSIX_VERSION
- case _SC_VERSION: return _POSIX_VERSION;
-#endif
- //case _SC_RE_DUP_<AX: return ;
- case _SC_STREAM_MAX: return FOPEN_MAX;
- //case _SC_TZNAME_MAX: return ;
-#if _XOPEN_CRYPT
- case _SC_XOPEN_CRYPT: return _XOPEN_CRYPT;
-#endif
-#ifdef _XOPEN_ENH_I18N
- case _SC_XOPEN_ENH_I18N: return _XOPEN_ENH_I18N;
-#endif
-#ifdef _XOPEN_SHM
- case _SC_XOPEN_SHM: return _XOPEN_SHM;
-#endif
-#ifdef _XOPEN_VERSION
- case _SC_XOPEN_VERSION: return _XOPEN_VERSION;
-#endif
-#ifdef _XOPEN_XCU_VERSION
- case _SC_XOPEN_XCU_VERSION: return _XOPEN_XCU_VERSION;
-#endif
-#ifdef _XOPEN_REALTIME
- case _SC_XOPEN_REALTIME: return _XOPEN_REALTIME;
-#endif
-#ifdef _XOPEN_REALTIME_THREADS
- case _SC_XOPEN_REALTIME_THREADS: return _XOPEN_REALTIME_THREADS;
-#endif
-#ifdef _XOPEN_LEGACY
- case _SC_XOPEN_LEGACY: return _XOPEN_LEGACY;
-#endif
- case _SC_ATEXIT_MAX: return SYSTEM_ATEXIT_MAX;
- case _SC_IOV_MAX: return SYSTEM_IOV_MAX;
- case _SC_PAGESIZE: return PAGE_SIZE;
- case _SC_PAGE_SIZE: return PAGE_SIZE;
-#ifdef _XOPEN_UNIX
- case _SC_XOPEN_UNIX: return _XOPEN_UNIX;
-#endif
-
- // XXX: TODO: XBS5 nonsense
-
-#ifdef AIO_LISTIO_MAX
- case _SC_AIO_LISTIO_MAX: return AIO_LISTIO_MAX;
-#endif
-#ifdef AIO_MAX
- case _SC_AIO_MAX: return AIO_MAX;
-#endif
-#ifdef AIO_PRIO_DELTA_MAX
- case _SC_AIO_PRIO_DELTA_MAX: return AIO_PRIO_DELTA_MAX;
-#endif
- case _SC_DELAYTIMER_MAX: return SYSTEM_DELAYTIMER_MAX;
- case _SC_MQ_OPEN_MAX: return SYSTEM_MQ_OPEN_MAX;
- case _SC_MQ_PRIO_MAX: return SYSTEM_MQ_PRIO_MAX;
- case _SC_RTSIG_MAX: return RTSIG_MAX;
- case _SC_SEM_NSEMS_MAX: return SYSTEM_SEM_NSEMS_MAX;
- case _SC_SEM_VALUE_MAX: return SYSTEM_SEM_VALUE_MAX;
- case _SC_SIGQUEUE_MAX: return SYSTEM_SIGQUEUE_MAX;
- case _SC_TIMER_MAX: return SYSTEM_TIMER_MAX;
-#ifdef _POSIX_ASYNCHRONOUS_IO
- case _SC_ASYNCHRONOUS_IO: return _POSIX_ASYNCHRONOUS_IO;
-#endif
-#ifdef _POSIX_FSYNC
- case _SC_FSYNC: return _POSIX_FSYNC;
-#endif
-#ifdef _POSIX_MAPPED_FILES
- case _SC_MAPPED_FILES: return _POSIX_MAPPED_FILES;
-#endif
-#ifdef _POSIX_MEMLOCK
- case _SC_MEMLOCK: return _POSIX_MEMLOCK;
-#endif
-#ifdef _POSIX_MEMLOCK_RANGE
- case _SC_MEMLOCK_RANGE: return _POSIX_MEMLOCK_RANGE
-#endif
-#ifdef _POSIX_MEMORY_PROTECTION
- case _SC_MEMORY_PROTECTION: return _POSIX_MEMORY_PROTECTION;
-#endif
-#ifdef _POSIX_MESSAGE_PASSING
- case _SC_MESSAGE_PASSING: return _POSIX_MESSAGE_PASSING;
-#endif
-#ifdef _POSIX_PRIORITIZED_IO
- case _SC_PRIORITIZED_IO: return _POSIX_PRIORITIZED_IO;
-#endif
-#ifdef _POSIX_PRIORITY_SCHEDULING
- case _SC_PRIORITY_SCHEDULING: return _POSIX_PRIORITY_SCHEDULING;
-#endif
-#ifdef _POSIX_REALTIME_SIGNALS
- case _SC_REALTIME_SIGNALS: return _POSIX_REALTIME_SIGNALS;
-#endif
-#ifdef _POSIX_SEMAPHORES
- case _SC_SEMAPHORES: return _POSIX_SEMAPHORES;
-#endif
-#ifdef _POSIX_SHARED_MEMORY_OBJECTS
- case _SC_SHARED_MEMORY_OBJECTS: return _POSIX_SHARED_MEMORY_OBJECTS;
-#endif
-#ifdef _POSIX_SYNCHRONIZED_IO
- case _SC_SYNCHRONIZED_IO: return _POSIX_SYNCHRONIZED_IO;
-#endif
-#ifdef _POSIX_TIMERS
- case _SC_TIMERS: return _POSIX_TIMERS;
-#endif
-
- // GETGR_R_SIZE_MAX ?
- // GETPW_R_SIZE_MAX ?
-
- case _SC_LOGIN_NAME_MAX: return SYSTEM_LOGIN_NAME_MAX;
-#ifdef _POSIX_THREAD_DESTRUCTOR_ITERATIONS
- case _SC_THREAD_DESTRUCTOR_ITERATIONS: return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
-#endif
- case _SC_THREAD_KEYS_MAX: return SYSTEM_THREAD_KEYS_MAX;
- case _SC_THREAD_STACK_MIN: return SYSTEM_THREAD_STACK_MIN;
- case _SC_THREAD_THREADS_MAX: return SYSTEM_THREAD_THREADS_MAX;
- case _SC_TTY_NAME_MAX: return SYSTEM_TTY_NAME_MAX;
-#ifdef _POSIX_THREADS
- case _SC_THREADS: return _POSIX_THREADS;
-#endif
-#ifdef _POSIX_THREAD_ATTR_STACKADDR
- case _SC_THREAD_ATTR_STACKADDR: return _POSIX_THREAD_ATTR_STACKADDR;
-#endif
-#ifdef _POSIX_THREAD_ATTR_STACKSIZE
- case _SC_THREAD_ATTR_STACKSIZE: return _POSIX_THREAD_ATTR_STACKSIZE;
-#endif
-#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
- case _SC_THREAD_PRIORITY_SCHEDULING: return _POSIX_THREAD_PRIORITY_SCHEDULING;
-#endif
-#ifdef _POSIX_THREAD_PRIO_INHERIT
- case _SC_THREAD_PRIO_INHERIT: return _POSIX_THREAD_PRIO_INHERIT;
-#endif
-#ifdef _POSIX_THREAD_PRIO_PROTECT
- case _SC_THREAD_PRIO_PROTECT: return _POSIX_THREAD_PRIO_PROTECT;
-#endif
-#ifdef _POSIX_THREAD_SAFE_FUNCTIONS
- case _SC_THREAD_SAFE_FUNCTIONS: return _POSIX_THREAD_SAFE_FUNCTIONS
-#endif
-
-
- case _SC_NPROCESSORS_CONF: return __get_nproc_conf();
- case _SC_NPROCESSORS_ONLN: return __get_nproc_onln();
- case _SC_PHYS_PAGES: return __get_phys_pages();
- case _SC_AVPHYS_PAGES: return __get_avphys_pages();
-
- default:
- /* Posix says EINVAL is the only error that shall be returned,
- * but GLibc uses ENOSYS */
- errno = ENOSYS;
- return -1;
- }
-}
-
-
-typedef struct {
- int rpos;
- int len;
- int overflow;
- int fd;
- int in_len;
- int in_pos;
- char buff[128];
- char input[128];
-} LineParser;
-
-static int
-line_parser_init( LineParser* p, const char* path )
-{
- p->rpos = 0;
- p->len = (int)sizeof(p->buff);
- p->overflow = 0;
-
- p->in_len = 0;
- p->in_pos = 0;
- p->fd = open( path, O_RDONLY );
-
- return p->fd;
-}
-
-
-static int
-line_parser_addc( LineParser* p, int c )
-{
- if (p->overflow) {
- p->overflow = (c == '\n');
- return 0;
- }
- if (p->rpos >= p->len) {
- p->overflow = 1;
- return 0;
- }
- if (c == '\n') {
- p->buff[p->rpos] = 0;
- p->rpos = 0;
- return 1;
- }
- p->buff[p->rpos++] = (char) c;
- return 0;
-}
-
-static int
-line_parser_getc( LineParser* p )
-{
- if (p->in_len >= p->in_pos) {
- int ret;
-
- p->in_len = p->in_pos = 0;
- do {
- ret = read(p->fd, p->input, sizeof(p->input));
- } while (ret < 0 && errno == EINTR);
-
- if (ret <= 0)
- return -1;
-
- p->in_len = ret;
- }
- return p->input[ p->in_pos++ ];
-}
-
-static const char*
-line_parser_gets( LineParser* p )
-{
- for (;;) {
- for (;;) {
- int c = line_parser_getc(p);
-
- if (c < 0) {
- close(p->fd);
- p->fd = -1;
- return NULL;
- }
- if (line_parser_addc(p, c))
- return p->buff;
- }
- }
-}
-
-static void
-line_parser_done( LineParser* p )
-{
- if (p->fd >= 0) {
- close(p->fd);
- p->fd = -1;
- }
-}
-
-static int
-__get_nproc_conf(void)
-{
- LineParser parser[1];
- const char* p;
- int count = 0;
-
- if (line_parser_init(parser, "/proc/cpuinfo") < 0)
- return 1;
-
- while ((p = line_parser_gets(parser))) {
- if ( !memcmp(p, "processor", 9) )
- count += 1;
- }
- return (count < 1) ? 1 : count;
-}
-
-
-static int
-__get_nproc_onln(void)
-{
- LineParser parser[1];
- const char* p;
- int count = 0;
-
- if (line_parser_init(parser, "/proc/stat") < 0)
- return 1;
-
- while ((p = line_parser_gets(parser))) {
- if ( !memcmp(p, "cpu", 3) && isdigit(p[3]) )
- count += 1;
- }
- return (count < 1) ? 1 : count;
-}
-
-static int
-__get_phys_pages(void)
-{
- LineParser parser[1];
- const char* p;
-
- if (line_parser_init(parser, "/proc/meminfo") < 0)
- return -2; /* what ? */
-
- while ((p = line_parser_gets(parser))) {
- long total;
- if ( sscanf(p, "MemTotal: %ld kB", &total) == 1 ) {
- line_parser_done(parser);
- return (int) (total / (PAGE_SIZE/1024));
- }
- }
- return -3;
-}
-
-static int
-__get_avphys_pages(void)
-{
- LineParser parser[1];
- const char* p;
-
- if (line_parser_init(parser, "/proc/meminfo") < 0)
- return -1; /* what ? */
-
- while ((p = line_parser_gets(parser))) {
- long total;
- if ( sscanf(p, "MemFree: %ld kB", &total) == 1 ) {
- line_parser_done(parser);
- return (int) (total / (PAGE_SIZE/1024));
- }
- }
- return -1;
-}
diff --git a/libc/unistd/syslog.c b/libc/unistd/syslog.c
deleted file mode 100644
index 3571d59..0000000
--- a/libc/unistd/syslog.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/* $OpenBSD: syslog.c,v 1.28 2005/08/08 08:05:34 espie Exp $ */
-/*
- * Copyright (c) 1983, 1988, 1993
- * The 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. 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 <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <syslog.h>
-#include <sys/un.h>
-#include <netdb.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <paths.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <stdarg.h>
-
-static struct syslog_data sdata = SYSLOG_DATA_INIT;
-
-extern char *__progname; /* Program name, from crt0. */
-
-static void disconnectlog_r(struct syslog_data *); /* disconnect from syslogd */
-static void connectlog_r(struct syslog_data *); /* (re)connect to syslogd */
-
-/*
- * syslog, vsyslog --
- * print message on log file; output is intended for syslogd(8).
- */
-void
-syslog(int pri, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vsyslog(pri, fmt, ap);
- va_end(ap);
-}
-
-void
-vsyslog(int pri, const char *fmt, va_list ap)
-{
- vsyslog_r(pri, &sdata, fmt, ap);
-}
-
-void
-openlog(const char *ident, int logstat, int logfac)
-{
- openlog_r(ident, logstat, logfac, &sdata);
-}
-
-void
-closelog(void)
-{
- closelog_r(&sdata);
-}
-
-/* setlogmask -- set the log mask level */
-int
-setlogmask(int pmask)
-{
- return setlogmask_r(pmask, &sdata);
-}
-
-/* Reentrant version of syslog, i.e. syslog_r() */
-
-void
-syslog_r(int pri, struct syslog_data *data, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vsyslog_r(pri, data, fmt, ap);
- va_end(ap);
-}
-
-void
-vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
-{
- int cnt;
- char ch, *p, *t;
- time_t now;
- int fd, saved_errno, error;
-#define TBUF_LEN 2048
-#define FMT_LEN 1024
- char *stdp = NULL, tbuf[TBUF_LEN], fmt_cpy[FMT_LEN];
- int tbuf_left, fmt_left, prlen;
-
-#define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
- /* Check for invalid bits. */
- if (pri & ~(LOG_PRIMASK|LOG_FACMASK)) {
- if (data == &sdata) {
- syslog(INTERNALLOG,
- "syslog: unknown facility/priority: %x", pri);
- } else {
- syslog_r(INTERNALLOG, data,
- "syslog_r: unknown facility/priority: %x", pri);
- }
- pri &= LOG_PRIMASK|LOG_FACMASK;
- }
-
- /* Check priority against setlogmask values. */
- if (!(LOG_MASK(LOG_PRI(pri)) & data->log_mask))
- return;
-
- saved_errno = errno;
-
- /* Set default facility if none specified. */
- if ((pri & LOG_FACMASK) == 0)
- pri |= data->log_fac;
-
- /* If we have been called through syslog(), no need for reentrancy. */
- if (data == &sdata)
- (void)time(&now);
-
- p = tbuf;
- tbuf_left = TBUF_LEN;
-
-#define DEC() \
- do { \
- if (prlen < 0) \
- prlen = 0; \
- if (prlen >= tbuf_left) \
- prlen = tbuf_left - 1; \
- p += prlen; \
- tbuf_left -= prlen; \
- } while (0)
-
- prlen = snprintf(p, tbuf_left, "<%d>", pri);
- DEC();
-
- /*
- * syslogd will expand time automagically for reentrant case, and
- * for normal case, just do like before
- */
- if (data == &sdata) {
- prlen = strftime(p, tbuf_left, "%h %e %T ", localtime(&now));
- DEC();
- }
-
- if (data->log_stat & LOG_PERROR)
- stdp = p;
- if (data->log_tag == NULL)
- data->log_tag = __progname;
- if (data->log_tag != NULL) {
- prlen = snprintf(p, tbuf_left, "%s", data->log_tag);
- DEC();
- }
- if (data->log_stat & LOG_PID) {
- prlen = snprintf(p, tbuf_left, "[%ld]", (long)getpid());
- DEC();
- }
- if (data->log_tag != NULL) {
- if (tbuf_left > 1) {
- *p++ = ':';
- tbuf_left--;
- }
- if (tbuf_left > 1) {
- *p++ = ' ';
- tbuf_left--;
- }
- }
-
- /* strerror() is not reentrant */
-
- for (t = fmt_cpy, fmt_left = FMT_LEN; (ch = *fmt); ++fmt) {
- if (ch == '%' && fmt[1] == 'm') {
- ++fmt;
- if (data == &sdata) {
- prlen = snprintf(t, fmt_left, "%s",
- strerror(saved_errno));
- } else {
- prlen = snprintf(t, fmt_left, "Error %d",
- saved_errno);
- }
- if (prlen < 0)
- prlen = 0;
- if (prlen >= fmt_left)
- prlen = fmt_left - 1;
- t += prlen;
- fmt_left -= prlen;
- } else if (ch == '%' && fmt[1] == '%' && fmt_left > 2) {
- *t++ = '%';
- *t++ = '%';
- fmt++;
- fmt_left -= 2;
- } else {
- if (fmt_left > 1) {
- *t++ = ch;
- fmt_left--;
- }
- }
- }
- *t = '\0';
-
- prlen = vsnprintf(p, tbuf_left, fmt_cpy, ap);
- DEC();
- cnt = p - tbuf;
-
- /* Output to stderr if requested. */
- if (data->log_stat & LOG_PERROR) {
- struct iovec iov[2];
-
- iov[0].iov_base = stdp;
- iov[0].iov_len = cnt - (stdp - tbuf);
- iov[1].iov_base = "\n";
- iov[1].iov_len = 1;
- (void)writev(STDERR_FILENO, iov, 2);
- }
-
- /* Get connected, output the message to the local logger. */
- if (!data->opened)
- openlog_r(data->log_tag, data->log_stat, 0, data);
- connectlog_r(data);
-
- /*
- * If the send() failed, there are two likely scenarios:
- * 1) syslogd was restarted
- * 2) /dev/log is out of socket buffer space
- * We attempt to reconnect to /dev/log to take care of
- * case #1 and keep send()ing data to cover case #2
- * to give syslogd a chance to empty its socket buffer.
- */
- if ((error = send(data->log_file, tbuf, cnt, 0)) < 0) {
- if (errno != ENOBUFS) {
- disconnectlog_r(data);
- connectlog_r(data);
- }
- do {
- usleep(1);
- if ((error = send(data->log_file, tbuf, cnt, 0)) >= 0)
- break;
- } while (errno == ENOBUFS);
- }
-
- /*
- * Output the message to the console; try not to block
- * as a blocking console should not stop other processes.
- * Make sure the error reported is the one from the syslogd failure.
- */
- if (error == -1 && (data->log_stat & LOG_CONS) &&
- (fd = open(_PATH_CONSOLE, O_WRONLY|O_NONBLOCK, 0)) >= 0) {
- struct iovec iov[2];
-
- p = strchr(tbuf, '>') + 1;
- iov[0].iov_base = p;
- iov[0].iov_len = cnt - (p - tbuf);
- iov[1].iov_base = "\r\n";
- iov[1].iov_len = 2;
- (void)writev(fd, iov, 2);
- (void)close(fd);
- }
-
- if (data != &sdata)
- closelog_r(data);
-}
-
-static void
-disconnectlog_r(struct syslog_data *data)
-{
- /*
- * If the user closed the FD and opened another in the same slot,
- * that's their problem. They should close it before calling on
- * system services.
- */
- if (data->log_file != -1) {
- close(data->log_file);
- data->log_file = -1;
- }
- data->connected = 0; /* retry connect */
-}
-
-static void
-connectlog_r(struct syslog_data *data)
-{
- union {
- struct sockaddr syslogAddr;
- struct sockaddr_un syslogAddrUn;
- } u;
-
-#define SyslogAddr u.syslogAddrUn
-
- if (data->log_file == -1) {
- if ((data->log_file = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1)
- return;
- (void)fcntl(data->log_file, F_SETFD, 1);
- }
- if (data->log_file != -1 && !data->connected) {
- memset(&SyslogAddr, '\0', sizeof(SyslogAddr));
-#if 0
- /* BIONIC: no sun_len field to fill on Linux */
- SyslogAddr.sun_len = sizeof(SyslogAddr);
-#endif
- SyslogAddr.sun_family = AF_UNIX;
- strlcpy(SyslogAddr.sun_path, _PATH_LOG,
- sizeof(SyslogAddr.sun_path));
- if (connect(data->log_file, &u.syslogAddr,
- sizeof(SyslogAddr)) == -1) {
- (void)close(data->log_file);
- data->log_file = -1;
- } else
- data->connected = 1;
- }
-}
-
-void
-openlog_r(const char *ident, int logstat, int logfac, struct syslog_data *data)
-{
- if (ident != NULL)
- data->log_tag = ident;
- data->log_stat = logstat;
- if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0)
- data->log_fac = logfac;
-
- if (data->log_stat & LOG_NDELAY) /* open immediately */
- connectlog_r(data);
-
- data->opened = 1; /* ident and facility has been set */
-}
-
-void
-closelog_r(struct syslog_data *data)
-{
- (void)close(data->log_file);
- data->log_file = -1;
- data->connected = 0;
- data->log_tag = NULL;
-}
-
-/* setlogmask -- set the log mask level */
-int
-setlogmask_r(int pmask, struct syslog_data *data)
-{
- int omask;
-
- omask = data->log_mask;
- if (pmask != 0)
- data->log_mask = pmask;
- return (omask);
-}
diff --git a/libc/unistd/system.c b/libc/unistd/system.c
deleted file mode 100644
index 72cc37e..0000000
--- a/libc/unistd/system.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $OpenBSD: system.c,v 1.8 2005/08/08 08:05:37 espie Exp $ */
-/*
- * Copyright (c) 1988 The 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. 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 <sys/types.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <paths.h>
-#include <sys/wait.h>
-
-extern char **environ;
-
-int
-system(const char *command)
-{
- pid_t pid;
- sig_t intsave, quitsave;
- sigset_t mask, omask;
- int pstat;
- char *argp[] = {"sh", "-c", NULL, NULL};
-
- if (!command) /* just checking... */
- return(1);
-
- argp[2] = (char *)command;
-
- sigemptyset(&mask);
- sigaddset(&mask, SIGCHLD);
- sigprocmask(SIG_BLOCK, &mask, &omask);
- switch (pid = vfork()) {
- case -1: /* error */
- sigprocmask(SIG_SETMASK, &omask, NULL);
- return(-1);
- case 0: /* child */
- sigprocmask(SIG_SETMASK, &omask, NULL);
- execve(_PATH_BSHELL, argp, environ);
- _exit(127);
- }
-
- intsave = (sig_t) bsd_signal(SIGINT, SIG_IGN);
- quitsave = (sig_t) bsd_signal(SIGQUIT, SIG_IGN);
- pid = waitpid(pid, (int *)&pstat, 0);
- sigprocmask(SIG_SETMASK, &omask, NULL);
- (void)bsd_signal(SIGINT, intsave);
- (void)bsd_signal(SIGQUIT, quitsave);
- return (pid == -1 ? -1 : pstat);
-}
diff --git a/libc/unistd/tcgetpgrp.c b/libc/unistd/tcgetpgrp.c
deleted file mode 100644
index 4355014..0000000
--- a/libc/unistd/tcgetpgrp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* bionic/unistd/tcgetpgrp.c
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * 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.
-** * Neither the name of Google Inc. 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 Google Inc. ``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 Google Inc. 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 <unistd.h>
-#include <termios.h>
-
-pid_t tcgetpgrp(int fd)
-{
- pid_t _pid;
- return ioctl(fd, TIOCGPGRP, &_pid) ? (pid_t)-1 : _pid;
-}
diff --git a/libc/unistd/tcsetpgrp.c b/libc/unistd/tcsetpgrp.c
deleted file mode 100644
index b83b997..0000000
--- a/libc/unistd/tcsetpgrp.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* bionic/unistd/tcsetpgrp.c
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * 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.
-** * Neither the name of Google Inc. 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 Google Inc. ``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 Google Inc. 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 <unistd.h>
-#include <termios.h>
-
-int tcsetpgrp(int fd, pid_t _pid)
-{
- return ioctl(fd, TIOCSPGRP, &_pid);
-}
diff --git a/libc/unistd/time.c b/libc/unistd/time.c
deleted file mode 100644
index 13d7366..0000000
--- a/libc/unistd/time.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $OpenBSD: time.c,v 1.5 2005/08/08 08:05:34 espie Exp $ */
-/*
- * Copyright (c) 1983, 1993
- * The 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. 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 <time.h>
-
-time_t
-time(time_t *t)
-{
- struct timeval tt;
-
- if (gettimeofday(&tt, (struct timezone *)0) < 0)
- return (-1);
- if (t)
- *t = (time_t)tt.tv_sec;
- return (tt.tv_sec);
-}
-
-
-clock_t
-clock(void)
-{
- struct timespec tm;
- static int clock_inited;
- static clock_t clock_start;
- clock_t now;
-
- clock_gettime( CLOCK_MONOTONIC, &tm);
- now = tm.tv_sec * CLOCKS_PER_SEC + (tm.tv_nsec * (CLOCKS_PER_SEC/1e9));
-
- if (!clock_inited) {
- clock_start = now;
- clock_inited = 1;
- }
- return now - clock_start;
-}
diff --git a/libc/unistd/umount.c b/libc/unistd/umount.c
deleted file mode 100644
index 642e42c..0000000
--- a/libc/unistd/umount.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-
-extern int umount2(const char*, int);
-
-int umount(const char* dir)
-{
- return umount2(dir, 0);
-}
diff --git a/libc/unistd/unlockpt.c b/libc/unistd/unlockpt.c
deleted file mode 100644
index 998b7a3..0000000
--- a/libc/unistd/unlockpt.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <unistd.h>
-#include <sys/ioctl.h>
-
-int unlockpt( int fd )
-{
- int unlock = 0;
-
- return ioctl( fd, TIOCSPTLCK, &unlock );
-}
diff --git a/libc/unistd/usleep.c b/libc/unistd/usleep.c
deleted file mode 100644
index 75458b1..0000000
--- a/libc/unistd/usleep.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <time.h>
-#include <errno.h>
-
-void usleep(unsigned long usec)
-{
- struct timespec ts;
-
- ts.tv_sec = usec/1000000UL;
-
-#ifdef __arm__
- /* avoid divisions and modulos on the ARM */
- ts.tv_nsec = (usec - ts.tv_sec*1000000UL)*1000;
-#else
- ts.tv_nsec = (usec % 1000000UL) * 1000UL;
-#endif
-
- for (;;)
- {
- if ( nanosleep( &ts, &ts ) >= 0 )
- break;
-
- if ( errno != EINTR )
- break;
- }
-}
diff --git a/libc/unistd/wait.c b/libc/unistd/wait.c
deleted file mode 100644
index d172419..0000000
--- a/libc/unistd/wait.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
- * COPYRIGHT OWNER 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 <sys/wait.h>
-#include <stddef.h>
-
-extern pid_t __wait4 (pid_t pid, int *status, int options, struct rusage *rusage);
-
-pid_t wait( int* status )
-{
- return __wait4( (pid_t)-1, status, 0, NULL );
-}
-
-pid_t wait3(int* status, int options, struct rusage* rusage)
-{
- return __wait4( (pid_t)-1, status, options, rusage );
-}
-
-pid_t waitpid(pid_t pid, int* status, int options)
-{
- return __wait4( pid, status, options, NULL );
-}