2004年01月19日

sqwebmail 3.6.0用日本語対応パッチ20040119版

現在の最新版は3.6.2であるが、3.6.0をもとに開発を行ったパッチを公開する。
このパッチにより、Webブラウザの表示にはutf-8が用いられ、転送されるメールにはiso-2022-jpが用いられるようになる。
今回の公開はフィードバック収集のためのものであり、パッチファイルには開発用のコメントやコードが混入している。再配布は薦められない。不具合報告、コメント、意見、コードを待ってます。

sqwebmail 3.6.0用日本語対応パッチ20040119版

sqwebmail 3.6.0

パッチの使い方を説明する。
tarballを展開後にpatchコマンドで変更を適用する。
そして、configureコマンドで--enable-unicodeオプションを指定する。
その他は通常のインストール同じ。

例えばRedHat8で、パッチファイルの適用とインストールの方法は次のようになる。
詳細は、付属のINSTALLファイルを参照のこと。
% tar xvfj ~/sqwebmail-3.6.0.tar.bz2
% patch -p0 < /path/to/sqwebmail_japanese_20040119.patch
% cd sqwebmail-3.6.0
% ./configure --enable-unicode
% make
# make install-strip
# make install-configure
# /usr/local/share/sqwebmail/libexec/authlib/authdaemond start
URL: http://localhost/cgi-bin/sqwebmail

PATCHの内容について

cgi.c:
cgiurldecode()
0xA0を空白文字とみなして行う処理を除去

folder.c:
showtextplain()
Preview時に文字コード変換を行う関数を利用するように変更

newmsg.c:
newmsg_header()
headerを表示する時に、文字コード変換を行う関数を利用するように変更
newmsg_showfp()
メール本文入力用フォームを初期文字列を設定する時に、
文字コード変換を行う関数を利用するように変更

newmsg_create.c:
create_draftheader_do()
送信用メールのheader部分を作る時に、
文字コード変換とMIME符号化を行う関数を利用するように変更
newmsg_createdraft_do()
送信用メール(Draft)のメール本文を作る時に、
sqwebmail_outgoing_charset文字コードに変換するように変更
lookup_addressbook()
アドレス帳参照部で一旦MIME符号化を復号する時に、
文字コード変換を行う関数を利用するように変更
newmsg_createsentmsg()
送信用メール(Sent)のメール本文を作る時の、
headerの文字コード表示をsqwebmail_outgoing_charsetに変更

rfc2047.c:
do_enhanced_new()
count_enhanced()
save_enhanced()
rfc2047_decode_enhanced_new()
rfc2047_print()
rfc2047_encode_header_do()
a_rfc2047_encode_str()
rfc2047_encode_header()
rfc2047_encode_header_new()
a_rfc2047_encode_str_new()
rfc2047_addr_encode_callback()
rfc2047_encode_str_new()
is_rfc2047_text_encode()
is_rfc2047_text_delimit er()
rfc2047_text_encode_callback()
get_next_a_character_length()
rfc2047_encode_callback_new()
is_phrase_q_encode()
is_comment_q_encode()
is_text_q_encode()
encode_quoted_printable()
encode_base64()
headerをMIME符号化する場合に、文字コード変換を行うように変更
表示用の文字コードと転送用の文字コードを別々に扱えるようにした

rfc2047.h:
rfc2047_decode_enhanced_new()
rfc2047_encode_str_new()
rfc2047_encode_callback_new()
rfc2047_encode_header_new()
get_next_a_character_length()
前記関数の宣言

rfc2646create.c:
rfc2646create_alloc()
メール本文を自動改行する長さを、76文字から997文字に変更
自動改行すべきかどうかを含めて、今後修正が必要

rfc2646reply.c:
fillreply()
返信用フォームのメール本文を作成する時に、
改行が多byte文字を壊してしまわないように変更
現在、文字コードがutf-8であると仮定しているが、今後修正が必要
また、改行までの長さについても検討の余地がある

rfc822.c:
tokenize()
修正の痕跡があるが、変更していない
parseaddr()
RFC2047に従って、"="と"?"をheader内で単純な文字として扱うように変更
rfc822_print_common()
前記修正にあわせて関数の型を変更

rfc822.h:
rfc822_print_common()
前記関数の宣言

sqwebmail.c:
sqwebmail_outgoing_charset
転送用メールの文字コードを指定する変数を新設
"iso-2022-jp"に固定しているが、今後言語によって設定できるように修正が必要
既にある表示用の文字コードを指定する変数sqwebmail_content_charsetと同様にする

以上、パッチの内容について。