
/* all_true.c */
/* ---------- */
/*
     No matter what code the calling program returns, this 
     program will always return 0 (success).

     Usage:  all_true program args
     Example: all_true sleep 5

*/


#include <stdio.h>
#include <signal.h>

#define RET_VALUE        0

main(argc,argv)
int argc;
char **argv;
     {
     process(argc,argv);
     exit(RET_VALUE);
     }

process(argc,argv)
int argc;
char **argv;
     {
     int pid;

     if ((pid = fork()) == -1)
      {
          perror("all_true");
          exit(1);
      }

     if (pid > 0 )
      {
      signal(SIGINT,SIG_IGN); /* Ignore interrupt key */
          while (wait( (int *) 0 ) == pid);
          return;
      }
     
     signal(SIGINT,SIG_DFL);  /* Default interrupt key */
     argv++;                  /* Point to program argument */
     execvp(*argv, argv);
     perror("all_true");
     }

