Previous Contents Next
7.26 File name processing

7.26.1 absolute_file_name/2
[default]absolute_file_name/2@absolute_file_name/2|textbf7.26.1htoc
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[default]user@user7.26.1htoc 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.

7.26.2 decompose_file_name/4
[default]decompose_file_name/4@decompose_file_name/4|textbf7.26.2htoc
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.

7.26.3 prolog_file_name/2
[default]prolog_file_name/2@prolog_file_name/2|textbf7.26.3htoc
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[default]absolute_file_name/2@absolute_file_name/27.26.3htoc to check the existence of a file (section 7.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-2001 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