Пример #1
0
void	ft_union(char *s1, char *s2, int size)
{
	char	tmp[size];
	int		i;
	int		j;

	tmp[size] = '\0';
	j = 0;
	i = 0;
	while (s1[j])
	{
		if (!(ft_find(tmp, s1[j])))
			tmp[i++] = s1[j];
		j++;
	}
	j = 0;
	while (s2[j])
	{
		if (!(ft_find(tmp, s2[j])))
			tmp[i++] = s2[j];
		j++; 
	}
	tmp[i] = '\0';
	write(1, &tmp, ft_strlen(tmp));
}
Пример #2
0
int		ft_helper(t_data *data, char **line)
{
	data->str = ft_strdup(data->rest);
	ft_strdel(&(data->rest));
	if (ft_find(data, line) == 1)
		return (1);
	*line = ft_strdup(data->rest);
	ft_strdel(&(data->rest));
	return (1);
}
Пример #3
0
static int					ft_find_line(int ret, char **str, char **line)
{
	if (ret == -1)
		return (-1);
	if (ft_strchr(*str, '\n') || ret > 0)
		return (ft_find(str, line));
	else if (ft_strlen(*str) > 0)
		return (ft_end(str, line));
	*line = NULL;
	return (0);
}
Пример #4
0
static void			ft_lay_egg(t_env *env)
{
	if (env->connect_nb < 0)
		ft_push_cmd(env, CON_NB, NULL, RESP_VAL);
	else if (ft_enough_food(env))
	{
		ft_push_cmd(env, AVANCE, NULL, RESP_OK);
		ft_push_cmd(env, FORK, NULL, RESP_OK);
		ft_push_cmd(env, AVANCE, NULL, RESP_OK);
		env->laying = 1;
	}
	else
		ft_find(env, FOOD);
}
Пример #5
0
int					ft_ia(t_env *env)
{
	if (env->laying)
		ft_push_cmd(env, CON_NB, NULL, RESP_VAL);
	if (env->expul)
	{
		ft_push_cmd(env, EXPUL, NULL, RESP_OK);
		env->expul = 0;
	}
	if (!env->forked && !env->laying)
		ft_lay_egg(env);
	else if (!env->forked && env->laying && env->inv[FOOD] < 12)
		ft_find(env, FOOD);
	else
		ft_try_elevation(env);
	return (OK);
}
Пример #6
0
static void			ft_try_elevation(t_env *env)
{
	if (env->view[0][FOOD] > 0 && ft_check_squ_stones(env))
		ft_get_people_here(env);
	else if (ft_check_inv_stones(env))
	{
		if (env->view[0][FOOD] == 0)
			ft_find(env, FOOD);
		else
		{
			ft_putdown_stones(env);
			ft_get_people_here(env);
		}
	}
	else
		ft_collect_stones(env);
}
Пример #7
0
int				ft_delete_backslashes(t_p **p)
{
	t_p		*move;
	int		cont;

	move = *p;
	while (move)
	{
		if (move->type == WORD && ft_find(move->tok, "\\"))
		{
			if ((cont = ft_token_without_backslashes(&(move->tok))) == -2)
			{
				ft_putendl_fd("Parse error near \'\\\'", 2);
				return (-1);
			}
			else if (cont == -1)
				return (-1);
		}
		move = move->next;
	}
	return (0);
}
Пример #8
0
void	ft_add_gr(t_steve *list, t_opts *opt)
{
	int		rec;
	t_steve	*tmp;

	rec = 0;
	while (list != NULL)
	{
		tmp = NULL;
		if (opt->l == 0)
			ft_ls_l(list);
		if (list->access[0] == 'd' && ft_strcmp(list->file, ".") != 0
			&& ft_strcmp(list->file, "..") != 0)
		{
			ft_putchar('\n');
			ft_putstr(list->path);
			ft_putendl(":");
			ft_find(list->path, &tmp, opt, rec);
		}
		list = list->next;
	}
}
Пример #9
0
int		ft_read(t_data *data, const int fd, char **line)
{
	char	buf[BUFF_SIZE + 1];

	while ((data->ret = read(fd, buf, BUFF_SIZE)) > 0)
	{
		buf[data->ret] = '\0';
		if (!(data->rest))
			data->rest = ft_strdup("");
		data->str = ft_strjoin(data->rest, buf);
		ft_strdel(&(data->rest));
		if (ft_find(data, line) == 1)
			return (1);
	}
	if (data->ret == -1)
	{
		if (data->rest)
			ft_strdel(&(data->rest));
		return (-1);
	}
	if (data->ret == 0 && data->rest)
		return (ft_helper(data, line));
	return (0);
}