diff --git a/libft/Makefile b/libft/Makefile index 935d6bd5..ba9ed15f 100644 --- a/libft/Makefile +++ b/libft/Makefile @@ -1,15 +1,25 @@ -NAME = libft.a -CC = gcc -AR = ar -rc +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: jhalford +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2017/02/07 16:09:36 by jhalford #+# #+# # +# Updated: 2017/02/07 16:13:25 by jhalford ### ########.fr # +# # +# **************************************************************************** # -MKDIR = mkdir -p -RM = /bin/rm -rf +NAME = libft.a +CC = gcc +AR = ar -rc +MKDIR = mkdir -p +RM = /bin/rm -rf FLAGS = -Wall -Wextra -Werror D_FLAGS = -g -LEN_NAME = `printf "%s" $(NAME) |wc -c` -DELTA = $$(echo "$$(tput cols)-24-$(LEN_NAME)"|bc) +DELTA = $$(echo "$$(tput cols)-47"|bc) SRC_DIR = src/ INC_DIR = includes/ @@ -167,6 +177,7 @@ str/ft_strsplit.c\ str/ft_strstr.c\ str/ft_strsub.c\ str/ft_strtrim.c\ +sys/dup2_close.c\ time/ft_mytime_free.c\ time/ft_mytime_get.c\ time/ft_time_isrecent.c\ @@ -175,24 +186,31 @@ xattr/ft_xattr_print.c SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) +NB = $(words $(SRC_BASE)) +INDEX = 0 all: $(NAME) -$(OBJ_DIR)%.o: $(SRC_DIR)%.c | $(OBJ_DIR) - @$(MKDIR) $(OBJ_DIR) - @$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\ - -I $(INC_DIR) - @printf "\r\033[38;5;11m⌛ MAKE %s plz wait : %*s\033[0m\033[K" $(NAME) $(DELTA) "$@" - -$(OBJ_DIR): - @$(MKDIR) $(OBJ_DIR) - @$(MKDIR) $(dir $(OBJS)) - $(NAME): $(OBJ_DIR) $(OBJS) @$(AR) $(NAME) $(OBJS) @ranlib $(NAME) @echo "\r\033[48;5;15;38;5;25m✅ MAKE $(NAME)\033[0m\033[K" +$(OBJ_DIR)%.o: $(SRC_DIR)%.c | $(OBJ_DIR) + @$(eval DONE=$(shell echo $$(($(INDEX)*20/$(NB))))) + @$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB))))) + @$(eval COLOR=$(shell echo $$(($(PERCENT)%35+196)))) + @$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB))))) + @printf "\r\033[38;5;11m⌛ MAKE %10.10s : %2d%% \033[48;5;%dm%*s\033[0m%*s\033[48;5;255m \033[0m \033[38;5;11m %*s\033[0m\033[K" $(NAME) $(PERCENT) $(COLOR) $(DONE) "" $(TO_DO) "" $(DELTA) "$@" + @$(MKDIR) $(OBJ_DIR) + @$(CC) $(FLAGS) $(D_FLAGS) -MMD -c $< -o $@\ + -I $(INC_DIR) + @$(eval INDEX=$(shell echo $$(($(INDEX)+1)))) + +$(OBJ_DIR): + @$(MKDIR) $(OBJ_DIR) + @$(MKDIR) $(dir $(OBJS)) + clean: @$(RM) $(OBJ_DIR) @echo "\r\033[38;5;202m✖ clean $(NAME).\033[0m\033[K" diff --git a/libft/includes/libft.h b/libft/includes/libft.h index da1c319d..fb3f1e19 100644 --- a/libft/includes/libft.h +++ b/libft/includes/libft.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/07 13:49:04 by jhalford #+# #+# */ -/* Updated: 2017/02/03 16:08:41 by jhalford ### ########.fr */ +/* Updated: 2017/02/07 16:12:40 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -156,7 +156,8 @@ char *ft_path_notdir(char *path); int ft_printf(const char *format, ...); int ft_dprintf(int fd, const char *format, ...); -char *ft_getenv(char **env, char *key); - void *ft_realloc(void *data, int size); + +char *ft_getenv(char **env, char *key); +int dup2_close(int fd1, int fd2); #endif diff --git a/libft/src/sys/dup2_close.c b/libft/src/sys/dup2_close.c new file mode 100644 index 00000000..5a7924a6 --- /dev/null +++ b/libft/src/sys/dup2_close.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* dup2_close.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2017/02/07 16:07:28 by jhalford #+# #+# */ +/* Updated: 2017/02/07 16:15:52 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int dup2_close(int fd1, int fd2) +{ + if (dup2(fd1, fd2)) + return (-1); + if (close(fd1)) + return (-1); + return (0); +}