Templates
Description
absolute_file_name(File1, File2) succeeds if File2 is the absolute pathname associated with 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.
Templates
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.
Templates
Description
prolog_file_name(File1, File2) unifies File2 with the Prolog file name associated with File1. More precisely File2 is computed as follows:
This predicate uses absolute_file_name/2 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.