というわけで [2005-11-22-1] 続き.どうも末尾 1 文字が落ちているっぽいという調査結果が報告されている.
しかし POP で取って来た場合になぜ大丈夫なのかはこれでは説明がつかない,とされている.
…いや,説明つくんじゃないかな.Mew が改行を LF にしてファイル保存しているからじゃない? というわけで改行を CRLF に変えてから開いてみると,無事開いた.
つまり,
というわけで,誰も悪くないみたい.強いて言うなら Mew のファイルを無理に eml だとして読み込んでいる私が悪いですかそうですか.
# ていうか eml 形式ってどこかにちゃんと定義されてるのかな
さてどうするか.あまり美しくないけど LF → CRLF 変換したテンポラリファイルをかますしかないかな気味.
#!/bin/sh tmpf=$1.$$.eml cleantmp () { /bin/rm -f /tmp/$tmpf exit } /usr/bin/sed 's/$/^M/' /cygdrive/v/Mail/inbox/$1 > /tmp/$tmpf /cygdrive/c/Program\ Files/Outlook\ Express/MSIMN.EXE "/eml:C:\\cygwin\\tmp\\$tmpf" cleantmp
さあ何かつっこみどころ満載のスクリプトが来ましたよ.
まずえーと,^M って書いてるところは CR (0x0d) なので注意.
次に,cygwin だからなのか何なのかわかりませんが,シグナルを trap しようとして「trap cleantmp INT」とか書くと,「trap: bad signal INT」とか言われちゃうので,シグナル処理はさっくり無視してます.何かの拍子にテンポラリファイルが残っちゃうかも知れないので注意.
あとですね,基本的動作としては,MSIMN.EXE (Outlook Express) を起動している行でそのまま MSIMN.EXE の終了まで待って,その後 cleantmp を呼んでテンポラリファイルを消す,というつもりなのですが,既に MSIMN.EXE が動いている状態でこれを呼ぶとこの行では止まらないので,cleantmp が即時呼ばれます.そのためタイミングの関係でごく稀にファイルを開き損ねます.これが気になる人は,どうしましょうね.cleantmp の前に
sleep 3
とでも書いときましょか.うわあ,だせえ.
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2012-02-13 02:02
* [Jeferson] Me dull. You smart. That\'s just what I ... (2013-07-03 13:53:09)