1mNAME0m
       filename - File name conventions supported by Tcl commands

1mINTRODUCTION0m
       All  Tcl  commands  and  C procedures that take file names as arguments
       expect the file names to be in one of three  forms,  depending  on  the
       current  platform.   On  each  platform, Tcl supports file names in the
       standard forms(s) for that platform.  In addition,  on  all  platforms,
       Tcl supports a Unix-like syntax intended to provide a convenient way of
       constructing simple file names.  However, scripts that are intended  to
       be  portable  should  not  assume  a  particular  form  for file names.
       Instead, portable scripts must use the 1mfile split 22mand  1mfile  join  22mcom-
       mands  to  manipulate  file  names  (see the 1mfile 22mmanual entry for more
       details).


1mPATH TYPES0m
       File names are grouped into three general types based on  the  starting
       point  for  the  path used to specify the file: absolute, relative, and
       volume-relative.  Absolute names are  completely  qualified,  giving  a
       path to the file relative to a particular volume and the root directory
       on that volume.  Relative names are unqualified, giving a path  to  the
       file  relative to the current working directory.  Volume-relative names
       are partially qualified, either giving the path relative  to  the  root
       directory  on  the current volume, or relative to the current directory
       of the specified volume.  The 1mfile pathtype  22mcommand  can  be  used  to
       determine the type of a given path.


1mPATH SYNTAX0m
       The  rules  for  native  names  depend on the value reported in the Tcl
       array element 1mtcl_platform(platform)22m:

       1mmac       22mOn Apple Macintosh systems, Tcl supports two  forms  of  path
                 names.  The normal Mac style names use colons as path separa-
                 tors.  Paths may be relative or absolute, and file names  may
                 contain  any  character  other  than  colon.  A leading colon
                 causes the rest of the path to be interpreted relative to the
                 current directory.  If a path contains a colon that is not at
                 the beginning, then the path is interpreted  as  an  absolute
                 path.   Sequences  of two or more colons anywhere in the path
                 are used to construct relative paths where 1m:: 22mrefers  to  the
                 parent  of the current directory, 1m::: 22mrefers to the parent of
                 the parent, and so forth.

                 In addition to Macintosh style names,  Tcl  also  supports  a
                 subset  of  Unix-like  names.   If a path contains no colons,
                 then it is interpreted like a Unix path.  Slash  is  used  as
                 the  path  separator.   The file name 1m. 22mrefers to the current
                 directory, and 1m.. 22mrefers to the parent of the current  direc-
                 tory.  However, some names like 1m/ 22mor 1m/.. 22mhave no mapping, and
                 are interpreted as Macintosh  names.   In  general,  commands
                 that  generate  file names will return Macintosh style names,
                 but commands that accept file names will take both  Macintosh
                 and Unix-style names.

                 The  following  examples  illustrate  various  forms  of path
                 names:

                 1m:              22mRelative path to the current folder.

                 1mMyFile         22mRelative path to a file named  1mMyFile  22min  the
                                current folder.

                 1mMyDisk:MyFile  22mAbsolute  path  to  a file named 1mMyFile 22mon the
                                device named 1mMyDisk22m.

                 1m:MyDir:MyFile  22mRelative path to  a  file  name  1mMyFile  22min  a
                                folder named 1mMyDir 22min the current folder.

                 1m::MyFile       22mRelative  path  to  a file named 1mMyFile 22min the
                                folder above the current folder.

                 1m:::MyFile      22mRelative path to a file named  1mMyFile  22min  the
                                folder two levels above the current folder.

                 1m/MyDisk/MyFile 22mAbsolute  path  to  a file named 1mMyFile 22mon the
                                device named 1mMyDisk22m.

                 1m../MyFile      22mRelative path to a file named  1mMyFile  22min  the
                                folder above the current folder.

       1munix      22mOn  Unix  platforms, Tcl uses path names where the components
                 are separated by slashes.  Path  names  may  be  relative  or
                 absolute, and file names may contain any character other than
                 slash.  The file names 1m. 22mand 1m.. 22mare special and refer to  the
                 current  directory  and  the  parent of the current directory
                 respectively.  Multiple adjacent slash characters are  inter-
                 preted  as a single separator.  The following examples illus-
                 trate various forms of path names:

                 1m/              22mAbsolute path to the root directory.

                 1m/etc/passwd    22mAbsolute path to the file named 1mpasswd 22min  the
                                directory 1metc 22min the root directory.

                 1m.              22mRelative path to the current directory.

                 1mfoo            22mRelative  path  to the file 1mfoo 22min the current
                                directory.

                 1mfoo/bar        22mRelative path to the file 1mbar 22min the directory
                                1mfoo 22min the current directory.

                 1m../foo         22mRelative path to the file 1mfoo 22min the directory
                                above the current directory.

       1mwindows   22mOn Microsoft Windows platforms, Tcl supports both drive-rela-
                 tive and UNC style names.  Both 1m/ 22mand 1m\ 22mmay be used as direc-
                 tory separators in either type of name.  Drive-relative names
                 consist  of  an optional drive specifier followed by an abso-
                 lute or relative path.  UNC paths  follow  the  general  form
                 1m\\servername\sharename\path\file22m.   In  both  forms, the file
                 names 1m. 22mand 1m.. 22mare special and refer to the current directory
                 and  the  parent  of the current directory respectively.  The
                 following examples illustrate various forms of path names:

                 1m\\Host\share/file0m
                                Absolute UNC path to a file called 1mfile 22min the
                                root  directory  of  the export point 1mshare 22mon
                                the host 1mHost22m.

                 1mc:foo          22mVolume-relative path to a file 1mfoo 22min the cur-
                                rent directory on drive 1mc22m.

                 1mc:/foo         22mAbsolute path to a file 1mfoo 22min the root direc-
                                tory of drive 1mc22m.

                 1mfoo\bar        22mRelative path to a file 1mbar 22min the 1mfoo  22mdirec-
                                tory  in  the current directory on the current
                                volume.

                 1m\foo           22mVolume-relative path to a file 1mfoo 22min the root
                                directory of the current volume.


1mTILDE SUBSTITUTION0m
       In  addition  to the file name rules described above, Tcl also supports
       4mcsh24m-style tilde substitution.  If a file name starts with a tilde, then
       the  file  name will be interpreted as if the first element is replaced
       with the location of the home directory for the  given  user.   If  the
       tilde  is  followed immediately by a separator, then the 1m$HOME 22menviron-
       ment variable is substituted.  Otherwise  the  characters  between  the
       tilde and the next separator are taken as a user name, which is used to
       retrieve the user's home directory for substitution.

       The Macintosh and Windows platforms do not support  tilde  substitution
       when  a  user  name follows the tilde.  On these platforms, attempts to
       use a tilde followed by a user name will generate an error.  File names
       that  have  a  tilde  without a user name will be substituted using the
       1m$HOME 22menvironment variable, just like for Unix.


1mPORTABILITY ISSUES0m
       Not all file systems are case sensitive, so scripts should  avoid  code
       that  depends  on  the case of characters in a file name.  In addition,
       the character sets allowed on different devices may differ, so  scripts
       should  choose  file names that do not contain special characters like:
       1m<>:"/\|22m.  The safest approach is to use names  consisting  of  alphanu-
       meric  characters only.  Also Windows 3.1 only supports file names with
       a root of no more than 8 characters and an extension of no more than  3
       characters.


1mKEYWORDS0m
       current directory, absolute file name, relative file name, volume-rela-
       tive file name, portability


1mSEE ALSO0m
