char *cd_cleanpath(char *path) { t_dlist *lst; t_dlist *clean; char cpath[2048]; char *pref; if (!ft_strcmp("-", path)) { if (!(path = ft_getenv("OLDPWD"))) cd_exit("OLDPWD needed in the environment"); return (ft_strdup(path)); } else if (*path != '/') { if (!(pref = ft_getenv("PWD"))) cd_exit("PWD needed in the environment"); ft_sprintf(cpath, "%s/%s/", pref, path); } else ft_sprintf(cpath, "%s/", path); if (!(lst = makelst(cpath))) return (NULL); if (!(clean = ft_dlstmap(lst, cleanlst))) return (NULL); ft_dlstdel(&lst, NULL); clean = cleanlstparent(clean); return (convertlst(&clean)); }
static char *clean(char *path, char *cpath) { t_dlist *lst; t_dlist *clean; if (!(lst = makelst(cpath))) { ft_error("Memory allocation failed"); return (NULL); } if (!(clean = ft_dlstmap(lst, cleanlst))) { ft_error("Memory allocation failed"); return (NULL); } ft_dlstdel(&lst, NULL); clean = cleanlstparent(clean); return (convertlst(&clean)); (void)path; }
int main(int argc, char **argv) { int x; int i; i = 1; x = 0; if (argc == 1) error(argv[0]); ard = lst_new(); ard = makelst(ard, argc, argv, 1); ft_select(ard); i = 0; while (i < (int)ard->len) { if (ard->start->bol == 2 || ard->start->bol == 3) printr(ard->start->str, x++, ft_celement(ard)); ard->start = ard->start->next; i++; } return (0); }