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

Diff for /OpenXM/src/kxx/oxmain.c between version 1.6 and 1.7

version 1.6, 2000/12/05 05:58:33 version 1.7, 2001/05/06 07:53:01
Line 1 
Line 1 
 /*  $OpenXM: OpenXM/src/kxx/oxmain.c,v 1.5 2000/07/30 09:55:40 takayama Exp $  */  /*  $OpenXM: OpenXM/src/kxx/oxmain.c,v 1.6 2000/12/05 05:58:33 ohara Exp $  */
 /* nullserver01 */  /* nullserver01 */
 #include <stdio.h>  #include <stdio.h>
 #include <fcntl.h>  #include <fcntl.h>
Line 78  main(int argc, char *argv[]) {
Line 78  main(int argc, char *argv[]) {
     }else if (strcmp(argv[i],"-portfile") == 0) {      }else if (strcmp(argv[i],"-portfile") == 0) {
       i++;        i++;
       if (i<argc) {        if (i<argc) {
                 sscanf(argv[i],"%s",portfile);          sscanf(argv[i],"%s",portfile);
                 portControl = 0;          portControl = 0;
                 portStream = 0;          portStream = 0;
                 NotifyPortnumber = 1;          NotifyPortnumber = 1;
       }        }
     }else if (strcmp(argv[i],"-pass") == 0) {      }else if (strcmp(argv[i],"-pass") == 0) {
       i++;        i++;
       if (i<argc) {        if (i<argc) {
                 pass = argv[i];          pass = argv[i];
       }        }
     }else {      }else {
       fprintf(stderr,"Unknown option %s.\n",argv[i]);        fprintf(stderr,"Unknown option %s.\n",argv[i]);
Line 96  main(int argc, char *argv[]) {
Line 96  main(int argc, char *argv[]) {
   }    }
   
   if (Do_not_use_control_stream_to_tell_no_server) {    if (Do_not_use_control_stream_to_tell_no_server) {
         if (findOxServer(ServerName) < 0) {      if (findOxServer(ServerName) < 0) {
           fprintf(stderr,"Sleeping five seconds...\n");        fprintf(stderr,"Sleeping five seconds...\n");
           sleep(5);        sleep(5);
           exit(-1);        exit(-1);
         }      }
   }    }
   
   if (reverse) {    if (reverse) {
Line 109  main(int argc, char *argv[]) {
Line 109  main(int argc, char *argv[]) {
     fdStream = socketConnectWithPass(sname,portStream,pass);      fdStream = socketConnectWithPass(sname,portStream,pass);
   
     fprintf(stderr,"Connected: control = %d, data = %d.\n",fdControl,fdStream);      fprintf(stderr,"Connected: control = %d, data = %d.\n",fdControl,fdStream);
         result = 0;      result = 0;
   
   
     if (portControl != -1) {      if (portControl != -1) {
Line 120  main(int argc, char *argv[]) {
Line 120  main(int argc, char *argv[]) {
       result=childServerMain(fdControl,fdStream);        result=childServerMain(fdControl,fdStream);
     }      }
     /* This line will be never executed in case of success */      /* This line will be never executed in case of success */
         if (result < 0 ) {      if (result < 0 ) {
           errorToStartEngine();        errorToStartEngine();
         }      }
   }    }
   
   /* non-reverse case. */    /* non-reverse case. */
Line 137  main(int argc, char *argv[]) {
Line 137  main(int argc, char *argv[]) {
       fdControl = socketOpen(sname,portControl);        fdControl = socketOpen(sname,portControl);
       portControl = OpenedSocket;        portControl = OpenedSocket;
       if (NotifyPortnumber) {        if (NotifyPortnumber) {
                 oxWritePortFile(0,portControl,portfile);          oxWritePortFile(0,portControl,portfile);
       }        }
       fdControl = socketAcceptLocal(fdControl);        fdControl = socketAcceptLocal(fdControl);
       fprintf(stderr,"\n control port %d : Connected.\n",portControl);        fprintf(stderr,"\n control port %d : Connected.\n",portControl);
Line 146  main(int argc, char *argv[]) {
Line 146  main(int argc, char *argv[]) {
       fdStream = socketOpen(sname,portStream);        fdStream = socketOpen(sname,portStream);
       portStream = OpenedSocket;        portStream = OpenedSocket;
       if (NotifyPortnumber) {        if (NotifyPortnumber) {
                 oxWritePortFile(1,portStream,portfile);          oxWritePortFile(1,portStream,portfile);
       }        }
       fdStream = socketAcceptLocal(fdStream);        fdStream = socketAcceptLocal(fdStream);
       fprintf(stderr,"\n stream port %d : Connected.\n",portStream);        fprintf(stderr,"\n stream port %d : Connected.\n",portStream);
Line 156  main(int argc, char *argv[]) {
Line 156  main(int argc, char *argv[]) {
       fdControl = socketOpen(sname,portControl);        fdControl = socketOpen(sname,portControl);
       portControl = OpenedSocket;        portControl = OpenedSocket;
       if (NotifyPortnumber) {        if (NotifyPortnumber) {
                 oxWritePortFile(0,portControl,portfile);          oxWritePortFile(0,portControl,portfile);
       }        }
       fdControl = socketAccept(fdControl);        fdControl = socketAccept(fdControl);
       fprintf(stderr,"\n control port %d : Connected.\n",portControl);        fprintf(stderr,"\n control port %d : Connected.\n",portControl);
Line 165  main(int argc, char *argv[]) {
Line 165  main(int argc, char *argv[]) {
       fdStream = socketOpen(sname,portStream);        fdStream = socketOpen(sname,portStream);
       portStream = OpenedSocket;        portStream = OpenedSocket;
       if (NotifyPortnumber) {        if (NotifyPortnumber) {
                 oxWritePortFile(1,portStream,portfile);          oxWritePortFile(1,portStream,portfile);
       }        }
       fdStream = socketAccept(fdStream);        fdStream = socketAccept(fdStream);
       fprintf(stderr,"\n stream port %d : Connected.\n",portStream);        fprintf(stderr,"\n stream port %d : Connected.\n",portStream);
Line 187  main(int argc, char *argv[]) {
Line 187  main(int argc, char *argv[]) {
 static void errorToStartEngine(void) {  static void errorToStartEngine(void) {
   fprintf(stderr,"Failed to start the engine. Childing process is terminating.\n");    fprintf(stderr,"Failed to start the engine. Childing process is terminating.\n");
   /* You have to tell to the control server that there is no engine.    /* You have to tell to the control server that there is no engine.
          And, the control server must tell the client that there is no       And, the control server must tell the client that there is no
          engine.       engine.
          This part has not yet been implemented.       This part has not yet been implemented.
          If you implement this, set Do_not_use_control_stream_to_tell_no_server to       If you implement this, set Do_not_use_control_stream_to_tell_no_server to
          zero.       zero.
          */    */
   sleep(2);    sleep(2);
   exit(-1);    exit(-1);
 }  }
Line 262  parentServerMain(int fdControl, int fdStream) {
Line 262  parentServerMain(int fdControl, int fdStream) {
       r=kill(MyServerPid,SIGUSR1);        r=kill(MyServerPid,SIGUSR1);
       if (message) printf("Result = %d\n",r);        if (message) printf("Result = %d\n",r);
       fflush(NULL);        fflush(NULL);
 /*      oxSendResultOfControlInt32(fdControl,0); */        /*      oxSendResultOfControlInt32(fdControl,0); */
       break;        break;
     default:      default:
       fprintf(stderr,"[control] Unknown control message.\n");        fprintf(stderr,"[control] Unknown control message.\n");
Line 285  childServerMain(int fdControl, int fdStream) {
Line 285  childServerMain(int fdControl, int fdStream) {
   dup2(fdStream,3);    dup2(fdStream,3);
   dup2(fdStream,4);    dup2(fdStream,4);
   /*close(0);    /*close(0);
         #include <sys/param.h>      #include <sys/param.h>
         for (i=5; i<NOFILE; i++) close(i);      for (i=5; i<NOFILE; i++) close(i);
         */    */
   if (!Do_not_use_control_stream_to_tell_no_server) {    if (!Do_not_use_control_stream_to_tell_no_server) {
         if (findOxServer(ServerName) < 0) {      if (findOxServer(ServerName) < 0) {
           return(-1);        return(-1);
         }      }
   }    }
   fprintf(stderr,"childServerMain: Starting the server %s\n",ServerName); fflush(NULL);    fprintf(stderr,"childServerMain: Starting the server %s\n",ServerName); fflush(NULL);
   if (PacketMonitor) {    if (PacketMonitor) {
     if (execl(ServerName,ServerName,"-monitor",NULL)) {      if (execl(ServerName,ServerName,"-monitor",NULL)) {
       fprintf(stderr,"%s cannot be executed with -monitor.\n",ServerName);        fprintf(stderr,"%s cannot be executed with -monitor.\n",ServerName);
           fflush(NULL);        fflush(NULL);
           return(-1);        return(-1);
     }      }
   }else {    }else {
     if (execl(ServerName,ServerName,NULL)) {      if (execl(ServerName,ServerName,NULL)) {
       fprintf(stderr,"%s cannot be executed.\n",ServerName);        fprintf(stderr,"%s cannot be executed.\n",ServerName);
           fflush(NULL);        fflush(NULL);
           return(-1);        return(-1);
     }      }
   }    }
   /* never reached. */    /* never reached. */
Line 323  static int findOxServer(char *server) {
Line 323  static int findOxServer(char *server) {
   if (strlen(server) == 0) return(-1);    if (strlen(server) == 0) return(-1);
   fd = open(server,O_RDONLY);    fd = open(server,O_RDONLY);
   if (fd >= 0) {    if (fd >= 0) {
         fprintf(stderr,"Starting OX server : %s\n",server);      fprintf(stderr,"Starting OX server : %s\n",server);
         close(fd);      close(fd);
         return(0);      return(0);
   }    }
   if (server[0] == '/') {    if (server[0] == '/') {
         couldNotFind(server);      couldNotFind(server);
         return(-1);      return(-1);
   }    }
   fprintf(stderr,"The server %s was not found. Trying to find it under OpenXM/bin\n",server);    fprintf(stderr,"The server %s was not found. Trying to find it under OpenXM/bin\n",server);
   p = getenv("OpenXM_HOME");    p = getenv("OpenXM_HOME");
Line 341  static int findOxServer(char *server) {
Line 341  static int findOxServer(char *server) {
   strcpy(p2,p); strcat(p2,"/bin/"); strcat(p2,server);    strcpy(p2,p); strcat(p2,"/bin/"); strcat(p2,server);
   fd = open(p2,O_RDONLY);    fd = open(p2,O_RDONLY);
   if (fd >= 0) {    if (fd >= 0) {
         fprintf(stderr,"Starting OX server : %s\n",p2);      fprintf(stderr,"Starting OX server : %s\n",p2);
         if (strlen(p2) < SERVERNAME_SIZE) strcpy(server,p2);      if (strlen(p2) < SERVERNAME_SIZE) strcpy(server,p2);
         else {      else {
           couldNotFind("Too long ox server name.");        couldNotFind("Too long ox server name.");
           return(-1);        return(-1);
         }      }
         close(fd);      close(fd);
         return(0);      return(0);
   }    }
   couldNotFind(p2);    couldNotFind(p2);
   return(-1);    return(-1);

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

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