------- 
aaaaaaaaa0
Content-Type: text/plain; charset="iso-2022-jp"

五鬚任后

拡張モジュールを作ってみたのですが、ファイルの扱い方に自信がありません。
GetOpenFile で得た OpenFile* から、FILE *fを取り靴突用していえ
のですが、OpenFile には f と f2 の二つの FILE* があります。
この、違いはなんでしょうか?

また、バッファを共有している関係で、途中で他のスレッドにが移っえ
欲しくない部分があるのですが、ような指定はどのようにすれば良いので
しょうか?

短かいので、スを添付します。


------- 
aaaaaaaaa0
Content-Type: text/plain; charset="iso-2022-jp"
Content-Description: chasen.c

/************************************************

 chasen.c -

 $Author: arashi $
 $Log: chasen.c,v $
 Revision 1.1  1998/11/29 12:30:08  arashi
 Initial revision

************************************************/

#include "ruby.h"
#include "rubyio.h"

static VALUE
f_chasen_getopt(int argc, VALUE *argv, VALUE class){
   int i;
   char *opt[argc + 2];

   opt[0]  chasen.so";
   for (i  ; i < argc; i++){
      Check_Type(argv[i], T_STRING);
      opt[i + 1]  STRING(argv[i])->ptr;
   }
   opt[argc + 1]  ULL;

   if (chasen_getopt_argv(opt, stderr) ! ){
      Fail("chasen_getopt_argv");
   }
}

static VALUE
f_chasen_sparse_tostr(VALUE obj, VALUE str){
   Check_Type(str, T_STRING);
   return str_new2((char*)chasen_sparse_tostr(RSTRING(str)->ptr));
}

static VALUE
f_chasen_fparse_tostr(VALUE obj, VALUE io){
   OpenFile *fp;
   char *ret;

   if (!obj_is_kind_of(io, cIO)){
      TypeError("instance of IO needed.");
   }
   GetOpenFile(io, fp);
   io_readable(fp);
   if (ret  char*)chasen_fparse_tostr(fp->f)){
      return str_new2(ret);
   }else{
      return Qnil;
   }
}


VALUE mChasen;

void
Init_chasen(){
   mChasen  b_define_module("Chasen");
   rb_define_module_function(mChasen, "getopt", f_chasen_getopt, -1);
   rb_define_module_function(mChasen, "sparse", f_chasen_sparse_tostr, 1);
   rb_define_module_function(mChasen, "fparse", f_chasen_fparse_tostr, 1);
}

------- 
aaaaaaaaa0
Content-Type: text/plain; charset="iso-2022-jp"

-- 
いからし あきら(ikarashi / itlb.te.noda.sut.ac.jp)

------- 
aaaaaaaaa0--