glibc/posix/spawn_faction_addclose.c
Ulrich Drepper a5a6f9262e Update.
2000-04-15  Ulrich Drepper  <drepper@redhat.com>

	* posix/Makefile (headers): Add spawn.h.
	(distribute): Add spawn_int.h.
	(routines): Add spawn_faction_init, spawn_faction_destroy,
	spawn_faction_addclose, spawn_faction_addopen, spawn_faction_adddup2,
	spawnattr_init, spawnattr_destroy, spawnattr_getdefault,
	spawnattr_setdefault, spawnattr_getflags, spawnattr_setflags,
	spawnattr_getpgroup, spawnattr_setpgroup, spawn, spawnp, and spawni.
	* posix/Versions [libc] (GLIBC_2.2): Add posix_spawn_file_actions_init,
	posix_spawn_file_actions_destroy, posix_spawn_file_actions_addclose,
	posix_spawn_file_actions_addopen, posix_spawn_file_actions_adddup2,
	posix_spawnattr_init, posix_spawnattr_destroy,
	posix_spawnattr_getdefault, posix_spawnattr_setdefault,
	posix_spawnattr_getflags, posix_spawnattr_setflags,
	posix_spawnattr_getpgroup, posix_spawnattr_setpgroup, posix_spawn,
	and posix_spawnp.
	* posix/spawn.c: New file.
	* posix/spawn.h: New file.
	* posix/spawn_faction_addclose.c: New file.
	* posix/spawn_faction_adddup2.c: New file.
	* posix/spawn_faction_addopen.c: New file.
	* posix/spawn_faction_destroy.c: New file.
	* posix/spawn_faction_init.c: New file.
	* posix/spawn_int.h: New file.
	* posix/spawnattr_destroy.c: New file.
	* posix/spawnattr_getdefault.c: New file.
	* posix/spawnattr_getflags.c: New file.
	* posix/spawnattr_getpgroup.c: New file.
	* posix/spawnattr_getschedparam.c: New file.
	* posix/spawnattr_getschedpolicy.c: New file.
	* posix/spawnattr_getsigmask.c: New file.
	* posix/spawnattr_init.c: New file.
	* posix/spawnattr_setdefault.c: New file.
	* posix/spawnattr_setflags.c: New file.
	* posix/spawnattr_setpgroup.c: New file.
	* posix/spawnattr_setschedparam.c: New file.
	* posix/spawnattr_setschedpolicy.c: New file.
	* posix/spawnattr_setsigmask.c: New file.
	* posix/spawni.c: New file.
	* posix/spawnp.c: New file.

	* sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_SPAWN.
	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
2000-04-15 16:51:16 +00:00

51 lines
1.7 KiB
C

/* Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <spawn.h>
#include <unistd.h>
#include "spawn_int.h"
/* Add an action to FILE-ACTIONS which tells the implementation to call
`close' for the given file descriptor during the `spawn' call. */
int
posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *file_actions,
int fd)
{
int maxfd = sysconf (_SC_OPEN_MAX);
struct __spawn_action *rec;
/* Test for the validity of the file descriptor. */
if (fd < 0 || fd >= maxfd)
return EBADF;
/* Allocate more memory of needed. */
if (file_actions->__used == file_actions->__allocated
&& __posix_spawn_file_actions_realloc (file_actions) != 0)
/* THis can only mean we ran out of memory. */
return ENOMEM;
/* Add the new value. */
rec = &file_actions->__actions[file_actions->__allocated];
rec->tag = spawn_do_close;
rec->action.open_action.fd = fd;
return 0;
}