Пример #1
0
bool              prompt_init()
{
  bool            is_running;
  bool            is_success;
  char*           cmd;
  int             parser_ret;
  t_cmd_list*     cmd_current;
  t_cmd_list*     cmd_list;

  is_running = true;
  is_success = true;
  parser_ret = 0;
  while (is_running)
  {
    prompt_show();
    cmd = prompt_cmd_read();
    if (cmd == NULL)
    {
      is_success = false;
      free(cmd);
      break;
    }
    if (my_strlen(cmd) > 0)
    {
      cmd_list = prompt_cmd_split(cmd);
      if (cmd_list == NULL)
      {
        is_success = false;
        break;
      }
      cmd_current = cmd_list;
      while(cmd_current != NULL)
      {
        if (cmd_current->is_piped)
        {
          cmd_current = pipeline(cmd_current, -1);
        }
        else if ((cmd_current->is_redirect_input) || (cmd_current->is_redirect_output))
        {
          cmd_current = redirections(cmd_current);
        }
        else
        {
          parser_ret = parser(cmd_current->cmd);
        }
        cmd_current = cmd_current->next;
      }
      prompt_cmd_split_free(cmd_list);
    }
    else
    {
      free(cmd);
    }
    if (parser_ret == BUILTIN_EXIT)
    {
      is_running = false;
    }
  }
  return (is_success);
}
Пример #2
0
int	global_prepa(t_cmd *cmd, int i)
{
  while (cmd[i].token != NULL && cmd[i].token[0] != ';')
    {
      if (!strncmp(cmd[i].token, ">>", 2) || !strncmp(cmd[i].token, ">", 1)
	  || !strncmp(cmd[i].token, "<<", 2) || !strncmp(cmd[i].token, "<", 1))
	redirections(&cmd[i], &cmd[i + 1], cmd, i);
      i++;
    }
  return (0);
}