Quantcast
Channel: All Open Tickets - Tera Term on OSDN
Viewing all articles
Browse latest Browse all 2128

TTXBind()関数の引数 Version の仕様 - Tera Term Ticket #44436 on OSDN

$
0
0

TTXBind()関数の引数 Version の仕様

Eröffnet am: 2022-04-22 07:57

Letztes Update: 2022-05-13 06:52

Auswertung:tomo3136Verantwortlicher:(Keine)
Priorität:5 - MittelMeilenstein:(Keine)
Typ:FunktionsanfragenSchweregrad:5 - Mittel
Komponente:Tera TermStatus:Offen
LösungKeine

Einzelheiten

TTXプラグイン登録時 TTXBind() 関数呼び出しの引数 Version は以前から 23 となっている。
特に意図していないなら Teraterm Pro version 2.3 を指す?23ではなく、動作するTeratermのバージョンを指定してもよいのではないでしょうか。

Letzte Aktualisierung für dieses Ticket

2022-05-13 06:52 Aktualisiert von: tomo3136

Kommentar

そうですね。お作法は破られていますね。

お作法通り、追加するなら一番最後とするのが下位互換性を保てて良いかと思いますが、v4.xx の間にも何度か構造体のバイナリ互換性は失っています。

「Tera Term 5 について」https://ttssh2.osdn.jp/manual/5/ja/usage/migrate_to_5.htmlにて、

最後の行に「まだ変化する予定(メンバ名、順序、サイズ、型などなど)。」とあるので、

パス名が固定長配列から動的配列に移行したり、今後も構造が変わり、バイナリ互換性は失うと推測されます。

考え方を変え、お作法守るよりは、ビルドは最新のみとし、できるだけ下位互換性を得られるように

構造体のマッピング変換機能を持たせるようにしてみました。

テスト用のプラグインのソースコードを添付します。(TTXTest_TTTypes.zip)

tttypesフォルダは ttxversion_db.h のジェネレータ
TTXBind()で実行バージョンを登録し、TS()マクロやCV()マクロを使用して実行バージョンに合った構造体でアクセスします。
ついでに、TTXBind()で構造体にメンバが無ければプラグインを使用しないようにしています。

配列サイズが異なったり、細かい個別案件はあるものの 8 割くらいは、下位互換性を持たせられると思います。

v5.0 でビルドしたプラグインを v2.3 の環境にもっていってもボーレートの値 (ts->Baud) を取得できます。

プラグインが使用する構造体のメンバーは通常ほんの一部しかないのと思うので、プラグインの下位互換性を考慮して

構造体の変更にブレーキをかけるよりは、健全かなと思います。

構造体のバイナリ互換をあまり気にしなくなっても、大きく変更したらやはり互換性を保てなくなるので なんでもできるわけではないのですが。。。


Viewing all articles
Browse latest Browse all 2128