Exemple #1
0
void 		my_cd(t_mysh *mysh)
{
  int 		ret;
  char 		*pwd;

  pwd = my_strdup("OLDPWD=");
  pwd = my_strcat_free(pwd, getcwd(NULL, 1000)); /* getcwd a free*/
  ret = 0;
  if (comp_str(mysh->tab_com[0], "cd") == 1)
    {
      if (mysh->tab_com[1] && mysh->tab_com[1][0] == '-')
	ret = chdir(src_env(mysh->env, "OLDPWD"));
      else if (!mysh->tab_com[1])
	ret = chdir(src_env(mysh->env, "HOME"));
      else
	ret = chdir(mysh->tab_com[1]);
      if (ret == -1)
	{
	  my_error("cd: no such file or directory: ");
	  my_error(mysh->tab_com[1]);
	  my_error("\n");
	}
      else
	update_pwd(mysh, pwd);
    }
  free (pwd);
}
Exemple #2
0
void 		my_set_env(t_mysh *mysh)
{
  char 		*param_in_env;
  int 		i;

  i = 0;
  while (mysh->tab_com[i])
    i++;
  if (comp_str(mysh->tab_com[0], "setenv") == 1 && mysh->tab_com[1] && i < 4)
    {
      if ((param_in_env = src_env(mysh->env, mysh->tab_com[1])))
	update_env(mysh);
      else
	add_env(mysh);
      if (param_in_env)
	free (param_in_env);
    }
  else if (comp_str(mysh->tab_com[0], "setenv") == 1 && i == 1)
    {
      i = -1;
      while (mysh->env && mysh->env[++i])
	my_printf("%s\n", mysh->env[i]);
    }
  else if (comp_str(mysh->tab_com[0], "setenv") == 1 && i >= 4)
    my_error("setenv: Too many arguments.\n");
}
Exemple #3
0
void 		update_pwd(t_mysh *mysh, char *pwd)
{
  char 		*param_in_env;

  my_printf("%s\n", pwd);
  if ((param_in_env = src_env(mysh->env, pwd)))
    update_env_pwd(mysh, pwd);
  else
    add_env_pwd(mysh, pwd);
  if (param_in_env)
    free (param_in_env);
}
int ForStmtTest::run(Env &env, LocalDefs &ienv)
{
  //cout << "Number of tests to perform: " << instrs.size() << endl;
  Env src_env(env);

  Term src_seq = src_expr.evaluate(src_env, ienv);
  
  assert(src_seq.is_seq());
  
  int len = src_seq.size();

  int errors = 0;
  for (int i=0 ; i < len ; i++)
  {
    Env new_env(env);
    new_env.set(var, src_seq.item(i));

    for (unsigned int j=0 ; j < instrs.size() ; j++)
      errors += instrs[j]->run(new_env, ienv);
  }

  return errors;
}