From 3fa1b103014bab51f8f257e1e12f27f7e498f42e Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 13 Sep 2019 20:57:00 +0300 Subject: Add support for builtin escaping to command running API --- libbutl/command.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libbutl/command.cxx') diff --git a/libbutl/command.cxx b/libbutl/command.cxx index a344790..1126bb0 100644 --- a/libbutl/command.cxx +++ b/libbutl/command.cxx @@ -272,11 +272,21 @@ namespace butl } else // Execute the program. { + // Strip the potential leading `^`, indicating that this is an external + // program rather than a builtin. Consider only simple paths and don't + // end up with an empty path. + // + const char* p (prog.size () > 1 && + prog[0] == '^' && + path::traits_type::find_separator (prog) == string::npos + ? prog.c_str () + 1 + : prog.c_str ()); + // Prepare the process environment. // // Note: cwd passed to process_env() may not be a temporary object. // - process_env pe (prog, cwd, env ? env->vars : nullptr); + process_env pe (p, cwd, env ? env->vars : nullptr); // Finally, run the process. // -- cgit v1.1