Из стандарта POSIX :
Точка специального имени файла должна указывать на каталог, указанный его предшественником. Специальное имя файла точка-точка должно ссылаться на родительский каталог своего предшественника. В особом случае в корневом каталоге точка-точка может ссылаться на сам корневой каталог.
Так что, на самом деле, если вы хотите проверить, является ли имя файла, .
или ..
вам придется его вызывать IsDotOrDotDot()
, или, используя терминологию POSIX по разрешению имен путей IsPredecessorOrParentOfPredecessor()
, или, может быть, даже PointsToPredecessorOrParentOfPrecedessor()
... вы поняли идею. Проблема в том, что последняя терминология имеет смысл только при просмотре полных путей. Но никто не поймет этого в любом случае.
Учитывая это .
и ..
являются допустимыми именами файлов (просто интерпретируются по-разному), вы должны просто придерживаться того, что у вас есть, полагаясь на значение, а не на то, как они называются внутренне.