+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////
-//
-// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez, 2020 Armaan Bhojwani
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// http://www.opensource.org/licenses/mit-license.php
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#include <cmake.h>
-#include <iostream>
-#include <vector>
-#include <string>
-#include <cstring>
-#include <cstdio>
-#include <stdlib.h>
-#include <unistd.h>
-
-#ifdef HAVE_READLINE
-#include <readline/readline.h>
-#include <readline/history.h>
-#endif
-
-using namespace std;
-std::string promptCompose ();
-
-const std::string getResponse (const std::string& prompt)
-{
- std::string response {""};
-
- // Display prompt, get input.
-#ifdef HAVE_READLINE
- char *line_read = readline (prompt.c_str ());
- if (! line_read)
- {
- std::cout << "\n";
- response = "<EOF>";
- }
- else
- {
- // Save history.
- if (*line_read)
- add_history (line_read);
-
- response = std::string (line_read);
- free (line_read);
- }
-#else
- std::cout << prompt;
- std::getline (std::cin, response);
- if (std::cin.eof () == 1)
- {
- std::cout << "\n";
- response = "<EOF>";
- }
-#endif
-
- return response;
-}
-
-int commandLoop ()
-{
- // Compose the prompt.
- auto prompt = promptCompose ();
-
- // Display prompt, get input.
- auto command = getResponse (prompt);
-
- int status = 0;
- if (! isatty (fileno (stdin)) && command == "")
- {
- status = -1;
- }
- else if (command != "")
- {
- // Dispatch command.
- if (command == "<EOF>") status = -1;
- else if (command != "")
- {
- command = command;
- std::cout << "[" << command << "]\n";
- system (command.c_str ());
- }
- }
-
- return status;
-}
-
-int main ()
-// int main (int argc, const char** argv)
-{
- int status = 0;
-
- while (status == 0)
- commandLoop();
-
- return status == -1 ? 0 : status;
-}
-
-////////////////////////////////////////////////////////////////////////////////