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

Diff for /OpenXM/src/ox_math/Attic/ox.c between version 1.8 and 1.10

version 1.8, 1999/11/04 18:13:47 version 1.10, 1999/11/05 12:34:25
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_math/ox.c,v 1.7 1999/11/04 06:21:58 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_math/ox.c,v 1.9 1999/11/04 19:33:17 ohara Exp $ */
   
 /*  /*
 関数の名前付け規約(その2):  関数の名前付け規約(その2):
Line 613  static char *create_otp()
Line 613  static char *create_otp()
 static int login_with_otp(int fd, char* passwd)  static int login_with_otp(int fd, char* passwd)
 {  {
     char buff[1024];      char buff[1024];
     int n = read(fd, buff, 1024);  
         int len = strlen(passwd)+1;          int len = strlen(passwd)+1;
     if (n != len) {      int n = read(fd, buff, len);
           if (strcmp(passwd, buff) != 0) {
         fprintf(stderr, "Socket#%d: Login incorrect.\n", fd);          fprintf(stderr, "Socket#%d: Login incorrect.\n", fd);
         fprintf(stderr, "password = (%s), length = (%d).\n", passwd, len);          fprintf(stderr, "password = (%s), %d bytes.\n", passwd, len);
         fprintf(stderr, "received = (%d), length = (%d).\n", buff, n);          fprintf(stderr, "received = (%s), %d bytes.\n", buff, n);
                 fflush(stderr);                  fflush(stderr);
                   exit(1);
     }      }
   #ifdef DEBUG
           fprintf(stderr, "Socket#%d: login!.\n", fd);
           fprintf(stderr, "password = (%s), %d bytes.\n", passwd, len);
           fprintf(stderr, "received = (%s), %d bytes.\n", buff, n);
           fflush(stderr);
   #endif
 }  }
   
 /*  /*
    (-reverse 版の ox_start)     (-reverse 版の ox_start)
    ox_start は クライアントが呼び出すための関数である.     ox_start は クライアントが呼び出すための関数である.
    サーバでは使われない.  prog1 は コントロールサーバであり,     サーバでは使われない.  ctl_prog は コントロールサーバであり,
    -ox, -reverse, -data, -control, -pass, -host     -ox, -reverse, -data, -control, -pass, -host
    というオプションを理解することを仮定する. prog2 は計算サーバである.     というオプションを理解することを仮定する. dat_prog は計算サーバである.
    接続時には, sv->control を先にオープンする.     接続時には, sv->control を先にオープンする.
 */  */
   
 ox_file_t ox_start(char* host, char* prog1, char* prog2)  ox_file_t ox_start(char* host, char* ctl_prog, char* dat_prog)
 {  {
         char *pass = create_otp();          char *pass = create_otp();
     char ctl[16], dat[16];      char ctl[16], dat[16];
Line 648  ox_file_t ox_start(char* host, char* prog1, char* prog
Line 655  ox_file_t ox_start(char* host, char* prog1, char* prog
     if (fork() == 0) {      if (fork() == 0) {
         dup2(2, 1);          dup2(2, 1);
         dup2(open(DEFAULT_LOGFILE, O_RDWR|O_CREAT|O_TRUNC, 0644), 2);          dup2(open(DEFAULT_LOGFILE, O_RDWR|O_CREAT|O_TRUNC, 0644), 2);
         execl(prog1, prog1, "-reverse", "-ox", prog2,          execl(ctl_prog, ctl_prog, "-reverse", "-ox", dat_prog,
               "-data", dat, "-control", ctl, "-pass", pass,                "-data", dat, "-control", ctl, "-pass", pass,
               "-host", host, NULL);                "-host", host, NULL);
     }      }
Line 679  ox_file_t ox_start_insecure_nonreverse(char* host, sho
Line 686  ox_file_t ox_start_insecure_nonreverse(char* host, sho
     ox_file_t sv = malloc(sizeof(__ox_file_struct));      ox_file_t sv = malloc(sizeof(__ox_file_struct));
   
         sv->control = mysocketOpen(host, portControl);          sv->control = mysocketOpen(host, portControl);
   #if 0
           /* ox は insecure のとき byte order の決定が正しくできないようだ... */
       decideByteOrderClient(sv->control, 0);
   #endif
         /* 10マイクロ秒, 時間稼ぎする. */          /* 10マイクロ秒, 時間稼ぎする. */
         usleep(10);          usleep(10);
         sv->stream  = mysocketOpen(host, portStream);          sv->stream  = mysocketOpen(host, portStream);
       decideByteOrderClient(sv->stream, 0);
         return sv;          return sv;
 }  }
   

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

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