1.98をリリースする
バージョン番号は1.98、リソース形式のバージョンは1.98.0.0で構いません。これに合わせてドキュメント類やリソースを修正していきたいと思います。
お手数ですが、現時点のtestブランチをVS2005でビルドできるか、また正常に動作するかを確認していただけませんか?
1.98のドキュメント類の整備が完了しました。 リリース用のファイル構成はPackageディレクトリ内にありますので、著作権情報の不備やライセンス抵触等が無いか確認をお願いします。
Packageディレクトリ内にはOpenSSL(FTPSの使用に必要)やVisual C++ 2008ランタイム(OpenSSLが使用)が同梱されていますが、Visual C++ 2008ランタイムを同梱しない場合は"Microsoft.VC90.CRT.manifest"、"msvcr90.dll"の2ファイルを、OpenSSLを同梱しない場合は前述のものに加えて"libeay32.dll"、"ssleay32.dll"の合計4ファイルをリリース時に削除してください。
いまざっとコードレビューをしているのですが、mbswrapper.c内で定義しているマクロ
#define START_ROUTINE do{ #define END_ROUTINE }while(0);end_of_routine: #define QUIT_ROUTINE goto end_of_routine;
はどのような意図で使っているのでしょうか? QUIT_ROUTINEマクロは使われておらず、大量のwarningが出ています(end_of_routineラベルを使っていないので、その部分でwarningが大量に出る)。
hiromichi-m への返信
いまざっとコードレビューをしているのですが、mbswrapper.c内で定義しているマクロ {{{ #define START_ROUTINE do{ #define END_ROUTINE }while(0);end_of_routine: #define QUIT_ROUTINE goto end_of_routine; }}} はどのような意図で使っているのでしょうか? QUIT_ROUTINEマクロは使われておらず、大量のwarningが出ています(end_of_routineラベルを使っていないので、その部分でwarningが大量に出る)。
gotoがあると読みづらいので、gotoを直接使わずにエラー時にQUIT_ROUTINEでEND_ROUTINE直後のメモリ開放を行うためです。例外を受け取らないtryとfinallyのようなものです。
当初、実はQUIT_ROUTINEはbreak;だったのですが、これだと入れ子になったwhileから脱出できないためgotoに変更し、doとwhile(0)は不要になったのですが、whileでないループ内でうっかりbreakを使ってしまった時にデバッガがコードを追えなくなってしまうため、念のためそのまま残しておいたというものです。
私が便宜上使っているだけですので、今後mbswrapper.cにAPIを追加する場合はこれらを使わなくても構いません。
念のため書いておきますが、mbswrapper.c内の// TODO:で始まるコメントは、呼び出し元で変数がNULLにされている、サイズ未指定でも最低限の容量を上回るバッファが用意されている、UTF-16変換時にサロゲートペアが必要な文字列が指定されない等、現状では未実装でも問題無いはずです(実装しても無意味です)。
日本語版インストーラ、英語版インストーラ、日本語版ZIP、英語版ZIPを作成しました。インストーラなどの設定は1.97bのものに合わせてありますので、特に問題が無ければPackageディレクトリ内の4ファイルをそのまま公開可能です。致命的なバグ等が無ければこれで1.98を凍結したいと思います。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=df6e9e760b3ddf852a924a1384be37ae6993f350
Windows 2000 Professional SP4、XP Professional SP3、Vista Home Premium SP2、Vista Business x64 SP2、7 Professional x64で動作確認を行いました。従来通り動作環境は2000、XP、Vista、7として良さそうです。
英語版の説明書などを追加し、パッケージを作り直したので、前のコメントは削除しました。
現在の1.98ブランチに致命的なバグが見つかったため、数日中に既にバグが修正された最新のtestブランチで1.98を上書きします。
正式リリースはもうしばらくお待ちください。
私のほうでもいくつかテストして(ローカルで)ドキュメントとインストーラに細かい修正を入れていますのでコミットしておきます。
Testブランチのほうは現行1.98ブランチに入っているもののバグ修正以外に機能追加はありますでしょうか? 機能追加に関してはフリーズしているので、バグ修正のみをコミットする方針で。とりあえずTestブランチにバグ修正を入れたらご連絡ください。
hiromichi-m への返信
私のほうでもいくつかテストして(ローカルで)ドキュメントとインストーラに細かい修正を入れていますのでコミットしておきます。 Testブランチのほうは現行1.98ブランチに入っているもののバグ修正以外に機能追加はありますでしょうか? 機能追加に関してはフリーズしているので、バグ修正のみをコミットする方針で。とりあえずTestブランチにバグ修正を入れたらご連絡ください。
testブランチは既にMLSDコマンドによるファイル一覧の取得や信頼できないDLLの読み込みを防ぐ機能を追加で実装しているため、1.98ブランチにtestブランチからバグ修正分だけを抜き出して追加するという形を取らせていただきました。
バグ修正と書き忘れていたコード(文字コードが自動の時にFEATとOPTS UTF8 ONを送るのを忘れていた)をtestブランチから抜き出して1.98にコミットしました。機能について仕様上は直前の1.98のコミットと変化はありません。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=c7302e73116a393e9a99f940d26b4c2bbe944f3e
私のほうの変更も加え、パッケージを作成して「テスト版」としてアップロードしました。 こちらで問題がないようでしたら、正式に1.98としてのリリースを行いたいと思います。
http://sourceforge.jp/projects/ffftp/releases/?package_id=12525
hiromichi-m への返信
私のほうの変更も加え、パッケージを作成して「テスト版」としてアップロードしました。 こちらで問題がないようでしたら、正式に1.98としてのリリースを行いたいと思います。 http://sourceforge.jp/projects/ffftp/releases/?package_id=12525
ありがとうございます。EXEpress用のファイルの準備の自動化は便利ですね。
しかしいくつか問題がありましたので下記の内容を後でコミットしておきます。
配布するコンパイル済みのファイルには関係ありませんが、ソース類に問題があります。
不要なファイルもマージされているようです。
書き忘れました。 "Microsoft.VC90.CRT.manifest"がありません。Windows XPとVistaでVCランタイムを別途にインストールする必要が出てしまいます。インストールされている場合は新しいバージョンが読み込まれますが、インストールされていない場合はこのファイルが無いと"msvcr90.dll"が見つからない扱いになります。Windows 7では標準でインストールされているため"msvcr90.dll"は不要です。Windows 2000ではマニフェストが無視されるため、自動的に"msvcr90.dll"が読み込まれます。
修正ありがとうございます。
私の環境ではXPにクラシックスタイルを適用しているためか、動作には関係ありませんが、無効なボタンのうち直前に押されていたものだけ色が付いたり等、ツールバーの表示が少しおかしいです(TBSTYLE_FLATが原因か?)。
の個所ですが、当方のXP環境(SP3)ですとこのような挙動は見られないようです。
1.98ブランチの最新コミット+ツールバーにTBSTYLE_FLATを入れたものでパッケージを更新しましたので、このパッケージで確認をしていただいてもよろしいでしょうか?
サーバにコミットがプッシュされていないようですが、TBSTYLE_FLATを入れなおしただけならば私の方からは何も報告することはありませんので、正式リリースで良いと思います。
私が使用しているXPにはかなり多くのアプリケーション(しかもシステムレベルに近いものが多い)がインストールされているため原因は定かではありませんが、デバッグ用の仮想環境(2000、Vista x86)や他の実環境(Vista x64、7 x64)では問題ありませんでしたので、恐らくこのXP固有の問題でしょう。
個人的な事情で作業が滞っておりましたが、1.98をリリースしました。
1.98をリリースする。タスクは下記: