コード例 #1
0
ファイル: cd.c プロジェクト: bensisko69/42
static void	cd_erreur(char *pwd, char *argum)
{
	struct stat	buf;

	if (stat(argum, &buf) == -1)
		ft_erreur(argum, ERR_NO_SUCH_FILE, 0);
	else if (S_ISDIR(buf.st_mode) == 0)
		ft_erreur(argum, ERR_NOT_A_DIR, 0);
	else if (access(pwd, X_OK) == -1)
		ft_erreur(argum, ERR_DENIED, 0);
	else
		ft_erreur(argum, ERR_CMD_NOT_FOUND, 0);
}
コード例 #2
0
ファイル: cd.c プロジェクト: d-bourdon/minishell
int			ft_cd(char **path)
{
	char	tmp[500];

	if (path[0] && !path[1])
		ft_gohome();
	else if (ft_strcmp(path[1], "-L") == 0 || ft_strcmp(path[1], "-P") == 0)
		return (ft_cd_option(path));
	else if (path[0] && path[1] && !path[2])
	{
		if (ft_cd_lien(path[1], path) == 1)
			return (1);
		else if (chdir(path[1]) == -1)
			check_existe(path[1], 0);
		else
		{
			if (getcwd(tmp, 500) == NULL)
				ft_erreur("Récuperation de PWD", 0);
			ft_stockage_env("OLDPWD", ft_cherche_env("$PWD")->valeur);
			ft_stockage_env("PWD", tmp);
		}
	}
	else
		check_existe(path[1], 1);
	free_tabtab(path);
	return (1);
}
コード例 #3
0
ファイル: main-test.c プロジェクト: Geronymo/42
int	main(int argc, char **argv)
{
	char BUF[547];
	char **map;
	char save[16][16];
	char tab[27];
	char end;
	int	 taille;
	int cpt;

	
	if (argc != 2)
		ft_ragequit();
	ft_bzero(tab, 27);
	ft_file(argv[1], BUF);
	ft_erreur(BUF);
	ft_search(BUF, tab);
	taille = ft_sqrt(8 * tab[0]);
	map = ft_init(taille);
	ft_clean(save, 15);
	cpt = 1;
	end = 0;
	while (end == 0 && taille >= ft_sqrt(4 * tab[0]))
	{
		end = ft_treatment(map, save, tab, cpt);
		if (taille > ft_sqrt(4 * tab[0]))
		{
			taille--;
			map = ft_init(taille);
			cpt = ft_try_copy(map, save, taille);
		}
	}
	ft_exit(save, ft_len_save(save));
	return (0);
}
コード例 #4
0
ファイル: ft_sh1.c プロジェクト: bensisko69/projet_42
static void			exec_absolu(char *line, t_list *list)
{
	char	**str;

	str = ft_strsplit(line, ' ');
	if (check_cmd(str[0]))
		ft_execve(str[0], str, list);
	else
		ft_erreur(line, ERR_NO_SUCH_FILE, 0);
	free_char_array(str);
}
コード例 #5
0
ファイル: unsetenv.c プロジェクト: bensisko69/42
void	ft_unsetenv(t_list **list, char *line)
{
	char	**cmp;

	cmp = ft_strsplit(line, ' ');
	if (char_array_size(cmp) >= 2)
	{
		list_remove(list, cmp[1]);
	}
	else
		ft_erreur(BUILTIN_UNSETENV, ERR_NOT_ENOUGH_ARGS, 0);
	free_char_array(cmp);
}
コード例 #6
0
ファイル: main.c プロジェクト: Geronymo/42
void	ft_file(const char *str_in, char buffer[547], char tab[27])
{
	int		fd;
	int		cpt;

	ft_bzero(buffer, 547);
	ft_bzero(tab, 27);
	fd = open(str_in, O_RDONLY);
	if (fd == -1)
		ft_ragequit();
	cpt = read(fd, buffer, 547);
	if (cpt == -1 || cpt >= 546)
		ft_ragequit();
	buffer[cpt + 1] = '\0';
	close(fd);
	ft_erreur(buffer);
	ft_search(buffer, tab);
}
コード例 #7
0
ファイル: unsetenv.c プロジェクト: bensisko69/42
void	list_remove(t_list **list, char *str)
{
	t_list	*it;
	t_list	*previous;

	it = *list;
	previous = 0;
	while (it != NULL)
	{
		if (ft_strnequ(it->str, str, ft_strlen_char(it->str, '=')) == 1)
		{
			if (previous)
				previous->next = it->next;
			else
				*list = it->next;
			free(it->str);
			free(it);
			return ;
		}
		previous = it;
		it = it->next;
	}
	ft_erreur(BUILTIN_UNSETENV, ERR_NON_EXISTING_KEY, str);
}