個人的に作成した Lynx にまつわる patch 類

このページは僕が個人的に作成した lynx 関係の patch をまと めています。利用に際しては条件を確認して下さい。 (といっても全く制限がないに等しい条件ですが。)

動作は

という環境で確認しています。もし他の環境でうまくいったと いう方がいたら連絡していただければ幸いです。

BACKGROUND 属性へのリンクを作成するための patch
image_links が有効になっているときに BODY タグの BACKGROUND 属性で 指定されているイメージがあれば [BACKGROUND] という ALT を表示して指定 されているイメージへのリンクを作成します。一応,Lynx2-6 + composite-patch へのパッチになっていますが,多分 Lynx2-6 でも 大丈夫だと思います。
追記:Lynx の source をみて一番最初に作った patch なのですが, 本質的に機能の改善には全く役に立っていません (^_^;) 大体の場合,BGIMAGE 属性で指定する画像はそれ自体が意味を持つ ものはほとんどないと言っていいからです。この patch は ある種の冗談だと思っていただければ幸いです :-)
slang-0.99.38 に対する patch
slang-0.99.38 では漢字(正確には1バイト目が0x80以上の文字)に対する処 理が加えられており,sl-feat.h で
#define SLANG_HAS_KANJI_SUPPORT 1
とすることで選択できます(0 にしておいても通常の表示では問題 はありませんが,popup 内でスクロールする場合に表示がおかしく なります)。 しかし,このままだと popup によるオプション選択で表示が乱れ るのでそれを修正するためのパッチです。slang では box の線を 引くときにその部分に ALT_CHAR フラグをたてています。これを利 用した判定にしているので,SJIS でもかなりきれいに表示されま す。(97/8/23 修正)
漢字コードを SJIS で利用する場合,もとのままだと2バイト 文字の入力がうまくいきません。 slgetkey.c のなかで 0x81-0x9F に相当するコード を強制的に変換しているためです。SLANG_HAS_KANJI_SUPPORT が 1 のときはこの操作を行なわないように変更しました。 (97/9/10 追記)

追記: slang0.99.38jp7.pat.gzをあてた slang でも EUC の表示は 正しくなります。他の slang アプリケーションを利用する人はこ ちらを使った方がよいでしょう。ただし,SJIS では表示が変になります。(97/8/22記)

LYCharUtils.c に 対する patch
title タグに日本語(多分中国語や韓国語でも)が含まれていると '=' で リンクの情報を表示したりブックマークへ文書を登録するときに文字化けを起 こす場合があります。これは LYEntify という関数がこれらの文字についての 処理をサボっているせいです。この patch では LYEntify で2バイト文字に対 する処理を追加しています。
追記:(言い訳ともいう ^_^;)JIS などのチェックに関してはあ さださんのコードをもとにした Lynx のコードをもとにしています。EUC や SJIS などは1バイト目が 0x80 から 0xff までに入っていたら強制的に2バイ ト読み飛ばすという邪悪な(^_^;;)処理を行なっています。(97/2/3 記)
追記その2:(この言い訳はどこまで続くのか...) コード判定を置き換えの時点のみにし,EUC や SJIS などの判定に HTCJK.h のルーチンを用いるようにしました。また, patch 自体も2-7-1に対するものにしました。このパッチは2-6および2-7 に対しても適用できることを確認しています。(97/4/30記)
bookmark ファイルまわりの patch
lynx2-6用(97/4/30)
lynx2-7-1用(97/4/30) (lynx2-7 に対しても適用できることを確認しています)
表示言語に日本語が選択されている場合にブックマークファイルへ内容を JIS コードで出力するためのものです。このパッチには上の LYCharUtils.c への patch が含まれています。
追記:LYCharUtils.c の patch に対する変更をこちら にも反映しました。(97/4/30記)
追記その2:最近の development code や FOTEMODS のコードでは bookmark file を作成するときに charset を示す META タグをヘッダにいれています。これをこのま まにしておくとおかしいので Display Character Set が JAPANESE のときは常に charset=iso-2022-jp とするような修正を施す予定 です。ちなみに FOTEMODS(8/17) に対する patch ではちゃんと修正していま す。 (97/8/18記)
FOTEMODS(8/17) に対する patch(97/8/18)
今までの bookmark まわりの patch に加えて以下の問題点を修正するものです。 何をやっているかはコードを見て下さい (説明するのが面倒なため ^_^;)。オリジナルの 2-7-1 と最近の fotemods および development version では,コードそのものがかなり変更されてい るため,以前の version に対してこの patch は適用できません。 (実際にオリジナルの 2-7-1 のコードにあてようとしたら 途中でこけました ;_;)
履歴および訪問リンクに関する patch
履歴ページおよび訪問リンクページの表示がおかしくなるのを 修正したものです。どうも日本語まわりではコード変換をちゃんと 行なっていないために起こる問題が多いような。
ac-0.57 に対する patch
FOTEMODS patch を development version の ac-0.57 に対して適用したものです。そのままだとちょっ とおかしかったので修正しました。
追記:これもずいぶん古くなってしまいまし た。development version は短期間でずいぶん変更されることがあ るので後を追いかけるのは大変です。
簡易エディタで2バイト文字を正しく扱うための patch
'97/8 版(LYStrings.c, LYForms.c について変更)
'98/3 版(LYStrings.c, LYStrings.h について変更)
Lynx のエディタは2バイト文字を扱うことを考慮していません。 そのため FORM で日本語を入力しようとするとうまくいかないこと があります。このパッチでは を2バイト文字についても正しく行なえるようにします。パッチを あてた後,Makefile の SITE_DEFS に -DSUPPORT_MULTIBYTE_EDIT を加えてコンパイルして下さい。加えない場合はもとの簡易エディ タの動作になります。
注意:一般に,8 bit through の curses が multibyte character を正しく扱うことは保証できないため, 操作のたびに強制的に画面の再描画を行なわせています。そのため, 通常は画面がちらつくようになっています。
multibyte charcter を正しく扱える curses を使う場合は SITE_DEFS に -DUSE_MULTIBYTE_CURSES を加えると画面の再描画を行なわないコードになります。 また,slang を利用する場合は sl-feat.h で SLANG_HAS_KANJI_SUPPORT を1にしてコンパイルした slang を利用して下さい(それ以外想定していない ^_^;)。
追記:僕が FORM への漢字入力が正常に行なえるのを確認しているのは という環境のみです。その他で「漢字入力ができたよ」という方が いたら連絡して下さい(97/9/25)。
追記2:最初に作ったものは LYStirngs.c と LYForms.c に対して修正を施したものでした。これは2箇所にほ とんど同じ修正を施すものだったので少しバカバカしくなって修正 箇所を変更したものを作りました。個人的にはずいぶん前から使っ ていますが特に不都合は無いようです(98/3/19)。
BACKGROUND 属性へのリンクを作成するための patch
2-6の BACKGROUND 属性へのリンク作成 patch を 2-7-1 に対 応するようにしたものです。冗談 patch その2です :-)
TEXTAREA の改行を CR LF で出力するための patch
Lynx は TEXTAREA の改行を LF (%0a) で出力します。しかし, RFC1866 を参照すると
character. Line breaks, as in multi-line text field values, are represented as CR LF pairs, i.e. `%0D%0A'.
とあります。このままではおかしいため,修正するための patch を作りました。といっても直しているのは GridText.c の2箇所だ けです :-)