Windows 環境では、DDN (DOS Device Name) のファイルを mknmz で処理すると不具合が生じる可能性が高いので、これを排除するようにしました。
[URL] によると、標準的なデバイス名は以下のものとなります。
CON、AUX、NUL、PRN、LPT1 〜 LPT4、COM1 〜 COM4、CLOCK$、XMSXXXX0
pl/conf.pl.in に標準的な DDN の内容
$DENY_DDN = "con|aux|nul|prn|lpt[1-9]|com[1-9]|clock\$|xmsxxxx0";
を追加しました。 (LPTX, COMX に関しては、拡張ボードを追加することで9まで使用していることも多いため、9までにしました。)
利用環境に応じてmknmzrcをカスタマイズすることで、デバイス名の追加/修正ができます。
これは、 「DOS デバイス名は、アプリケーション開発メーカーが独自に作成し 予約語にできるものです。」 ということで、全ての DOS デバイス名を把握することは不可能なためです。
なお、QueryDosDevice で実行環境のDDNを取得できるのかと思いましたが、ちょっと違うようなので、API で取得する方法はやめました。
また [URL] によると、標準とみなせるデバイス名はもっと多いのですが、これらについては $DENY_DDN に利用者の方が追加していただくことで対応可能なので、デフォルトにはしていません。
セコメントをする