Advertisement
Guest User

cd_code

a guest
Jan 26th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1.  
  2. #include "cd_command.h"
  3. #include "../shell/system_functions.h"
  4.  
  5. #include <utility>
  6. #include <iostream>
  7.  
  8. ast::cd_command::cd_command(std::vector<unevaluated_argument> &arguments): command(arguments) {}
  9.  
  10. int ast::cd_command::execute(ast::scope &scope) {
  11.     std::vector<char*> params;
  12.     for (auto& arg_pattern : arguments) {
  13.         auto evaluated_argument = ast::argument(arg_pattern.evaluate(scope));
  14.         auto evaluated_values = evaluated_argument.get_value();
  15.        
  16.         params.push_back(const_cast<char*>(evaluated_values.c_str()));
  17.     }
  18.     if (params.size() != 1) {
  19.         perror("Wrong number of command arguments. There should be only one argument.");
  20.         return -1;
  21.     }
  22.     // std::cout << params.at(0) << std::endl;
  23.  
  24.     scope.get_system_functions()->change_directory(params.at(0));
  25.     return 0;
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement