Beispiel #1
0
t_cmd	*cd(t_cmd  *cmd)
{
  char	*home;
  char  buffer[8192];
  int	ok;

  set_buffer(buffer, &ok, cmd);
  if ((size_wordtab(cmd->tabx)) > 1)
    if ((my_strcmp(cmd->tabx[1], "-")) == 0)
      cmd = cd_oldpwd(cmd);
    else
      ok = chdir(cmd->tabx[1]);
  else
    {
      if ((home = get_info("HOME", cmd->lenv)) == NULL)
	{
	  cmd->retour = 1;
	  my_fdputstr("bash: cd: HOME not set\n", cmd->fdout);
	  return (cmd);
	}
      ok = chdir(home);
    }
  if (ok < 0)
    error_cd(cmd->tabx, home, cmd);
  else if (ok >= 0 && cmd->retour == 0)
    set_oldpwd(cmd, buffer);
  return (cmd);
}
Beispiel #2
0
char				*cd_cleanpath(char *path)
{
	char			cpath[2048];
	char			*pref;

	if (!ft_strcmp("-", path))
		return (cd_oldpwd());
	else if (*path != '/')
	{
		if (!(pref = ft_getenv("PWD")))
		{
			ft_error("PWD missing");
			return (NULL);
		}
		ft_sprintf(cpath, "%s/%s/", pref, path);
	}
	else
		ft_sprintf(cpath, "%s/", path);
	return (clean(path, cpath));
}