[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.8 and 1.9

version 1.8, 2000/12/01 07:27:03 version 1.9, 2000/12/03 16:15:03
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.7 2000/11/28 22:11:14 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.8 2000/12/01 07:27:03 ohara Exp $ */
   
 /*  /*
    This module includes functions for sending/receiveng CMO's.     This module includes functions for sending/receiveng CMO's.
    Some commnets is written in Japanese by the EUC-JP coded     Some commnets are written in Japanese by the EUC-JP coded
    character set.     character set.
 */  */
   
Line 73  static int receive_int32_lbo(OXFILE *oxfp)
Line 73  static int receive_int32_lbo(OXFILE *oxfp)
     return tag;      return tag;
 }  }
   
 /* socket システムコールなどで socket を開いたのち、  /* (1) getting the fd by socket(2).
    fdopen(sd, "a+") でバッファリングする(予定)。("w+" ではない)     (2) preparing a buffer by fdopen(fd, "a+"). (not "w+")
    バッファリングの後、バイトオーダを決定し、     (3) determing the byte order of the OX connection.
    oxf_setopt() で関数ポインタを設定し直す。*/     (4) setting function pointers by oxf_setopt().
   */
 OXFILE *oxf_open(int fd)  OXFILE *oxf_open(int fd)
 {  {
     OXFILE *oxfp = (OXFILE *)malloc(sizeof(OXFILE));      OXFILE *oxfp = (OXFILE *)malloc(sizeof(OXFILE));
Line 120  void oxf_determine_byteorder_client(OXFILE *oxfp)
Line 120  void oxf_determine_byteorder_client(OXFILE *oxfp)
     oxf_setopt(oxfp, mode);      oxf_setopt(oxfp, mode);
 }  }
   
 /* Server 側ではこちらを用いる */  /* If the program is an OX server, then you must use this function. */
 /* いまの実装は dup されていることが前提になっている */  
 void oxf_determine_byteorder_server(OXFILE *oxfp)  void oxf_determine_byteorder_server(OXFILE *oxfp)
 {  {
     int  offer = OX_BYTE_LITTLE_ENDIAN;      int  offer = OX_BYTE_LITTLE_ENDIAN;
Line 300  int oxc_start_with_pipe(char *remote_host, int port, c
Line 299  int oxc_start_with_pipe(char *remote_host, int port, c
     return pid;      return pid;
 }  }
   
 /* pipe_*_info で送る情報の形式の定義 */  
 /* Integer port    : 4byte, ポート番号, Network byte order  
    String  hostname: ホスト名  
    String  password: パスワード  
   
    String は C のストリングではなくて、cmo_string のような、長さ付きの  
    ストリングである。ただし、\0 文字を含む。  
    すなわち、"Hello" は (int32)6 H e l l o \0 に展開される(合計10byte)。  
 */  
   
 static void pipe_send_string(int fd, char *s)  static void pipe_send_string(int fd, char *s)
 {  {
         int len  = strlen(s)+1;          int len  = strlen(s);
         int lenN = htonl(len);          int lenN = htonl(len);
         write(fd, &lenN, sizeof(int));          write(fd, &lenN, sizeof(int));
         write(fd, s, len);          write(fd, s, len+1);
 }  }
   
 static char *pipe_read_string()  static char *pipe_read_string()
Line 323  static char *pipe_read_string()
Line 312  static char *pipe_read_string()
         int len;          int len;
         char *s;          char *s;
         read(0, &len, sizeof(int));          read(0, &len, sizeof(int));
         len = ntohl(len);          len = ntohl(len)+1;
         s = malloc(len);          s = malloc(len);
         read(0, s, len);          read(0, s, len);
         return s;          return s;
 }  }
   
   /* The data format used by pipe_send_info() is defined in OX-RFC-101. */
 void pipe_send_info(int fd, char *hostname, int port, char *password)  void pipe_send_info(int fd, char *hostname, int port, char *password)
 {  {
         port = htonl(port);          port = htonl(port);

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

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