Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Unified Diff: newlib/libc/posix/posix_spawn.c

Issue 650343002: Split posix_spawn.c into 3 different files (Closed) Base URL: http://git.chromium.org/native_client/nacl-newlib.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « newlib/libc/posix/Makefile.in ('k') | newlib/libc/posix/posix_spawn_file_actions.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: newlib/libc/posix/posix_spawn.c
diff --git a/newlib/libc/posix/posix_spawn.c b/newlib/libc/posix/posix_spawn.c
index bc0e033725a8acc01c7d7e3667921d971319b7d6..7f13c7188b8d076a9b737e8de11131087e103821 100644
--- a/newlib/libc/posix/posix_spawn.c
+++ b/newlib/libc/posix/posix_spawn.c
@@ -91,13 +91,11 @@ Supporting OS subroutines required: <<_close>>, <<dup2>>, <<_fcntl>>,
#include <sys/cdefs.h>
#include <sys/signal.h>
-#include <sys/queue.h>
#include <sys/wait.h>
#include <_syslist.h>
#include <errno.h>
#include <fcntl.h>
-#include <sched.h>
#include <spawn.h>
#include <signal.h>
#include <stdlib.h>
@@ -109,46 +107,12 @@ Supporting OS subroutines required: <<_close>>, <<dup2>>, <<_fcntl>>,
'environ'. */
static char ***p_environ = &environ;
-struct __posix_spawnattr {
- short sa_flags;
- pid_t sa_pgroup;
- struct sched_param sa_schedparam;
- int sa_schedpolicy;
- sigset_t sa_sigdefault;
- sigset_t sa_sigmask;
-};
-
-struct __posix_spawn_file_actions {
- STAILQ_HEAD(, __posix_spawn_file_actions_entry) fa_list;
-};
-
-typedef struct __posix_spawn_file_actions_entry {
- STAILQ_ENTRY(__posix_spawn_file_actions_entry) fae_list;
- enum { FAE_OPEN, FAE_DUP2, FAE_CLOSE } fae_action;
-
- int fae_fildes;
- union {
- struct {
- char *path;
-#define fae_path fae_data.open.path
- int oflag;
-#define fae_oflag fae_data.open.oflag
- mode_t mode;
-#define fae_mode fae_data.open.mode
- } open;
- struct {
- int newfildes;
-#define fae_newfildes fae_data.dup2.newfildes
- } dup2;
- } fae_data;
-} posix_spawn_file_actions_entry_t;
-
/*
* Spawn routines
*/
static int
-process_spawnattr(_CONST posix_spawnattr_t sa)
+process_spawnattr(_CONST posix_spawnattr_t* sa)
{
struct sigaction sigact = { .sa_flags = 0, .sa_handler = SIG_DFL };
int i;
@@ -241,7 +205,7 @@ process_file_actions_entry(posix_spawn_file_actions_entry_t *fae)
}
static int
-process_file_actions(_CONST posix_spawn_file_actions_t fa)
+process_file_actions(_CONST posix_spawn_file_actions_t* fa)
{
posix_spawn_file_actions_entry_t *fae;
int error;
@@ -270,12 +234,12 @@ do_posix_spawn(pid_t *pid, _CONST char *path,
return (errno);
case 0:
if (sa != NULL) {
- error = process_spawnattr(*sa);
+ error = process_spawnattr(sa);
if (error)
_exit(127);
}
if (fa != NULL) {
- error = process_file_actions(*fa);
+ error = process_file_actions(fa);
if (error)
_exit(127);
}
@@ -318,261 +282,4 @@ _DEFUN(posix_spawnp, (pid, path, fa, sa, argv, envp),
return do_posix_spawn(pid, path, fa, sa, argv, envp, 1);
}
-/*
- * File descriptor actions
- */
-
-int
-_DEFUN(posix_spawn_file_actions_init, (ret),
- posix_spawn_file_actions_t *ret)
-{
- posix_spawn_file_actions_t fa;
-
- fa = malloc(sizeof(struct __posix_spawn_file_actions));
- if (fa == NULL)
- return (-1);
-
- STAILQ_INIT(&fa->fa_list);
- *ret = fa;
- return (0);
-}
-
-int
-_DEFUN(posix_spawn_file_actions_destroy, (fa),
- posix_spawn_file_actions_t *fa)
-{
- posix_spawn_file_actions_entry_t *fae;
-
- while ((fae = STAILQ_FIRST(&(*fa)->fa_list)) != NULL) {
- /* Remove file action entry from the queue */
- STAILQ_REMOVE_HEAD(&(*fa)->fa_list, fae_list);
-
- /* Deallocate file action entry */
- if (fae->fae_action == FAE_OPEN)
- free(fae->fae_path);
- free(fae);
- }
-
- free(*fa);
- return (0);
-}
-
-int
-_DEFUN(posix_spawn_file_actions_addopen, (fa, fildes, path, oflag, mode),
- posix_spawn_file_actions_t * __restrict fa _AND
- int fildes _AND
- _CONST char * __restrict path _AND
- int oflag _AND
- mode_t mode)
-{
- posix_spawn_file_actions_entry_t *fae;
- int error;
-
- if (fildes < 0)
- return (EBADF);
-
- /* Allocate object */
- fae = malloc(sizeof(posix_spawn_file_actions_entry_t));
- if (fae == NULL)
- return (errno);
-
- /* Set values and store in queue */
- fae->fae_action = FAE_OPEN;
- fae->fae_path = strdup(path);
- if (fae->fae_path == NULL) {
- error = errno;
- free(fae);
- return (error);
- }
- fae->fae_fildes = fildes;
- fae->fae_oflag = oflag;
- fae->fae_mode = mode;
-
- STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list);
- return (0);
-}
-
-int
-_DEFUN(posix_spawn_file_actions_adddup2, (fa, fildes, newfildes),
- posix_spawn_file_actions_t *fa _AND
- int fildes _AND
- int newfildes)
-{
- posix_spawn_file_actions_entry_t *fae;
-
- if (fildes < 0 || newfildes < 0)
- return (EBADF);
-
- /* Allocate object */
- fae = malloc(sizeof(posix_spawn_file_actions_entry_t));
- if (fae == NULL)
- return (errno);
-
- /* Set values and store in queue */
- fae->fae_action = FAE_DUP2;
- fae->fae_fildes = fildes;
- fae->fae_newfildes = newfildes;
-
- STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list);
- return (0);
-}
-
-int
-_DEFUN(posix_spawn_file_actions_addclose, (fa, fildes),
- posix_spawn_file_actions_t *fa _AND
- int fildes)
-{
- posix_spawn_file_actions_entry_t *fae;
-
- if (fildes < 0)
- return (EBADF);
-
- /* Allocate object */
- fae = malloc(sizeof(posix_spawn_file_actions_entry_t));
- if (fae == NULL)
- return (errno);
-
- /* Set values and store in queue */
- fae->fae_action = FAE_CLOSE;
- fae->fae_fildes = fildes;
-
- STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list);
- return (0);
-}
-
-/*
- * Spawn attributes
- */
-
-int
-_DEFUN(posix_spawnattr_init, (ret),
- posix_spawnattr_t *ret)
-{
- posix_spawnattr_t sa;
-
- sa = calloc(1, sizeof(struct __posix_spawnattr));
- if (sa == NULL)
- return (errno);
-
- /* Set defaults as specified by POSIX, cleared above */
- *ret = sa;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_destroy, (sa),
- posix_spawnattr_t *sa)
-{
- free(*sa);
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getflags, (sa, flags),
- _CONST posix_spawnattr_t * __restrict sa _AND
- short * __restrict flags)
-{
- *flags = (*sa)->sa_flags;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getpgroup, (sa, pgroup),
- _CONST posix_spawnattr_t * __restrict sa _AND
- pid_t * __restrict pgroup)
-{
- *pgroup = (*sa)->sa_pgroup;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getschedparam, (sa, schedparam),
- _CONST posix_spawnattr_t * __restrict sa _AND
- struct sched_param * __restrict schedparam)
-{
- *schedparam = (*sa)->sa_schedparam;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getschedpolicy, (sa, schedpolicy),
- _CONST posix_spawnattr_t * __restrict sa _AND
- int * __restrict schedpolicy)
-{
- *schedpolicy = (*sa)->sa_schedpolicy;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getsigdefault, (sa, sigdefault),
- _CONST posix_spawnattr_t * __restrict sa _AND
- sigset_t * __restrict sigdefault)
-{
- *sigdefault = (*sa)->sa_sigdefault;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_getsigmask, (sa, sigmask),
- _CONST posix_spawnattr_t * __restrict sa _AND
- sigset_t * __restrict sigmask)
-{
- *sigmask = (*sa)->sa_sigmask;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setflags, (sa, flags),
- posix_spawnattr_t *sa _AND
- short flags)
-{
- (*sa)->sa_flags = flags;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setpgroup, (sa, pgroup),
- posix_spawnattr_t *sa _AND
- pid_t pgroup)
-{
- (*sa)->sa_pgroup = pgroup;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setschedparam, (sa, schedparam),
- posix_spawnattr_t * __restrict sa _AND
- _CONST struct sched_param * __restrict schedparam)
-{
- (*sa)->sa_schedparam = *schedparam;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setschedpolicy, (sa, schedpolicy),
- posix_spawnattr_t *sa _AND
- int schedpolicy)
-{
- (*sa)->sa_schedpolicy = schedpolicy;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setsigdefault, (sa, sigdefault),
- posix_spawnattr_t * __restrict sa _AND
- _CONST sigset_t * __restrict sigdefault)
-{
- (*sa)->sa_sigdefault = *sigdefault;
- return (0);
-}
-
-int
-_DEFUN(posix_spawnattr_setsigmask, (sa, sigmask),
- posix_spawnattr_t * __restrict sa _AND
- _CONST sigset_t * __restrict sigmask)
-{
- (*sa)->sa_sigmask = *sigmask;
- return (0);
-}
-
#endif /* !_NO_POSIX_SPAWN */
« no previous file with comments | « newlib/libc/posix/Makefile.in ('k') | newlib/libc/posix/posix_spawn_file_actions.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698