[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.5 and 1.7

version 1.5, 2000/02/02 03:30:48 version 1.7, 2000/12/03 07:29:39
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.4 1999/11/27 01:41:11 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.6 2000/03/20 01:53:47 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. */
 #include "cmo.h"  #include "cmo.h"
 extern FILE *MyErrorOut;  extern FILE *MyErrorOut;
   #define SET_MYERROROUT { if (MyErrorOut == NULL) MyErrorOut=stdout; }
   /* It is also defined in oxmisc.c */
   
 extern int SerialOX; /* defined in SerialOX */  extern int SerialOX; /* defined in SerialOX */
   
 extern int OxVersion;  extern int OxVersion;
Line 68  int oxGet(oxclientp client, struct object *op,int *isO
Line 71  int oxGet(oxclientp client, struct object *op,int *isO
 int oxGetFromControl(oxclientp client)  int oxGetFromControl(oxclientp client)
 {  {
   int ans = -1;    int ans = -1;
     AbortIfRFC_101(client);
   if (client->cstate != -1) {    if (client->cstate != -1) {
     ans = oxGetResultOfControlInt32(client->controlfd);      ans = oxGetResultOfControlInt32(client->controlfd);
     if (ans != -1) {    client->cstate = 0; }      if (ans != -1) {    client->cstate = 0; }
Line 79  int oxGetFromControl(oxclientp client)
Line 83  int oxGetFromControl(oxclientp client)
 int oxReq(oxclientp client,int func,struct object ob)  int oxReq(oxclientp client,int func,struct object ob)
 {  {
   struct object *ob1p;    struct object *ob1p;
     SET_MYERROROUT;
   /* request to the control channel */    /* request to the control channel */
   if (func == SM_control_reset_connection ||    if (func == SM_control_reset_connection ||
       func == SM_control_kill) {        func == SM_control_kill) {
           AbortIfRFC_101(client);
     switch(func) {      switch(func) {
     case SM_control_reset_connection:      case SM_control_reset_connection:
       oxReqControlResetConnection(client->controlfd);        oxReqControlResetConnection(client->controlfd);
Line 965  int KgetCmoTagOfObject(struct object obj) {
Line 971  int KgetCmoTagOfObject(struct object obj) {
 }  }
   
 errorOxmisc2(char *s) {  errorOxmisc2(char *s) {
     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","  ");
   }
   
   struct object KoxPushCMD(struct object client,struct object cmd) {
     int ans;
     static oxclientp cc1 = NULL;
     struct object rob;
     rob.tag = Snull;
     if (cc1 == NULL) {
       cc1 = (oxclientp) mymalloc(sizeof(oxclient));
       if (cc1 == NULL) {
         errorOxmisc2("KoxReq(): no more memory.");
         return(rob);
       }
       oxInitClient(cc1);  /* BUG: is it fine? */
     }
   
     if (oxObjectToClient(client,cc1) == -1) return(rob);
     if (cc1 == NULL) {
       errorOxmisc2("KoxReq(): the first argument must be a client object.");
       return(rob);
     }
     if (cmd.tag != Sinteger) {
       errorOxmisc2("KoxReq(): the second argument must be an integer.");
       return(rob);
     }
     /* BUG: check the mathcap */
     oxSendOXheader(cc1->datafp2,OX_COMMAND,SerialOX++);
     oxSendInt32(cc1->datafp2,KopInteger(cmd));
     /* synchronize cc1 and client. */
     oxClientToObject(cc1,client);
     return(cmd);
   }
   
   struct object KoxPushCMO(struct object client,struct object ob) {
     int ans;
     static oxclientp cc1 = NULL;
     struct object rob;
     rob.tag = Snull;
     if (cc1 == NULL) {
       cc1 = (oxclientp) mymalloc(sizeof(oxclient));
       if (cc1 == NULL) {
         errorOxmisc2("KoxReq(): no more memory.");
         return(rob);
       }
       oxInitClient(cc1);  /* BUG: is it fine? */
     }
   
     if (oxObjectToClient(client,cc1) == -1) return(rob);
     if (cc1 == NULL) {
       errorOxmisc2("KoxReq(): the first argument must be a client object.");
       return(rob);
     }
   
     /* request to the data channel */
     if (cc1->dstate != DSTATE_ANY) {
       errorOxmisc2("oxPushCMO: cc1->dstate != DSTATE_ANY, data channel is not ready to send data.\n");
       return(rob);
     }
   
     if (!cmoCheckMathCap(ob,(struct object *)cc1->mathcapObjp)) {
           errorOxmisc2("oxPushCMO: your peer does not understand this cmo.\n");
           return(rob);
     }
     oxSendOXheader(cc1->datafp2,OX_DATA,SerialOX++);
     cmoObjectToStream2(ob,cc1->datafp2);
     /* synchronize cc1 and client. */
     oxClientToObject(cc1,client);
     return(ob);
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.7

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