DDN を排除する処理の追加 ― 2005年11月25日 15時20分44秒
Windows 環境では、DDN (DOS Device Name) のファイルを mknmz で処理すると不具合が生じる可能性が高いので、これを排除するようにしました。
http://support.microsoft.com/kb/256015 によると、標準的なデバイス名は以下のものとなります。
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 で取得する方法はやめました。
また http://www.samba.gr.jp/ml/article/samba-jp/msg09345.html によると、標準とみなせるデバイス名はもっと多いのですが、これらについては $DENY_DDN に利用者の方が追加していただくことで対応可能なので、デフォルトにはしていません。
コメント
トラックバック
このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2005/11/25/154840/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。


コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。