30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.4 Terms and definitions [fs.definitions]

30.10.4.11 normal form [fs.def.normal.form]

A path in normal form is said to be normalized.
The process of obtaining a normalized path from a path that is not in normal form is called normalization.
Normalization of a generic format pathname means:
  1. If the path is empty, stop.
  2. Replace each slash character in the root-name with a preferred-separator.
  3. [Note
    :
    The generic pathname grammar ([fs.path.generic]) defines directory-separator as one or more slashes and preferred-separators.
    end note
    ]
  4. Remove each dot filename and any immediately following directory-separator.
  5. As long as any appear, remove a non-dot-dot filename immediately followed by a directory-separator and a dot-dot filename, along with any immediately following directory-separator.
  6. If there is a root-directory, remove all dot-dot filenames and any directory-separators immediately following them.
    [Note
    :
    These dot-dot filenames attempt to refer to nonexistent parent directories.
    end note
    ]
  7. If the last filename is dot-dot, remove any trailing directory-separator.
  8. If the path is empty, add a dot.