mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-22 10:48:02 +00:00
posix_spawn: add closefrom non-portable action
Namely posix_spawn_file_actions_addclosefrom_np, in the form it is provided by glibc. Reviewed by: kevans, ngie (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33143
This commit is contained in:
parent
bd44dce5b3
commit
a18ddf7757
|
@ -92,6 +92,8 @@ int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *
|
||||||
__restrict, const char * __restrict);
|
__restrict, const char * __restrict);
|
||||||
int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *,
|
int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *,
|
||||||
int);
|
int);
|
||||||
|
int posix_spawn_file_actions_addclosefrom_np(posix_spawn_file_actions_t *,
|
||||||
|
int);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -437,6 +437,7 @@ FBSD_1.6 {
|
||||||
|
|
||||||
FBSD_1.7 {
|
FBSD_1.7 {
|
||||||
posix_spawn_file_actions_addchdir_np;
|
posix_spawn_file_actions_addchdir_np;
|
||||||
|
posix_spawn_file_actions_addclosefrom_np;
|
||||||
posix_spawn_file_actions_addfchdir_np;
|
posix_spawn_file_actions_addfchdir_np;
|
||||||
sched_getaffinity;
|
sched_getaffinity;
|
||||||
sched_setaffinity;
|
sched_setaffinity;
|
||||||
|
|
|
@ -68,6 +68,7 @@ typedef struct __posix_spawn_file_actions_entry {
|
||||||
FAE_CLOSE,
|
FAE_CLOSE,
|
||||||
FAE_CHDIR,
|
FAE_CHDIR,
|
||||||
FAE_FCHDIR,
|
FAE_FCHDIR,
|
||||||
|
FAE_CLOSEFROM,
|
||||||
} fae_action;
|
} fae_action;
|
||||||
|
|
||||||
int fae_fildes;
|
int fae_fildes;
|
||||||
|
@ -190,6 +191,9 @@ process_file_actions_entry(posix_spawn_file_actions_entry_t *fae)
|
||||||
if (fchdir(fae->fae_fildes) != 0)
|
if (fchdir(fae->fae_fildes) != 0)
|
||||||
return (errno);
|
return (errno);
|
||||||
break;
|
break;
|
||||||
|
case FAE_CLOSEFROM:
|
||||||
|
closefrom(fae->fae_fildes);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -533,6 +537,27 @@ posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *__restrict fa,
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
posix_spawn_file_actions_addclosefrom_np (posix_spawn_file_actions_t *
|
||||||
|
__restrict fa, int from)
|
||||||
|
{
|
||||||
|
posix_spawn_file_actions_entry_t *fae;
|
||||||
|
|
||||||
|
if (from < 0)
|
||||||
|
return (EBADF);
|
||||||
|
|
||||||
|
/* Allocate object */
|
||||||
|
fae = malloc(sizeof(posix_spawn_file_actions_entry_t));
|
||||||
|
if (fae == NULL)
|
||||||
|
return (errno);
|
||||||
|
|
||||||
|
fae->fae_action = FAE_CLOSEFROM;
|
||||||
|
fae->fae_fildes = from;
|
||||||
|
|
||||||
|
STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Spawn attributes
|
* Spawn attributes
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue