A Universal Naming Convention (UNC) path can be used to access network resources and is a null-terminated Unicode character string whose format is as follows:
\\<hostname>\<sharename>[\<objectname>]*
where:
<hostname> is the host name of a server or the domain name of a domain hosting resource; it may also be an IP address.
<sharename> is the share or the resource accessed.
<objectname> is the name of an object; this name depends on the actual resource accessed.
The notation "[\<objectname>]*" indicates that zero or more object names may exist in the path, and each <objectname> is separated from the immediately preceding <objectname> with a backslash path separator. In a UNC path used to access files and directories in an SMB share, for example, <objectname> may be the name of a file or a directory.
A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash.
> A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash. > スラッシュ2個で始まるパス名の解釈は実装依存である.とはいえ,2個以上連続する先頭のスラッシュは1個のスラッシュとして扱われるものとする.
4.3BSDくらいまでは,namei(カーネル注のパス名解析ルーチン)内で空ストリング("")は カレントディレクトリ("."と同じというのではなく,カーネル中のカレントディレクトリのinodeを指してるポインタ)として解釈されてました.
ls ""
は
ls .
と同じだし,
od -c ""
は
od -c .
と同じ.
a/b//c///
は
a/b/./c/././.
と同じ結果.
POSIXにもpathname resolutionの冒頭に「There may be multiple pathnames that resolve to the same file.」って書いてあったりします.
複数の連続するスラッシュは1個と同じ,って規定ですね.
誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
例えば
c:\WINDOWS\CONFIG\
というディレクトリがあるとする。これを
c:\WINDOWS\\CONFIG\
のように打ってもエラーにならず、
c:\WINDOWS\CONFIG\
と同じ扱いになる。しかしながら、
c:\\WINDOWS\CONFIG\
はエラーになる。もっと腐っていることに、2.2.1.4 UNC Path [microsoft.com]によると、
と書いてあるのだ。
じゃぁ、\\afo.machine\bfo\cfo\\* なんてので FindFirst2 とかやってきたら、はじけよっっ!! 特にCIFSではっっ!!!
どう見ても、アプリケーションがタコで、ディレクトリ指定で最後に\が付いているかも知れないときに、\の数を数えられないぐらい阿呆なプログラマが
「ないと心配なんで、何も考えずに \ 追加してみました」
ってやってるだけなんだからっっ。
こう、小さな親切大きなお世話な仕様のせいで、config ファイルの設定の仕方によってエラーが出たり出なかったり…テストと、バカ config をしかけた阿呆の再教育が大変なんだからっ!!!
fjの教祖様
Re: (スコア:0)
\ の数を数えさせる代わりに、PathAddBackslash() 関数を教えてあげてください。
Re: (スコア:0)
Re: (スコア:0)
>unix なら、/は区切り文字なので、 /a/b も、 //a////b も同じなので幸せですorz
ごくまれに、ファイル名に/を使ってくれるおっちょこちょいさんがいる。
さらに、ファイル名の頭に*を付けてくれるおバカさんもいる。
#見なかったことにしよう。
#「仕事の見える化」がみんなの幸せにつながるとは限らないから。
Re: (スコア:0)
ファイル名の頭に-をつけて消せないとわめくことも有りましたw
Re: (スコア:0)
僕のような似非Unixerにはありがたい対応です。
Re: (スコア:0)
先頭以外は等価だけど.
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
こういう訳で良いのかな?「 スラッシュ2個で始まるパス名の解釈は実装依存である.とはいえ,2個以上連続する先頭のスラッシュは1個のスラッシュとして扱われるものとする.」
Re: (スコア:0)
> 2個以上連続する先頭のスラッシュ
more than twoは3個以上です。2個以上はtwo or moreかな。
Re: (スコア:0)
> スラッシュ2個で始まるパス名の解釈は実装依存である.とはいえ,2個以上連続する先頭のスラッシュは1個のスラッシュとして扱われるものとする.
連続するスラッシュ2個で始まるパス名は実装依存で解釈されうるが、3個以上の先頭のスラッシュは(必ず)1個のスラッシュとして扱われる。
つまり
//a/b/c
の解釈は実装依存かもしれないが
///a/b/c
や
/////a/b/c
は
/a/b/c
と常に等しいということ
Re: (スコア:0)
Re: (スコア:0)
大した中身でもないのに。(笑)
#程度を知るって大事。
Re: (スコア:0)
大した中身ではないということは、少しの中身がある=少なくとも俺の訳は正しくてsaitoh訳よりいくらかはマシだということでいいんですね?安心しました(笑)
> #程度を知るって大事。
俺saitoh嫌いなんだよ。なんで様子見してたわけ。
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
Re: (スコア:0)
4.0では、path区切り'\'がエスケープ文字'\'と同じであるため、foo\\barと逐一エスケープしていたが、
5.0からfoo\barと端折った表現をしてた記憶があります。
それをみたとき、"hoo\tbar"は"hoo/tbar"なのか、"hoo<TAB>bar"なのかどうやって区別するんだろ?と
疑問に思ったものです。
元はといえば、言語処理系でエスケープ文字として多用される文字をpath区切りに採用した神経です。
階層化ディレクトリを採用したとき、スイッチ文字を'-'に変えときゃなんも問題にならないのに。
Re: (スコア:0)
Linuxも // が / 互換のようですけど。まさか教祖様が知らないはずないし。BSDも(少なくともFreeBSDは)同様みたいですね。SysV完全準拠のシステムとかだと違ったりするんでしょうか。
ちなみにMac OS 9以前は : と :: が明らかに違ったはず。
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
それは仕様が腐っている。
カレントディレクトリからでも root ディレクトリからでもかまわないが、
いくつかの ディレクトリを経由して、あるオブジェクトに到達する場合、そのパス名記述ルールは一意であるべきだ。つまり、/ → afo → bfo → cfo と手繰る場合に、
/afo/bfo/cfo
/afo//bfo/cfo
のどちらも許容するのは、パス名の一意決定性に反するのでよろしくない。もちろん、
/afo/./bfo/cfo
は OK だが、それは / → afo → . → bfo → cfo のように「別のパス」を手繰っているから。
fjの教祖様
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
ls ""
は
ls .
と同じだし,
od -c ""
は
od -c .
と同じ.
a/b//c/// は a/b/./c/././. と同じ結果.
POSIXにもpathname resolutionの冒頭に「There may be multiple pathnames that resolve to the same file.」って書いてあったりします. 複数の連続するスラッシュは1個と同じ,って規定ですね.
余談ですが,パス名が/で終わる場合のPOSIX/SUSの記述が揺れ動いたので,Solarisやlinuxの挙動がそれに引っ張られて妙なことになってます(した?).
Re: (スコア:0)
ここにぶら下げるべきか迷いましたけど、
文字コードで半角「円記号」を「バックスラッシュ」と同じ番地にしちゃうという実装法自体もアレですよね。
考えた当時はバックスラッシュがそんな重要な記号じゃなかったんでしょうか。
Re:誰が原因なのかは知らないが…\\ が \ 互換な Windows (スコア:1)
ここに繋ぐのもどうかと思うけど、昔のWindowsってC:\COM1なんて名前のファイルを作ると消せなくなって楽しかったよね。