freewrapで日本語


2004年08月12日

Tcl/Tk8.4.7

freewrap55をTcl/Tk8.4.7でコンパイルしました。なおこのサイトはwikiに移行中なので、ダウンロードは下のURLからアクセスしてください。
freewrapで日本語

Posted by reddog at 21:40

2004年04月02日

freewrap5.61を日本語対応しようと思ったけどやっぱやめた。

ソースを追いかけていて、コードがきれいになったという以外にあまり大きな変更点も無かったし、winicoが無くても全然問題無く使えているので、5.5ベースの今のままで別にいいじゃんという感じです。それにサイズが小さい方がいいので。期待してた人ごめんなさい。
サイズ縮小とか考えてモチベーションが下がってきたのですが、動くところまでは出来てますのでオリジナルの5.61のソースに対するパッチだけ出しておきます。
freewrap561src_jp.patch.zip

Posted by reddog at 00:33

2004年03月30日

freewrap5.61

他のプログラムを書くのに夢中になってるあいだに出てたみたいです。しかし弱りましたなあ・・・。ナニが弱ったかというと、このバージョンから全てのエンコーディングが付くようになったそうで、400Kもサイズが増えていることですよ。どうしたもんでしょうか・・・。パスの問題はまだ残ってるみたいなので追いかけないといけませんが、サイズを減らすために日本語環境以外のエンコーディングを消すという方法はぶっちゃけどうなんでしょうか。

ちなみに変更点は、1全エンコーディング追加 2WINICO復活 3ZIPと融合 4暗号化できなくなった 5TCL/TK8.4.6でコンパイルてな感じです。ちなみのちなみですが、ソースをDLしてw2kでmakeしたらZIP関連でリンクエラーになるんですけど・・・。勘違いでした(汗)

Posted by reddog at 12:50

2004年03月04日

freewrapを8.4.6で・・・

8.4.6でコンパイルしました。それ以外で変更点はありません。
freewrapGUI_20040304.zip(2.8M)

Posted by reddog at 21:54

2004年02月11日

バグ修正

プログラム
freewrapGUI_20040211.zip(2.8M)

ソース
freewrap_jp_20040211.zip(90K)

Posted by reddog at 01:57

2004年02月09日

というわけでソース

試行錯誤したコードの残骸とかそのままなんですけど・・・。いいよね・・・?今までソースを置いてなかったのは、こういうのを綺麗に整理したりコメントを(英語で)分かりやすく書いたり、変更箇所を明示したコメントを(英語で)書き直したりするのがとてもめんどくさいからだったんで、これで勘弁してください・・・。つーかmakefile汚すぎ。
freewrap_jp_src20040209.zip(90K)

Posted by reddog at 00:11

2004年02月08日

準備中

いまさらなのですが、韓国の人からソースくれとコメントされてたのに気が付いたので、ソースを準備してます。気が付かなくて一週間放置してたので、呆れてしまってもう見てないかもしれませんが・・・。

Posted by reddog at 22:25

2004年02月05日

エンコード関連の問題を再修正

freewrapはファイルをラップするのにzipを使ってるのですが、zip圧縮するときのパス名
zip -9 test.zip hogehoge/日本語/test.tcl
のように日本語名がパスに含まれていた時にアクセスできませんでした。というのは大抵の圧縮ツールはパス名をchar配列として受け取ったのをそのまま格納するので、shiftjis環境で圧縮された場合はshiftjisのまま、euc-jp環境で圧縮された場合はeuc-jpのままのパス名を保存しています。
こういう問題を今までデフォルトのエンコーディングをWindowsの日本語環境に合わせることで対応してきたのですが、ラップする環境と実行する環境が特定の同一環境でないといかんという所が気に食わないので少し変えました。今までfreewrapでやってたエンコード処理をOS(というかWIN32API)でするように変更したので今までcp932が必須だったのが、必須ではなくなりました。cp932でファイルを開いたり書いたりする場合には必要なので、今のとこデフォルトでラップしてますが、いずれ無くすかもしれません。ついでに他言語環境でも動くかも?環境が無いからよくわかりませんが・・・。
それからGUIを無駄にi18n化しました。英語が小学生レベルで恥ずかしい笑
freewrapGUI_20040205.zip(2.5M)

ファイルサイズがでかくなってますが、これはGUIじゃないfreewrapも添付することにしたためです。

Posted by reddog at 04:33

2004年01月20日

freewrapで日本語をGUI化してみた

freewrapで作った実行ファイルには幾つか欠点があります。ひとつはサイズがデカイと言う事で、もうひとつはアイコンを変えられないということです。プログラムの顔であり、作者の魂でもある(?)アイコンを変更できないのはアレである。というわけで、その欠点を補うべく改造をほどこしました。というよりmakeの処理の幾つかを切り出してるだけですが・・・。
アイコンとバージョン情報を変更できます。また、upxで圧縮できるオプションを付けました。圧縮すると、1.8Mくらいだった実行ファイルが0.8Mくらいになります。
あと、それにともなってパラメーターが増えて色々めんどくさいのでGUI化しました。

スクリーンショット
freewrapGUI_20040120.zip(1.7M)

Posted by reddog at 10:27

2003年12月18日

8.4.5でコンパイルした

ちゅーわけで、tclIOUtil.cを最新にしてコンパイルしたらとりあえず無問題でした。
freewrap_jp_20031217.lzh

Posted by reddog at 00:37

2003年12月17日

bag追跡その後

スタックトレースを何度か繰り返しているうちに、Tcl_FSAccess内で扱うpathObjPtr->internalRep.otherValuePtrの先が異常な値に書き換えられているということがわかりました。それでFsPathのnormPathPtrにファイル名、cwdPtrにディレクトリ名が格納されているようで、このメモリを監視しとけばとりあえずバグを特定できそうです。
と、思ってたらつい先ほどsourcefogeからメールが・・・。ファイルシステムでメモリリークっぽいバグをモニターしていたからなんですが、[ 839519 ] last cwd objPtr not releasedうーん、やっぱりそうなのかな・・・と。
と再びsourcefogeを見ると次のバグが追加されていました。

Tcl 8.4.5 cores with freewrap, mktclapp

やっぱり当たってたのか。しかし同じタイミングで出てくるとは。もう少しfreewrapのコンパイルに取り組むのを遅くすればよかった・・・。時間が無駄になってしまった・・・。

Posted by reddog at 23:56

2003年12月15日

freewrapを8.4.5で・・・

できないっ!!ファイルの新規作成でメモリリークっぽいエラーがでるっ!!
・・・さっそく8.4.5でコンパイルしなおしてみたんですが、うまく動きません・・・。問題の個所は
if {[catch {open $dest w} fout]} {
・・・
}
という単純なもので、openすると$destのファイルが無いとか言われるか、何も言わないで落ちるかです。今回のパッチリリースでfile join コマンドに手が入ったので、その辺が問題なのでしょう。事実、$destはfile joinで作ってて、そこを別のコードで置き換えると問題が無いので、当たってると思います。ただwishで実行すると問題が無いので、freewrapのリンクの仕方か、コンパイラオプションに問題があるのか、それともやっぱりtclのバグなのかなんかだと思いますが(まだよくわからない)、しばらくバグを探してみようと思います。

Posted by reddog at 02:13

2003年11月06日

freewrapで日本語[2]

大した変更ではないですが、オリジナルのfreewrapの実行ファイルにはバージョン情報とかのリソースが付いてないんですが、それに倣って修正しました。あと関連するライセンス文書を添付しました。
freewrap_jp_20031106.lzh
Posted by reddog at 00:15

2003年11月04日

freewrapで日本語[1]

恥ずかしいバグを取って改良して日本語がとりあえずまともに読めるようになってReadmeもまともなのを書いたので、何気に満足・・・。メッセージを日本語化しようとか思ってましたけど、めんどくさくなったのでやらないでいいですか?これは時間が空いた時に作業したいと思います。それよりもう少しソースの解析を進めてオリジナルなものを書けるようになりたいです。

Posted by reddog at 03:35

2003年10月31日

freewrapで日本語[0]

freewrapというのはTcl/Tkのインタプリタを抱き込んだ実行可能形式ファイルを作るツールとして有名ですが、日本語のパス名が通らないようなので、微妙に使い勝手がよくないよなあと常日頃から思っていたわけですが、最近組み込みTcl/Tkに興味が出てきて色々調べてたら、freewrapのソースも(ちょっとだけ)読む機会があったりして、問題の個所も大体把握できたりなんかしたので、日本語のパス名が通るように改造してみました。
日本語がファイルパスに含まれているとエラーで実行できないという点は、仮想ファイルシステムを作るTclインタプリタでの文字列がUTF-8だけど、windowsではsjisなのが原因のようで、ファイル名を変換して渡してやれば実行パスに日本語が含まれていても実行できます。
それから、ソースファイルの日本語が文字化けするという点ですが、マニュアルに、
sourceコマンドは常にISO8859-1エンコーディングを使ってファイルを読み込むので、Tclは半角文字 ( ユニコードにおいて00ページまでに位置する ) としてファイル内の各バイトを扱います。その結果 、Tcl文字列は予想される日本語の文字を認識するのではなく、その代りに本来の文字列の各バイトと対応するLatin-1文字の列として処理してしまいます。
と書かれています。これはこちらの方が8.4.1のマニュアルを日本語訳されたものです。それから8.4.4のマニュアルでは常にISO8859-1が用いられるという部分が、常にcurrent system encodingを用いるという風に書き直されています。freewrapは8.4.1なんで、そのあたりが問題なのかよくわかりませんが、大体この辺が問題なのは間違いないです。最初はエンコードごとになんとかしようと思ってましたが、めんどくさくなってラップ時にリテラル表現に変換するようにしました。まだ-eオプションでうまくできませんけど、-eオプションを付けないで暗号化する場合はうまく日本語のままラップできます。いずれ-eオプションでもできるようになります。(必ず)-eオプション付けてもできるようになりました。
ブツですが、freewrap5.5の最新版はTck/Tk8.4.1に対応してるようですが、最新の8.4.4を組み込んでみました。あと、cp932、euc-jp、shiftjisも組み込んだので、ちょっとだけ微妙にでかくなってます。ラップするときにはTcl/Tk8.4.4がインストールされてないと、うまく日本語の処理が扱えないかもしれません。Tcl/Tkがインストールされてなくてもラップできます。
いずれ、ちゃんと整備した形で配布したいと思いますが、めんどくさいんですよね・・・。めんどくさいからMovableTypeにしたんでした・・・。カテゴリ作ったのでこれでしばらく行きます。

Posted by reddog at 00:52