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

Diff for /OpenXM/src/kan96xx/plugin/sm1Socket.c between version 1.3 and 1.4

version 1.3, 2001/05/04 01:06:30 version 1.4, 2001/08/12 03:13:36
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/sm1Socket.c,v 1.2 2000/01/16 07:55:48 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/sm1Socket.c,v 1.3 2001/05/04 01:06:30 takayama Exp $ */
 /* msg0s.c */  /* msg0s.c */
 #include <stdio.h>  #include <stdio.h>
 #include <sys/types.h>  #include <sys/types.h>
Line 476  struct object KsocketWriteByte(struct object obj) {
Line 476  struct object KsocketWriteByte(struct object obj) {
   struct object ob1;    struct object ob1;
   struct object ob2;    struct object ob2;
   int socketid;    int socketid;
   int r;    int r,i,n,kk,r0;
   char data[2];  #define DATA_SIZE 1024
     char data[DATA_SIZE];
   if (obj.tag != Sarray) {    if (obj.tag != Sarray) {
     errorMsg1s("KsocketWriteByte([integer socketid, int])");      errorMsg1s("KsocketWriteByte([integer socketid, int | array of int])");
   }    }
   if (getoaSize(obj) < 2) {    if (getoaSize(obj) < 2) {
     errorMsg1s("KsocketWriteByte([integer socketid, int])");      errorMsg1s("KsocketWriteByte([integer socketid, int | array of int])");
   }    }
   ob1 = getoa(obj,0);    ob1 = getoa(obj,0);
   ob2 = getoa(obj,1);    ob2 = getoa(obj,1);
   if (ob1.tag != Sinteger) {    if (ob1.tag != Sinteger) {
     errorMsg1s("KsocketWriteByte([integer socketid, int]) : the first argument must be an integer.");      errorMsg1s("KsocketWriteByte([integer socketid, int | array of int]) : the first argument must be an integer.");
   }    }
   socketid = KopInteger(ob1);    socketid = KopInteger(ob1);
   if (ob2.tag != Sinteger) {    if (ob2.tag != Sinteger && ob2.tag != Sarray) {
     errorMsg1s("KsocketWriteByte([integer socketid, int]) : the second argument must be a string.");      errorMsg1s("KsocketWriteByte([integer socketid, int | array of int]) : the second argument must be an integer or an array of integers.");
   }    }
   data[0] = KopInteger(ob2);    if (ob2.tag == Sinteger) {
   r = write(socketid,data, 1);      data[0] = KopInteger(ob2);
       r = write(socketid,data, 1);
     }else{
       n = getoaSize(ob2); kk = 0; r = 0;
       for (i=0; i<n; i++) {
         if (getoa(ob2,i).tag != Sinteger)
               errorMsg1s("KsocketWriteByte([integer socketid, int | array of int]) : elements of the second argument must be integers.");
         data[kk] = KopInteger(getoa(ob2,i));
         kk++;
         if (kk >= DATA_SIZE) {
           r0 = write(socketid,data,kk);
           if (r0 != kk) {
             fprintf(stderr,"Warning: Could not write to the socket.\n");
             return(KpoInteger(r+r0));
           }
           r += r0;
           kk = 0;
         }
       }
       if (kk > 0) {
         r0 = write(socketid,data,kk);
         if (r0 != kk) {
           fprintf(stderr,"Warning: Could not write to the socket.\n");
           return(KpoInteger(r+r0));
         }
         r += r0;
       }
     }
   return(KpoInteger(r));    return(KpoInteger(r));
 }  }
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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