| version 1.4, 1999/11/27 01:41:11 | version 1.7, 2000/09/08 17:30:50 | 
|  |  | 
| /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.3 1999/11/03 08:29:40 takayama Exp $ */ | /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.6 2000/09/08 16:08:42 takayama Exp $ */ | 
| #include <stdio.h> | #include <stdio.h> | 
| #include <sys/types.h> | #include <sys/types.h> | 
| #include <sys/stat.h> | #include <sys/stat.h> | 
|  |  | 
| #include <unistd.h> | #include <unistd.h> | 
| #include <signal.h> | #include <signal.h> | 
| #include <setjmp.h> | #include <setjmp.h> | 
| FILE *MyErrorOut = stdout; | #define SET_MYERROROUT { if (MyErrorOut == NULL) MyErrorOut=stdout; } | 
|  | /* It is also defined in oxmisc2.c */ | 
|  | FILE *MyErrorOut = NULL; | 
|  |  | 
| /* Include files to understand object */ | /* Include files to understand object */ | 
| #include "../Kan/datatype.h" | #include "../Kan/datatype.h" | 
| 
| Line 37  int readOneByte(int fd)   /* blocking */ |  | 
| Line 39  int readOneByte(int fd)   /* blocking */ |  | 
| int ans; | int ans; | 
| int watch = 1; | int watch = 1; | 
|  |  | 
|  | SET_MYERROROUT; | 
| if (fd < 0) { | if (fd < 0) { | 
| fprintf(MyErrorOut,"readOneByte fd < 0 ??? .\n"); | fprintf(MyErrorOut,"readOneByte fd < 0 ??? .\n"); | 
| return(-1); | return(-1); | 
| 
| Line 45  int readOneByte(int fd)   /* blocking */ |  | 
| Line 48  int readOneByte(int fd)   /* blocking */ |  | 
| if (oxSocketSelect0(fd,-1)) { /* block */ | if (oxSocketSelect0(fd,-1)) { /* block */ | 
| size = read(fd,data,1); | size = read(fd,data,1); | 
| if (size == 0) { | if (size == 0) { | 
| fprintf(MyErrorOut,"oxSocketSelect0() returns 1, but there is no data. You peer may be killed.\n"); | fprintf(MyErrorOut,"oxSocketSelect0() returns 1, but there is no data. Your peer may be killed.\n"); | 
| return(-1); | return(-1); | 
| } | } | 
| return(data[0]); | return(data[0]); | 
| 
| Line 65  int readOneByte_org(int fd)   /* blocking */ |  | 
| Line 68  int readOneByte_org(int fd)   /* blocking */ |  | 
| int ans; | int ans; | 
| int watch = 1; | int watch = 1; | 
|  |  | 
|  | SET_MYERROROUT; | 
| if ((thisFd == -1) && (fd >= 0)) {thisFd = fd;} | if ((thisFd == -1) && (fd >= 0)) {thisFd = fd;} | 
| if (fd < 0) { | if (fd < 0) { | 
| fprintf(MyErrorOut,"readOneByte fd < 0 ??? .\n"); | fprintf(MyErrorOut,"readOneByte fd < 0 ??? .\n"); | 
| 
| Line 90  int readOneByte_org(int fd)   /* blocking */ |  | 
| Line 94  int readOneByte_org(int fd)   /* blocking */ |  | 
| if (oxSocketSelect0(fd,-1)) { /* block */ | if (oxSocketSelect0(fd,-1)) { /* block */ | 
| size = read(fd,data,READBUFSIZE-1); | size = read(fd,data,READBUFSIZE-1); | 
| if (size == 0) { | if (size == 0) { | 
| fprintf(MyErrorOut,"oxSocketSelect0() returns 1, but there is no data. You peer may be killed.\n"); | fprintf(MyErrorOut,"oxSocketSelect0() returns 1, but there is no data. Your peer may be killed.\n"); | 
| return(-1); | return(-1); | 
| } | } | 
| from = 0; | from = 0; | 
| 
| Line 123  int oxGetInt32(ox_stream ostream) |  | 
| Line 127  int oxGetInt32(ox_stream ostream) |  | 
| int oxGetCMOInt32(ox_stream ostream) | int oxGetCMOInt32(ox_stream ostream) | 
| { | { | 
| int id; | int id; | 
|  | SET_MYERROROUT; | 
| id = oxGetInt32(ostream); | id = oxGetInt32(ostream); | 
| if (id != CMO_INT32) { | if (id != CMO_INT32) { | 
| fprintf(MyErrorOut,"It is not CMO_INT32.\n"); | fprintf(MyErrorOut,"It is not CMO_INT32.\n"); | 
| 
| Line 135  char *oxGetCMOString(ox_stream ostream) { |  | 
| Line 140  char *oxGetCMOString(ox_stream ostream) { |  | 
| int size; | int size; | 
| char *r; | char *r; | 
| int i; | int i; | 
|  | SET_MYERROROUT; | 
| id = oxGetInt32(ostream); | id = oxGetInt32(ostream); | 
| if (id != CMO_STRING) { | if (id != CMO_STRING) { | 
| fprintf(MyErrorOut,"It is not CMO_STRING.\n"); | fprintf(MyErrorOut,"It is not CMO_STRING.\n"); | 
| 
| Line 179  int oxWaitSyncBall_org(ox_stream ostream) |  | 
| Line 185  int oxWaitSyncBall_org(ox_stream ostream) |  | 
| int mtag; | int mtag; | 
| char data[4]; | char data[4]; | 
| int c; | int c; | 
|  | SET_MYERROROUT; | 
| data[0] = data[1] = data[2] = data[3] = 0xff; | data[0] = data[1] = data[2] = data[3] = 0xff; | 
| while (1) { | while (1) { | 
| /* This part should be revised so that this part understands | /* This part should be revised so that this part understands | 
| 
| Line 474  void oxReqPopCMO(ox_stream os) { |  | 
| Line 481  void oxReqPopCMO(ox_stream os) { |  | 
|  |  | 
| int oxGetResultOfControlInt32(int fd) { | int oxGetResultOfControlInt32(int fd) { | 
| int k; int sss; | int k; int sss; | 
|  | SET_MYERROROUT; | 
| k = oxfdGetOXheader(fd,&sss); | k = oxfdGetOXheader(fd,&sss); | 
| if (k != OX_DATA) { | if (k != OX_DATA) { | 
| fprintf(MyErrorOut,"oxGetResultOfControlInt32: wrong header."); | fprintf(MyErrorOut,"oxGetResultOfControlInt32: wrong header."); | 
| 
| Line 494  int oxclientMultiSelect(oxclientp clients[],int datare |  | 
| Line 502  int oxclientMultiSelect(oxclientp clients[],int datare |  | 
| struct timeval timeout; | struct timeval timeout; | 
| extern int errno; | extern int errno; | 
|  |  | 
|  | SET_MYERROROUT; | 
| /** printf("(1)"); fflush(NULL); */ | /** printf("(1)"); fflush(NULL); */ | 
| FD_ZERO(&readfds); | FD_ZERO(&readfds); | 
| timeout.tv_sec = 0; | timeout.tv_sec = 0; | 
| 
| Line 830  char *oxGenPortFile(void) { |  | 
| Line 839  char *oxGenPortFile(void) { |  | 
| int oxRemovePortFile(void) { | int oxRemovePortFile(void) { | 
| char fname[1024]; | char fname[1024]; | 
| FILE *fp; | FILE *fp; | 
|  | SET_MYERROROUT; | 
| strcpy(fname,OxPortFileName); | strcpy(fname,OxPortFileName); | 
| strcat(fname,".control"); | strcat(fname,".control"); | 
| if ((fp=fopen(fname,"r")) == NULL) { | if ((fp=fopen(fname,"r")) == NULL) { | 
| 
| Line 915  oxclientp oxCreateClient2(int fdstream,int portStream, |  | 
| Line 925  oxclientp oxCreateClient2(int fdstream,int portStream, |  | 
| return(NULL); | return(NULL); | 
| } | } | 
|  |  | 
| /* Authentification by password. */ | /* Authentication by password. */ | 
| m = strlen(pass); | m = strlen(pass); | 
| s = (char *)mymalloc(sizeof(char)*(m+1)); | s = (char *)mymalloc(sizeof(char)*(m+1)); | 
| read(fdControl,s,m+1); s[m] = '\0'; | read(fdControl,s,m+1); s[m] = '\0'; | 
| if (strcmp(s,pass) != 0) { | if (strcmp(s,pass) != 0) { | 
| fprintf(stderr,"oxCreateClient2(): password authentification failed for control channel.\n"); | fprintf(stderr,"oxCreateClient2(): password authentication failed for control channel.\n"); | 
| close(fdControl); | close(fdControl); | 
| return(NULL); | return(NULL); | 
| } | } | 
| read(fdStream,s,m+1); s[m] = '\0'; | read(fdStream,s,m+1); s[m] = '\0'; | 
| if (strcmp(s,pass) != 0) { | if (strcmp(s,pass) != 0) { | 
| fprintf(stderr,"oxCreateClient2(): password authentification failed for data channel.\n"); | fprintf(stderr,"oxCreateClient2(): password authentication failed for data channel.\n"); | 
| close(fdStream); | close(fdStream); | 
| return(NULL); | return(NULL); | 
| } | } |