[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.18 and 1.20

version 1.18, 2003/09/15 09:31:42 version 1.20, 2005/03/03 06:21:22
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.17 2003/06/02 10:25:57 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.19 2005/03/03 04:40:51 ohara Exp $ */
   
 /*  /*
    This module includes functions for sending/receiveng CMO's.     This module includes functions for sending/receiveng CMO's.
Line 15 
Line 15 
 #include <sys/file.h>  #include <sys/file.h>
 #include <sys/param.h>  #include <sys/param.h>
 #include <time.h>  #include <time.h>
   #include <limits.h>
   
 #if defined(__sun__)  #if defined(__sun__)
 #include <netdb.h>  #include <netdb.h>
Line 22 
Line 23 
 #include <netinet/in.h>  #include <netinet/in.h>
 #endif  #endif
   
   #if defined(__sun__)
   #include <synch.h>
   #else
   #include <inttypes.h>
   #endif
   
 #include "mysocket.h"  #include "mysocket.h"
 #include "ox_toolkit.h"  #include "ox_toolkit.h"
   
Line 32  static int send_int32_nbo(OXFILE *oxfp, int int32);
Line 39  static int send_int32_nbo(OXFILE *oxfp, int int32);
 static int receive_int32_lbo(OXFILE *oxfp);  static int receive_int32_lbo(OXFILE *oxfp);
 static int receive_int32_nbo(OXFILE *oxfp);  static int receive_int32_nbo(OXFILE *oxfp);
   
   static int send_int64_nbo_le(OXFILE *oxfp, double int64);
   static int send_int64_lbo(OXFILE *oxfp, double int64);
   static double receive_int64_nbo_le(OXFILE *oxfp);
   static double receive_int64_lbo(OXFILE *oxfp);
   
 static void pipe_send_info(int fd, char *hostname, int port, char *password);  static void pipe_send_info(int fd, char *hostname, int port, char *password);
   
   /* translating double of little endian byte order to one of big endian. */
   double htonll_le(double n)
   {
       int i;
       double r;
           char *sp = (char *)&n, *dp = (char *)&r + sizeof(double)-1;
       for(i=0; i<sizeof(double); i++) {
                   *dp-- = *sp++;
       }
       return r;
   }
   
 /* enable write buffering */  /* enable write buffering */
 int oxf_setbuffer(OXFILE *oxfp, char *buf, int size)  int oxf_setbuffer(OXFILE *oxfp, char *buf, int size)
 {  {
Line 73  int oxf_write(void *buffer, size_t size, size_t num, O
Line 97  int oxf_write(void *buffer, size_t size, size_t num, O
     return sz;      return sz;
 }  }
   
   /* sending an object of int64 type with Network Byte Order. */
   static int send_int64_nbo_le(OXFILE *oxfp, double int64)
   {
       int64 = htonll_le(int64);
       return oxf_write(&int64, sizeof(double), 1, oxfp);
   }
   
   /* sending an object of int64 type with Local Byte Order. */
   static int send_int64_lbo(OXFILE *oxfp, double int64)
   {
       return oxf_write(&int64, sizeof(double), 1, oxfp);
   }
   
   /* receiving an object of int64 type with Network Byte Order. */
   static double receive_int64_nbo_le(OXFILE *oxfp)
   {
       int tag;
       oxf_read(&tag, sizeof(double), 1, oxfp);
       return htonll_le(tag);
   }
   
   /* receiving an object of int64 type with Local Byte Order. */
   static double receive_int64_lbo(OXFILE *oxfp)
   {
       int tag;
       oxf_read(&tag, sizeof(double), 1, oxfp);
       return tag;
   }
   
 /* sending an object of int32 type with Network Byte Order.  /* sending an object of int32 type with Network Byte Order.
    (not equal to cmo_int32 type)  */     (not equal to cmo_int32 type)  */
 static int send_int32_nbo(OXFILE *oxfp, int int32)  static int send_int32_nbo(OXFILE *oxfp, int int32)
Line 125  OXFILE *oxf_open(int fd)
Line 178  OXFILE *oxf_open(int fd)
     oxfp->wbuf = NULL;      oxfp->wbuf = NULL;
     oxfp->wbuf_size = 0;      oxfp->wbuf_size = 0;
     oxfp->wbuf_count = 0;      oxfp->wbuf_count = 0;
       oxfp->send_double    = send_int64_lbo;
       oxfp->receive_double = receive_int64_lbo;
     return oxfp;      return oxfp;
     /* oxfp->fp = fdopen(fd, "a+"); */      /* oxfp->fp = fdopen(fd, "a+"); */
     /* return (oxfp->fp != NULL)? oxfp: NULL; */      /* return (oxfp->fp != NULL)? oxfp: NULL; */
Line 189  void oxf_close(OXFILE *oxfp)
Line 244  void oxf_close(OXFILE *oxfp)
   
 void oxf_setopt(OXFILE *oxfp, int mode)  void oxf_setopt(OXFILE *oxfp, int mode)
 {  {
     if (mode == OXF_SETOPT_LBO) {      int m = 1;
         oxfp->send_int32    = send_int32_lbo;      if (mode == OXF_SETOPT_NBO && *(char *)&m) {
         oxfp->receive_int32 = receive_int32_lbo;                  /* Little endian architecture. */
     }else if (mode == OXF_SETOPT_NBO) {                  oxfp->send_int32     = send_int32_nbo;
         oxfp->send_int32    = send_int32_nbo;                  oxfp->receive_int32  = receive_int32_nbo;
         oxfp->receive_int32 = receive_int32_nbo;                  oxfp->send_double    = send_int64_nbo_le;
                   oxfp->receive_double = receive_int64_nbo_le;
           }else {
                   oxfp->send_int32     = send_int32_lbo;
                   oxfp->receive_int32  = receive_int32_lbo;
                   oxfp->send_double    = send_int64_lbo;
                   oxfp->receive_double = receive_int64_lbo;
     }      }
 }  }
   

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.20

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