Beispiel #1
0
int			exe_cd(t_tree *tree, t_env **env)
{
  if (tree->lexer->next == NULL
      || my_strcmp(tree->lexer->next->content, "~") == 0)
    return (cd_home(env));
  return (cd_arg(tree->lexer->next, env));
}
Beispiel #2
0
void			builtin_cd(char ***env, char **cmd)
{
	char	*tmp;

	tmp = NULL;
	if (cmd[1] == NULL || (ft_strcmp(cmd[1], "~") == 0))
		cd_home(env, tmp);
	else if (ft_strcmp(cmd[1], "-") == 0)
		cd_minus(env, tmp);
	else
	{
		tmp = cmd[1];
		cd_path(env, tmp);
	}
}
Beispiel #3
0
void			ft_cd(t_lenv **env, char **param)
{
    if (!param[1] || (param[1][0] == '~' && !param[1][1]))
        cd_home(env);
    else if (param[1][0] == '$' && param[1][1])
        cd_env(env, param[1]);
    else if (param[1][0] == '-' && !param[1][1])
        cd_env_old(env);
    else if ((param[1][0] == '/') ? check_path_spe(param[1]) :
             check_path(*env, param[1]))
    {
        if (change_oldpwd(env))
            change_pwd(env);
    }
}
Beispiel #4
0
char		cd_tiret(t_arg *targ)
{
  char		*tmp;
  int		i;

  if (targ->wtab[1] != NULL &&
      !my_strncmp(targ->wtab[1], "-", 1) && targ->pwd != NULL)
    {
      tmp = targ->pwd;
      if ((i = find_env(targ->env, "PWD=")) < 0)
	if ((targ->env = add_env(targ->env, "PWD", '=', "/")) == NULL)
	  return (1);
      if ((targ->pwd = get_flagss(targ->env, "PWD")) == NULL)
	return (1);
      free(targ->env[i]);
      if ((targ->env[i] = concat_str("PWD", '=', tmp)) == NULL ||
	  chdir(tmp) < 0)
	return (1);
      return (2);
    }
  return (cd_home(targ));
}
Beispiel #5
0
static int			handle_cd_arg(int *i, int *ret, char **arg)
{
	char				*tmp;

	tmp = get_env("OLDPWD");
	if (check_opt(arg, i) == ERROR)
	{
		ft_strdel(&tmp);
		return (FALSE);
	}
	if (!arg[*i])
		*ret = cd_home();
	else if (arg[*i] && arg[*i][0] == '-' && !arg[*i][1])
	{
		if (tmp)
			*ret = change_dir(tmp);
		else
			return (sh_error(TRUE, 11, NULL, NULL));
	}
	else
		*ret = change_dir(arg[*i]);
	ft_strdel(&tmp);
	return (TRUE);
}