12.3. FindFile
Purpose
This routine is used to search for include files, imported objects, configuration modules and templates.
Interface
$fullname = &FindFile($filename, $image);
Description
If filename is not found, fullname should be an empty string. If the file is found, the pathname of the file is returned, otherwise the empty string is returned. If image is true, a target-specific set of extensions is searched for, complete with implicit image format conversion.
Examples
The default implementation is:
sub FindFile { local($filename, $image) = @_; local($fullname); # Get the list of directories to search use Cwd; my @dirs = ('.'); my $dir = $var{'DOC_DIR'}; push(@dirs, $dir) if $dir ne cwd(); push(@dirs, @include_path, "$'sdf_lib/stdlib", $'sdf_lib); # Do the search if ($image) { my $context = $var{'OPT_TARGET'}; my @exts = @{$'SDF_IMAGE_EXTS{$context} || $'SDF_IMAGE_EXTS{'ps'}}; return &'NameFindOrGenerate($filename, \@dirs, \@exts, $context); } else { return &'NameFind($filename, @dirs); } }
In order to tightly integrate SDF with certain development environments, it is occasionally necessary to override this routine in a configuration module. For example:
!block script sub FindFile { local($filename, $image) = @_; local($fullname); # Search using our SCM $fullname = &'SearchSCM($filename, $image); # Return result return $fullname; } !endblock