]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Remove posix_spawn(3) compat code.
authorRoy Marples <roy@marples.name>
Tue, 21 Mar 2017 20:56:59 +0000 (20:56 +0000)
committerRoy Marples <roy@marples.name>
Tue, 21 Mar 2017 20:56:59 +0000 (20:56 +0000)
All supported OS's have this in libc now.

compat/posix_spawn.c [deleted file]
compat/posix_spawn.h [deleted file]
configure

diff --git a/compat/posix_spawn.c b/compat/posix_spawn.c
deleted file mode 100644 (file)
index 5018369..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2012 Roy Marples <roy@marples.name>
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-/* This implementation of posix_spawn is only suitable for the needs of dhcpcd
- * but it could easily be extended to other applications. */
-
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include <errno.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "common.h"
-#include "posix_spawn.h"
-
-#ifndef _NSIG
-#ifdef _SIG_MAXSIG
-#define _NSIG _SIG_MAXSIG + 1
-#else
-/* Guess */
-#define _NSIG SIGPWR + 1
-#endif
-#endif
-
-extern char **environ;
-
-static int
-posix_spawnattr_handle(const posix_spawnattr_t *attrp)
-{
-       struct sigaction sa;
-       int i;
-
-       if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGMASK)
-               sigprocmask(SIG_SETMASK, &attrp->posix_attr_sigmask, NULL);
-
-       if (attrp->posix_attr_flags & POSIX_SPAWN_SETSIGDEF) {
-               memset(&sa, 0, sizeof(sa));
-               sa.sa_handler = SIG_DFL;
-               for (i = 1; i < _NSIG; i++) {
-                       if (sigismember(&attrp->posix_attr_sigdefault, i)) {
-                               if (sigaction(i, &sa, NULL) == -1)
-                                       return -1;
-                       }
-               }
-       }
-
-       return 0;
-}
-
-inline static int
-is_vfork_safe(short int flags)
-{
-       return !(flags & (POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK));
-}
-
-int
-posix_spawn(pid_t *pid, const char *path,
-       const posix_spawn_file_actions_t *file_actions,
-       const posix_spawnattr_t *attrp,
-       char *const argv[], char *const envp[])
-{
-       short int flags;
-       pid_t p;
-       volatile int error;
-
-       error = 0;
-       flags = attrp ? attrp->posix_attr_flags : 0;
-       if (file_actions == NULL && is_vfork_safe(flags))
-               p = vfork();
-       else
-#ifdef THERE_IS_NO_FORK
-               return ENOSYS;
-#else
-               p = fork();
-#endif
-       switch (p) {
-       case -1:
-               return errno;
-       case 0:
-               if (attrp) {
-                       error = posix_spawnattr_handle(attrp);
-                       if (error)
-                               _exit(127);
-               }
-               execve(path, argv, envp);
-               error = errno;
-               _exit(127);
-       default:
-               if (error != 0)
-                       waitpid(p, NULL, WNOHANG);
-               else if (pid != NULL)
-                       *pid = p;
-               return error;
-       }
-}
-
-int
-posix_spawnattr_init(posix_spawnattr_t *attr)
-{
-
-       memset(attr, 0, sizeof(*attr));
-       attr->posix_attr_flags = 0;
-       sigprocmask(0, NULL, &attr->posix_attr_sigmask);
-       sigemptyset(&attr->posix_attr_sigdefault);
-       return 0;
-}
-
-int
-posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags)
-{
-
-       attr->posix_attr_flags = flags;
-       return 0;
-}
-
-int
-posix_spawnattr_setsigmask(posix_spawnattr_t *attr, const sigset_t *sigmask)
-{
-
-       attr->posix_attr_sigmask = *sigmask;
-       return 0;
-}
-
-int
-posix_spawnattr_setsigdefault(posix_spawnattr_t *attr, const sigset_t *sigmask)
-{
-
-       attr->posix_attr_sigdefault = *sigmask;
-       return 0;
-}
diff --git a/compat/posix_spawn.h b/compat/posix_spawn.h
deleted file mode 100644 (file)
index ccfb0f0..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * dhcpcd - DHCP client daemon
- * Copyright (c) 2006-2012 Roy Marples <roy@marples.name>
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-#ifndef POSIX_SPAWN_H
-#define POSIX_SPAWN_H
-
-#include <signal.h>
-
-typedef struct {
-       short posix_attr_flags;
-#define POSIX_SPAWN_SETSIGDEF          0x10
-#define POSIX_SPAWN_SETSIGMASK         0x20
-       sigset_t posix_attr_sigmask;
-       sigset_t posix_attr_sigdefault;
-} posix_spawnattr_t;
-
-typedef struct {
-//     int unused;
-} posix_spawn_file_actions_t;
-
-int posix_spawn(pid_t *, const char *,
-    const posix_spawn_file_actions_t *, const posix_spawnattr_t *,
-    char *const [], char *const []);
-int posix_spawnattr_init(posix_spawnattr_t *);
-int posix_spawnattr_setflags(posix_spawnattr_t *, short);
-int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *);
-int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *);
-
-#endif
index 53984182a27dc6cc5298b9c72e0ff40a0d795a6c..71f4c6e924e5043e8fbb25197a65dfd052fabf39 100755 (executable)
--- a/configure
+++ b/configure
@@ -730,29 +730,6 @@ if [ "$ARC4RANDOM_UNIFORM" = no ]; then
        echo "#include          \"compat/arc4random_uniform.h\"" >>$CONFIG_H
 fi
 
-if [ -z "$GETLINE" ]; then
-       printf "Testing for getline ... "
-       cat <<EOF >_getline.c
-#include <stdio.h>
-int main(void) {
-       char *buf = NULL;
-       size_t n = 0;
-       return getline(&buf, &n, stdin) == -1 ? -1 : 0;
-}
-EOF
-       if $XCC _getline.c -o _getline 2>&3; then
-               GETLINE=yes
-       else
-               GETLINE=no
-       fi
-       echo "$GETLINE"
-       rm -f _getline.c _getline
-fi
-if [ "$GETLINE" = no ]; then
-       echo "COMPAT_SRCS+=     compat/getline.c" >>$CONFIG_MK
-       echo "#include          \"compat/getline.h\"" >>$CONFIG_H
-fi
-
 if [ -z "$STRLCPY" ]; then
        printf "Testing for strlcpy ... "
        cat <<EOF >_strlcpy.c
@@ -967,38 +944,6 @@ else
        echo "#define HAVE_SYS_QUEUE_H" >>$CONFIG_H
 fi
 
-if [ -z "$POSIX_SPAWN" ]; then
-       printf "Testing for posix_spawn ... "
-       cat <<EOF >_posix_spawn.c
-#include <spawn.h>
-#include <stdlib.h>
-
-#ifdef __OpenBSD__
-#  include <sys/param.h>
-#  if OpenBSD<201505
-#    error posix_spawn was fixed in OpenBSD-5.7
-#  endif
-#endif
-
-int main(void) {
-       posix_spawn(NULL, NULL, NULL, NULL, NULL, NULL);
-       return 0;
-}
-EOF
-       if $XCC _posix_spawn.c -o _posix_spawn 2>&3; then
-               POSIX_SPAWN=yes
-       else
-               POSIX_SPAWN=no
-       fi
-       echo "$POSIX_SPAWN"
-       rm -f _posix_spawn.c _posix_spawn
-fi
-if [ "$POSIX_SPAWN" = no ]; then
-       echo "COMPAT_SRCS+=     compat/posix_spawn.c" >>$CONFIG_MK
-else
-       echo "#define HAVE_SPAWN_H" >>$CONFIG_H
-fi
-
 if [ -z "$REALLOCARRAY" ]; then
        printf "Testing for reallocarray ... "
        cat <<EOF >_reallocarray.c