3: 2008-08-31 (日) 19:01:02 |
4: 2008-09-03 (水) 20:35:26 |
| -しかしjg01_で始まる関数であっても、将来にわたってソースレベルでのサポートはされます。つまりこのAPIをなくす場合は、同名のライブラリ関数を当方が用意します。これにより、再コンパイルするだけで仕様変更後のOSASK-HB上でもアプリを動かすことができるでしょう。しかしその場合も、これは一応動くというだけで、本来のAPIを使った場合に比べて処理速度が遅かったり、アプリのサイズが大きくなったり、セキュリティが不十分になったりすることがあります。 | | -しかしjg01_で始まる関数であっても、将来にわたってソースレベルでのサポートはされます。つまりこのAPIをなくす場合は、同名のライブラリ関数を当方が用意します。これにより、再コンパイルするだけで仕様変更後のOSASK-HB上でもアプリを動かすことができるでしょう。しかしその場合も、これは一応動くというだけで、本来のAPIを使った場合に比べて処理速度が遅かったり、アプリのサイズが大きくなったり、セキュリティが不十分になったりすることがあります。 |
| -アセンブラレベルではjunkなAPIは機能番号0x03ffffffのサブファンクションになっています。 | | -アセンブラレベルではjunkなAPIは機能番号0x03ffffffのサブファンクションになっています。 |
| + | *** -lc オプションについて |
| + | -efg01で-lcオプション(Lesser Compatible)をつけないと期待通りに動作しないAPIが存在します。主にファイルパスに関するものです。 |
| + | -たとえばファイルパスを(アプリ内で)フルパスで書こうとしたり、..で親に戻ろうとする回数が多すぎると、本来の「ぐいぐい01」ではエラーになります。またコマンドライン上ではどんなファイルも指定できますが、そのパスを入手しようとする行為はすべて「ぐいぐい01」では本来は許されないことです。 |
| + | -「ぐいぐい01」の作法で認められているのは、「コマンドラインで指定されているファイルをオープンしてくれ」などの要求であって、「コマンドラインの文字列をくれ」ではないのです。これにより、アプリはファイル名のエンコードやパスの長さに関するトラブルのすべてから開放される上、アプリはファイルパスという個人情報を得ることも阻止できます(どんなディレクトリ構成で使っているかなんてことは、部屋のレイアウトをどうするかに匹敵する個人情報だと[[K]]は思っている)。 |
| + | -フルパスや親に戻る行為が禁止されているのは、アプリがアクセスできる範囲をはっきりと限定するためです。本来は、ユーザがコマンドラインで指定したファイルやディレクトリ、およびアプリディレクトリのみにアクセス範囲が限定されるべきです。そうすれば、たとえファイルシステムにパーミッション管理などがなくても、システムはまず破壊されませんし、悪意あるウイルスのようなアプリからデータを盗み見られることもありません。もしファイルシステム全体にたいして何か作業をさせたいのなら、ユーザがコマンドラインでの対象ディレクトリにルートディレクトリを指定すればいいのであって、いつでも"/"から書き始めさえすればルートにアクセスできてしまうWin/Unixの仕組みは[[K]]にとっては悪い設計の例みたいなものです。 |
| + | -そうはいっても、Win/Unixからアプリを移植する場合、ファイルパスまわりの記述を全部「ぐいぐい01」の仕様に直すのは少々手間です。最終的にはちゃんと直すにしても、とりあえずコマンドラインの文字列が丸見えだったり、普通にフルパスで書いたりしたいかもしれません。そこで、そのようなことを許すモードをつけました。それが -lc オプションです。このオプションのおかげで、ユーザは「自分の今動かそうとしているこのアプリが危険な行為をした場合には自分に被害が及びかねない」ということを意識することができます。 -lc じゃなくても動くアプリこそ、本当の「ぐいぐい01」アプリです。 |
| + | -efg01を使ってアプリを起動する場合は、 >efg01 -lc アプリパス ... と書きます。OSASK-HBなど、「ぐいぐい01」をネイティブでサポートするOSでは、 >-lc アプリパス ... と書きます。 |
| + | -なお、 -lc をつけないと動かないアプリは、原則としては「川合秀実推奨」はつきません。しかし例外として、代替機能を有するアプリが他に無い間は、やむなく推奨することもあります。 |