Пример #1
0
void	test_strnequ()
{
	char	str[4][15] = {"", " ", "Hello", "M**********r"};
	int	i = -1;
	int	j;
	int k;
	
	dprintf(1, "Strnequ			");
	while (++i < 4) {
		j = -1;
		while (++j < 4) {
			k = -1;
			while (++k < 15) {
				if (strncmp(str[i], str[j], k) == 0 && ft_strnequ(str[i], str[j], k) != 1) {
					dprintf(1, "\x1b[31mFail\x1b[0m\n	Params:\n		s1 : '%s'\n		s2 : '%s'\n		k : %d\n\n		Valeur attendue : 1\n		Valeur obtenue : %d\n", str[i], str[j],k,ft_strnequ(str[i], str[j], k));
					return;
				}
				if (strncmp(str[i], str[j], k) != 0 && ft_strnequ(str[i], str[j], k) != 0) {
					dprintf(1, "\x1b[31mFail\x1b[0m\n	Params:\n		s1 : '%s'\n		s2 : '%s'\n		k : %d\n\n		Valeur attendue : 0\n		Valeur obtenue : %d\n", str[i], str[j],k,ft_strnequ(str[i], str[j], k));
					return;
				}
			}
		}
	}

	dprintf(1, "\x1b[32mOK\x1b[0m\n");
}
Пример #2
0
/*
** Split the string 'str' by the string 's'
** =============
** Return a t_array of t_string
*/
t_array			*ft_stringsplit(t_string *str, const char *s)
{
	t_array			*split;
	int				i;
	int				s_len;
	int				tmp;

	split = ft_arraynew();
	s_len = ft_strlen(s);
	i = 0;
	while (s_len > 0 && ft_strnequ(str->content + i, s, s_len)
		&& i < str->length)
		i += s_len;
	while (i < str->length)
	{
		tmp = i;
		while (i < str->length && !ft_strnequ(str->content + i, s, s_len))
			i++;
		if (s_len == 0)
			i++;
		ft_arrayadd(split, ft_stringsub(str, tmp, i - tmp));
		while (s_len > 0 && ft_strnequ(str->content + i, s, s_len)
			&& i < str->length)
			i += s_len;
	}
	return (split);
}
Пример #3
0
Файл: setenv.c Проект: kelu27/42
int				ft_setenv(char ***env, char *name, char *value, int overwrite)
{
	int		i;
	int		size;
	int		n;

	i = 0;
	size = strstrlen(*env);
	name = ft_strjoin(name, "=");
	n = ft_strlen(name);
	while (i < size)
	{
		if (ft_strnequ(name, (*env)[i], n) && overwrite != 0)
		{
			free((*env)[i]);
			(*env)[i] = get_new_value(name, value);
			if ((*env)[i] == NULL)
				return (0);
			return (1);
		}
		else if (ft_strnequ(name, (*env)[i], n) && overwrite == 0)
			return (0);
		i++;
	}
	if (i == size)
		add_in_env(env, name, value, size);
	return (1);
}
Пример #4
0
int			main(void)
{
	char		*line;
	t_box		box;
	int			ret;
	int			i;

	ret = 0;
	ft_bzero(&box, (sizeof(box)));
	while ((ret = get_next_line(0, &line) != 0))
	{
		if ((i = -1) && box.b_play == 0)
			check_player(line, &box);
		else if ((ft_strnequ(line, "Plateau", 7)))
			create_grid(line, &box);
		else if ((ft_strnequ(line, "Piece", 5)))
		{
			get_piece(line, &box);
			print_map(&box);
			while (i < 69999999)
				i++;
			if (!try_rush(&box))
				return (0);
			reinitialise_box(&box);
		}
	}
	return (0);
}
Пример #5
0
int				def_sep(char *str)
{
	if (ft_strnequ(str, "&&", 2))
		return (ETET);
	else if (ft_strnequ(str, "||", 2))
		return (OUOU);
	else if (str[0] == '|')
		return (str[0]);
	else if (str[0] == ';')
		return (str[0]);
	return (0);
}
Пример #6
0
int			ft_check_located_cmd(t_sh *sh, char **args)
{
	if (!ft_strnequ(args[0], "./", 2) && !ft_strnequ(args[0], "../", 3))
	{
		if (!ft_strnequ(args[0], "/", 1))
			return (ft_check_unlocated_cmd(sh, args));
	}
	if (access(args[0], F_OK) == -1)
		return (ft_error2("command not found", args[0]));
	if (access(args[0], X_OK) == -1)
		return (ft_error2("permission denied", args[0]));
	ft_fork_and_exec(sh, args[0], args);
	return (0);
}
Пример #7
0
enum e_parse_state		get_state(const char *line)
{
	if (ft_strnequ(line, NAME_CMD_STRING, NAME_CMD_LEN)
			&& ft_iswhite(line[NAME_CMD_LEN]))
		return (_PARSE_NAME);
	else if (ft_strnequ(line, COMMENT_CMD_STRING, COMMENT_CMD_LEN)
			&& ft_iswhite(line[COMMENT_CMD_LEN]))
		return (_PARSE_COMMENT);
	else if (is_labelled(line))
		return (_PARSE_LABEL);
	else
		return (_PARSE_INSTRUCTION);
	return (_PARSE_ERROR);
}
Пример #8
0
static int		test_room(char const *buf, t_list *room)
{
	int	i;
	int	s;

	if (!buf)
		return (1);
	i = 0;
	s = 0;
	while (buf[i])
		if (buf[i++] == ' ')
		{
			if (!s)
				while (room)
				{
					if (ft_strnequ(room->content, buf, i - 1))
						return (1);
					room = room->next;
				}
			s++;
		}
	if (s != 2)
		return (1);
	return (0);
}
Пример #9
0
void		ft_prompt(char **envp)
{
	char	*pwd;
	char	*home;
	char	*user;
	int		len;

	if ((user = ft_getenv(envp, "USER")))
	{
		ft_putstr(user);
		ft_putstr(":");
	}
	pwd = ft_getenv(envp, "PWD");
	home = ft_getenv(envp, "HOME");
	if (pwd && home)
	{
		len = ft_strlen(home);
		if (ft_strnequ(pwd, home, len))
		{
			ft_putstr("~");
			ft_putstr(&pwd[len]);
		}
		else
			ft_putstr(pwd);
	}
	envp++;
	ft_putstr("> ");
}
Пример #10
0
Файл: setenv.c Проект: kelu27/42
int				ft_unsetenv(char ***env, char *name, int size)
{
	char	**new_env;
	int		i;
	int		j;

	i = 0;
	j = 0;
	if (!(new_env = (char **)malloc(sizeof(char *) * (size))))
		ft_error(1, "ft_unsetenv");
	while (j < size)
	{
		j = (ft_strnequ(name, *(*env + j), ft_strlen(name)) ? j + 1 : j);
		if (j >= size)
			break ;
		if ((new_env[i] = ft_strdup(*(*env + j))) == NULL)
			return (0);
		i++;
		j++;
	}
	new_env[i] = '\0';
	free(*env);
	*env = new_env;
	return (1);
}
Пример #11
0
int		build_check(t_data *d)
{
	int		i;
	size_t	len;

	i = 0;
	len = 0;
	if (d->line != NULL && d->toexec[0] != '\0')
	{
		while (g_tab[i].str != '\0')
		{
			len = ft_strlen(g_tab[i].str);
			if ((ft_strnequ(g_tab[i].str, d->toexec, len) == 1)
				&& (len <= ft_strlen(d->toexec))
				&& (d->toexec[len] == '\0' || d->toexec[len] == ' '
				|| d->toexec[len] == '\t'))
			{
				g_tab[i].fptr(d);
				return (1);
			}
			i++;
		}
	}
	return (0);
}
Пример #12
0
int					ft_cd(char **env, char *dir)
{
	char			*pwd;
	int				i;

	if (!dir)
		dir = ft_get_home(env);
	dir = ft_split_custom(dir)[0];
	if (dir[0] == '~')
		dir = ft_strjoin(ft_get_home(env), dir + 1);
	if (dir[0] == '-' && !dir[1])
	{
		dir = env[ft_get_env(env, "OLDPWD")] + 7;
		ft_putendl(dir);
	}
	if (ft_strnequ(dir, "--", 2))
		dir = ft_strjoin(ft_get_home(env), dir + 2);
	i = ft_get_env(env, "OLDPWD");
	env[i] = ft_strjoin("OLDPWD=", ft_pwd());
	if (chdir(dir) != 0)
		return (get_error_cd(dir));
	pwd = ft_pwd();
	i = ft_get_env(env, "PWD");
	env[i] = ft_strjoin("PWD=", pwd);
	return (0);
}
Пример #13
0
int				ft_unsetenv(int ac, char **av, int i, int j)
{
	char		*tmp;
	char		**env;

	env = get_env();
	if (!ac)
	{
		ft_putendl_fd("unsetenv: Too few arguments.", 2);
		return (EXIT_FAILURE);
	}
	while (i < ac)
	{
		j = 0;
		while (env[j])
		{
			tmp = ft_strjoin(av[i], "=");
			if (ft_strnequ(tmp, env[j], ft_strlen(tmp)))
				env = ft_ctabdel(env, j);
			j++;
		}
		i++;
	}
	create_env(env);
	return (EXIT_SUCCESS);
}
Пример #14
0
static void	lenght_modifier(char *format, int *i, t_env *e)
{
	if (is_length_modifier(format + *i))
	{
		set_lenght_modifier(format + *i, e);
		while (is_length_modifier(format + *i))
			*i = *i + 1;
	}
	while (is_length_modifier(format + *i))
	{
		ini_lenght_modifier(e);
		set_lenght_modifier(format + *i, e);
		*i = (ft_strnequ("ll", format + *i, 2) ||
			ft_strnequ("hh", format + *i, 2)) ? 2 : 1;
	}
}
Пример #15
0
int			ft_putenv(char *name, char *value)
{
	char	**env;
	char	*to_put;
	int		i;
	int		change;

	env = get_env();
	name = ft_strjoin(name, "=");
	to_put = ft_strjoin(name, value);
	change = 0;
	i = 0;
	while (env[i] && !change)
	{
		if (ft_strnequ(name, env[i], ft_strlen(name)))
		{
			env[i] = ft_strdup(to_put);
			change = 1;
		}
		i++;
	}
	if (!change)
		env = ft_ctabaddtoindex(env, setctab(to_put), i, 0);
	create_env(env);
	return (-1);
}
Пример #16
0
int			ft_strstartwith(const char *s1, const char *s2)
{
	size_t	s2len;

	if ((s2len = ft_strlen(s2)) > ft_strlen(s1))
		return (0);
	return (ft_strnequ(s1, s2, s2len));
}
Пример #17
0
int		read_cmd(int sock, char *cmd)
{
	if (ft_strequ(cmd, "quit"))
		return (1);
	else if (ft_strequ(cmd, "pwd"))
		cmd_pwd(sock);
	else if (ft_strnequ(cmd, "ls", 2))
		cmd_ls(sock);
	else if (ft_strnequ(cmd, "cd", 2))
		cmd_cd(sock);
	else if (ft_strnequ(cmd, "get ", 4))
		cmd_get(sock, cmd);
	else if (ft_strnequ(cmd, "put ", 4))
		cmd_put(sock, cmd);
	else
		cmd_unknow(cmd);
	return (0);
}
Пример #18
0
char *ft_strstr(char *h, char *n)
{
	while (*h)
	{
		if (ft_strnequ(h, n, ft_strlen(n)))
			return (h);
		h++;
	}
	return (NULL);
}
Пример #19
0
int		ft_strnequ(char const *s1, char const *s2, size_t n)
{
	if (!s1 || !s2)
		return (0);
	if (!n || (!*s1 && !*s2))
		return (1);
	else if (*s1 == *s2)
		return (ft_strnequ(s1 + 1, s2 + 1, n - 1));
	return (0);
}
Пример #20
0
static void	part1(char *tmp)
{
	while (tmp[0] != '\0' && tmp[1] != '\0')
	{
		if (ft_strnequ(tmp, "/""/", 2))
			ft_memmove((void*)tmp, (void*)(tmp + 1), ft_strlen(tmp));
		else
			tmp++;
	}
	return ;
}
Пример #21
0
static void	part2(char *tmp)
{
	while (tmp[0] != '\0' && tmp[1] != '\0' && tmp[2] != '\0')
	{
		if (ft_strnequ(tmp, "/./", 3))
			ft_memmove((void*)tmp, (void*)tmp + 2, ft_strlen(tmp) - 1);
		else
			tmp++;
	}
	return ;
}
Пример #22
0
int		ft_strequ(const char *s1, const char *s2)
{
	size_t	len;
	size_t	len2;

	if (s1 == NULL || s2 == NULL)
		return (0);
	len = ft_strlen(s1);
	len2 = ft_strlen(s2);
	len = (len < len2) ? len2 : len;
	return (ft_strnequ(s1, s2, len));
}
Пример #23
0
int		msh_isin_locvars(const char *kv, const t_list *lvars)
{
	size_t	len;

	len = ft_strcspn(kv, "=");
	while (lvars != NULL)
	{
		if (ft_strnequ(kv, (char*)lvars->content,
				MAX(len, ft_strcspn((char*)lvars->content, "="))))
			return (1);
		lvars = lvars->next;
	}
	return (0);
}
Пример #24
0
char	*msh_get_envvar_l(t_mshc *msh, const t_list *lvars, const char *kv)
{
	size_t	len;

	len = ft_strcspn(kv, "=");
	while (lvars != NULL)
	{
		if (ft_strnequ(kv, (char*)lvars->content,
				MAX(len, ft_strcspn((char*)lvars->content, "="))))
			return ((char*)lvars->content);
		lvars = lvars->next;
	}
	return (ft_envget((const char**)msh->env, kv));
}
Пример #25
0
char	*cut_empty_lin(char *s)
{
	int		i;
	char	*s2;

	s2 = "....\n\0";
	i = 0;
	while (s[i])
	{
		if (ft_strnequ(s + i, s2, 4) == 1)
			str_replace(s + i, "\n\n\n\n");
		i++;
	}
	s = src_emptycol(s);
	return (s);
}
Пример #26
0
char	*ft_getenv(const char *name)
{
	int		i;
	size_t	len;

	if (!name || !*name || ft_strchr(name, '='))
		return (NULL);
	i = 0;
	len = ft_strlen(name);
	while (g_environ[i])
	{
		if (ft_strnequ(g_environ[i], name, len) && g_environ[i][len] == '=')
			return (&g_environ[i][len + 1]);
		i++;
	}
	return (NULL);
}
Пример #27
0
static int		get_coor(char const *buf, int *i, t_env *e)
{
	int		tmp;
	char	*nbr;

	tmp = *i;
	*i += buf[*i] == '+' || buf[*i] == '-';
	while (ft_isdigit(buf[*i]))
		(*i)++;
	if (buf[*i] && buf[*i] != ' ')
		error(ft_strjoin(buf, " : coordonnees invalides"), e->param);
	nbr = ft_itoa(ft_atoi(&buf[tmp]));
	if (!ft_strnequ(nbr, &buf[tmp], ft_strlen(nbr)))
		error(ft_strjoin(buf, " : coordonnees invalides"), e->param);
	free(nbr);
	return (ft_atoi(&buf[tmp]));
}
Пример #28
0
int				ft_replace_line(t_list *envi, char *search, char *line)
{
	t_elem		*tmp;

	tmp = envi->begin;
	while (tmp)
	{
		if (ft_strnequ(tmp->data, search, ft_strlen(search)) == 1)
		{
			if (tmp->data)
				free(tmp->data);
			tmp->data = line;
			return (1);
		}
		tmp = tmp->next;
	}
	return (0);
}
Пример #29
0
char		*ft_getenv(const char *name)
{
	int		i;
	char	**env;

	env = get_env();
	i = 0;
	while (env[i])
	{
		if (ft_strnequ(name, env[i], ft_strlen(name)))
		{
			if ((env[i] + ft_strlen(name))[0] == '=')
				return (ft_strdup(env[i] + 1 + ft_strlen(name)));
		}
		i++;
	}
	return (NULL);
}
Пример #30
0
char	*ft_strnstr(const char *s1, const char *s2, size_t n)
{
	const char	*str;
	size_t		size;

	str = s1;
	size = ft_strlen(s2);
	if (!*s2)
		return ((char *)(s1));
	while (*str && n > 0 && size <= n)
	{
		if (ft_strnequ(str, s2, size) == 1)
			return ((char *)str);
		str++;
		n--;
	}
	return (0);
}