パスワードを忘れた? アカウント作成
13278933 story
Windows

「nul」という名称のRustパッケージ、Windowsユーザーに不具合を起こす 20

ストーリー by hylom
OSが変われば制約も変わる 部門より

Rust言語のパッケージマネージャ「cargo」で、とある開発者が「nul」というパッケージを作成してリポジトリにアップロードしたところ、Windowsユーザーがパッケージの更新を行えなくなるという不具合が発生したそうだ(本の虫)。

Windowsでは、「nul」というファイル名は利用できないことになっている。これは、「nul」というファイル名はUNIX/Linuxで/dev/nullに相当するnullデバイス(「空のファイル」に相当)として使われているためだ。今回の問題は、「nul」というパッケージがリポジトリに追加されたため、Windows環境においてパッケージ情報の更新の際に「nul」というファイルを作成しようとするも、このファイル名を持つファイルの作成は禁止されているためエラーとなり、リポジトリ情報の更新が行えなくなるというもの。

これを受けて、Cargoリポジトリで「nul」や「con」、「prn」などのWindowsでは利用できないファイル名を持つパッケージ名の使用を禁止するという更新が行われている。

  • by Anonymous Coward on 2017年05月12日 17時55分 (#3209787)

    Windows3.1の時代なら納得出来ただろうが、DOSも消えたというのにこんな盲腸みたいなものが残ってるのは不思議で不可解
    #errとかcomとかも駄目かな?

    ここに返信
    • by Anonymous Coward

      盲腸っつーか後方互換性でしょ
      .comも.scrも実行ファイル扱いだしそんなもんよ

      # 他OSで滅多に使われない単語なら兎も角、nulは流石に使う方がプログラマーとして駄目だろって思う

      • by Anonymous Coward

        ># 他OSで滅多に使われない単語なら兎も角、nulは流石に使う方がプログラマーとして駄目だろって思う

        null(L二個)ならともかく、nul(L一個)でそんなこと言われてもなあ。

        • by Anonymous Coward

          まあ、何時までそれ残すんだよ!ってのはあるね。

          でも、それよりは"/"がファイル名に使えないのにイラっとされる事が多い。
          1/6~6/6みたいに付けたいと。

          表示可能文字&文字列全てokならこんな事にはならんだろうが、階層表現が。。。

          • by Anonymous Coward

            それよりは空白文字がファイル名に使えてしまうのにイラっとする。

            お宝画像.jpg                            .exe

            を踏んでしまうから、というのは冗談で、
            コマンドライン引数にするのにいちいち二重引用符で囲わなければいけないから。

            • by Anonymous Coward

              保存用にprnフォルダを作ろうとして失敗するんですね。

          • by Anonymous Coward

            /はそもそも\(バックスラッシュ)と同じパス区切りの文字だからね。

            と言うかUNIXに合わせて/もパス区切りにしてあるんじゃなかったっけ?

        • by Anonymous Coward

          ># 他OSで滅多に使われない単語なら兎も角、nulは流石に使う方がプログラマーとして駄目だろって思う

          null(L二個)ならともかく、nul(L一個)でそんなこと言われてもなあ。

          俗に言うASCIIコードの定義とかだと0x00の名称はNULなんで、言語レベルの予約語になってることは少ないにせよ、紛らわしい名前は使うべきじゃないと思う

    • by Anonymous Coward

      半角カナの「デスクトップ」フォルダに作ったファイルが、
      UNIX環境に持っていって不具合起こしたのはいい思い出。
      #誰だよ、ディレクトリ名に「デスクトップ」なんて付けた奴は。「desktop」でいいじゃん

      • by Anonymous Coward
        c:\windows\筑集眺餅
      • by Anonymous Coward

        現行の Windows では Desktop ですね。
        むしろ、今は freedesktop.org 準拠のデスクトップ環境がホームに日本語ディレクトリを作ろうとする。

    • by Anonymous Coward

      ええっ?

      NULでも/dev/nullでもいいけど、ビットバケツって絶対必要だと思うんだけどなぁ。。。
      盲腸扱いって斬新すぎて目からうろこが剥がれ落ちそうで落ちない
      うろこがないから。

      • by Anonymous Coward

        \\.\Device\Null に書き込めるようにすればいいんだけどなそんなのは

    • by Anonymous Coward

      本当はNTFS廃止でそこらへんの後方互換性もばっさり来られる予定だったんですけどねぇ。

  • by Anonymous Coward on 2017年05月12日 18時00分 (#3209789)

    10年以上windows使ってるけど初めて知ったわ
    拡張子ついててもダメなんだな

    ここに返信
    • by Anonymous Coward
      ディレクトリがサポートされていな MS-DOS 1.0 での仕様なのだよな。
      MS-DOS 2.0 で階層ディレクトリがサポートされたが、デバイスファイルは、互換性として階層なしのファイル名だけで操作できるままになった。

      現代まで、その部分の互換を引き続いてる。
      機能は追加されたが削除されてないので、当時のバッチファイルが今でも動くのは、すごいことだけど、本当に必要なのかは疑問もあるな。
    • by Anonymous Coward

      20年使ってても知らないで済むことかもしれない

  • by Anonymous Coward on 2017年05月12日 18時02分 (#3209792)

    file:///c|/con/con/con

    ここに返信
  • by Anonymous Coward on 2017年05月12日 19時02分 (#3209830)

    言ってみただけ。

    ここに返信
typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...