[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:01678] Re: mhc-palm.rb を使った AddressDB の読み込み



乃村です.

On Sat, 12 Oct 2002 18:02:42 +0900,
	Junichi SEGAWA <jsegawa@xxxxxxxxxxxxxxx> said:

> mhc(current-snap20020710)についているmhc-palm.rbを使って、
> PalmのAddressDBの読み込みを行いたいのですが、
> 下記二点によりうまく行きません。

うぅ.お察っしのように,AddressDB については,書きかけのままで,
ちゃんと動かないと思います.file からデータを取るところはできて
いたかもしれません.

> ♪1  782行目のtypo
> 
> @recClass = PilotAddRec 
>                 ↓
> @recClass = PilotAddressRecord

> ♪2  769行目でget_app_infoの呼び出し
> 
> get_app_infoはPilotFileのメソッドなので、
> PilotAddressDBのメソッドとしては呼べません。
> 769-774行 をコメントアウトすると動くのですが、
> これだと、AddressAppInfoが取れずに困っています。
> 
> 774行目   *PiLib .unpack_AddressAppInfo(app_info)

これはですね,pilot-link の dlp.c の dlp_ReadAppBlock() から戻って来た
値を渡してやらないといけません.で,mhc_pilib.c には,
dlp_ReadAppBlock へのゲートを提供していません.

以下のようなパッチがヒットになるかもしれません.申し訳ないですが,
まるでチェックしていません.
--
nom


Index: mhc_pilib.c
===================================================================
RCS file: /cvsroot/mhc/ruby-ext/mhc_pilib.c,v
retrieving revision 1.3
diff -u -r1.3 mhc_pilib.c
--- mhc_pilib.c	2002/06/21 00:57:00	1.3
+++ mhc_pilib.c	2002/10/12 10:24:55
@@ -249,6 +249,23 @@
 }
 
 /****************************************************************/
+/******************** Application Info       ********************/
+/****************************************************************/
+
+static VALUE rdlp_ReadAppBlock(VALUE obj, VALUE sd, VALUE db)
+{
+  int len;
+  unsigned char buffer[0xffff];
+
+  len = dlp_ReadAppBlock(FIX2INT(sd), FIX2INT(db), 0, buffer, 0xffff);
+
+  if (len <= 0)
+    return Qnil;
+  else
+    return str_new(buffer, len);
+}
+
+/****************************************************************/
 /******************** DB Record Manipulation ********************/
 /****************************************************************/
 
@@ -645,6 +662,9 @@
   /* open, close DB */
   mfunc(mPiLib, "dlp_OpenDB",           rdlp_OpenDB,  2);
   mfunc(mPiLib, "dlp_CloseDB",          rdlp_CloseDB, 2);
+
+  /* App info */
+  mfunc(mPiLib, "dlp_ReadAppBlock",      rdlp_ReadAppBlock,      2);
 
   /* record manipulation */
   mfunc(mPiLib, "dlp_ReadRecordByIndex", rdlp_ReadRecordByIndex, 3);
Index: lib/mhc-palm.rb
===================================================================
RCS file: /cvsroot/mhc/ruby-ext/lib/mhc-palm.rb,v
retrieving revision 1.7
diff -u -r1.7 mhc-palm.rb
--- lib/mhc-palm.rb	2001/09/12 03:44:56	1.7
+++ lib/mhc-palm.rb	2002/10/12 10:24:55
@@ -128,6 +128,10 @@
     PiLib .dlp_ResetSyncFlags(@sd, @db)
     return self
   end
+
+  def get_app_info()
+    return PiLib .dlp_ReadAppBlock(@sd, @db)
+  end
 end
 
 ################################################################
@@ -779,7 +783,7 @@
     ## @phoneLabels[0..7] = 
     ##      [会社, 自宅, Fax, その他, E-mail, 代表, ポケベル, 携帯]
 
-    @recClass = PilotAddRec
+    @recClass = PilotAddRecord
   end
 end