From a7efabf301f23364ac2335c80c5e1e712bc43204 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 10 Nov 2016 00:26:54 +0300 Subject: Add cat, false and true builtins --- build2/test/script/builtin | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'build2/test/script/builtin') 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 + #include #include -#include - 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 (scope&, + const strings& args, + auto_fd in, auto_fd out, auto_fd err); - class builtin_map: public std::map + class builtin_map: public std::map { public: - using base = std::map; + using base = std::map; using base::base; // Return NULL if not a builtin. // - builtin + builtin* find (const string& n) const { auto i (base::find (n)); -- cgit v1.1