Imported Upstream version 2.5.2p1
[debian/amanda] / common-src / waitpid.c
diff --git a/common-src/waitpid.c b/common-src/waitpid.c
deleted file mode 100644 (file)
index ee694d4..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
-Copyright (c) 1990, 1991, 1992  X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from the X Consortium.
-
- *
- * Copyright 1990, 1991, 1992 by UniSoft Group Limited.
- * 
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of UniSoft not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  UniSoft
- * makes no representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied warranty.
- *
- * $XConsortium: waitpid.c,v 1.3 94/04/17 20:59:56 rws Exp $
- */
-
-/* modified for Amanda team:
- * replaced all occurrences of "int" for status variables with "amwait_t"
- * compile only if wait4() is not available; if it is, waitpid() is
- * #defined to use wait4 instead.  */
-#include "config.h"
-
-#ifdef HAVE_WAIT4
-/* some compilers do not't like empty C sources */
-static void foo() {};
-
-#else
-
-#if 1
-#include "amanda.h"
-#else
-/* these are all included in amanda.h */
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <errno.h>
-#endif
-
-#ifdef DEBUG
-#   include <stdio.h>
-#   define     DBP(fmt,arg)    (fprintf(stderr, "waitpid(%d): ", currpid), \
-                                fprintf(stderr, fmt, arg), fflush(stderr))
-#else
-#   define     DBP(fmt,arg)
-#endif
-
-#define MAXTAB 20
-
-static struct {
-       pid_t pid;
-       amwait_t /*int*/ status;
-} savtab[MAXTAB];
-static int     ntab = 0;
-static pid_t   currpid = 0;
-
-pid_t
-waitpid(pid, stat_loc, options)
-pid_t pid;
-amwait_t /*int*/ *stat_loc;
-int options;
-{
-       int rval, i;
-       amwait_t /*int*/ local_loc;
-
-       /* Clear the table for each new process */
-       if (getpid() != currpid)
-       {
-               ntab = 0;
-               currpid = getpid();
-               DBP("clearing table\n", 0);
-       }
-
-       DBP("waiting for pid %d\n", pid);
-
-       if (options & ~(WNOHANG|WUNTRACED))
-       {
-               errno = EINVAL;
-               return -1;
-       }
-
-       if (pid == -1)
-       {
-               /* see if any saved */
-               for (i=0; i<ntab; i++)
-                       if (savtab[i].pid != 0)
-                       {
-                               pid = savtab[i].pid;
-                               if (stat_loc)
-                                       *stat_loc = savtab[i].status;
-                               savtab[i].pid = 0;
-                               DBP("got %d from table\n", pid);
-                               return pid;
-                       }
-
-               DBP("return wait3(...)\n", 0);
-               return wait3(stat_loc, options, (int *)0);
-       }
-
-       if (pid <= 0)
-       {
-               /* can't do this functionality (without reading /dev/kmem!) */
-               errno = EINVAL;
-               return -1;
-       }
-
-       /* see if already saved */
-       for (i=0; i<ntab; i++)
-               if (savtab[i].pid == pid)
-               {
-                       if (stat_loc)
-                               *stat_loc = savtab[i].status;
-                       savtab[i].pid = 0;
-                       DBP("found %d in table\n", pid);
-                       return pid;
-               }
-
-       rval = wait3(&local_loc, options, (int *)0);
-       DBP("wait3() returned %d\n", rval);
-       while (rval != pid && rval != -1 && rval != 0)
-       {
-               /* save for later */
-               for (i=0; i<ntab; i++)
-                       if (savtab[i].pid == 0)
-                       {
-                               savtab[i].pid = rval;
-                               savtab[i].status = local_loc;
-                               DBP("saved %d in free slot\n", rval);
-                               break;
-                       }
-               if (i == ntab)
-               {
-                       if (ntab < MAXTAB)
-                       {
-                               savtab[ntab].pid = rval;
-                               savtab[ntab].status = local_loc;
-                               ++ntab;
-                               DBP("saved %d in new slot\n", rval);
-                       }
-                       else
-                               DBP("no free slot for %d\n", rval);
-               }
-               rval = wait3(&local_loc, options, (int *)0);
-               DBP("wait3() returned %d\n", rval);
-       }
-
-       if(stat_loc)
-               *stat_loc = local_loc;
-
-       return rval;
-}
-#endif