Implement <spawn.h>.

As described here:

  http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html

And here:

  http://man7.org/linux/man-pages/man3/posix_spawn.3.html

Bug: N/A (but mentioned in my inbox since 2013)
Test: ran tests
Change-Id: I0b27b2919b660779e3bd8a25fb429527c16dc621
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 9203215..ced0315 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -736,6 +736,7 @@
   EXPECT_GT(_POSIX_SEM_VALUE_MAX, 0);
   EXPECT_GT(_POSIX_SHELL, 0);
   EXPECT_GT(_POSIX_SIGQUEUE_MAX, 0);
+  EXPECT_EQ(_POSIX_VERSION, _POSIX_SPAWN);
   EXPECT_EQ(_POSIX_VERSION, _POSIX_SPORADIC_SERVER);
   EXPECT_GT(_POSIX_SSIZE_MAX, 0);
   EXPECT_GT(_POSIX_STREAM_MAX, 0);
@@ -791,7 +792,6 @@
   EXPECT_EQ(-1, _POSIX_MESSAGE_PASSING);
   EXPECT_EQ(-1, _POSIX_PRIORITIZED_IO);
   EXPECT_EQ(-1, _POSIX_SHARED_MEMORY_OBJECTS);
-  EXPECT_EQ(-1, _POSIX_SPAWN);
   EXPECT_EQ(-1, _POSIX_THREAD_ROBUST_PRIO_INHERIT);
 
   EXPECT_EQ(-1, _POSIX2_CHAR_TERM);
@@ -915,6 +915,7 @@
   VERIFY_SYSCONF_POSIX_VERSION(_SC_READER_WRITER_LOCKS);
   VERIFY_SYSCONF_POSITIVE(_SC_REGEXP);
   VERIFY_SYSCONF_POSITIVE(_SC_SHELL);
+  VERIFY_SYSCONF_POSIX_VERSION(_SC_SPAWN);
   VERIFY_SYSCONF_POSIX_VERSION(_SC_SPORADIC_SERVER);
   VERIFY_SYSCONF_POSITIVE(_SC_SYMLOOP_MAX);
   VERIFY_SYSCONF_POSIX_VERSION(_SC_THREAD_CPUTIME);
@@ -954,7 +955,6 @@
   VERIFY_SYSCONF_UNSUPPORTED(_SC_MESSAGE_PASSING);
   VERIFY_SYSCONF_UNSUPPORTED(_SC_PRIORITIZED_IO);
   VERIFY_SYSCONF_UNSUPPORTED(_SC_SHARED_MEMORY_OBJECTS);
-  VERIFY_SYSCONF_UNSUPPORTED(_SC_SPAWN);
   VERIFY_SYSCONF_UNSUPPORTED(_SC_THREAD_ROBUST_PRIO_INHERIT);
   VERIFY_SYSCONF_UNSUPPORTED(_SC_THREAD_ROBUST_PRIO_PROTECT);
 
@@ -1212,12 +1212,6 @@
   }
 }
 
-#if defined(__GLIBC__)
-#define BIN_DIR "/bin/"
-#else
-#define BIN_DIR "/system/bin/"
-#endif
-
 TEST(UNISTD_TEST, execve_failure) {
   ExecTestHelper eth;
   errno = 0;