diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2016-11-10 00:26:54 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2016-11-15 16:46:10 +0300 |
commit | a7efabf301f23364ac2335c80c5e1e712bc43204 (patch) | |
tree | dded192f09627702bc8e0566c5c6032825d6920c /build2/test/script/builtin | |
parent | 05b1d9e89a94ee5594168073b8dc363fada987f1 (diff) |
Add cat, false and true builtins
Diffstat (limited to 'build2/test/script/builtin')
-rw-r--r-- | build2/test/script/builtin | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/build2/test/script/builtin b/build2/test/script/builtin index e3c16b3..bd5fe50 100644 --- a/build2/test/script/builtin +++ b/build2/test/script/builtin @@ -5,11 +5,11 @@ #ifndef BUILD2_TEST_SCRIPT_BUILTIN #define BUILD2_TEST_SCRIPT_BUILTIN +#include <map> + #include <build2/types> #include <build2/utility> -#include <map> - namespace build2 { namespace test @@ -18,21 +18,26 @@ namespace build2 { class scope; + // Start builtin command. Throw system_error on failure. + // // Note that unlike argc/argv, our args don't include the program name. // - using builtin = int (*) (scope&, - const strings& args, - auto_fd in, auto_fd out, auto_fd err); + // Also note that the future object being returned doesn't block in dtor + // until the builtin command terminates. + // + using builtin = future<uint8_t> (scope&, + const strings& args, + auto_fd in, auto_fd out, auto_fd err); - class builtin_map: public std::map<string, builtin> + class builtin_map: public std::map<string, builtin*> { public: - using base = std::map<string, builtin>; + using base = std::map<string, builtin*>; using base::base; // Return NULL if not a builtin. // - builtin + builtin* find (const string& n) const { auto i (base::find (n)); |