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

[mhc:00550] mhc-snap20000427.tar.gz



乃村です。久々の snap です。
眠い目を擦りながらやってるので、少々不安ですが、

  http://www.swlab.csce.kyushu-u.ac.jp/~nom/prj/mhc/mhc-snap20000427.tar.gz

からどうぞ。

* mhc-snap20000427 (2000-04-27)

・ mhc*.el
   + minor-mode convention に違反しているキーバインド 
     C-c> と C-c< を C-cn と C-cp に変更。
   + mew 対応でヘッダデコード等の強化
     (add-hook 'mew-message-hook      'mhc-misc-hdr-decode)
     が .emacs に必要に (mhc.el 中のコメント参照)

     Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxxxxxxxxxx>
     (And thanks to Mr. Shun-ichi Goto <gotoh@xxxxxxxxxxx>)

   + Gnus サポートの強化
     TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx>
     MIYOSHI Masanori <miyoshi@xxxxxxxxx>
   + 一部変数の defcustom 化
     TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx>
   + mhc-import の MUA との連携強化
     teranisi@xxxxxxxxxx (Yuuichi Teranishi/寺西裕一)
   + mew 向けのの設定方法を少し変更 

・ データベースのトランザクションログを取るようにした。
・ Ruby 側のライブラリを mhc 相当に (Record-Id 等の整備)
・ Note PC と sync を行うための mhc-sync を実験的に追加
・ palm2mhc に interactive option -i を追加


注意すべき変更は、C-c> と C-c< を C-cn と C-cp に変更したことと、
Mew ユーザは (add-hook 'mew-message-hook 'mhc-misc-hdr-decode)
を加えると幸せになれるという所でしょうか。

Gnus のパッチをちゃんと取り込めているか心配です。

ruby+ssh で Note PC と sync するための script mhc-sync を
実験的に加えました。使い方ですが、

0. notepc, server の 2台のマシンがあるとします。双方で
   mhc-sync, ssh が使えるようにしておきます。
   ruby-ext/lib もインストールしましょう。

1. 最初の時点で +schedule 以下はまったく同じにしておきます。
   例えば、notepc で rsync を使って、

    rsync -a --delete server:/home/nom/Mail/schedule/ /home/nom/Mail/schedule

    のようにしておきます。

2. notepc, server でいつも通りの操作をします。
   C-cm した後に、C-cC-c で finish するのを忘れないで下さい。
   (C-xC-s してセーブしないように)

3. どちらか一方のホストで、(たとえば notepc) 

     mhc-sync -client sync_id@xxxxxxxxxxxxxxxx

    のように実行すると、sync が行われます。

    sync_id というのは、2台の間で sync 履歴を管理するための
    識別名(合言葉) です。何でもいいですが、同じ 2台の組み合わせ
    で sync するときは、常に同じでないといけません。

    何が起こるかだけを見たい場合は、mhc-sync 中の $DRY_RUN を
    true にして実行してみて下さい。

・ ディレクトリが $HOME/Mail/schedule に固定です。
・ 引数チェックをあまり真面目にやっていません。
・ Windows でうまく実行できるかは不明です。glob 関係で 
   [0-9]*/[0-9]* とかやってる所が多分怪しい。

あ、古い mhc で作ったアーティクルには、X-SC-Record-Id がないもの
がありますので、rsync する前に全部に付けておきましょう。

以下のコマンド create_message_id で、
create_message_id ~/Mail/schedule/[0-9]*/[0-9]*/[0-9]*
とかやると付きます。intersect も忘れずに。

恐いから、遊ぶ前にバックアップは取りましょう。
--
nom

#!/usr/local/bin/ruby

$last_mid_rand = 'AAAA'
$last_mid_time = nil
$i = 0

$DOMAIN = 'set_your_domain'

def create_message_id(domain = $DOMAIN)
  mid_time = Time .now .strftime("%Y%m%d%H%M%S")
  mid_user = Process .uid .to_s

  if $last_mid_time && mid_time == $last_mid_time
    $i += 1
    $last_mid_rand .succ!
    mid_rand = $last_mid_rand
  else
    $last_mid_rand = 'AAAA'
    mid_rand = $last_mid_rand
    $i = 0
  end

  mid_rand += '-' + $$ .to_s
  $last_mid_time = mid_time
  return '<' + mid_time + mid_rand + '.' + mid_user + '@' + domain + '>'
end


while path = ARGV .shift
  file = File .open(path)
  contents = file .gets(nil)
  file .close

  if contents =~ /X-SC-Record-Id:/
    print "#{path} has X-SC-Record-Id: ignored.\n"

  else
    print "add  X-SC-Record-Id: to #{path}.\n"

    contents .sub!(/^/np, "X-SC-Record-Id: " +
		   create_message_id() + "\n")
    ##  contents .sub!(/\n\n/np, "\nX-SC-Record-Id: " +
    ##		 create_message_id() + "\n\n")

    file = File .open(path, "w")
    file << contents
    file .close
  end
end