1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00

New module 'posix_spawn_file_actions_adddup2'.

This commit is contained in:
Bruno Haible
2008-09-28 13:46:16 +02:00
parent b69271fcc2
commit 23be8c8099
4 changed files with 108 additions and 5 deletions

View File

@@ -1,5 +1,12 @@
2008-09-28 Bruno Haible <bruno@clisp.org> 2008-09-28 Bruno Haible <bruno@clisp.org>
New module 'posix_spawn_file_actions_adddup2'.
* modules/posix_spawn_file_actions_adddup2: New file.
* lib/spawn_faction_adddup2.c: New file, from GNU libc with
modifications.
* doc/posix-functions/posix_spawn_file_actions_adddup2.texi: Mention
the new module.
New module 'posix_spawn_file_actions_addclose'. New module 'posix_spawn_file_actions_addclose'.
* modules/posix_spawn_file_actions_addclose: New file. * modules/posix_spawn_file_actions_addclose: New file.
* lib/spawn_faction_addclose.c: New file, from GNU libc with * lib/spawn_faction_addclose.c: New file, from GNU libc with

View File

@@ -4,15 +4,15 @@
POSIX specification: @url{http://www.opengroup.org/susv3xsh/posix_spawn_file_actions_adddup2.html} POSIX specification: @url{http://www.opengroup.org/susv3xsh/posix_spawn_file_actions_adddup2.html}
Gnulib module: --- Gnulib module: posix_spawn_file_actions_adddup2
Portability problems fixed by Gnulib: Portability problems fixed by Gnulib:
@itemize @itemize
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item @item
This function is missing on some platforms: This function is missing on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS. MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin, mingw, Interix 3.5, BeOS.
@end itemize @end itemize
Portability problems not fixed by Gnulib:
@itemize
@end itemize

View File

@@ -0,0 +1,65 @@
/* Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
/* Specification. */
#include <spawn.h>
#include <errno.h>
#include <unistd.h>
#if !_LIBC
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
# include <stdio.h>
# define __sysconf(open_max) _getmaxstdio ()
# else
# define __sysconf(open_max) getdtablesize ()
# endif
#endif
#include "spawn_int.h"
/* Add an action to FILE-ACTIONS which tells the implementation to call
`dup2' for the given file descriptors during the `spawn' call. */
int
posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *file_actions,
int fd, int newfd)
{
int maxfd = __sysconf (_SC_OPEN_MAX);
struct __spawn_action *rec;
/* Test for the validity of the file descriptor. */
if (fd < 0 || newfd < 0 || fd >= maxfd || newfd >= maxfd)
return EBADF;
/* Allocate more memory if 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->_used];
rec->tag = spawn_do_dup2;
rec->action.dup2_action.fd = fd;
rec->action.dup2_action.newfd = newfd;
/* Account for the new entry. */
++file_actions->_used;
return 0;
}

View File

@@ -0,0 +1,31 @@
Description:
posix_spawn_file_actions_adddup2() function: augment a child process actions
specification.
Files:
lib/spawn_faction_adddup2.c
lib/spawn_int.h
m4/posix_spawn.m4
Depends-on:
spawn
configure.ac:
gl_POSIX_SPAWN
if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
gl_REPLACE_SPAWN_H
AC_LIBOBJ([spawn_faction_adddup2])
fi
gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_adddup2])
Makefile.am:
Include:
<spawn.h>
License:
LGPL
Maintainer:
Bruno Haible, glibc