# PuTTY 0.60 ごった煮版

## 概要

PuTTY は、Simon Tatham 氏によって作成された、フリーの Win32 用 Telnet/SSH クライアントです。

hdkさんが公開されている日本語対応するためのパッチや、Aritaさんが公開されている「PuTTY を INIファイル対応にするパッチ」などを参考にして私の欲しい機能をごちゃ混ぜに取り込んだのがこのパッチです。
※ただしAritaさん作のパッチとはINIファイルの互換性がありません。

## ライセンス

このパッチにはPuTTY licenceが適用されます。

## ファイルの説明

putty-0.60-JP_Y.patch
  PuTTY 0.60でISO-2022による日本語入力・表示を可能にするため+αのパッチです。
  修正点:

- PuTTYのSubversionリポジトリからputty-0.60を指定して取得したソースに対して「PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ」を適用。
- PageantやPuTTYgenでもダイアログ等の日本語化が可能になるように修正。
- 元のパッチではkjpatchとjppatchに分かれていた箇所を*.lngで吸収できるように修正。
- 「PuTTY を INIファイル対応にするパッチ」を参考にINIファイルに設定を保存することもできるように修正。
- 「PuTTY を PortForwarder みたいにするパッチ」をあててコンパイルが通るように修正。
- pfwd.exeで接続が切れたときに自動的に再接続するように修正。
- pfwd.exeでエラーが発生したときにはメッセージをダイアログに表示するように修正。
- pfwd.exeの設定ファイルでいくつかの設定を省略可能に修正。
- pfwd.exeで接続時にはシェルを起動しないように修正。
- pageant.exeでパスフレーズをレジストリ、もしくはINIファイルに記憶できるように修正。
- pageant.exeで署名が要求された時にダイアログを出すように修正。
- 右Altを右Altのまま使う設定を追加。
- Altキーでメタビットをたてて送るパッチを適用、リジェクトされたところを手動でパッチ当てし、コンパイルが通るように修正。
- \(文字コード0x5cの文字)をそのまま(日本語フォントであれば円マーク)表示する設定を追加。
- PuTTY のウィンドウを Ctrl+Tab で切り替えられるようにするパッチを参考にCtrl+TABでPuTTYのウィンドウを切り替えられるようにする設定を追加。
  ※この設定をONにしているウィンドウだけが切り替え対象となります。
- コンソールウィンドウを表示しないplink、pinkw.exeを追加しました。
- PuTTY に対する背景透過パッチPuTTY JP XTransをマージしました。
- PuTTYのタイトルバーに表示するアイコンを指定できるようにしました。
- PuTTYごった煮版をインストーラーでインストールできるようにしました。
- コマンドラインオプションの先頭に-ini Iniファイル名と指定することで読み込むIniファイル名を指定できるように修正。
- ログの出力方式がPrintable outputだった場合に非ASCII文字でもUTF-8に変換して出力するように修正。
- Pageantで鍵の追加の際、パスフレーズ入力欄にフォーカスが移るように修正。
- その他細々とした修正。

puttyd.ico
  上記のパッチを適用したあとpfwd.exe/plinkw.exeを作成するために必要なアイコンです。
pageant.exe
putty.exe
puttytel.exe
puttygen.exe
pfwd.exe
plink.exe
plinkw.exe
pscp.exe
psftp.exe
  上記のパッチを適用して Microsoft Visual C++ 2005 Express Edition + Microsoft Platform SDK でコンパイルしたバイナリです。
pageant.lng
putty.lng
puttytel.lng
puttygen.lng
pfwd.lng
plinkw.lng
  ダイアログやメニューなどを日本語に変更するためのファイルです。
putty_sample.ini
  PuTTYの設定をINIファイルに保存するための設定が記述されたINIファイルです。
  INIファイルに設定を保存したい場合にはこのファイルをputty.iniという名前に変更してputty.exeと同じディレクトリに置いて下さい。
  ユーザー毎に設定を変えたい場合にはputty.exeと同じディレクトリではなく%USERPROFILE%\Application Data\PuTTYに置いて下さい。
  putty.exeと同じディレクトリにputty.iniが存在していればそちらが優先されますので注意して下さい。
pfwd_sample.ini
  pfwd.exeでポートフォワードする際に使用する設定のサンプルです。
  適宜変更して使用してください。
website.url
README.txt
LICENCE
putty.hlp
putty.cnt
putty.chm
  オリジナルのPuTTYのインストーラーでコピーされるファイルです。

## 再構築

1. PuTTYのSubversionのリポジトリ(svn://ixion.tartarus.org/main/putty-0.60)をチェックアウト、もしくはPuTTYのダウンロードページからputty-0.60のソースを取得して展開します。

Subversionのリポジトリからチェックアウト
  > svn co svn://ixion.tartarus.org/main/putty-0.60
putty-0.60のソースを取得
  > wget http://the.earth.li/~sgtatham/putty/latest/putty-0.60.tar.gz
  > tar zxf putty-0.60.tar.gz

2. putty-0.60-JP_Y.patchをソースを展開したディレクトリに、puttyd.icoを展開したディレクトリの下のwindowsディレクトリにコピーします。
3. putty-0.60-JP_Y.patchパッチを適用します。

  > patch -N < putty-0.60-JP_Y.patch
  ※リジェクトされたところがあれば適宜手動で適用してください。そしてできれば蛭子屋にその修正点を教えてください。

4. 各種の開発環境用ファイルを生成するためにmkfiles.plを実行します。

  > perl mkfiles.pl

5. お好みの開発環境でコンパイル、リンクします。

MS Visual C++(GUI)
  windows\MSVC\putty.dswを開いてビルド。
MS Visual C++(コマンドライン)
  > cd putty-0.60\windows
  > nmake /f Makefile.vc
cygwin
  > cd putty-0.60/windows
  > make -f makefile.cyg
Borland C++ Compiler
  > cd putty-0.60\windows
  > make -f makefile.bor

### ヘルプの作成

インストーラーでインストールするとPuTTYのヘルプもインストールされます。しかし、ヘルプ単独ではCVSでもPuTTYのダウンロードページでも取得できるようになっていません。

putty-0.60\docを見るとhalibutというツールを利用してビルドするようですが、このツールのバイナリは公開されていません。しかもビルドにはGNU make & gccが必要なようです。手元で試したところCYGWIN上でコンパイルできました。またヘルプの作成時にもGNU makeが必要なのでここではCYGWIN上で作業します。

1. halibutとcharsetをSubversionから取得

   > > svn export svn://ixion.tartarus.org/main/halibut
   > > svn export svn://ixion.tartarus.org/main/charset

2. halibutのビルド

   > > cd halibut
   > > make

3. PuTTYのヘルプのビルド

   > > cd ../putty-0.60/doc
   > > make

ただ、このMakefileでビルドしてもputty.chmファイルは作成されません。いったいどうやって作るんでしょう?

とりあえず、このアーカイブでは公開されているアーカイブからヘルプを抜き出して格納しておきます。

### インストーラーの作成

インストーラーの作成にはInno Setupというツールが必要です。 また、Inno Setupで日本語のインストーラーを作成するために日本語用の翻訳ファイルを翻訳ファイル置き場からダウンロードして{Inno Setupのインストール先}\LanguagesにJapanese.islとしてコピーする必要があります。 以下ではInno Setupがインストールされ日本語の翻訳ファイルもコピーされていることを前提としています。

また、インストーラーの作成にはヘルプファイルが必要です。ヘルプファイルをあらかじめ作成し、putty.hlp、putty.cntとputty.chmをputty-0.60\docにコピーしておいてください。

インストーラーを作成するにはputty-0.60\windows\putty.issをInno Setupで開いてコンパイルを実行します。コマンドラインからインストーラーを作成するにはISCC.exeというコンパイラを利用します。

> > ISCC.exe putty-0.60\windows\putty.iss /Fputty-0.60-installer.exe

Inno Setupについての詳細はInno Setupのヘルプを参照してください。 mystral_kkさんが日本語訳したものを公開されていますので、そちらもInno Setupの理解に役立つと思います。どうも閉鎖されたようです。 InnoEditXというInno Setupスクリプト作成ツールがあり、こちらであれば日本語で利用できますので理解しやすいと思います。

## 設定項目

詳しくはhdkさんの書かれたページを参照してください。

pfwd.exeについてはAritaさんの書かれたページを参照してください。 どうも閉鎖されたようです。pfwd.exeについてはpfwd_sample.iniに書かれているコメントを参考にしてください。

設定をINIファイルに保存するには、パッケージに付属のputty_sample.iniをputty.iniという名前に変更してputty.exeと同じディレクトリにコピーしてください。
逆に設定をレジストリに保存したい場合にはputty.exeと同じディレクトリにはputty.iniを置かないで下さい。既に存在していた場合には削除してください。

## 注意事項

このプログラムには暗号機能が含まれます。暗号ソフトウェアの輸出・輸入・利用に制限を設けている国もありますのでご注意ください。

## 連絡先

本パッチをあてた PuTTY についての連絡は 蛭子屋 双六 までお願いします。本パッチをあてた PuTTY に関する質問・バグ報告等は、オリジナルの作者である Simon Tatham さんや元となったパッチの作成者であるhdkさんやAritaさんへはしないようにしてください。

## 謝辞

高機能なTelnet/SSHクライアントであるPuTTYをソースまで公開してくださっているSimon Tatham さんに感謝します。

日本語化パッチを公開してくださっているhdkさんに感謝します。

便利な機能を追加するパッチを公開してくださっているAritaさんに感謝します。

## 更新履歴

2007-08-06
  pageantで生成する鍵のビット数がはみ出ていたのでダイアログサイズを大きくした。(指摘いただいたSummonさんに感謝)
  ClientAliveIntervalが指定されたサーバに接続中に設定変更ダイアログを表示していると切断されてしまうので、設定変更ダイアログ表示中にも通信への応答が実行されるように修正。
  Microsoft Visual C++ 2005 Express Edition + Microsoft Platform SDKでコンパイルするとデフォルトではprintfの書式文字列で%nを使っているとエラーになるため、エラーにならないように_set_printf_count_outputを呼び出すように修正。(指摘いただいた齋藤さんに感謝)
  コントロールのラベルにショートカット用のラベル("(X)"など)を付加する場合に元のラベルが短いとヒープを破壊する場合があったので修正。
2007-07-25
  未検証のコードが混入していたため削除。
2007-07-15
  hdkさんの0.60用パッチ2007年6月3日版に追随。
2007-05-10
  ベースを0.60+hdkさんの0.60用パッチに変更。
  Pageantで鍵の追加の際、パスフレーズ入力欄にフォーカスが移るように修正。(指摘いただいたhoさんに感謝)
2007-03-22
  pageant.exeで署名が要求された時に出すダイアログができるだけ全面に表示されるように修正。
  plinkw.exeで標準エラー出力が表示されていなかったバグを修正。
  plinkw.exeのコマンドラインオプションの先頭に-autoretryを指定して起動することで、接続が切れたときに再接続しに行くように修正。
  putty.exeでログの出力方式がPrintable outputだった場合に非ASCII文字でもUTF-8に変換して出力するように変更。
2007-03-11
  pageant.exeで署名が要求された時にダイアログを出すように修正。(503-505@Putty その２のパッチを参考にしました。505さんに感謝)
  pageant.exeでウィンドウ/ダイアログの親子関係が怪しかったので修正。
  pageant.exeで高負荷などでシステムトレイにアイコンが追加されない場合にはタイマーで追加するように修正。
  pageant.exeでIniファイルから設定を読み込みときに保存したセッションがソートされるように修正。
  コマンドラインオプションの先頭に-ini Iniファイル名と指定することで読み込むIniファイル名を指定できるように修正。
2007-02-06
  ビルド時にバージョン情報を指定し忘れていたので指定して再ビルド(指摘いただいたゆたかさんに感謝)
  リジェクトされていた部分をとりあえず適用(情報をいただいたyamkさんに感謝)
  日本語化できていなかった箇所があったので修正、日本語訳を追加。
  アイコンファイル指定がOKボタンなどに重なって見えにくくなっていたので「ウィンドウ/アイコン」カテゴリを新設し移動。
2007-01-26
  ベースを0.59に変更。
2005-10-13
  PuTTYごった煮版のインストーラーを作成しました。
2005-06-20
  PuTTYのタイトルバーに表示するアイコンを指定できるようにしました。
2005-05-20
  PuTTY に対する背景透過パッチPuTTY JP XTransをマージ。
  pfwdで部分的に日本語化できていない箇所があったので修正。
  追加した機能の設定画面用日本語化エントリがマージミスにより消えてしまっていたので復活。
2005-05-09
  hdkさんの0.58用パッチをマージ。
  加藤さんのパッチからputty.lngの一部をマージ。
2005-04-30
  フォントにTerminalを指定していると日本語文字が表示されていなかった件を修正。
2005-04-22
  ベースを0.58に変更。
  Ctrl+TABでの切り替えを有効にするチェックボックスをウィンドウ/振る舞いに移動。
  本家に取り込まれたと思われるパッチを除去。
2005-02-21
  ベースをセキュリティーホールへの対応が入った0.57に変更。
2005-01-07
  plinkwで出力に改行がない場合には改行しないように修正しました。
  plinkwでコマンドが終了したらログダイアログのタイトルが変化するように修正しました。
  plinkwでログをコピーできるように修正しました。
2004-12-28
  plinkwの出すパスワード/パスフレーズ入力ダイアログが入力文字列をマスクしていなかったので修正しました。
2004-12-12
  pinkwでログウィンドウが出た場合でもコマンド実行の終了後30秒後にはログウィンドウを自動的に閉じるように変更しました。
  ただし、ログウィンドウに対してマウス操作やキー操作を行った場合には自動的には閉じません。
2004-12-11
  pinkwで標準出力、標準エラー出力に出力があった時にウィンドウに表示するようにしました。
2004-12-09
  コンソールウィンドウを表示しないplink、pinkw.exeを追加しました。
2004-12-04
  pfwdでアクセス違反が起こる場合があったので修正。
  PuTTY のウィンドウを Ctrl+Tab で切り替えられるようにするパッチを参考にCtrl+TABでPuTTYのウィンドウを切り替えられるようにする設定を追加。
  PuTTY の WM_IME_NOTIFY メッセージの処理のバグを修正するパッチをマージ。
2004-11-27
  Pageantでパスフレーズを暗号化して記憶するように修正。
2004-11-21
  2004-11-20の修正ではIPv4形式のアドレス指定を正しく変換できていなかったので修正。
2004-11-20
  ポートフォワードの際にLISTENするアドレスがLOOPBACK固定になっていたのを修正。
2004-11-02
  PuTTY 0.56 + IPv6 patch10 + fix01をマージ。
  NT4で接続出来なくなってしまっていたのでとりあえず動くように修正。
2004-10-31
  PuTTY IPv6をマージ。
  PuTTY IPv6で増えたオプションによりダイアログが狭くなったので縦幅を広げた。
2004-10-27
  ベースをセキュリティーホールへの対応が入った0.56に変更。
  日本語化パッチのベースを0.55用に変更。
2004-10-22
  ここのページのリンクが0.54のままだったので修正。
  0.54のアーカイブについては削除しておきます。
2004-08-04
  ベースをセキュリティーホールへの対応が入った0.55に変更。
2004-04-02
  pfwdで接続が切れた後の再接続で不正アクセスとなる場合があったので修正
2004-03-11
  pfwdではiso2022の変換テーブルをリンクしないように修正。
  pfwdで入力したパスワード/パスフレーズが有効になっていなかったので修正
  pfwdでポートフォワードの設定が有効になっていなかったので修正
  pfwdでパスワード/パスフレーズが必要になったときにだけ入力ダイアログを出すように変更
2004-03-10
  pfwdのアイコンが消えることがあったので修正。
  pfwdの接続が切れたときにログを表示するように変更。
  pfwdの自動再接続を連続3回までに制限するように変更。
2004-03-07
  pfwdで何度も再接続を行うと"out of space for port forwardings"と出て接続できなくなっていたので修正。
2004-03-05
  \(文字コード0x5cの文字)を円記号で表示する文字セットEUC-JP-YENを追加。
  「右Altを右Altのまま使う」をオンにしていてもALTキーとして認識されない場合があったので修正
2004-02-23
  INIファイルの検索パスに%USERPROFILE%\Application Data\PuTTY\を追加。
  Altキーでメタビットをたてて送るパッチを適用。
  本家のCVSからいくつか変更をインポート。(patchはオリジナルからの差分になっているのでこの変更は含まれていない)
2004-2-19
  telnetで0.54への追随漏れがあったので修正。
  pfwd.lngの適用がうまくいっていなかったので修正
2004-2-17
  2chで指摘された件を修正
  レジストリに設定を保存する場合でPageantにパスフレーズを記憶させると無限ループに陥る場合があったので修正。
  右Altを右Altのまま使う設定を追加。
2004-2-15
  正式公開

蛭子屋 双六