From 68f49e9bdda60f5929cdb81ef3b455dedf24fa9d Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 24 Sep 2010 12:14:37 +0100 Subject: [PATCH] fix bsolute_file_name for directories (obs from Paulo Moura). --- docs/yap.tex | 4 +++- pl/consult.yap | 20 +++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/yap.tex b/docs/yap.tex index ca8679720..dcfb1c1d8 100644 --- a/docs/yap.tex +++ b/docs/yap.tex @@ -4469,7 +4469,9 @@ Defines extensions. Current mapping: @code{txt} implies @code{['']}, @code{['.so', '']}, @code{qlf} implies @code{['.qlf', '']} and @code{directory} implies @code{['']}. The file-type @code{source} is an alias for @code{prolog} for compatibility to SICStus Prolog. -See also @code{prolog_file_type/2}. +See also @code{prolog_file_type/2}. Notice also that this predicate only +returns non-directories, unless the option @code{file_type(directory)} is +specified, or unless @code{access(none)}. @item file_errors(@code{fail}/@code{error}) If @code{error} (default), throw and @code{existence_error} exception diff --git a/pl/consult.yap b/pl/consult.yap index ec3e0ee3a..d90a14d3c 100755 --- a/pl/consult.yap +++ b/pl/consult.yap @@ -834,12 +834,22 @@ absolute_file_name(File,Opts,TrueFileName) :- '$get_abs_file'(File,opts(_,D0,_,_,_,_,_),AbsFile) :- operating_system_support:true_file_name(File,D0,AbsFile). -'$search_in_path'(File,opts(Extensions,_,_,Access,_,_,_),F) :- - '$add_extensions'(Extensions,File,F), - access_file(F,Access). +'$search_in_path'(File,opts(Extensions,_,Type,Access,_,_,_),F) :- + '$add_extensions'(Extensions, File, F0), + '$check_file'(F0, Type, Access, F). '$search_in_path'(File,opts(_,_,Type,Access,_,_,_),F) :- - '$add_type_extensions'(Type,File,F), - access_file(F,Access). + '$add_type_extensions'(Type, File, F0), + '$check_file'(F0, Type, Access, F). + +'$check_file'(F, Type, none, F) :- !. +'$check_file'(F0, Type, Access, F0) :- + access_file(F0, Access), + (Type == directory + -> + exists_directory(F0) + ; + true + ). '$add_extensions'([Ext|_],File,F) :- '$mk_sure_true_ext'(Ext,NExt),