Ejemplo n.º 1
0
static char		*get_newdir(t_params *p, char *buf)
{
	char	*new_dir;
	char	*tmp;

	if (!ft_strncmp(buf, "./", 2))
		new_dir = ft_strjoin(p->pwd, ft_strchr(buf, '/'));
	else if (buf[0] == '/')
		new_dir = ft_strdup(buf);
	else if (!ft_strcmp(buf, "-"))
		new_dir = ft_strdup(p->oldpwd);
	else if (!ft_strcmp(buf, ".."))
		new_dir = ft_strlen(p->pwd) - ft_strlen(ft_strrchr(p->pwd, '/')) ?
			ft_strndup(p->pwd, ft_strlen(p->pwd)
					- ft_strlen(ft_strrchr(p->pwd, '/')) - 1)
			: ft_strdup("/");
	else
	{
		tmp = p->pwd[ft_strlen(p->pwd) - 1] != '/' ?
			ft_strjoin(p->pwd, "/") : NULL;
		new_dir = tmp != NULL ? ft_strjoin(tmp, buf) : ft_strjoin(p->pwd, buf);
		ft_strdel(&tmp);
	}
	return (new_dir);
}
Ejemplo n.º 2
0
void	test_strrchr(void)
{
	char	*str = "je suis une chaine sans s a partir d'ici";

	printf("\nTesting ft_strrchr\n");
	printf("%-20s %-10s %-10s\n%-20s %-10s %-10s\n",
			"Expected result:", strrchr(str, 's'), strrchr(str, 'z'),
				"Acutal result:", ft_strrchr(str, 's'), ft_strrchr(str, 'z'));
}
Ejemplo n.º 3
0
static const char	*ft_set_start(const char *str)
{
	if (ft_strrchr(str, '%') != str)
		str = ft_strrchr(str, '%');
	else
	{
		++str;
		while (*str == '-' || *str == '.' || *str == ' ' || ft_isdigit(*str) ||
				*str == '.')
			++str;
	}
	return (str);
}
Ejemplo n.º 4
0
char				*get_next_line(int const fd)
{
	static char		*tmp;
	char			*buf;
	char			*size;
	int				ret;

	tmp = (tmp ? tmp : ft_strdup(""));
	if (fd < 0 || BUFF_SIZE < 1)
		return (ft_exit(&tmp));
	buf = ft_strnew(BUFF_SIZE + 1);
	if (!buf)
		return (ft_exit(&tmp));
	while (!(size = ft_strchr(tmp, '\n')) && (ret = read(fd, buf, BUFF_SIZE)))
	{
		buf[ret] = 0;
		tmp = ft_strcleanjoin(tmp, buf);
	}
	ft_free(&buf);
	if (tmp[0] && (size || (size = ft_strrchr(tmp, 0))))
	{
		buf = ft_strsub(tmp, 0, size - tmp);
		ft_free(&tmp);
		tmp = (size[0] ? ft_strdup(size + 1) : ft_strdup(""));
		return (buf);
	}
	return (ft_exit(&tmp));
}
Ejemplo n.º 5
0
void check_strrchr()
{
	printf( "--------\nTest ft_strrchr:\n" );
	printf("strrchr: %s, ft_strrchr: %s \n", strrchr("yoloooooooooooo loilol kikou", 'y'), ft_strrchr("yoloooooooooooo loilol kikou", 'y'));
	printf("strrchr: %s, ft_strrchr: %s \n", strrchr("mama just killed a man", 'k'), ft_strrchr("mama just killed a man", 'k'));
	printf("\033[32mOk\n\033[0m");
}
Ejemplo n.º 6
0
static char	*concatenate(char *path, char *pwd)
{
	char	*extract;
	char	*tmp;

	while ((extract = ft_strdupchr(path, '/')))
	{
		if (!ft_strcmp(extract, ".."))
		{
			tmp = ft_strrchr(pwd, '/');
			ft_bzero(tmp, ft_strlen(tmp));
			move_str(&path, 3, -3, ft_strlen(path));
			ft_bzero(path + ft_strlen(path) - 3, 3);
		}
		else
		{
			pwd = ft_freejoin(pwd, "/");
			pwd = ft_freejoin(pwd, extract);
			move_str(&path, ft_strlen(extract) + 1, -(ft_strlen(extract) + 1),
					ft_strlen(pwd));
		}
		ft_strdel(&extract);
	}
	if (ft_strcmp(pwd, "/"))
		pwd = ft_freejoin(pwd, "/");
	return (ft_freejoin(pwd, path));
}
Ejemplo n.º 7
0
int				minishell_termcap_completion(unsigned int keycode,
	int *pos, char *buff, t_shell *shell)
{
	char	*complete;
	char	*path;
	char	*subbuff;
	size_t	cl;

	(void)shell;
	if (keycode != 9)
		return (READ_AGAIN);
	if ((path = getcwd(NULL, 4096)))
	{
		buff[*pos] = '\0';
		subbuff = ft_strrchr(buff, ' ');
		if ((subbuff) && (*subbuff == ' '))
			subbuff++;
		if ((!(complete = minishell_complete(subbuff,
		path))) && (ft_mfree(1, path)))
			return (READ_AGAIN);
		if (!(cl = ft_strlen(complete)))
			return (READ_AGAIN);
		write(1, complete, cl);
		ft_memcpy(&buff[*pos], complete, cl + 1);
		*pos += (int)cl;
		ft_mfree(2, path, complete);
	}
	return (READ_AGAIN);
}
Ejemplo n.º 8
0
Archivo: cd.c Proyecto: NegMozzie/42
static void			cd_get_path(char **av, char **path, char *pwd, char *str)
{
	char			*str1;

	if (!av[1])
		*path = ft_strdup(str);
	else if (!ft_strncmp(av[1], "~", 1))
		*path = ft_strjoin(str, &(av[1][1]));
	else if (!ft_strncmp(av[1], "/", 1))
		*path = ft_strdup(av[1]);
	else if (!ft_strcmp(av[1], "-"))
		*path = NULL;
	else if (!ft_strcmp(av[1], ".") || !ft_strcmp(av[1], ".."))
	{
		*path = ft_strdup(pwd);
		if (!ft_strcmp(av[1], ".."))
			(ft_strrchr(*path, '/'))[1] = '\0';
	}
	else
	{
		str1 = ft_strjoin(pwd, "/");
		*path = ft_strjoin(str1, av[1]);
		ft_memdel((void **)&str1);
	}
}
Ejemplo n.º 9
0
char	*ft_realpath(char *path)
{
	size_t	i;
	char	*tmp;
	char	**arr;

	i = 0;
	if (!path || (arr = ft_strsplit(path, '/')) == NULL)
		return (NULL);
	ft_bzero(path, (size_t)ft_strlen(path));
	if (ft_arrsize(arr) <= 0)
		ft_strcat(path, "/");
	while (arr[i] != NULL)
	{
		tmp = ft_strrchr(path, '/');
		if (ft_strcmp(arr[i], "..") == 0 && ft_strrichr(path, '/') > 0)
			*tmp = '\0';
		else if (ft_strcmp(arr[i], ".") != 0)
		{
			ft_strcat(path, "/");
			if (ft_strcmp(arr[i], "..") != 0)
				ft_strcat (path, arr[i]);
		}
		i++;
	}
	ft_arrdel(&arr);
	return (path);
}
Ejemplo n.º 10
0
void			ft_st_color(char *str, int key, int i, int pos)
{
	char				*ptr;
	static int			active;

	if (key == GKEY_DOT)
		active = active ? 0 : 1;
	if (i == pos)
		return ;
	if (!active && str != NULL && !ft_strncmp(str, "/dev/", 4))
		ft_putstr_fd("\033[31m", isatty(STDOUT_FILENO));
	else if (!active && str != NULL && (ptr = ft_strrchr(str, '.')) != NULL)
	{
		if (!ft_strcmp(ptr, ".o"))
			ft_putstr_fd("\033[35m", isatty(STDOUT_FILENO));
		else if (!ft_strcmp(ptr, ".c"))
			ft_putstr_fd("\033[34m", isatty(STDOUT_FILENO));
		else if (!ft_strcmp(ptr, ".cpp"))
			ft_putstr_fd("\033[32m", isatty(STDOUT_FILENO));
		else if (!ft_strcmp(ptr, ".s"))
			ft_putstr_fd("\033[36m", isatty(STDOUT_FILENO));
		else if (!ft_strcmp(ptr, ".cor"))
			ft_putstr_fd("\033[33m", isatty(STDOUT_FILENO));
	}
	else if (!active && str != NULL && ptr == NULL)
		ft_st_color_x(str);
	return ;
}
Ejemplo n.º 11
0
int		ft_check_file(t_state *state, char **argv, int count)
{
    int     i;
    int		fd;
    char	*tmp;
    int     cor;
    
    i = 1;
    cor = 0;
    while (i <= count)
    {
        tmp = ft_strrchr(argv[i], '.');
        if (tmp == NULL)
            i++;
        else if (!strcmp(tmp,".cor"))
        {
            if ((fd = open(argv[i], O_RDONLY)) < 0)
                    error_exit(state, "Error: Invalid file at O_RDONLY check\n");
            close(fd);
            cor++;
        }
        i++;
    }
    if (cor < state->champ_count)
        error_exit(state, "Error: Invalid file extension\n");
    return (0);
}
Ejemplo n.º 12
0
static char *get_name(char *name, t_opts *options)
{
	char	*new_name;

	if (D && name[0] == '/')
		return (name);
	else if (D && !(new_name = ft_strrchr(name, '/')))
		return (name);
	else if (!D && (new_name = ft_strrchr(name, '/')))
	{
		new_name++;
		return (new_name);
	}
	else
		return (name);
}
Ejemplo n.º 13
0
void	lister_match(DIR *directory, char *str)
{
	struct dirent	*lecture;
	int				i;
	char			*path;

	i = 0;
	while ((lecture = readdir(directory)) != NULL)
	{
		path = ft_strrchr(str, '/');
		if (path == NULL)
			path = ft_strdup(str);
		else
			path++;
		if (match(lecture->d_name, path))
		{
			if (lecture->d_name[0] != '.' || path[0] == '.')
			{
				ft_putstr(lecture->d_name);
				ft_putstr("	");
			}
			i++;
		}
	}
	if (i == 0)
		error(path, 'a');
}
Ejemplo n.º 14
0
int	parse_champ_count(t_state *state, char **argv, int count)
{
    int         i;
    int         champs;
    char        *tmp;
    
    i = 1;
    champs = 0;
    while (i <= count)
    {
        tmp = ft_strrchr(argv[i], '.');
        if (!ft_strcmp("-n",argv[i]))
            i++;
        else if (!ft_strcmp("-dump",argv[i]))
            i++;
        else if (ft_strncmp(tmp, ".cor", 3) == 0)
            champs++;
        i++;
    }
    if (champs == 0 || champs > MAX_PLAYERS)
        error_exit(state, "Error: Invalid amount of players\n");
    else if (champs > 0 && champs <= MAX_PLAYERS)
        state->champ_count = champs;
    return (0);
}
Ejemplo n.º 15
0
static int		something(char *path)
{
	char	*tmp;
	char	*line;
	int		fd;

	if(ft_strchr(path, '/'))
	{
		tmp = ft_strrchr(path, '/');
		tmp++;
	}
	else
		tmp = path;
	if ((fd = open(tmp, O_RDONLY)) != -1)
	{
		ft_putendl("\e[0;1mExisting file :\e[0m\n(A)bort, (R)ename, (O)verwrite ?");
		get_next_line(0, &line);
		if (line[0] == 'R')
		{
			ft_putendl("New name : ");
			get_next_line(0, &line);
			return (something(line));
		}
		else if (line[0] == 'O')
		{
			fd = open(tmp, O_TRUNC | O_WRONLY);
			return (fd);
		}
		else
		{
			close(fd);
			return (-1);
		}
	}
Ejemplo n.º 16
0
int		error_opendir(char *dirname)
{
	ft_putstr_fd("ft_ls: ", 2);
	perror(&(dirname[ft_strlen(dirname) - ft_strlen(
		ft_strrchr(dirname, '/')) + 1]));
	return (0);
}
Ejemplo n.º 17
0
void		ft_colour(char *str, int key, int k, int pos)
{
	char			*l;
	static int		status;

	if (key == GKEY_DOT)
		status = status ? 0 : 1;
	if (k == pos)
		return ;
	if (!status && str != NULL && !ft_strncmp(str, "/dev/", 4))
		ft_putstr_fd("\033[31m", isatty(1));
	else if (!status && str != NULL && (l = ft_strrchr(str, '.')) != NULL)
	{
		if (!ft_strcmp(l, ".o"))
			ft_putstr_fd("\033[35m", isatty(1));
		else if (!ft_strcmp(l, ".c"))
			ft_putstr_fd("\033[34m", isatty(1));
		else if (!ft_strcmp(l, ".cpp"))
			ft_putstr_fd("\033[32m", isatty(1));
		else if (!ft_strcmp(l, ".s"))
			ft_putstr_fd("\033[36m", isatty(1));
		else if (!ft_strcmp(l, ".cor"))
			ft_putstr_fd("\033[33m", isatty(1));
	}
	else if (!status && str != NULL && l == NULL)
		ft_colour_x(str);
}
Ejemplo n.º 18
0
Archivo: dir.c Proyecto: sbenning42/42
static void			maj_path_wo_name(void)
{
    char			*f;

    if ((f = ft_strrchr(env()->path, '/')))
        *f = 0;
    if (!ft_strlen(env()->path))
        ft_strcpy(env()->path, "/");
}
Ejemplo n.º 19
0
int main()
{
	const char tab[]= "ta mere la grosse diesiel";
	int v = 'a';
	
	printf("'%s''%s'", strrchr(tab, v), ft_strrchr(tab, v));
	
	return (0);
}
Ejemplo n.º 20
0
static char	*storage_name(char *path_name)
{
	char	*name;

	name = ft_strrchr(path_name, '/');
	if (name != NULL && ++name != NULL)
		return (ft_strdup(name));
	return (ft_strdup(path_name));
}
Ejemplo n.º 21
0
char				*ft_strnopath(char *over_path)
{
	char				*end_path;

	if ((end_path = ft_strrchr(over_path, '/')))
		return (end_path + 1);
	else
		return (over_path);
}
Ejemplo n.º 22
0
char		*ft_basename(const char *path)
{
	char	*slash;

	if (!path)
		return (NULL);
	if ((slash = ft_strrchr(path, '/')))
		return (ft_strdup(slash + 1));
	return (ft_strdup(path));
}
Ejemplo n.º 23
0
t_list			*ft_del_files(t_core *core)
{
	t_list		*cursor;
	t_list		*tmp;

	cursor = OUTPUT;
	while (cursor)
	{
		tmp = cursor->next;
		if (!(ft_strchr(OPT, 'R'))
			|| !(ft_strcmp(ft_strrchr(cursor->content, '/'), "/."))
			|| !(ft_strcmp(ft_strrchr(cursor->content, '/'), "/.."))
			|| (ft_is_file_foo(cursor->content, "link"))
			|| (ft_is_dir(cursor->content)) != 1)
			ft_lstfreeone(&OUTPUT, &cursor);
		cursor = tmp;
	}
	return (OUTPUT);
}
Ejemplo n.º 24
0
char *ft_filename(char const *path)
{
	char *name;

	name = ft_strrchr(path, '/');
	if (name)
		return (ft_strdup(name + 1));
	else
		return (ft_strdup(path));
}
Ejemplo n.º 25
0
char	*find_name(char *dup, char **av, int start)
{
	char *name;

	name = ft_strrchr(dup, (int)'/');
	if (!name)
		name = dup;
	else if (*(name + 1) == '\0' && name != av[start])
	{
		*name = '\0';
		name = ft_strrchr(dup, (int)'/');
		if (!name)
			name = dup;
		else
			name++;
	}
	else
		name++;
	return (name);
}
Ejemplo n.º 26
0
char	*get_file_name(char *path)
{
	char	*ret;
	char	*file_name;

	if ((file_name = ft_strrchr(path, '/')) == NULL)
		ret = ft_strdup(path);
	else
		ret = ft_strdup(file_name + 1);
	return (ret);
}
Ejemplo n.º 27
0
static void		ft_clean_trailing_dotdot(char *path)
{
	char	*cursor;

	if (ft_strequ(path, "/.."))
	{
		path[1] = 0;
		return ;
	}
	cursor = ft_strrchr(path, '/');
	if (cursor && ft_strequ(cursor, "/.."))
	{
		cursor[0] = 0;
		cursor = ft_strrchr(path, '/');
		if (cursor == path)
			cursor[1] = 0;
		else
			cursor[0] = 0;
	}
	return ;
}
Ejemplo n.º 28
0
char	*ft_strrchr(const char *s, int c)
{
	char	*last;

	if (*s == '\0')
		return ((c == 0) ? (char *)s : NULL);
	last = ft_strrchr(s + 1, c);
	if (!last && *s == (char)c)
		return ((char *)s);
	else
		return (last);
}
Ejemplo n.º 29
0
void	prompt(int sig)
{
	char	*dir;

	(void)sig;
	dir = (char*)malloc(MAXPATHLEN);
	dir = getcwd(dir, MAXPATHLEN);
	if (sig > 0)
		write(1, "\n", 1);
	ft_printf("\033[31;1m[megaprompt]\033[0m %s> ", ft_strrchr(dir, '/'));
	ft_strdel(&dir);
}
Ejemplo n.º 30
0
char			*get_path(char *s)
{
	char			*ret;

	if (ft_strchr(s, '/'))
	{
		ret = ft_strrchr(s, '/');
		ret++;
	}
	else
		ret = s;
	return (ret);
}