[BACK]Return to tcpf.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/tcpf.c between version 1.13 and 1.17

version 1.13, 2000/09/25 04:33:37 version 1.17, 2000/11/08 06:21:17
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.12 2000/09/23 00:57:44 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.16 2000/11/07 06:35:39 noro Exp $
 */  */
 #if INET  #if INET
 #include "ca.h"  #include "ca.h"
Line 58 
Line 58 
 #include "ox.h"  #include "ox.h"
   
 #if defined(VISUAL)  #if defined(VISUAL)
   #include <stdlib.h>
 #include <winsock.h>  #include <winsock.h>
   #include <process.h>
 #endif  #endif
   
 #define OX_XTERM "ox_xterm"  #define OX_XTERM "ox_xterm"
Line 74  static struct m_c {
Line 76  static struct m_c {
 } *m_c_tab;  } *m_c_tab;
   
 static int m_c_i,m_c_s;  static int m_c_i,m_c_s;
   int I_am_server;
   
 #if MPI  #if MPI
 extern int mpi_nprocs;  extern int mpi_nprocs;
 #define valid_mctab_index(ind)\  #define valid_mctab_index(ind)\
 if((ind)<0||(ind)>=mpi_nprocs){error("invalid server id");}  if((ind)<0||(ind)>=mpi_nprocs){error("invalid server id");}
   #define check_valid_mctab_index(ind)\
   if((ind)<0||(ind)>=mpi_nprocs){(ind)=-1;}
 #else  #else
 #define valid_mctab_index(ind)\  #define valid_mctab_index(ind)\
 if((ind)<0||(ind)>=m_c_i||\  if((ind)<0||(ind)>=m_c_i||\
 ((m_c_tab[ind].m<0)&&(m_c_tab[ind].c<0))){error("invalid server id");}  ((m_c_tab[ind].m<0)&&(m_c_tab[ind].c<0))){error("invalid server id");}
   #define check_valid_mctab_index(ind)\
   if((ind)<0||(ind)>=m_c_i||\
   ((m_c_tab[ind].m<0)&&(m_c_tab[ind].c<0))){(ind)=-1;}
 #endif  #endif
   
 int register_server();  int register_server();
Line 485  char *control_port_str,*server_port_str;
Line 493  char *control_port_str,*server_port_str;
 {  {
         char cmd[BUFSIZ];          char cmd[BUFSIZ];
         char localhost[BUFSIZ];          char localhost[BUFSIZ];
         char *dname,*conn_str,*rsh;          char *dname,*conn_str,*rsh,*dname0;
         char dname_str[BUFSIZ];          char dname_str[BUFSIZ];
           char AsirExe[BUFSIZ];
           STRING rootdir;
           char prog[BUFSIZ];
           char *av[BUFSIZ];
   
         dname = use_x ? (char *)getenv("DISPLAY") : 0;          dname0 = (char *)getenv("DISPLAY");
           dname = use_x ? dname0 : 0;
         conn_str = conn_to_serv ? "1" : "0";          conn_str = conn_to_serv ? "1" : "0";
         rsh = getenv("ASIR_RSH");          rsh = getenv("ASIR_RSH");
         if ( !rsh )          if ( !rsh )
Line 501  char *control_port_str,*server_port_str;
Line 514  char *control_port_str,*server_port_str;
                 use_ssh = 1;                  use_ssh = 1;
         }          }
         gethostname(localhost,BUFSIZ);          gethostname(localhost,BUFSIZ);
 #if !defined(VISUAL)  #if defined(VISUAL)
           if ( !use_unix )
                   error("spawn_server : not implemented on Windows");
           Pget_rootdir(&rootdir);
           sprintf(AsirExe,"%s\\bin\\engine.exe",BDY(rootdir));
           strcpy(prog,server);
           server = strrchr(prog,'/')+1;
           av[0] = "ox_launch";
           av[1] = "127.0.0.1";
           av[2] = conn_str;
           av[3] = control_port_str;
           av[4] = server_port_str;
           av[5] = server;
           av[6] = use_x ? "1" : "0";
           av[7] = 0;
   
           _spawnv(_P_NOWAIT,AsirExe,av);
   //      _spawnv(_P_NOWAIT,"d:\\home\\noro\\engine2000\\debug\\engine.exe",av);
   //      printf("ox_launch 127.0.0.1 %s %s %s %s 0\n",conn_str,control_port_str,server_port_str,server);
   #else
         if ( use_unix ) {          if ( use_unix ) {
                 if ( !fork() ) {                  if ( !fork() ) {
                         setpgid(0,getpid());                          setpgid(0,getpid());
Line 511  char *control_port_str,*server_port_str;
Line 543  char *control_port_str,*server_port_str;
                                         control_port_str,server_port_str,server,dname,0);                                          control_port_str,server_port_str,server,dname,0);
                         else                          else
                                 execlp(launcher,launcher,".",conn_str,                                  execlp(launcher,launcher,".",conn_str,
                                         control_port_str,server_port_str,server,"0",0);                                          control_port_str,server_port_str,server,dname0,"-nolog",0);
                 }                  }
         } else if ( conn_to_serv == 2 ) {          } else if ( conn_to_serv == 2 ) {
                 /* special support for java */                  /* special support for java */
Line 527  char *control_port_str,*server_port_str;
Line 559  char *control_port_str,*server_port_str;
                 fprintf(stderr,"%s\n",cmd);                  fprintf(stderr,"%s\n",cmd);
                 sleep(20);                  sleep(20);
 /*              system(cmd); */  /*              system(cmd); */
         } else          } else {
 #endif /* VISUAL */  
         {  
                 if ( dname )                  if ( dname )
                         if ( use_ssh )                          if ( use_ssh )
                         sprintf(cmd,                          sprintf(cmd,
 "%s -f -n %s \"xterm -name %s -title ox_launch:%s -geometry 60x10 -e %s %s %s %s %s %s %s>&/dev/null\">/dev/null",  "%s -f -n %s \"xterm -name %s -title ox_launch:%s -geometry 60x10 -e %s %s %s %s %s %s %s >&/dev/null\">/dev/null",
                                 rsh,host,OX_XTERM,host,launcher,localhost,conn_str,                                  rsh,host,OX_XTERM,host,launcher,localhost,conn_str,
                                 control_port_str,server_port_str,server,"1");                                  control_port_str,server_port_str,server,"1");
                         else                          else
                         sprintf(cmd,                          sprintf(cmd,
 "%s -n %s \"xterm -name %s -title ox_launch:%s -display %s -geometry 60x10 -e %s %s %s %s %s %s %s>&/dev/null&\">/dev/null",  "%s -n %s \"xterm -name %s -title ox_launch:%s -display %s -geometry 60x10 -e %s %s %s %s %s %s %s >&/dev/null&\">/dev/null",
                                 rsh,host,OX_XTERM,host,dname,launcher,localhost,conn_str,                                  rsh,host,OX_XTERM,host,dname,launcher,localhost,conn_str,
                                 control_port_str,server_port_str,server,dname);                                  control_port_str,server_port_str,server,dname);
                 else                  else
                         sprintf(cmd,                          sprintf(cmd,
 "%s -n %s \"%s %s %s %s %s %s %s>&/dev/null&\">/dev/null",  "%s -n %s \"%s %s %s %s %s %s %s %s>&/dev/null&\">/dev/null",
                                 rsh,host,launcher,localhost,conn_str,                                  rsh,host,launcher,localhost,conn_str,
                                 control_port_str,server_port_str,server,"0");                                  control_port_str,server_port_str,server,dname0,"-nolog");
                 system(cmd);                  system(cmd);
         }          }
   #endif /* VISUAL */
 }  }
   
 void Pox_launch(arg,rp)  void Pox_launch(arg,rp)
Line 1133  Q *rp;
Line 1164  Q *rp;
         *rp = 0;          *rp = 0;
 }  }
 #endif  #endif
   
   void shutdown_all() {
           int s;
           int i,index;
           int status;
   
           for ( i = I_am_server?1:0; i < m_c_i; i++ ) {
                   index = i;
                   check_valid_mctab_index(index);
                   if ( index < 0 )
                           continue;
                   s = m_c_tab[index].m;
                   ox_send_cmd(s,SM_shutdown);
                   free_iofp(s);
   #if !MPI && !defined(VISUAL)
                   if ( m_c_tab[index].af_unix )
                           wait(&status);
   #endif
                   m_c_tab[index].m = 0; m_c_tab[index].c = 0;
                   m_c_tab[index].af_unix = 0;
           }
   }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.17

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