[BACK]Return to ox_pathfinder.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / util

Diff for /OpenXM/src/util/ox_pathfinder.c between version 1.14 and 1.16

version 1.14, 2003/12/04 03:17:33 version 1.16, 2003/12/04 06:29:21
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.13 2003/12/03 13:38:39 takayama Exp $ */  /* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.15 2003/12/04 05:27:19 takayama Exp $ */
 /* Moved from misc-2003/07/cygwin/test.c */  /* Moved from misc-2003/07/cygwin/test.c */
   
 #include <stdio.h>  #include <stdio.h>
Line 141  int oxForkExec(char **argv) {
Line 141  int oxForkExec(char **argv) {
     fprintf(stderr,"Cannot fork and exec.\n"); return -1;      fprintf(stderr,"Cannot fork and exec.\n"); return -1;
   }    }
   if ((pid = fork()) > 0) {    if ((pid = fork()) > 0) {
       oxResetRedirect();
     if (m&2) {      if (m&2) {
       /* Do not call singal to turn around a trouble on cygwin. BUG. */        /* Do not call singal to turn around a trouble on cygwin. BUG. */
     }else{      }else{
Line 185  int oxForkExecBlocked(char **argv) {
Line 186  int oxForkExecBlocked(char **argv) {
     fprintf(stderr,"Cannot fork and exec.\n"); return -1;      fprintf(stderr,"Cannot fork and exec.\n"); return -1;
   }    }
   if ((pid = fork()) > 0) {    if ((pid = fork()) > 0) {
       oxResetRedirect();
     Myforkchildren[Myforkcp++] = pid;      Myforkchildren[Myforkcp++] = pid;
     if (Myforkcp >= MYFORKCP_SIZE-1) {      if (Myforkcp >= MYFORKCP_SIZE-1) {
       fprintf(stderr,"Child process table is full.\n");        fprintf(stderr,"Child process table is full.\n");
Line 193  int oxForkExecBlocked(char **argv) {
Line 195  int oxForkExecBlocked(char **argv) {
     if (waitpid(pid,&status,0) < 0) {  /* blocked */      if (waitpid(pid,&status,0) < 0) {  /* blocked */
       perror("waitpid");        perror("waitpid");
     }      }
       Myforkcp--;
     return status;      return status;
   }else{    }else{
     /* close the specified files */      /* close the specified files */
Line 1084  char *oxEvalEnvVar(char *s) {
Line 1087  char *oxEvalEnvVar(char *s) {
 }  }
   
 void oxResetRedirect(void) {  void oxResetRedirect(void) {
     if (OX_P_stdin >= 0) close(OX_P_stdin);
     if (OX_P_stdout >= 0) close(OX_P_stdout);
     if (OX_P_stderr >= 0) close(OX_P_stderr);
   OX_P_stdin = OX_P_stdout = OX_P_stderr = -1;    OX_P_stdin = OX_P_stdout = OX_P_stderr = -1;
 }  }
   
Line 1093  int oxDeleteFile(char *fname) {
Line 1099  int oxDeleteFile(char *fname) {
   }else{    }else{
     return(-1);      return(-1);
   }    }
   }
   
   /* This function just kills processes, so if there is a process which
      uses ox protocol, it is not relevant to use this functions.
   */
   int oxKillAll(void) {
     int i;
     int pid;
     int status;
     for (i=0; i<Myforkcp; i++) {
       pid = Myforkchildren[i];
       signal(SIGKILL,myforkwait);
     }
     Myforkcp = 0;
     return(0);
 }  }

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.16

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>