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

Diff for /OpenXM_contrib2/asir2000/io/ox_launch.c between version 1.9.2.1 and 1.10

version 1.9.2.1, 2000/11/08 08:31:55 version 1.10, 2000/11/08 06:21:17
Line 76  HANDLE hIntr,hReset,hKill;
Line 76  HANDLE hIntr,hReset,hKill;
 static void put_log(char *);  static void put_log(char *);
 static int which_command(char *,char *);  static int which_command(char *,char *);
 static int search_command(char *);  static int search_command(char *);
 static int ox_spawn(char *,int,char *);  static int ox_spawn(char *,int,char *,int);
 static void launch_error(char *);  static void launch_error(char *);
 static int ox_io_init(int);  static int ox_io_init(int);
 static void push_one(Obj);  static void push_one(Obj);
Line 148  char *file;
Line 148  char *file;
         argv[4] : server_port          argv[4] : server_port
         argv[5] : server          argv[5] : server
         argv[6] : display or "0"          argv[6] : display or "0"
           argv[7] : if exists, it should be "-nolog"
 */  */
   
 void launch_main(argc,argv)  void launch_main(argc,argv)
Line 160  char **argv;
Line 161  char **argv;
         char buf[BUFSIZ];          char buf[BUFSIZ];
         int cs,ss;          int cs,ss;
         unsigned int cmd;          unsigned int cmd;
         int use_unix,accept_client;          int use_unix,accept_client,nolog;
         char *control_port_str,*server_port_str;          char *control_port_str,*server_port_str;
         char *rhost,*server,*dname;          char *rhost,*server,*dname;
   
Line 173  char **argv;
Line 174  char **argv;
         server_port_str = argv[4];          server_port_str = argv[4];
         server = argv[5];          server = argv[5];
         dname = argv[6];          dname = argv[6];
           nolog = argc > 7 ? 1 : 0;
   
 #if defined(VISUAL)  #if defined(VISUAL)
                 init_socket();                  init_socket();
Line 186  char **argv;
Line 188  char **argv;
         if ( accept_client ) {          if ( accept_client ) {
                 cs = try_bind_listen(use_unix,control_port_str);                  cs = try_bind_listen(use_unix,control_port_str);
                 ss = try_bind_listen(use_unix,server_port_str);                  ss = try_bind_listen(use_unix,server_port_str);
                 cs = try_accept(cs);                  cs = try_accept(use_unix,cs);
                 ss = try_accept(ss);                  ss = try_accept(use_unix,ss);
         } else {          } else {
                 cs = try_connect(use_unix,rhost,control_port_str);                  cs = try_connect(use_unix,rhost,control_port_str);
                 ss = try_connect(use_unix,rhost,server_port_str);                  ss = try_connect(use_unix,rhost,server_port_str);
Line 195  char **argv;
Line 197  char **argv;
         ox_io_init(cs);          ox_io_init(cs);
         if ( cs < 0 || ss < 0 )          if ( cs < 0 || ss < 0 )
                 launch_error("cannot connect to the client");                  launch_error("cannot connect to the client");
         cpid = ox_spawn(server,ss,dname);          cpid = ox_spawn(server,ss,dname,nolog);
   
         while ( 1 ) {          while ( 1 ) {
                 ox_recv(sindex,&id,&obj);                  ox_recv(sindex,&id,&obj);
Line 277  int cmd;
Line 279  int cmd;
 }  }
 #endif  #endif
   
 static int ox_spawn(prog,bs,dname)  static int ox_spawn(prog,bs,dname,nolog)
 char *prog;  char *prog;
 int bs;  int bs;
 char *dname;  char *dname;
   int nolog;
 {  {
 #if defined(VISUAL)  #if defined(VISUAL)
         char *av[BUFSIZ];          char *av[BUFSIZ];
Line 352  char *dname;
Line 355  char *dname;
                 }                  }
                 if ( !strcmp(dname,"1" ) ) /* XXX: for ssh */                  if ( !strcmp(dname,"1" ) ) /* XXX: for ssh */
                         execl(prog,prog,0);                          execl(prog,prog,0);
                 else if ( !strcmp(dname,"0") ) {                  else if ( nolog || !strcmp(dname,"0") ) {
                         FILE *null;                          FILE *null;
   
                         null = fopen("/dev/null","wb");                          null = fopen("/dev/null","wb");
                         dup2(fileno(null),1);                          dup2(fileno(null),1);
                         dup2(fileno(null),2);                          dup2(fileno(null),2);
                         putenv("DISPLAY=");                          if ( !nolog ) {
                         execl(prog,prog,0);                                  putenv("DISPLAY=");
                                   execl(prog,prog,0);
                           } else
                                   execl(prog,prog,"-display",dname,0);
                 } else                  } else
                         execl(prog,prog,"-display",dname,0);                          execl(prog,prog,"-display",dname,0);
                 /* On failure */                  /* On failure */

Legend:
Removed from v.1.9.2.1  
changed lines
  Added in v.1.10

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