Previous Contents Next
6.26 File name processing

6.26.1 absolute_file_name/2

Templates

absolute_file_name(+atom, atom)
Description

absolute_file_name(File1, File2) succeeds if File2 is the absolute pathname associated to the relative file name File1. File1 can contain $VAR_NAME sub-strings. When such a sub-string is encountered, it is expanded with the value of the environment variable whose name is VAR_NAME if exists (otherwise no expansion is done). File1 can also begin with a sub-string ~USER_NAME/, this is expanded as the home directory of the user USER_NAME. If USER_NAME does not exist File1 is an invalid pathname. If no USER_NAME is given (i.e. File1 begins with ~/) the ~ character is expanded as the value of the environment variable HOME. If the HOME variable is not defined File1 is an invalid pathname. Relative references to the current directory (/./ sub-string) and to the parent directory (/../ sub-strings) are removed and no longer appear in File2. File1 is also invalid if it contains too many /../ consecutive sub-strings (i.e. parent directory relative references). Finally if File1 is user then File2 is also unified with user to allow this predicate to be called on Prolog file names (since user in DEC-10 input/output predicates denotes the current input/output stream).

Most predicates using a file name implicitly call this predicate to obtain the desired file, e.g. open/4.

Errors

File1 is a variable    instantiation_error
File1 is neither a variable nor an atom    type_error(atom, File1)
File2 is neither a variable nor an atom    type_error(atom, File2)
File1 is an atom but not a valid pathname    domain_error(os_path, File1)

Portability

GNU Prolog predicate.

6.26.2 decompose_file_name/4

Templates

decompose_file_name(+atom, ?atom, ?atom, ?atom)
Description

decompose_file_name(File, Directory, Prefix, Suffix) decomposes the pathname File and extracts the Directory part (characters before the last /), the Prefix part (characters after the last / and before the last . or until the end if there is no suffix) and the Suffix part (characters from the last . to the end of the string).

Errors

File is a variable    instantiation_error
File is neither a variable nor an atom    type_error(atom, File)
Directory is neither a variable nor an atom    type_error(atom, Directory)
Prefix is neither a variable nor an atom    type_error(atom, Prefix)
Suffix is neither a variable nor an atom    type_error(atom, Suffix)

Portability

GNU Prolog predicate.

6.26.3 prolog_file_name/2

Templates

prolog_file_name(+atom, ?atom)
Description

prolog_file_name(File1, File2) unifies File2 with the Prolog file name associated to File1. More precisely File2 is computed as follows:

This predicate uses absolute_file_name/2 to check the existence of a file (section 6.26.1).

Errors

File1 is a variable    instantiation_error
File1 is neither a variable nor an atom    type_error(atom, File1)
File2 is neither a variable nor an atom    type_error(atom, File2)
File1 is an atom but not a valid pathname    domain_error(os_path, File1)

Portability

GNU Prolog predicate.


Copyright (C) 1999,2000 Daniel Diaz

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

More about the copyright
Previous Contents Next