[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.17 and 1.28

version 1.17, 2002/11/08 14:18:02 version 1.28, 2020/10/06 11:33:47
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.16 2002/11/08 02:54:12 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.27 2013/11/06 06:23:24 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
   #include <string.h>
   #include <unistd.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. */
 #include "cmo.h"  #include "cmo.h"
Line 23  int oxGet(oxclientp client, struct object *op,int *isO
Line 25  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 142  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 228  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 264  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 279  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 311  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);
Line 333  static int isItClientObject(struct object ob)
Line 368  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 349  struct object KoxIsThereErrorClient(struct object ob)
Line 384  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 0;
   /* rob = newObjectArray(N_OF_CLIENT_FIELDS); */    /* rob = newObjectArray(N_OF_CLIENT_FIELDS); */
   if (rob.tag != Sarray) {    if (rob.tag != Sarray) {
     errorOxmisc2("oxClientToObject(): the second argument must be an array.");      errorOxmisc2("oxClientToObject(): the second argument must be an array.");
Line 388  int oxClientToObject(oxclientp client,struct object ro
Line 423  int oxClientToObject(oxclientp client,struct object ro
   
 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 453  struct object KoxReq(struct object client,
Line 488  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 484  struct object KoxGet(struct object client)
Line 519  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 515  struct object KoxGetFromControl(struct object client)
Line 550  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 545  struct object KoxMultiSelect(struct object oclients,st
Line 580  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 615  struct object KoxWatch(struct object client,struct obj
Line 650  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 624  struct object KoxWatch(struct object client,struct obj
Line 659  struct object KoxWatch(struct object client,struct obj
     }else{      }else{
       WatchStream = 0;        WatchStream = 0;
     }      }
     return;      return rob;
   }    }
   if (cc1 == NULL) {    if (cc1 == NULL) {
     cc1 = (oxclientp) mymalloc(sizeof(oxclient));      cc1 = (oxclientp) mymalloc(sizeof(oxclient));
Line 648  struct object KoxWatch(struct object client,struct obj
Line 683  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 669  struct object KoxCloseClient(struct object client) {
Line 761  struct object KoxCloseClient(struct object client) {
   switch (cc1->type) {    switch (cc1->type) {
   case CLIENT_SOCKET:    case CLIENT_SOCKET:
     fp2fclose(cc1->datafp2);      fp2fclose(cc1->datafp2);
     close(cc1->controlfd);      {int r; r=close(cc1->controlfd);}
     break;      break;
   case CLIENT_FILE:    case CLIENT_FILE:
     fp2fclose(cc1->datafp2);      fp2fclose(cc1->datafp2);
     close(cc1->controlfd);      {int r; r=close(cc1->controlfd);}
     break;      break;
   default:    default:
     errorOxmisc2("Unknown client->type\n");      errorOxmisc2("Unknown client->type\n");
Line 709  static int cmoCheck00(struct object obj,int cmo[], int
Line 801  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 760  static int cmoCheck00(struct object obj,int cmo[], int
Line 853  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 878  int cmoCheckMathCap(struct object obj, struct object *
Line 971  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 888  void KoxRemovePortFile(void) {
Line 981  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 925  struct object KoxGetPort(struct object host)
Line 1018  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 948  struct object KoxCreateClient2(struct object peer,
Line 1041  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 976  struct object KoxCreateClient2(struct object peer,
Line 1071  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);
Line 998  int KgetCmoTagOfObject(struct object obj) {
Line 1103  int KgetCmoTagOfObject(struct object obj) {
   return(k);    return(k);
 }  }
   
 errorOxmisc2(char *s) {  int errorOxmisc2(char *s) {
   SET_MYERROROUT;    SET_MYERROROUT;
   fprintf(MyErrorOut,"error in oxmisc2.c: %s\n",s);    fprintf(MyErrorOut,"error in oxmisc2.c: %s\n",s);
   errorKan1("%s\n","  ");    errorKan1("%s\n","  ");
     return 0;
 }  }
   
 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 1038  struct object KoxPushCMD(struct object client,struct o
Line 1144  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 1076  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1182  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 1155  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1261  oxclientp oxCreateControl_RFC_101(int fdstream,int por
   /* Authentication 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(fdStream,s,m+1); s[m] = '\0';    {int r; r=read(fdStream,s,m+1);} s[m] = '\0';
   if (strcmp(s,pass) != 0) {    if (strcmp(s,pass) != 0) {
     fprintf(stderr,"oxCreateControl_RFC_101(): password authentication failed for control channel.\n");      fprintf(stderr,"oxCreateControl_RFC_101(): password authentication failed for control channel.\n");
     close(fdStream);      {int r; r=close(fdStream);}
     return(NULL);      return(NULL);
   }    }
   
Line 1191  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1297  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 1333  static void KoxCleanClientList() {
Line 1439  static void KoxCleanClientList() {
   extern int OxClientListn;    extern int OxClientListn;
   extern struct object OxClientList[];    extern struct object OxClientList[];
   int i,j,n;    int i,j,n;
   struct object ob;    struct object ob = OINIT;
   n = 0;    n = 0;
   for (i=0; i<OxClientListn; i++) {    for (i=0; i<OxClientListn; i++) {
         if ((OxClientList[i]).tag != Snull) {          if ((OxClientList[i]).tag != Snull) {
Line 1347  struct object KoxGetClientList() {
Line 1453  struct object KoxGetClientList() {
   extern int OxClientListn;    extern int OxClientListn;
   extern struct object OxClientList[];    extern struct object OxClientList[];
   int i,j,n;    int i,j,n;
   struct object rob;    struct object rob = OINIT;
   KoxCleanClientList();    KoxCleanClientList();
   n = 0;    n = 0;
   for (i=0; i<OxClientListn; i++) {    for (i=0; i<OxClientListn; i++) {

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.28

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