| version 1.10, 2001/08/10 13:48:39 | 
version 1.15, 2002/11/08 02:54:11 | 
 | 
 | 
|  /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.9 2001/05/04 01:06:30 takayama Exp $ */ | 
 /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.14 2002/11/07 23:52:20 takayama Exp $ */ | 
|  #include <stdio.h> | 
 #include <stdio.h> | 
|  #include <sys/types.h> | 
 #include <sys/types.h> | 
|  #include <sys/stat.h> | 
 #include <sys/stat.h> | 
| Line 598  int oxInitClient(oxclientp client) | 
 
  | 
| Line 598  int oxInitClient(oxclientp client) | 
 
 
 | 
|    client->mathcapObjp = NULL; | 
   client->mathcapObjp = NULL; | 
|    client->controlByteOrder = OX_BYTE_NETWORK_BYTE_ORDER; | 
   client->controlByteOrder = OX_BYTE_NETWORK_BYTE_ORDER; | 
|    client->engineByteOrder = OX_BYTE_NETWORK_BYTE_ORDER; | 
   client->engineByteOrder = OX_BYTE_NETWORK_BYTE_ORDER; | 
|   | 
   client->engineID = -1; | 
|    return(0); | 
   return(0); | 
|  } | 
 } | 
|   | 
  | 
| Line 611  int oxIsThereErrorClient(oxclientp client) { | 
 
  | 
| Line 612  int oxIsThereErrorClient(oxclientp client) { | 
 
 
 | 
|  oxclientp oxCreateClient(char *sname,int portStream,int portControl) | 
 oxclientp oxCreateClient(char *sname,int portStream,int portControl) | 
|       /* you also need to change oxCreateClient2. */ | 
      /* you also need to change oxCreateClient2. */ | 
|  { | 
 { | 
|    static int clnum = 0; | 
  | 
|    int v = 0; | 
   int v = 0; | 
|    int fdControl = -1; | 
   int fdControl = -1; | 
|    int fdStream = -1; | 
   int fdStream = -1; | 
| Line 654  oxclientp oxCreateClient(char *sname,int portStream,in | 
 
  | 
| Line 654  oxclientp oxCreateClient(char *sname,int portStream,in | 
 
 
 | 
|    client->dataport = portStream; | 
   client->dataport = portStream; | 
|    client->controlport = portControl; | 
   client->controlport = portControl; | 
|    client->controlfd = fdControl; | 
   client->controlfd = fdControl; | 
|    client->id = clnum; clnum++; | 
   client->id = oxGetClientID(); | 
|    client->type = CLIENT_SOCKET; /* socket */ | 
   client->type = CLIENT_SOCKET; /* socket */ | 
|    client->engineByteOrder = engineByteOrder; | 
   client->engineByteOrder = engineByteOrder; | 
|    client->controlByteOrder = controlByteOrder; | 
   client->controlByteOrder = controlByteOrder; | 
| Line 883  char *oxGenPass(void) { | 
 
  | 
| Line 883  char *oxGenPass(void) { | 
 
 
 | 
|   | 
  | 
|   | 
  | 
|  static void cancelConnection() { | 
 static void cancelConnection() { | 
|   | 
 #if defined(__CYGWIN__) | 
|   | 
   extern sigjmp_buf MyEnv_oxmisc; | 
|   | 
 #else | 
|    extern jmp_buf MyEnv_oxmisc; | 
   extern jmp_buf MyEnv_oxmisc; | 
|   | 
 #endif | 
|    signal(SIGALRM,SIG_IGN); | 
   signal(SIGALRM,SIG_IGN); | 
|    fprintf(stderr,"Time out in TCP/IP connection.\n"); | 
   fprintf(stderr,"Time out in TCP/IP connection.\n"); | 
|   | 
 #if defined(__CYGWIN__) | 
|   | 
   siglongjmp(MyEnv_oxmisc,1); | 
|   | 
 #else | 
|    longjmp(MyEnv_oxmisc,1); | 
   longjmp(MyEnv_oxmisc,1); | 
|   | 
 #endif | 
|  } | 
 } | 
|   | 
  | 
|  oxclientp oxCreateClient2(int fdstream,int portStream, | 
 oxclientp oxCreateClient2(int fdstream,int portStream, | 
|                            int fdcontrol,int portControl,int ipmask,char *pass) | 
                           int fdcontrol,int portControl,int ipmask,char *pass) | 
|  { | 
 { | 
|    static int clnum = 0; | 
  | 
|    int v = 0; | 
   int v = 0; | 
|    int fdControl = -1; | 
   int fdControl = -1; | 
|    int fdStream = -1; | 
   int fdStream = -1; | 
| Line 900  oxclientp oxCreateClient2(int fdstream,int portStream, | 
 
  | 
| Line 907  oxclientp oxCreateClient2(int fdstream,int portStream, | 
 
 
 | 
|   | 
  | 
|    char *s; | 
   char *s; | 
|    oxclientp client; | 
   oxclientp client; | 
|    extern jmp_buf MyEnv_oxmisc ; | 
 #if defined(__CYGWIN__) | 
|   | 
   extern sigjmp_buf MyEnv_oxmisc; | 
|   | 
 #else | 
|   | 
   extern jmp_buf MyEnv_oxmisc; | 
|   | 
 #endif | 
|    int controlByteOrder, engineByteOrder; | 
   int controlByteOrder, engineByteOrder; | 
|   | 
  | 
|    v = !Quiet; | 
   v = !Quiet; | 
|   | 
 #if defined(__CYGWIN__) | 
|   | 
   if (sigsetjmp(MyEnv_oxmisc,1)) { | 
|   | 
 #else | 
|    if (setjmp(MyEnv_oxmisc)) { | 
   if (setjmp(MyEnv_oxmisc)) { | 
|   | 
 #endif | 
|      return(NULL); | 
     return(NULL); | 
|    }else{ | 
   }else{ | 
|    } | 
   } | 
|    alarm((unsigned int) 10);  /* setup timeout. */ | 
   alarm((unsigned int) 20);  /* setup timeout. */ | 
|    signal(SIGALRM,cancelConnection); | 
   signal(SIGALRM,cancelConnection); | 
|   | 
  | 
|    switch(ipmask) { | 
   switch(ipmask) { | 
| Line 970  oxclientp oxCreateClient2(int fdstream,int portStream, | 
 
  | 
| Line 985  oxclientp oxCreateClient2(int fdstream,int portStream, | 
 
 
 | 
|    client->dataport = portStream; | 
   client->dataport = portStream; | 
|    client->controlport = portControl; | 
   client->controlport = portControl; | 
|    client->controlfd = fdControl; | 
   client->controlfd = fdControl; | 
|    client->id = clnum; clnum++; | 
   client->id = oxGetClientID(); | 
|    client->type = CLIENT_SOCKET; /* socket */ | 
   client->type = CLIENT_SOCKET; /* socket */ | 
|    client->engineByteOrder = engineByteOrder; | 
   client->engineByteOrder = engineByteOrder; | 
|    client->controlByteOrder = controlByteOrder; | 
   client->controlByteOrder = controlByteOrder; | 
| Line 1008  int oxTellMyByteOrder(int fd) {   | 
 
  | 
| Line 1023  int oxTellMyByteOrder(int fd) {   | 
 
 
 | 
|  } | 
 } | 
|   | 
  | 
|   | 
  | 
|   | 
 struct object OxClientList[MAX_N_OF_CLIENT]; | 
|   | 
 int OxClientListn = 0; | 
|   | 
  | 
|   | 
 int oxGetClientID() { | 
|   | 
   extern struct object OxClientList[]; | 
|   | 
   extern int OxClientListn; | 
|   | 
   extern struct object Nobj; | 
|   | 
   int i; | 
|   | 
   for (i=0; i<OxClientListn; i++) { | 
|   | 
         if ((OxClientList[i]).tag == Snull) { | 
|   | 
           return i; | 
|   | 
         } | 
|   | 
   } | 
|   | 
   i = OxClientListn; | 
|   | 
   (OxClientList[i]).tag = Snull; | 
|   | 
   if (OxClientListn < MAX_N_OF_CLIENT-1) { | 
|   | 
         OxClientListn++; | 
|   | 
         return i; | 
|   | 
   }else{ | 
|   | 
         fprintf(MyErrorOut,"oxGetClientID(): the client table is full. Returns ID = 0.\n"); | 
|   | 
         return 0; | 
|   | 
   } | 
|   | 
 } | 
|   | 
  |