From 2fdca6ea9d62c118f052d45746ebc1bf5ab185c6 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sun, 24 Jul 2016 21:21:15 -0400 Subject: [PATCH] builtin_which -- also check builtin commands. --- builtins.cpp | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/builtins.cpp b/builtins.cpp index babb912..992a1a6 100644 --- a/builtins.cpp +++ b/builtins.cpp @@ -33,12 +33,11 @@ namespace fs = filesystem; namespace { -/* std::string &lowercase(std::string &s) { std::transform(s.begin(), s.end(), s.begin(), [](char c){ return std::tolower(c); }); return s; } -*/ + // doesn't handle flag arguments but builtins don't have arguments. template @@ -813,6 +812,38 @@ int builtin_which(Environment &env, const std::vector &tokens, cons } + // check builtins... + if (!found || a) { + + static const char *builtins[] = { + "aboutbox", + "alias", + "catenate", + "directory", + "echo", + "exists", + "export", + "parameters", + "quote", + "set", + "shift", + "unalias", + "unexport", + "unset", + "version", + "which", + }; + + lowercase(target); + + auto iter = std::find(std::begin(builtins), std::end(builtins), target); + if (iter != std::end(builtins)) { + fprintf(stdout, "%s\n", *iter); + found = true; + } + + } + if (found) return 0; // also check built-ins?