[BACK]Return to oxmisc.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Diff for /OpenXM/src/kan96xx/plugin/oxmisc.c between version 1.29 and 1.32

version 1.29, 2015/10/08 11:49:37 version 1.32, 2020/10/06 11:33:47
Line 1 
Line 1 
 /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.28 2015/09/27 08:12:42 takayama Exp $ */  /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.31 2016/08/29 01:15:01 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
 #include <sys/types.h>  #include <sys/types.h>
Line 13 
Line 13 
 #include <signal.h>  #include <signal.h>
 #include <setjmp.h>  #include <setjmp.h>
 #include <errno.h>  #include <errno.h>
   #include <time.h>
 #define SET_MYERROROUT { if (MyErrorOut == NULL) MyErrorOut=stdout; }  #define SET_MYERROROUT { if (MyErrorOut == NULL) MyErrorOut=stdout; }
 /* It is also defined in oxmisc2.c */  /* It is also defined in oxmisc2.c */
 FILE *MyErrorOut = NULL;  FILE *MyErrorOut = NULL;
Line 23  FILE *MyErrorOut = NULL;
Line 24  FILE *MyErrorOut = NULL;
 #include "../Kan/extern.h"  #include "../Kan/extern.h"
   
 #include "ox_kan.h"  #include "ox_kan.h"
   #include "mysig.h"
   
   void restoreLockCtrlCForOx(); // defined in Kan/stackmachine.c
   
 #define READBUFSIZE 5000  #define READBUFSIZE 5000
   
Line 176  int oxWaitSyncBall(ox_stream ostream)
Line 179  int oxWaitSyncBall(ox_stream ostream)
 {  {
   int sss;    int sss;
   int mtag;    int mtag;
     int com;
   while ((mtag = oxGetOXheader(ostream,&sss)) != OX_SYNC_BALL) {    while ((mtag = oxGetOXheader(ostream,&sss)) != OX_SYNC_BALL) {
     fprintf(stderr,"Looking for the next message tag. mtag=%d\n",mtag);      switch (mtag) {
       case OX_COMMAND:
         fprintf(stderr,"Waiting for command body: "); fflush(NULL);
         com=oxGetInt32(ostream);
         fprintf(stderr,"%d. Done\n",com);
         break;
       default:  /* Todo, need support OX_DATA */
         fprintf(stderr,"Looking for the next message tag. Current unknown or unimplented mtag=%d\n",mtag);
         if (UseOXPacketSerial) fprintf(stderr,"Note that we expect the OX message tag with a serial number.\n");
         if (UseOXPacketSerial && (sss == OX_SYNC_BALL)) {
           /* dirty trick, it might cause a trouble. */
           fprintf(stderr,"We assume that the serial number is OX_SYNC_BALL\n");
           oxGetInt32(ostream); // discard the serial of OX_SYNC_BALL
           goto aaa ;
         }
         break;
       }
     aaa:
     /* or stdout */      /* or stdout */
     fflush(NULL);      fflush(NULL);
         if (mtag == -1) {          if (mtag == -1) {
Line 224  void oxfdSendCmoNull(int fd)
Line 245  void oxfdSendCmoNull(int fd)
 {  {
   char data[4];    char data[4];
   *((int *)&data[0]) = htonl(CMO_NULL);    *((int *)&data[0]) = htonl(CMO_NULL);
   write(fd,data,4);    {int r; r=write(fd,data,4);}
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
 void oxSendCmoNull(ox_stream os)  void oxSendCmoNull(ox_stream os)
Line 256  void oxfdSendInt32(int fd,int k)
Line 277  void oxfdSendInt32(int fd,int k)
 {  {
   char data[4];    char data[4];
   *((int *)&data[0]) = htonl(k);    *((int *)&data[0]) = htonl(k);
   write(fd,data,4);    {int r; r=write(fd,data,4);}
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
 void oxSendInt32(ox_stream os,int k)  void oxSendInt32(ox_stream os,int k)
Line 272  void oxfdSendCmoInt32(int fd,int k)
Line 293  void oxfdSendCmoInt32(int fd,int k)
   char data[4*2];    char data[4*2];
   *((int *)&data[0]) = htonl(CMO_INT32);    *((int *)&data[0]) = htonl(CMO_INT32);
   *((int *)&data[4]) = htonl(k);    *((int *)&data[4]) = htonl(k);
   write(fd,data,4*2);    {int r; r=write(fd,data,4*2);}
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
 void oxSendCmoInt32(ox_stream os,int k)  void oxSendCmoInt32(ox_stream os,int k)
Line 293  void oxfdSendCmoString(int fd,char *s)
Line 314  void oxfdSendCmoString(int fd,char *s)
   }    }
   *((int *)&data[0]) = htonl(CMO_STRING);    *((int *)&data[0]) = htonl(CMO_STRING);
   *((int *)&data[4]) = htonl(n);    *((int *)&data[4]) = htonl(n);
   write(fd,data,4*2);    {int r; r=write(fd,data,4*2);}
   if (s != NULL) {    if (s != NULL) {
     write(fd,s,n);      {int r; r=write(fd,s,n);}
   }    }
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
Line 331  void oxSendResultOfControlInt32(int fd,int i) 
Line 352  void oxSendResultOfControlInt32(int fd,int i) 
   oxfdSendOXheader(fd,OX_DATA,SerialOX++);    oxfdSendOXheader(fd,OX_DATA,SerialOX++);
   *((int *)&data[0]) = htonl(CMO_INT32);    *((int *)&data[0]) = htonl(CMO_INT32);
   *((int *)&data[4]) = htonl(i);    *((int *)&data[4]) = htonl(i);
   write(fd,data,4*2);    {int r; r=write(fd,data,4*2);}
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
   
Line 340  void oxSendResultOfControl(int fd) 
Line 361  void oxSendResultOfControl(int fd) 
   char data[4*1];    char data[4*1];
   oxfdSendOXheader(fd,OX_DATA,SerialOX++);    oxfdSendOXheader(fd,OX_DATA,SerialOX++);
   *((int *)&data[0]) = htonl(CMO_NULL);    *((int *)&data[0]) = htonl(CMO_NULL);
   write(fd,data,4*1);    {int r; r=write(fd,data,4*1);}
   fflush((FILE *)NULL);    fflush((FILE *)NULL);
 }  }
   
Line 820  int oxGetOXheader(ox_stream ostream,int *sss)
Line 841  int oxGetOXheader(ox_stream ostream,int *sss)
 }  }
   
   
 oxWritePortFile(int func,int port,char *fname) {  int oxWritePortFile(int func,int port,char *fname) {
   char name[1024];    char name[1024];
   FILE *fp;    FILE *fp;
   strcpy(name,fname);    strcpy(name,fname);
Line 836  oxWritePortFile(int func,int port,char *fname) {
Line 857  oxWritePortFile(int func,int port,char *fname) {
     fclose(fp);      fclose(fp);
   }    }
 }  }
 oxReadPortFile(int func,char *fname) {  int oxReadPortFile(int func,char *fname) {
   int port = 0;    int port = 0;
   char name[1024];    char name[1024];
   FILE *fp;    FILE *fp;
Line 844  oxReadPortFile(int func,char *fname) {
Line 865  oxReadPortFile(int func,char *fname) {
   if (func == 0) {    if (func == 0) {
     strcat(name,".control");      strcat(name,".control");
     fp = fopen(name,"r");      fp = fopen(name,"r");
     fscanf(fp,"%d",&port);      {int r; r=fscanf(fp,"%d",&port);}
     fclose(fp);      fclose(fp);
   }else {    }else {
     strcat(name,".data");      strcat(name,".data");
     fp = fopen(name,"r");      fp = fopen(name,"r");
     fscanf(fp,"%d",&port);      {int r; r=fscanf(fp,"%d",&port);}
     fclose(fp);      fclose(fp);
   }    }
   return(port);    return(port);
Line 903  char *oxGenPass(void) {
Line 924  char *oxGenPass(void) {
   char *s;    char *s;
   int i,n;    int i,n;
   if (seed == 0) {    if (seed == 0) {
     seed = (int) time(NULL) + (int) &p;      seed = (int) time(NULL) + (int) ((long) &p);
     srandom((unsigned int) seed);      srandom((unsigned int) seed);
   }    }
   s = (char *)malloc(128*sizeof(char));    s = (char *)malloc(128*sizeof(char));
   if (s == NULL) { fprintf(stderr,"No more memory.\n"); return(s); }    if (s == NULL) { fprintf(stderr,"No more memory.\n"); return(s); }
   n = (((int) s) + (int) time(NULL)) % 100;    n = (((int)((long) s)) + (int) time(NULL)) % 100;
   for (i=0; i < n ; i++) random();    for (i=0; i < n ; i++) random();
   p = random();    p = random();
   sprintf(s,"%ld",p);    sprintf(s,"%ld",p);
Line 922  static void cancelConnection() {
Line 943  static void cancelConnection() {
 #else  #else
   extern jmp_buf MyEnv_oxmisc;    extern jmp_buf MyEnv_oxmisc;
 #endif  #endif
   signal(SIGALRM,SIG_IGN);    mysignal(SIGALRM,SIG_IGN);
   fprintf(stderr,"Time out in TCP/IP connection.\n");    fprintf(stderr,"Time out in TCP/IP connection.\n");
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__)
   MYSIGLONGJMP(MyEnv_oxmisc,1);    MYSIGLONGJMP(MyEnv_oxmisc,1);
Line 959  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 980  oxclientp oxCreateClient2(int fdstream,int portStream,
   }else{    }else{
   }    }
   alarm((unsigned int) 20);  /* setup timeout. */    alarm((unsigned int) 20);  /* setup timeout. */
   signal(SIGALRM,cancelConnection);    mysignal(SIGALRM,cancelConnection);
   
   switch(ipmask) {    switch(ipmask) {
   case 0:/* only local */    case 0:/* only local */
Line 985  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 1006  oxclientp oxCreateClient2(int fdstream,int portStream,
   if (m > 0) {    if (m > 0) {
     s = (char *)mymalloc(sizeof(char)*(m+1));      s = (char *)mymalloc(sizeof(char)*(m+1));
     m = strlen(passControl); s[0] = 0;      m = strlen(passControl); s[0] = 0;
     read(fdControl,s,m+1); s[m] = '\0';      {int r; r=read(fdControl,s,m+1);} s[m] = '\0';
     if (strcmp(s,passControl) != 0) {      if (strcmp(s,passControl) != 0) {
       fprintf(stderr,"s=%s, passControl=%s\n",s,passControl);        fprintf(stderr,"s=%s, passControl=%s\n",s,passControl);
       fprintf(stderr,"oxCreateClient2(): password authentication failed for control channel.\n");        fprintf(stderr,"oxCreateClient2(): password authentication failed for control channel.\n");
Line 993  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 1014  oxclientp oxCreateClient2(int fdstream,int portStream,
       return(NULL);        return(NULL);
     }      }
     m = strlen(passData); s[0] = 0;      m = strlen(passData); s[0] = 0;
     read(fdStream,s,m+1); s[m] = '\0';      {int r; r=read(fdStream,s,m+1);} s[m] = '\0';
     if (strcmp(s,passData) != 0) {      if (strcmp(s,passData) != 0) {
       fprintf(stderr,"s=%s, passData=%s\n",s,passData);        fprintf(stderr,"s=%s, passData=%s\n",s,passData);
       fprintf(stderr,"oxCreateClient2(): password authentication failed for data channel.\n");        fprintf(stderr,"oxCreateClient2(): password authentication failed for data channel.\n");
Line 1001  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 1022  oxclientp oxCreateClient2(int fdstream,int portStream,
       return(NULL);        return(NULL);
     }      }
   }    }
   signal(SIGALRM,SIG_IGN);    mysignal(SIGALRM,SIG_IGN);
   
   controlByteOrder = oxSetByteOrder(fdControl);    controlByteOrder = oxSetByteOrder(fdControl);
   if (v) fprintf(stderr,"Byte order for control process is %s.\n",    if (v) fprintf(stderr,"Byte order for control process is %s.\n",
Line 1037  int oxSetByteOrder(int fd) {
Line 1058  int oxSetByteOrder(int fd) {
   int peertype;    int peertype;
   /* It is for client. read and next write. */    /* It is for client. read and next write. */
   /* oxSocketSelect0(fd,10);  wait. */    /* oxSocketSelect0(fd,10);  wait. */
   read(fd,data,1);    {int r; r=read(fd,data,1);}
   peertype = (unsigned char) data[0];    peertype = (unsigned char) data[0];
   
   /* We support only Network byte order */    /* We support only Network byte order */
   data[0] = OX_BYTE_NETWORK_BYTE_ORDER;    data[0] = OX_BYTE_NETWORK_BYTE_ORDER;
   write(fd,data,1);    {int r; r=write(fd,data,1);}
   
   return(OX_BYTE_NETWORK_BYTE_ORDER);    return(OX_BYTE_NETWORK_BYTE_ORDER);
 }  }
Line 1054  int oxTellMyByteOrder(int fdOut, int fdIn) {  
Line 1075  int oxTellMyByteOrder(int fdOut, int fdIn) {  
   
   /* We support only Network byte order */    /* We support only Network byte order */
   data[0] = OX_BYTE_NETWORK_BYTE_ORDER;    data[0] = OX_BYTE_NETWORK_BYTE_ORDER;
   write(fdOut,data,1);    {int r; r=write(fdOut,data,1);}
   fsync(fdOut);  /* returns 0 if normal. Does it work for socket? */    fsync(fdOut);  /* returns 0 if normal. Does it work for socket? */
   
   read(fdIn,data,1); /* Read pear's byte order */    {int r; r=read(fdIn,data,1);} /* Read pear's byte order */
   
   return(OX_BYTE_NETWORK_BYTE_ORDER);    return(OX_BYTE_NETWORK_BYTE_ORDER);
 }  }

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.32

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