diff options
author | delphij <delphij@FreeBSD.org> | 2007-07-19 06:57:46 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2007-07-19 06:57:46 +0000 |
commit | 5c37d64eb9f644e21bb827ae0193405732267cdb (patch) | |
tree | ea2f720013cfb7b4608331e30d2c5561f90198c5 /contrib/diff/lib/waitpid.c | |
parent | a9b127823d6e6c663ac10c1f52bf7636233d8eb0 (diff) | |
download | FreeBSD-src-5c37d64eb9f644e21bb827ae0193405732267cdb.zip FreeBSD-src-5c37d64eb9f644e21bb827ae0193405732267cdb.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r171490,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/diff/lib/waitpid.c')
-rw-r--r-- | contrib/diff/lib/waitpid.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/contrib/diff/lib/waitpid.c b/contrib/diff/lib/waitpid.c deleted file mode 100644 index bc07898..0000000 --- a/contrib/diff/lib/waitpid.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Emulate waitpid on systems that just have wait. - Copyright (C) 1994, 1995, 1998, 1999 Free Software Foundation, Inc. - - 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 2, 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; see the file COPYING. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#if HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#ifndef errno -extern int errno; -#endif - -#define WAITPID_CHILDREN 8 -static pid_t waited_pid[WAITPID_CHILDREN]; -static int waited_status[WAITPID_CHILDREN]; - -pid_t -waitpid (pid_t pid, int *stat_loc, int options) -{ - int i; - pid_t p; - - if (!options && (pid == -1 || 0 < pid)) - { - /* If we have already waited for this child, return it immediately. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - { - p = waited_pid[i]; - if (p && (p == pid || pid == -1)) - { - waited_pid[i] = 0; - goto success; - } - } - - /* The child has not returned yet; wait for it, accumulating status. */ - for (i = 0; i < WAITPID_CHILDREN; i++) - if (! waited_pid[i]) - { - p = wait (&waited_status[i]); - if (p < 0) - return p; - if (p == pid || pid == -1) - goto success; - waited_pid[i] = p; - } - } - - /* We cannot emulate this wait call, e.g. because of too many children. */ - errno = EINVAL; - return -1; - -success: - if (stat_loc) - *stat_loc = waited_status[i]; - return p; -} |