mirror of
https://github.com/boostorg/build.git
synced 2026-02-16 01:12:13 +00:00
The problem with the previous implementation is that it would iterate over all elements in a dir even if 'pattern' had no metacharacters. First, that was slow -- if you handed /cygdrive/w/My Documents/boost/test/a.cpp to it, it would crawl all the way to the top, listing each directory and checking each file. Second, it would fail, because Cygwin is broken and does not show 'cygdrive' is the list of directory elements of '/'. Now we check if a pattern has metacharacters, and if not, just do a simple 'timestamp' call. The new glob is implemented as new 'GLOB-RECURSIVELY' builtin. I've decided to use builtin since otherwise, we'd need 'does this name exist' builtin, and if we need new builtin, why don't implement all globbing in core. [SVN r29163]
53 lines
2.0 KiB
C
53 lines
2.0 KiB
C
/*
|
|
* Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
|
|
*
|
|
* This file is part of Jam - see jam.c for Copyright information.
|
|
*/
|
|
|
|
#ifndef JAM_BUILTINS_H
|
|
# define JAM_BUILTINS_H
|
|
|
|
# include "frames.h"
|
|
|
|
/*
|
|
* builtins.h - compile parsed jam statements
|
|
*/
|
|
|
|
void load_builtins();
|
|
|
|
LIST *builtin_calc( PARSE *parse, FRAME *args );
|
|
LIST *builtin_depends( PARSE *parse, FRAME *args );
|
|
LIST *builtin_rebuilds( PARSE *parse, FRAME *args );
|
|
LIST *builtin_echo( PARSE *parse, FRAME *args );
|
|
LIST *builtin_exit( PARSE *parse, FRAME *args );
|
|
LIST *builtin_flags( PARSE *parse, FRAME *args );
|
|
LIST *builtin_glob( PARSE *parse, FRAME *args );
|
|
LIST *builtin_glob_recursive( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_subst( PARSE *parse, FRAME *args );
|
|
LIST *builtin_match( PARSE *parse, FRAME *args );
|
|
LIST *builtin_hdrmacro( PARSE *parse, FRAME *args );
|
|
LIST *builtin_rulenames( PARSE *parse, FRAME *args );
|
|
LIST *builtin_varnames( PARSE *parse, FRAME *args );
|
|
LIST *builtin_delete_module( PARSE *parse, FRAME *args );
|
|
LIST *builtin_import( PARSE *parse, FRAME *args );
|
|
LIST *builtin_export( PARSE *parse, FRAME *args );
|
|
LIST *builtin_caller_module( PARSE *parse, FRAME *args );
|
|
LIST *builtin_backtrace( PARSE *parse, FRAME *args );
|
|
LIST *builtin_pwd( PARSE *parse, FRAME *args );
|
|
LIST *builtin_update( PARSE *parse, FRAME *args );
|
|
LIST *builtin_search_for_target( PARSE *parse, FRAME *args );
|
|
LIST *builtin_import_module( PARSE *parse, FRAME *args );
|
|
LIST *builtin_imported_modules( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_instance( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_sort( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_normalize_path( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_native_rule( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_user_module( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_nearest_user_location( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_check_if_file( PARSE *parse, FRAME *frame );
|
|
LIST *builtin_python_import_rule( PARSE *parse, FRAME *frame );
|
|
|
|
void backtrace( FRAME *frame );
|
|
|
|
#endif
|