Palm デバイスと Unix を使って生活する方法についてメモっておきました.
私の書いたものを見る前に palm-unix-j mailing list を見たほうが幸せだと思います。 Namazu を使った全文検索もできるようになっています。
pilot-link 以外にも Palm を Unix で使うためのソフトはある ようですが,ここでは pilot-link の説明だけを行います.
$ cd /dev $ ls -l /dev/tty0? crw------- 1 uucp wheel 8, 0 Dec 23 08:09 /dev/tty00 crw------- 1 uucp wheel 8, 1 Dec 23 08:09 /dev/tty01 crw------- 1 uucp wheel 8, 2 Dec 23 08:09 /dev/tty02 crw------- 1 uucp wheel 8, 3 Dec 23 08:09 /dev/tty03 $ su - Password: # mknod /dev/palm3 c 8 0 # chown js3guj:js3guj /dev/palm3
PILOTPORT=/dev/palm3 PILOTRATE=57600 export PILOTPORT PILOTRATE
pilot-link 付属の pilot-xfer で行います.
最初は以下のようにしてデバイスにある全データベースをバックアップ します.
$ pilot-xfer -b [backup directory]
[backup directory] には適当なディレクトリを指定します.このディ レクトリの中にデータベース毎のファイルができます.2回目からは以 下のようにします.
$ pilot-xfer -s [backup directory]
デバイスの中の変更のあったデータベースだけがバックアップされます.
pilot-link だけを使い,純正の HotSync マネージャやそのほかの HotSync ソフトウェアを使わない場合,デバイス側で削除したレコード がずっと残ったままになります.(正確にいうと削除されたレコードと いう情報,レコードの実体は削除されてしまっている.HotSync 時にデ スクトップ側の対応するデータを削除するために必要だから?)これが パフォーマンスに影響するようです.特に頻繁に新規レコード挿入,削 除が行われるメイルのデータベースなどがそうです.というわけでとき どき削除レコードを掃除してやります.私は毎回やっています.
$ pilot-xfer -P
pilot-xfer を使います.複数のデータベースを指定することもできます.
$ pilot-xfer -i [pdb, prc などの Palm のデータベース]
pilot-link 付属の install-memo, memos を使います.
Palm デバイスへの転送には install-memo を使います.以下のように カテゴリを指定することも可能です.
$ install-memo -c Movies SavingPrivateRyan.txt
私は Cinema Now を lynx -dump でセーブしたものを転送したりしています.
Palm デバイスからメモ帳を抽出するには memos を使います.
$ memos | nkf -e > memos.out
この場合,1つのファイルに mbox 形式? で全データが保存されるので うっとおしい場合もあるあるでしょう.その場合以下のように ディレクトリを指定すると1件ずつ取り出すことが可能です.
$ memos -d hoge
この場合,ディレクトリ hoge の下にカテゴリ名のディレクトリが作成 されその中にメモ帳の1行目のファイル名のファイルが作成されます. メモ帳の1行目が漢字の場合,Quoted Printable に変換されるので ちょっとうっとおしいかもしれません.
これについてはこちらも参照.
pilot-link 0.9.3 だと優先度がすべて High になってしまうので 以下のパッチをとりあえずあてておきます. その他、ヘッダ名の大文字小文字の区別をしないようにと ハードコードしちゃってますが、自分宛のメイルの優先度を High に設定するようにしています。
--- pilot-mail.c 2001/08/22 19:42:38 1.2 +++ pilot-mail.c 2001/09/01 17:40:08 @@ -117,19 +117,19 @@ /* Decide on what we do with m->sendTo */ - if (strncmp(holding, "From:", 5)==0) { + if (strncasecmp(holding, "From:", 5)==0) { m->from = strdup(skipspace(holding+5)); - } else if (strncmp(holding, "To:",3)==0) { + } else if (strncasecmp(holding, "To:",3)==0) { m->to = strdup(skipspace(holding+3)); - } else if (strncmp(holding, "Subject:",8)==0) { + } else if (strncasecmp(holding, "Subject:",8)==0) { m->subject = strdup(skipspace(holding+8)); - } else if (strncmp(holding, "Cc:",3)==0) { + } else if (strncasecmp(holding, "Cc:",3)==0) { m->cc = strdup(skipspace(holding+3)); - } else if (strncmp(holding, "Bcc:",4)==0) { + } else if (strncasecmp(holding, "Bcc:",4)==0) { m->bcc = strdup(skipspace(holding+4)); - } else if (strncmp(holding, "Reply-To:",9)==0) { + } else if (strncasecmp(holding, "Reply-To:",9)==0) { m->replyTo = strdup(skipspace(holding+9)); - } else if (strncmp(holding, "Date:",4)==0) { + } else if (strncasecmp(holding, "Date:",4)==0) { time_t d = parsedate(skipspace(holding+5)); if (d != -1) { struct tm * d2; @@ -138,8 +138,24 @@ m->date = *d2; } } - m->priority = 1; + if (m->to) + { + if (strstr(m->to, "hogehoge@hogehoge") || + strstr(m->to, "xxxx@xxxx")) + { + m->priority = 0; + } + else + { + m->priority = 1; + } + } + else + { + m->priority = 1; + } + holding[0] = 0; if (t) @@ -174,7 +190,8 @@ void sigint(int num) { - *((char*)0)=0; + fprintf(stderr, "SIGINT received. exiting...\n"); + exit(1); } int main(int argc, char *argv[]) @@ -629,7 +646,7 @@ sscanf(buffer, "%*s %*d %d", &len); - if (len > 16000) + if (len > p.truncate) continue; sprintf(buffer, "RETR %d\r\n", i);
makedoc7, txt2pdbdoc などがあります.私は txt2pdbdoc-1.2.1 を使っています.GPL'ed software です.
使い方は簡単です.作成したデータベースの転送には pilot-xfer を 使います.
$ txt2pdbdoc 'Short FAQ of comp.sys.palmtops.pilot' palmFAQ.txt palmFAQ.pdb
pdbtxt2html, html2pdbtxt も付属していますが私はほとんど使っていません. 後者は結構便利かも知れません.
imgvtopgm-2.0 と GIMP を使っています. SnapShot というスクリーンショットを撮るソフトウェアを使って いるのですがこれでできた pdb をうまく変換できなかったので 以下の部分をコメントアウトします.
*** ipdb_r.c 2000/09/01 19:18:32 1.1 --- ipdb_r.c 2000/09/01 19:19:59 *************** *** 264,274 **** r->extra = NULL; break; } ! if((r->rec_type != IMG_REC && r->rec_type != TEXT_REC) || memcmp(r->unknown, IPDB_MYST, 3) != 0) return E_NOTRECHDR; ! return 0; } --- 264,274 ---- r->extra = NULL; break; } ! /* if((r->rec_type != IMG_REC && r->rec_type != TEXT_REC) || memcmp(r->unknown, IPDB_MYST, 3) != 0) return E_NOTRECHDR; ! */ return 0; }
imgvtopgm 自体は ImageViewer 形式と PBM, PNM, PGM などとの 変換しか行わないので,PNG への変換に GIMP を使っています.
http://www.pilot-link.org/howto/ppp/ に極めて詳しい説明があります。
前述の pilot-mail を使うためにはいろいろ手間がかかるので最近は ppp で直接繋いで,PaPi-Mail で直接 IMAP でメール転送しています.
$HOME/.ppprc を用意します.
/dev/palm3 19200 local lock +chap -pap #nodetach passive persist proxyarp holdoff 3 #debug #kdebug 8 ms-dns 10.0.0.2 ms-dns 10.0.0.1 10.0.0.2:10.0.0.4
あとは shell のプロンプトで pppd と打つだけです. ただタイミングがシビアみたいなので pppd と打ってからすぐに Palm 側で接続をはじめないとだめなようです.でないと後述の 再起動しかない状態になりやすいようです.
NetBSD-1.4.3 を使っていますが,pppd が悪いのか,NetBSD のシリア ル関係のせいか,はたまた PalmOS が悪いのかときどきシリアルデバイ スが使えなくなる状態になります.リブートするしかないので非常にうっ とおしいです.
WorkPad30J や Visor with シリアルクレードルでは起こらないので TRGpro だけの問題かもしくは OS3.5 以上の問題なのかもしれません.
NetBSD や OpenBSD では今のところ IrDA の実装が行なわれていませんので Palm との ppp over infra red ができないと思っていましたが ComLinkを使って ppp over SIR で繋ぐことができました。Obi-Wan Kenobi とは 通信できませんが、すばらしいです。
sitescooperというのを 最近使っています.またこれをインストールするときに iSiloの linux 用コンバータを 発見しました.この iSilo ファイルってのは結構読みやすいです. 1枚もののページはこれで直接変換してしまったほうがはやいかも. 試しに Jargon File を変換しましたが いい感じです.
1枚ものでもなくてもリンクをたどって 1個の iSilo ファイルを生成して くれるようです.(2001-04-18 追記)
malsync というのがありこれを使うと Unix を使って同期ができます. ソースがついているのですが,NetBSDでは上手く動作させることが できていません.ので linux 用のバイナリをエミュレーションで 動かしています.
pppd で繋いで直接 MobileLink で同期させるという方法もあります. こちらだと SSL 使って接続可能です.
2001-09-14 追記。malsync 使っていても、直接つないでも SSL の ポート(443番)を使っています。なので暗号化は行なわれているのでは ないかと思います。バージョンはそれぞれ malsync version 2.0.4, AvantGo 4.0 build 941 です。
2002-01-10。最近はもっぱら Plucker を使っています。非常に見栄え がいいです。
Comments, suggestions, and donations are welcome.
Go to index page
Copyright (c) 1999-2003 IKEDA Shigeru. ALL RIGHTS RESERVED.
Last modified $Date: 2003/10/06 10:38:41 $