[BACK]Return to oxf.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_toolkit

Diff for /OpenXM/src/ox_toolkit/oxf.c between version 1.24 and 1.25

version 1.24, 2016/06/30 01:14:00 version 1.25, 2016/07/14 08:16:19
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.23 2015/08/27 03:03:33 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.24 2016/06/30 01:14:00 ohara Exp $ */
   
 /*  /*
    This module includes functions for sending/receiveng CMO's.     This module includes functions for sending/receiveng CMO's.
Line 16 
Line 16 
 #include <time.h>  #include <time.h>
 #include <limits.h>  #include <limits.h>
   
 #if defined(__sun__)  #if defined(__sun__) || defined(__FreeBSD__)
 #include <netdb.h>  #include <netdb.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <netinet/in.h>  #include <netinet/in.h>
   #elif defined(__linux__)
   #include <arpa/inet.h>
 #endif  #endif
   
 #if defined(__sun__)  #if defined(__sun__)
Line 41  static int random()
Line 43  static int random()
     rand_s(&r);      rand_s(&r);
     return r;      return r;
 }  }
   #define READ(fd,buf,n)   (recv((fd),(buf),(n),0))
   #define WRITE(fd,buf,n)  (send((fd),(buf),(n),0))
 #else  #else
 #include <unistd.h>  #include <unistd.h>
 #include <sys/file.h>  #include <sys/file.h>
 #include <sys/param.h>  #include <sys/param.h>
   #define READ(fd,buf,n)   (read((fd),(buf),(n)))
   #define WRITE(fd,buf,n)  (write((fd),(buf),(n)))
 #endif  #endif
   
 #include "mysocket.h"  #include "mysocket.h"
Line 91  int oxf_setbuffer(OXFILE *oxfp, char *buf, int size)
Line 97  int oxf_setbuffer(OXFILE *oxfp, char *buf, int size)
     return 0;      return 0;
 }  }
   
   void OX_FD_ZERO(OXFILE_set *s)
   {
       memset(s,0,sizeof(OXFILE_set));
   }
   
   void OX_FD_SET(OXFILE *oxfp,OXFILE_set *s)
   {
       if (oxfp != NULL && oxfp->fd >=0 && oxfp->fd < OX_FD_SETSIZE && !FD_ISSET(oxfp->fd,&(s->fdset))) {
           FD_SET(oxfp->fd,&(s->fdset));
           s->p[oxfp->fd] = oxfp;
           s->count++;
       }
   }
   
   void OX_FD_CLR(OXFILE *oxfp,OXFILE_set *s)
   {
       if (oxfp != NULL && oxfp->fd >=0 && oxfp->fd < OX_FD_SETSIZE && FD_ISSET(oxfp->fd,&(s->fdset))) {
           FD_CLR(oxfp->fd,&(s->fdset));
           s->p[oxfp->fd] = NULL;
           s->count--;
       }
   }
   
   int OX_FD_ISSET(OXFILE *oxfp,OXFILE_set *s)
   {
       if (oxfp != NULL && oxfp->fd >=0 && oxfp->fd < OX_FD_SETSIZE) {
           return FD_ISSET(oxfp->fd,&(s->fdset));
       }
       return 0;
   }
   
   /* The argument `s' is a set of file descripters for reading */
   OXFILE *oxf_select(OXFILE_set *s, struct timeval *tv)
   {
       int r;
       r = select(OX_FD_SETSIZE,&(s->fdset),NULL,NULL,tv);
       return (r<0)? NULL: s->p[r];
   }
   
 int oxf_read(void *buffer, size_t size, size_t num, OXFILE *oxfp)  int oxf_read(void *buffer, size_t size, size_t num, OXFILE *oxfp)
 {  {
     int n = read(oxfp->fd, buffer, size*num);      int n = READ(oxfp->fd, buffer, size*num);
     if (n <= 0) {      if (n <= 0) {
 #if 0  #if 0
         oxfp->error = 1;          oxfp->error = 1;
Line 108  int oxf_write(void *buffer, size_t size, size_t num, O
Line 153  int oxf_write(void *buffer, size_t size, size_t num, O
 {  {
     size_t sz = size*num;      size_t sz = size*num;
     if (oxfp->wbuf == NULL) { /* no buffering */      if (oxfp->wbuf == NULL) { /* no buffering */
         return write(oxfp->fd, buffer, sz);          return WRITE(oxfp->fd, buffer, sz);
     }      }
     if ((oxfp->wbuf_count + sz) >= oxfp->wbuf_size) {      if ((oxfp->wbuf_count + sz) >= oxfp->wbuf_size) {
         oxf_flush(oxfp);          oxf_flush(oxfp);
         return write(oxfp->fd, buffer, sz);          return WRITE(oxfp->fd, buffer, sz);
     }      }
     memcpy(oxfp->wbuf + oxfp->wbuf_count, buffer, sz);      memcpy(oxfp->wbuf + oxfp->wbuf_count, buffer, sz);
     oxfp->wbuf_count += sz;      oxfp->wbuf_count += sz;
Line 250  void oxf_determine_byteorder_server(OXFILE *oxfp)
Line 295  void oxf_determine_byteorder_server(OXFILE *oxfp)
 void oxf_flush(OXFILE *oxfp)  void oxf_flush(OXFILE *oxfp)
 {  {
     if (oxfp->wbuf != NULL) {      if (oxfp->wbuf != NULL) {
         write(oxfp->fd, oxfp->wbuf, oxfp->wbuf_count);          WRITE(oxfp->fd, oxfp->wbuf, oxfp->wbuf_count);
         oxfp->wbuf_count = 0;          oxfp->wbuf_count = 0;
     }      }
 }  }

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

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