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

Diff for /OpenXM/src/kan96xx/plugin/oxmisc2.c between version 1.12 and 1.25

version 1.12, 2001/05/04 01:06:30 version 1.25, 2005/06/16 05:07:24
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.11 2000/12/06 00:29:52 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.24 2004/09/17 08:46:10 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "ox_kan.h"  #include "ox_kan.h"
 #include "oxmisc2.h"   /* This file requires sm1 object description. */  #include "oxmisc2.h"   /* This file requires sm1 object description. */
Line 23  int oxGet(oxclientp client, struct object *op,int *isO
Line 23  int oxGet(oxclientp client, struct object *op,int *isO
   int ans;    int ans;
   ox_stream os;    ox_stream os;
   int m;    int m;
   struct object rob;    struct object rob = OINIT;
   int sss;  /* Serial number of the recieved packet. */    int sss;  /* Serial number of the recieved packet. */
   *isObj = 0;    *isObj = 0;
   op->tag = Snull;    op->tag = Snull;
Line 140  int oxReq(oxclientp client,int func,struct object ob)
Line 140  int oxReq(oxclientp client,int func,struct object ob)
        ob3         ob2 */         ob3         ob2 */
     /*     oxtags      [[OX_DATA, [cmo numbers]],[OX_DATA_LOCAL,[opt]],...]*/      /*     oxtags      [[OX_DATA, [cmo numbers]],[OX_DATA_LOCAL,[opt]],...]*/
     {      {
       struct object ob1;        struct object ob1 = OINIT;
       struct object ob2;        struct object ob2 = OINIT;
       struct object ob3;        struct object ob3 = OINIT;
       struct object obm;        struct object obm = OINIT;
       struct object smtags;        struct object smtags = OINIT;
       struct object oxtags;        struct object oxtags = OINIT;
       struct object ox;        struct object ox = OINIT;
       int n,i;        int n,i;
       struct mathCap mathcap;        struct mathCap mathcap;
   
Line 226  int oxReq(oxclientp client,int func,struct object ob)
Line 226  int oxReq(oxclientp client,int func,struct object ob)
     oxReqExecuteFunction(client->datafp2,KopString(ob));      oxReqExecuteFunction(client->datafp2,KopString(ob));
     client->dstate = DSTATE_ANY;      client->dstate = DSTATE_ANY;
     break;      break;
     case SM_executeFunctionWithOptionalArgument:
       if (ob.tag != Sdollar) {
         errorOxmisc2("SM_executeFunctionWithOptionalArgument : the argument must be a string.");
         return(-1);
       }
       oxReqExecuteFunctionWithOptionalArgument(client->datafp2,KopString(ob));
       client->dstate = DSTATE_ANY;
       break;
   case SM_popString:    case SM_popString:
     oxReqPopString(client->datafp2);      oxReqPopString(client->datafp2);
     client->dstate = DSTATE_ANY;      client->dstate = DSTATE_ANY;
Line 254  int oxReq(oxclientp client,int func,struct object ob)
Line 262  int oxReq(oxclientp client,int func,struct object ob)
     oxReqSingleOperand(client->datafp2,SM_dupErrors);      oxReqSingleOperand(client->datafp2,SM_dupErrors);
     client->dstate = DSTATE_ANY;      client->dstate = DSTATE_ANY;
     break;      break;
     case SM_pushCMOtag:
       oxReqSingleOperand(client->datafp2,SM_pushCMOtag);
       client->dstate = DSTATE_ANY;
       break;
   default:    default:
     fprintf(MyErrorOut,"func=%d ",func);      fprintf(MyErrorOut,"func=%d ",func);
     errorOxmisc2("This function is not implemented.");      errorOxmisc2("This function is not implemented.");
Line 265  int oxReq(oxclientp client,int func,struct object ob)
Line 277  int oxReq(oxclientp client,int func,struct object ob)
   
 struct object KoxCreateClient(struct object ip,  struct object KoxCreateClient(struct object ip,
                               struct object portStream,                                struct object portStream,
                               struct object portControl)                                struct object portControl,struct object pass)
 {  {
   struct object rob;    struct object rob = OINIT;
   oxclientp client;    oxclientp client;
     char *passControl; char *passData;
     struct object tob = OINIT;
     passControl = NULL; passData = NULL;
   rob.tag = Snull;    rob.tag = Snull;
   if (ip.tag != Sdollar) {    if (ip.tag != Sdollar) {
     errorOxmisc2("KoxCreateClient(): The first argument must be a hostname given by a string.");      errorOxmisc2("KoxCreateClient(): The first argument must be a hostname given by a string.");
Line 294  struct object KoxCreateClient(struct object ip,
Line 309  struct object KoxCreateClient(struct object ip,
     errorOxmisc2("KoxCreateClient(): The third argument must be a port number given in an integer.");      errorOxmisc2("KoxCreateClient(): The third argument must be a port number given in an integer.");
     return(rob);      return(rob);
   }    }
   client = oxCreateClient(KopString(ip),KopInteger(portStream),KopInteger(portControl));    if (pass.tag == Sarray) {
       if (getoaSize(pass) < 2) {
             errorOxmisc2("KoxCreateClient(): the fourth argument --- pass must be an array of strings.");
             return rob;
           }
       tob = getoa(pass,0);
           if (tob.tag != Sdollar) {
             errorOxmisc2("KoxCreateClient(): the fourth argument --- pass must be an array of strings.");
             return rob;
           }
       passControl = KopString(tob);
       tob = getoa(pass,1);
           if (tob.tag != Sdollar) {
             errorOxmisc2("KoxCreateClient(): the fourth argument --- pass must be an array of strings.");
             return rob;
           }
       passData = KopString(tob);
     }
     client = oxCreateClient(KopString(ip),KopInteger(portStream),KopInteger(portControl),passControl,passData);
   if (client == NULL) {    if (client == NULL) {
     errorOxmisc2("KoxCreateClient(): Open error.");      errorOxmisc2("KoxCreateClient(): Open error.");
     return(rob);      return(rob);
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 332  static int isItClientObject(struct object ob)
Line 366  static int isItClientObject(struct object ob)
   
 struct object KoxIsThereErrorClient(struct object ob)  struct object KoxIsThereErrorClient(struct object ob)
 {  {
   struct object rob;    struct object rob = OINIT;
   int ans;    int ans;
   int size;    int size;
   oxclient cc;    oxclient cc;
Line 348  struct object KoxIsThereErrorClient(struct object ob)
Line 382  struct object KoxIsThereErrorClient(struct object ob)
   
 int oxClientToObject(oxclientp client,struct object rob)  int oxClientToObject(oxclientp client,struct object rob)
 {  {
   struct object ob;    struct object ob = OINIT;
   if (client == NULL) return;    if (client == NULL) return;
   /* rob = newObjectArray(N_OF_CLIENT_FIELDS); */    /* rob = newObjectArray(N_OF_CLIENT_FIELDS); */
   if (rob.tag != Sarray) {    if (rob.tag != Sarray) {
Line 381  int oxClientToObject(oxclientp client,struct object ro
Line 415  int oxClientToObject(oxclientp client,struct object ro
   }    }
   putoa(rob,11,KpoInteger(client->engineByteOrder));    putoa(rob,11,KpoInteger(client->engineByteOrder));
   putoa(rob,12,KpoInteger(client->controlByteOrder));    putoa(rob,12,KpoInteger(client->controlByteOrder));
     putoa(rob,13,KpoInteger(client->engineID));
   return(0);    return(0);
 }  }
   
 int oxObjectToClient(struct object ob,oxclientp cp)  int oxObjectToClient(struct object ob,oxclientp cp)
 {  {
   struct object ob1;    struct object ob1 = OINIT;
   struct object *obp;    struct object *obp;
   if (cp == NULL) {    if (cp == NULL) {
     errorOxmisc2("oxObjectToClient(): the second argument is NULL");      errorOxmisc2("oxObjectToClient(): the second argument is NULL");
Line 437  int oxObjectToClient(struct object ob,oxclientp cp)
Line 472  int oxObjectToClient(struct object ob,oxclientp cp)
   cp->engineByteOrder = KopInteger(ob1);    cp->engineByteOrder = KopInteger(ob1);
   ob1 = getoa(ob,12);    ob1 = getoa(ob,12);
   cp->controlByteOrder = KopInteger(ob1);    cp->controlByteOrder = KopInteger(ob1);
   
     ob1 = getoa(ob,13);
     cp->engineID = KopInteger(ob1);
   
   
   return(0);    return(0);
Line 448  struct object KoxReq(struct object client,
Line 486  struct object KoxReq(struct object client,
 {  {
   int ans;    int ans;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 479  struct object KoxGet(struct object client)
Line 517  struct object KoxGet(struct object client)
 {  {
   int ans,k;    int ans,k;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 510  struct object KoxGetFromControl(struct object client)
Line 548  struct object KoxGetFromControl(struct object client)
 {  {
   int ans;    int ans;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 540  struct object KoxMultiSelect(struct object oclients,st
Line 578  struct object KoxMultiSelect(struct object oclients,st
   static int csize = 0;    static int csize = 0;
   static oxclientp *clients = NULL;    static oxclientp *clients = NULL;
   oxclientp cc1;    oxclientp cc1;
   struct object rob;    struct object rob = OINIT;
   int i;    int i;
   int tt;    int tt;
   struct object ob1;    struct object ob1 = OINIT;
   struct object ob2;    struct object ob2 = OINIT;
   struct object ob0;    struct object ob0 = OINIT;
   int size;    int size;
   int ans;    int ans;
   int dataready[1024];    int dataready[1024];
Line 610  struct object KoxWatch(struct object client,struct obj
Line 648  struct object KoxWatch(struct object client,struct obj
 {  {
   int ans,k;    int ans,k;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   extern int WatchStream;    extern int WatchStream;
   rob.tag = Snull;    rob.tag = Snull;
   if (client.tag == Sinteger) {    if (client.tag == Sinteger) {
Line 643  struct object KoxWatch(struct object client,struct obj
Line 681  struct object KoxWatch(struct object client,struct obj
   return(KpoInteger(ans));    return(KpoInteger(ans));
 }  }
   
   struct object KoxLog(struct object client,struct object in,struct object out)
   {
     int ans,k;
     static oxclientp cc1 = NULL;
     struct object rob = OINIT;
     rob.tag = Snull;
     if (cc1 == NULL) {
       cc1 = (oxclientp) mymalloc(sizeof(oxclient));
       if (cc1 == NULL) {
         errorOxmisc2("KoxLog(): no more memory.");
         return(rob);
       }
       oxInitClient(cc1);
     }
   
     if (oxObjectToClient(client,cc1) == -1) return(rob);
     if (cc1 == NULL) {
       errorOxmisc2("KoxLog(): the first argument must be a client object.");
       return(rob);
     }
   
     if (in.tag != Sfile) {
           errorOxmisc2("KoxLog(): the second argument is not a file object.");
           return rob;
     }
     if (out.tag != Sfile) {
           errorOxmisc2("KoxLog(): the third argument is not a file object.");
           return rob;
     }
     k = fp2log(cc1->datafp2,in.rc.file,out.rc.file);
     fputc(cc1->engineByteOrder,out.rc.file); /* Output engineByteOrder. */
     /* synchronize cc1 and client. */
     oxClientToObject(cc1,client);
   
     return(KpoInteger(ans));
   }
   
   struct object KoxLogStop(struct object client) {
     static oxclientp cc1 = NULL;
     struct object rob = OINIT;
     rob.tag = Snull;
     if (cc1 == NULL) {
       cc1 = (oxclientp) mymalloc(sizeof(oxclient));
       if (cc1 == NULL) {
         errorOxmisc2("KoxLog(): no more memory.");
         return(rob);
       }
       oxInitClient(cc1);
     }
   
     if (oxObjectToClient(client,cc1) == -1) return(rob);
     if (cc1 == NULL) {
       errorOxmisc2("KoxLog(): the first argument must be a client object.");
       return(rob);
     }
     return(KpoInteger(fp2stopLog(cc1->datafp2)));
   }
   
 struct object KoxCloseClient(struct object client) {  struct object KoxCloseClient(struct object client) {
   oxclientp cc1 = NULL;    oxclientp cc1 = NULL;
   oxclient cc;    oxclient cc;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   cc1  = &cc;    cc1  = &cc;
   if (oxObjectToClient(client,cc1) == -1) return(rob);    if (oxObjectToClient(client,cc1) == -1) return(rob);
Line 674  struct object KoxCloseClient(struct object client) {
Line 769  struct object KoxCloseClient(struct object client) {
     errorOxmisc2("Unknown client->type\n");      errorOxmisc2("Unknown client->type\n");
     break;      break;
   }    }
     oxClientListRemove(client);
   return(KpoInteger(0));    return(KpoInteger(0));
   
 }  }
Line 703  static int cmoCheck00(struct object obj,int cmo[], int
Line 799  static int cmoCheck00(struct object obj,int cmo[], int
     /* typeTrans[Spoly] = CMO_DMS;  */      /* typeTrans[Spoly] = CMO_DMS;  */
     typeTrans[Spoly] = CMO_DISTRIBUTED_POLYNOMIAL;      typeTrans[Spoly] = CMO_DISTRIBUTED_POLYNOMIAL;
     typeTrans[Sdouble] = CMO_64BIT_MACHINE_DOUBLE;      typeTrans[Sdouble] = CMO_64BIT_MACHINE_DOUBLE;
           typeTrans[SrationalFunction] = CMO_RATIONAL;
     typeTrans[CLASSNAME_ERROR_PACKET]   = CMO_ERROR2;      typeTrans[CLASSNAME_ERROR_PACKET]   = CMO_ERROR2;
     typeTrans[CLASSNAME_mathcap] = CMO_MATHCAP;      typeTrans[CLASSNAME_mathcap] = CMO_MATHCAP;
     typeTrans[CLASSNAME_indeterminate] = CMO_INDETERMINATE;      typeTrans[CLASSNAME_indeterminate] = CMO_INDETERMINATE;
Line 754  static int cmoCheck00(struct object obj,int cmo[], int
Line 851  static int cmoCheck00(struct object obj,int cmo[], int
   
 int cmoCheckMathCap(struct object obj, struct object *obp)  int cmoCheckMathCap(struct object obj, struct object *obp)
 {  {
   struct object mathcap;    struct object mathcap = OINIT;
   struct object cmolist;    struct object cmolist = OINIT;
   struct object mathcapMain;    struct object mathcapMain = OINIT;
   struct object mathcapThird;    struct object mathcapThird = OINIT;
   struct object ox;    struct object ox = OINIT;
   struct object oxtag;    struct object oxtag = OINIT;
   struct object ob0;    struct object ob0 = OINIT;
   int oxsize;    int oxsize;
   int n;    int n;
   int i;    int i;
Line 872  int cmoCheckMathCap(struct object obj, struct object *
Line 969  int cmoCheckMathCap(struct object obj, struct object *
   
   
 struct object KoxGenPortFile(void) {  struct object KoxGenPortFile(void) {
   struct object ob;    struct object ob = OINIT;
   ob = KpoString(oxGenPortFile());    ob = KpoString(oxGenPortFile());
   return(ob);    return(ob);
 }  }
Line 882  void KoxRemovePortFile(void) {
Line 979  void KoxRemovePortFile(void) {
   
 void oxPushMathCap(struct mathCap *mathcap)  void oxPushMathCap(struct mathCap *mathcap)
 {  {
   struct object rob;    struct object rob = OINIT;
   rob = newMathCap(mathcap);    rob = newMathCap(mathcap);
   Kpush(rob);    Kpush(rob);
 }  }
   
 struct object KoxGenPass(void) {  struct object KoxGenPass(void) {
   struct object rob;    struct object rob = OINIT;
   rob = KpoString(oxGenPass());    rob = KpoString(oxGenPass());
   return(rob);    return(rob);
 }  }
   
 struct object KoxGetPort(struct object host)  struct object KoxGetPort(struct object host)
 {  {
   struct object rob;    struct object rob = OINIT;
   int fdStream, fdControl;    int fdStream, fdControl;
   int portStream, portControl;    int portStream, portControl;
   extern int OpenedSocket;    extern int OpenedSocket;
Line 919  struct object KoxGetPort(struct object host)
Line 1016  struct object KoxGetPort(struct object host)
 }  }
 struct object KoxGetPort1(struct object host)  struct object KoxGetPort1(struct object host)
 {  {
   struct object rob;    struct object rob = OINIT;
   int fdStream;    int fdStream;
   int portStream;    int portStream;
   extern int OpenedSocket;    extern int OpenedSocket;
Line 942  struct object KoxCreateClient2(struct object peer,
Line 1039  struct object KoxCreateClient2(struct object peer,
                                struct object ipmask,                                 struct object ipmask,
                                struct object pass)                                 struct object pass)
 {  {
   struct object rob;    struct object rob = OINIT;
   oxclientp client;    oxclientp client;
   int fdStream, portStream, fdControl, portControl;    int fdStream, portStream, fdControl, portControl;
   int i;    int i;
   struct object ob1;    struct object ob1 = OINIT;
     struct object opassControl = OINIT;
     struct object opassData = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (peer.tag != Sarray) {    if (peer.tag != Sarray) {
     errorOxmisc2("KoxCreateClient2(): The first argument must be an array [fdStream, portStream, fdControl, portControl]");      errorOxmisc2("KoxCreateClient2(): The first argument must be an array [fdStream, portStream, fdControl, portControl]");
Line 970  struct object KoxCreateClient2(struct object peer,
Line 1069  struct object KoxCreateClient2(struct object peer,
   if (ipmask.tag != Sinteger) {    if (ipmask.tag != Sinteger) {
     errorOxmisc2("KoxCreateClient2(): ipmask must be an integer.");      errorOxmisc2("KoxCreateClient2(): ipmask must be an integer.");
   }    }
   if (pass.tag != Sdollar) {    if (pass.tag == Sdollar) {
     errorOxmisc2("KoxCreateClient2(): pass must be a string.");      opassControl = pass; opassData = pass;
     }else if (pass.tag == Sarray) {
       if (getoaSize(pass) < 2) errorOxmisc2("KoxCreateClient2: #passArray < 2.");
       opassControl = getoa(pass,0);
       opassData = getoa(pass,1);
     }else{
       errorOxmisc2("KoxCreateClient2(): pass must be a string or an array.");
   }    }
     if ((opassControl.tag != Sdollar) || (opassData.tag != Sdollar)) {
       errorOxmisc2("KoxCreateClient2(): opassControl or opassData must be a string.");
     }
   
   client = oxCreateClient2(fdStream, portStream, fdControl, portControl,    client = oxCreateClient2(fdStream, portStream, fdControl, portControl,
                            KopInteger(ipmask), KopString(pass));                             KopInteger(ipmask),
                              KopString(opassControl),KopString(opassData));
   if (client == NULL) {    if (client == NULL) {
     errorOxmisc2("KoxCreateClient2(): Open error.");      errorOxmisc2("KoxCreateClient2(): Open error.");
     return(rob);      return(rob);
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 1000  errorOxmisc2(char *s) {
Line 1110  errorOxmisc2(char *s) {
 struct object KoxPushCMD(struct object client,struct object cmd) {  struct object KoxPushCMD(struct object client,struct object cmd) {
   int ans;    int ans;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 1031  struct object KoxPushCMD(struct object client,struct o
Line 1141  struct object KoxPushCMD(struct object client,struct o
 struct object KoxPushCMO(struct object client,struct object ob) {  struct object KoxPushCMO(struct object client,struct object ob) {
   int ans;    int ans;
   static oxclientp cc1 = NULL;    static oxclientp cc1 = NULL;
   struct object rob;    struct object rob = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 1069  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1179  oxclientp oxCreateControl_RFC_101(int fdstream,int por
                                   int ipmask,char *pass);                                    int ipmask,char *pass);
 struct object KoxCreateControl_RFC_101(struct object peer,struct object ipmask,struct object pass)  struct object KoxCreateControl_RFC_101(struct object peer,struct object ipmask,struct object pass)
 {  {
   struct object rob;    struct object rob = OINIT;
   oxclientp client;    oxclientp client;
   int fdStream, portStream;    int fdStream, portStream;
   int i;    int i;
   struct object ob1;    struct object ob1 = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (peer.tag != Sarray) {    if (peer.tag != Sarray) {
     errorOxmisc2("KoxCreateControl_RFC_101(): The first argument must be an array [fdStream, portStream]");      errorOxmisc2("KoxCreateControl_RFC_101(): The first argument must be an array [fdStream, portStream]");
Line 1113  struct object KoxCreateControl_RFC_101(struct object p
Line 1223  struct object KoxCreateControl_RFC_101(struct object p
 oxclientp oxCreateControl_RFC_101(int fdstream,int portStream,  oxclientp oxCreateControl_RFC_101(int fdstream,int portStream,
                                   int ipmask,char *pass)                                    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 1121  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1230  oxclientp oxCreateControl_RFC_101(int fdstream,int por
   
   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 engineByteOrder;    int engineByteOrder;
   extern int Quiet;    extern int Quiet;
   
Line 1170  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1283  oxclientp oxCreateControl_RFC_101(int fdstream,int por
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = -1;    client->controlport = -1;
   client->controlfd = -1;    client->controlfd = -1;
   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 = -1;    client->controlByteOrder = -1;
Line 1181  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1294  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
                                  int ipmask,char *pass, int engineID);                                   int ipmask,char *pass, int engineID);
 struct object KoxCreateEngine_RFC_101(struct object peer,struct object ipmask,struct object pass, struct object engineID)  struct object KoxCreateEngine_RFC_101(struct object peer,struct object ipmask,struct object pass, struct object engineID)
 {  {
   struct object rob;    struct object rob = OINIT;
   oxclientp client;    oxclientp client;
   int fdStream, portStream;    int fdStream, portStream;
   int i;    int i;
   struct object ob1;    struct object ob1 = OINIT;
   rob.tag = Snull;    rob.tag = Snull;
   if (peer.tag != Sarray) {    if (peer.tag != Sarray) {
     errorOxmisc2("KoxCreateEngine_RFC_101(): The first argument must be an array [fdStream, portStream]");      errorOxmisc2("KoxCreateEngine_RFC_101(): The first argument must be an array [fdStream, portStream]");
Line 1222  struct object KoxCreateEngine_RFC_101(struct object pe
Line 1335  struct object KoxCreateEngine_RFC_101(struct object pe
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 1235  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1349  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
   
   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 engineByteOrder;    int engineByteOrder;
   extern int Quiet;    extern int Quiet;
   
Line 1285  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1403  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = -1;    client->controlport = -1;
   client->controlfd = -1;    client->controlfd = -1;
   client->id = engineID;    client->id = oxGetClientID();
     client->engineID = engineID;
   client->type = CLIENT_SOCKET; /* socket */    client->type = CLIENT_SOCKET; /* socket */
   client->engineByteOrder = engineByteOrder;    client->engineByteOrder = engineByteOrder;
   client->controlByteOrder = -1;    client->controlByteOrder = -1;
   return(client);    return(client);
 }  }
   
   void oxClientListUpdate(struct object ob) {
     int id;
     extern struct object OxClientList[];
     id = KopInteger(getoa(ob,8));
     /* printf("id=%d\n",id); */
     if ((id <MAX_N_OF_CLIENT) && (id >= 0)) {
           OxClientList[id] = ob;
     }else{
           errorOxmisc2("oxClientListUpdate(): the client table is full.\n");
     }
   }
   void oxClientListRemove(struct object ob) {
     int id;
     extern struct object OxClientList[];
     id = KopInteger(getoa(ob,8));
     if ((id <MAX_N_OF_CLIENT) && (id >= 0)) {
           (OxClientList[id]).tag = Snull;
     }else{
           /* errorOxmisc2("oxClientListRemove(): the client table is full.\n");*/
     }
   }
   static void KoxCleanClientList() {
     extern int OxClientListn;
     extern struct object OxClientList[];
     int i,j,n;
     struct object ob = OINIT;
     n = 0;
     for (i=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) {
             if (!isItClientObject(OxClientList[i])) {
                   (OxClientList[i]).tag = Snull;
             }
           }
     }
   }
   struct object KoxGetClientList() {
     extern int OxClientListn;
     extern struct object OxClientList[];
     int i,j,n;
     struct object rob = OINIT;
     KoxCleanClientList();
     n = 0;
     for (i=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) n++;
     }
     rob = newObjectArray(n);
     for (i=0, j=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) {
             if (j >= n) {
                   j=0;
                   errorOxmisc2("oxGetClientList(): the client table is broken.\n");
             }
             putoa(rob,j,OxClientList[i]);
             j++;
           }
     }
     return rob;
   }
   
   

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.25

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