init commit
This commit is contained in:
commit
9cc790d17a
89 changed files with 2727 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ft_ssl
|
||||||
|
*.o
|
||||||
|
*.a
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2010-2018 Google, Inc. http://angularjs.org
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
131
Makefile
Normal file
131
Makefile
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
# **************************************************************************** #
|
||||||
|
# #
|
||||||
|
# ::: :::::::: #
|
||||||
|
# Makefile :+: :+: :+: #
|
||||||
|
# +:+ +:+ +:+ #
|
||||||
|
# By: gtertysh <marvin@42.fr> +#+ +:+ +#+ #
|
||||||
|
# +#+#+#+#+#+ +#+ #
|
||||||
|
# Created: 2018/02/18 16:06:01 by gtertysh #+# #+# #
|
||||||
|
# Updated: 2018/06/24 18:49:59 by gtertysh ### ########.fr #
|
||||||
|
# #
|
||||||
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
# name of the executable file
|
||||||
|
|
||||||
|
NAME := ft_ssl
|
||||||
|
|
||||||
|
# project directories
|
||||||
|
|
||||||
|
ROOT := $(shell pwd)
|
||||||
|
SRC_DIR := $(ROOT)/src/
|
||||||
|
OBJ_DIR := $(ROOT)/obj/
|
||||||
|
INC_DIR := $(ROOT)/inc/
|
||||||
|
LIB_DIR := $(ROOT)/lib/
|
||||||
|
TST_DIR := $(ROOT)/t/
|
||||||
|
|
||||||
|
|
||||||
|
# libraries
|
||||||
|
|
||||||
|
LIBFT_DIR := $(LIB_DIR)libft/
|
||||||
|
LIBFT_INC := -I $(LIBFT_DIR)includes/
|
||||||
|
LIBFT_LIB := -lft -L $(LIBFT_DIR)
|
||||||
|
LIBFT = $(LIBFT_DIR)libft.a
|
||||||
|
|
||||||
|
# project source files
|
||||||
|
|
||||||
|
SRC = main.c
|
||||||
|
|
||||||
|
# project object files
|
||||||
|
|
||||||
|
OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
|
||||||
|
|
||||||
|
|
||||||
|
# project test files
|
||||||
|
|
||||||
|
|
||||||
|
# compilation flags
|
||||||
|
|
||||||
|
CC_FLAGS = -Wall -Wextra -Werror
|
||||||
|
|
||||||
|
CC_FLAGS += -Wpointer-arith
|
||||||
|
CC_FLAGS += -Wcast-align
|
||||||
|
CC_FLAGS += -Wwrite-strings
|
||||||
|
CC_FLAGS += -Wunreachable-code
|
||||||
|
CC_FLAGS += -Winit-self
|
||||||
|
CC_FLAGS += -Wmissing-field-initializers
|
||||||
|
CC_FLAGS += -Wno-unknown-pragmas
|
||||||
|
CC_FLAGS += -Wstrict-prototypes
|
||||||
|
CC_FLAGS += -Wundef
|
||||||
|
CC_FLAGS += -Wold-style-definition
|
||||||
|
|
||||||
|
# for debug
|
||||||
|
|
||||||
|
ifeq ($(DEBUG),true)
|
||||||
|
|
||||||
|
CC_FLAGS += -g
|
||||||
|
CC_FLAGS += -O0
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
# linking flags
|
||||||
|
|
||||||
|
LINK_FLAGS = ""
|
||||||
|
|
||||||
|
# header flags
|
||||||
|
|
||||||
|
HEADER_FLAGS = ""
|
||||||
|
|
||||||
|
# compiler
|
||||||
|
|
||||||
|
CC := clang
|
||||||
|
|
||||||
|
# rules
|
||||||
|
|
||||||
|
all: $(NAME)
|
||||||
|
|
||||||
|
$(NAME): $(LIBFT) $(OBJ)
|
||||||
|
$(CC) $(OBJ) $(LINK_FLAGS) -o $(NAME)
|
||||||
|
|
||||||
|
$(TEST_NAME): $(LIBFT) $(TEST_OBJ)
|
||||||
|
$(CC) $(TEST_OBJ) $(LINK_FLAGS) -o $(TEST_NAME)
|
||||||
|
|
||||||
|
$(OBJ): | $(OBJ_DIR)
|
||||||
|
|
||||||
|
$(TEST_OBJ): | $(OBJ_DIR)
|
||||||
|
|
||||||
|
$(OBJ_DIR):
|
||||||
|
mkdir $(OBJ_DIR)
|
||||||
|
|
||||||
|
$(OBJ_DIR)%.o: %.c
|
||||||
|
$(CC) -c $< -o $@ $(CC_FLAGS) $(HEADER_FLAGS)
|
||||||
|
|
||||||
|
$(LIBFT):
|
||||||
|
$(MAKE) -C $(LIBFT_DIR)
|
||||||
|
|
||||||
|
check: $(TEST_NAME)
|
||||||
|
clear
|
||||||
|
./$(TEST_NAME)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJ)
|
||||||
|
rm -f $(TEST_OBJ)
|
||||||
|
$(MAKE) -C $(LIBFT_DIR) clean
|
||||||
|
|
||||||
|
fclean: clean
|
||||||
|
rm -f $(NAME)
|
||||||
|
rm -f $(TEST_NAME)
|
||||||
|
rm -rf $(OBJ_DIR)
|
||||||
|
$(MAKE) -C $(LIBFT_DIR) fclean
|
||||||
|
|
||||||
|
re: fclean all
|
||||||
|
|
||||||
|
multi:
|
||||||
|
$(MAKE) $(LIBFT)
|
||||||
|
$(MAKE) check
|
||||||
|
$(MAKE) $(NAME)
|
||||||
|
|
||||||
|
# special stuff
|
||||||
|
|
||||||
|
vpath %.c $(SRC_DIR)
|
||||||
|
|
||||||
|
.PHONY: all check clean fclean re multi
|
1
author
Normal file
1
author
Normal file
|
@ -0,0 +1 @@
|
||||||
|
gtertysh
|
1
inc/.gitignore
vendored
Normal file
1
inc/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
!.gitignore
|
1
lib/.gitignore
vendored
Normal file
1
lib/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
!.gitignore
|
114
lib/libft/Makefile
Normal file
114
lib/libft/Makefile
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
# **************************************************************************** #
|
||||||
|
# #
|
||||||
|
# ::: :::::::: #
|
||||||
|
# Makefile :+: :+: :+: #
|
||||||
|
# +:+ +:+ +:+ #
|
||||||
|
# By: gtertysh <marvin@42.fr> +#+ +:+ +#+ #
|
||||||
|
# +#+#+#+#+#+ +#+ #
|
||||||
|
# Created: 2016/11/28 11:42:56 by gtertysh #+# #+# #
|
||||||
|
# Updated: 2017/11/18 17:42:09 by gtertysh ### ########.fr #
|
||||||
|
# #
|
||||||
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
NAME = libft.a
|
||||||
|
SRC = ft_memset.c \
|
||||||
|
ft_bzero.c \
|
||||||
|
ft_memcpy.c \
|
||||||
|
ft_memccpy.c \
|
||||||
|
ft_memmove.c \
|
||||||
|
ft_memchr.c \
|
||||||
|
ft_memcmp.c \
|
||||||
|
ft_strlen.c \
|
||||||
|
ft_strdup.c \
|
||||||
|
ft_strcpy.c \
|
||||||
|
ft_strncpy.c \
|
||||||
|
ft_strcat.c \
|
||||||
|
ft_strncat.c \
|
||||||
|
ft_strlcat.c \
|
||||||
|
ft_strchr.c \
|
||||||
|
ft_strrchr.c \
|
||||||
|
ft_strstr.c \
|
||||||
|
ft_strnstr.c \
|
||||||
|
ft_strcmp.c \
|
||||||
|
ft_strcmp_lex.c \
|
||||||
|
ft_strncmp.c \
|
||||||
|
ft_strtol.c \
|
||||||
|
ft_atoi.c \
|
||||||
|
ft_atof.c \
|
||||||
|
ft_isalpha.c \
|
||||||
|
ft_isspace.c \
|
||||||
|
ft_isdigit.c \
|
||||||
|
ft_isalnum.c \
|
||||||
|
ft_isascii.c \
|
||||||
|
ft_isprint.c \
|
||||||
|
ft_toupper.c \
|
||||||
|
ft_tolower.c \
|
||||||
|
\
|
||||||
|
ft_memalloc.c \
|
||||||
|
ft_memdel.c \
|
||||||
|
ft_strnew.c \
|
||||||
|
ft_strdel.c \
|
||||||
|
ft_strclr.c \
|
||||||
|
ft_striter.c \
|
||||||
|
ft_striteri.c \
|
||||||
|
ft_strmap.c \
|
||||||
|
ft_strmap.c \
|
||||||
|
ft_strmapi.c \
|
||||||
|
ft_strequ.c \
|
||||||
|
ft_strnequ.c \
|
||||||
|
ft_strsub.c \
|
||||||
|
ft_strjoin.c \
|
||||||
|
ft_strtrim.c \
|
||||||
|
ft_strsplit.c \
|
||||||
|
ft_itoa.c \
|
||||||
|
ft_putchar.c \
|
||||||
|
ft_putstr.c \
|
||||||
|
ft_putendl.c \
|
||||||
|
ft_putnbr.c \
|
||||||
|
ft_putchar_fd.c \
|
||||||
|
ft_putstr_fd.c \
|
||||||
|
ft_putendl_fd.c \
|
||||||
|
ft_putnbr_fd.c \
|
||||||
|
\
|
||||||
|
ft_lstnew.c \
|
||||||
|
ft_lstdelone.c \
|
||||||
|
ft_lstdel.c \
|
||||||
|
ft_lstadd.c \
|
||||||
|
ft_lstiter.c \
|
||||||
|
ft_lstmap.c \
|
||||||
|
ft_lstreduce.c \
|
||||||
|
ft_lststrsplit.c \
|
||||||
|
ft_lstfind.c \
|
||||||
|
ft_lst_at.c \
|
||||||
|
ft_lstadd_back.c \
|
||||||
|
ft_lst_len.c \
|
||||||
|
ft_lst_merge_sort.c \
|
||||||
|
ft_lst_rev.c \
|
||||||
|
ft_lst_search.c \
|
||||||
|
\
|
||||||
|
ft_realloc.c \
|
||||||
|
ft_read_file.c \
|
||||||
|
get_next_line.c \
|
||||||
|
ft_num_len.c \
|
||||||
|
ft_str_table_len.c
|
||||||
|
|
||||||
|
OBJ = $(SRC:.c=.o)
|
||||||
|
INC = -I ./includes/
|
||||||
|
CC = gcc
|
||||||
|
FLAGS = -Werror -Wextra -Wall
|
||||||
|
|
||||||
|
all: $(NAME)
|
||||||
|
|
||||||
|
$(NAME): $(OBJ)
|
||||||
|
ar rcs $(NAME) $(OBJ)
|
||||||
|
|
||||||
|
%.o: %.c ./includes/libft.h
|
||||||
|
$(CC) $(FLAGS) $(INC) -c $< -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(OBJ)
|
||||||
|
|
||||||
|
fclean: clean
|
||||||
|
rm -rf $(NAME)
|
||||||
|
|
||||||
|
re: clean all
|
1
lib/libft/author
Normal file
1
lib/libft/author
Normal file
|
@ -0,0 +1 @@
|
||||||
|
gtertysh
|
41
lib/libft/ft_atof.c
Normal file
41
lib/libft/ft_atof.c
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_atof.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/10/31 10:27:11 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2018/06/21 19:46:28 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
double ft_atof(const char *str)
|
||||||
|
{
|
||||||
|
double fraction;
|
||||||
|
double number;
|
||||||
|
int sign;
|
||||||
|
char ch;
|
||||||
|
|
||||||
|
fraction = 1;
|
||||||
|
number = 0.0;
|
||||||
|
sign = 1;
|
||||||
|
ch = 0;
|
||||||
|
while (str && *str && (ch = GETCH(str)) && ft_isspace(ch))
|
||||||
|
;
|
||||||
|
if (ch == '-' && (ch = GETCH(str)))
|
||||||
|
sign = -1;
|
||||||
|
if (ch == '+' && (ch = GETCH(str)))
|
||||||
|
sign = 1;
|
||||||
|
while (ch && ft_isdigit(ch))
|
||||||
|
{
|
||||||
|
number = number * 10.0 + (ch - '0');
|
||||||
|
ch = GETCH(str);
|
||||||
|
}
|
||||||
|
if ('.' == ch)
|
||||||
|
while ((ch = GETCH(str)) && ft_isdigit(ch) && (fraction *= 0.1))
|
||||||
|
number += (ch - '0') * fraction;
|
||||||
|
return (number * sign);
|
||||||
|
}
|
35
lib/libft/ft_atoi.c
Normal file
35
lib/libft/ft_atoi.c
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_atoi.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/10/31 10:27:11 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 19:51:54 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
int ft_atoi(const char *str)
|
||||||
|
{
|
||||||
|
int numb;
|
||||||
|
int is_negative;
|
||||||
|
|
||||||
|
numb = 0;
|
||||||
|
is_negative = 0;
|
||||||
|
while (*str == ' ' || *str == '\n' || *str == '\t' ||
|
||||||
|
*str == '\r' || *str == '\f' || *str == '\v')
|
||||||
|
str++;
|
||||||
|
if (*str == '-' && str++)
|
||||||
|
is_negative = 1;
|
||||||
|
else if (*str == '+')
|
||||||
|
str++;
|
||||||
|
while (*str >= '0' && *str <= '9' && *str != '\0')
|
||||||
|
{
|
||||||
|
numb = numb * 10 + *str - '0';
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
if (is_negative)
|
||||||
|
return (-numb);
|
||||||
|
return (numb);
|
||||||
|
}
|
18
lib/libft/ft_bzero.c
Normal file
18
lib/libft/ft_bzero.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_bzero.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/28 16:19:32 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/28 16:39:45 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_bzero(void *s, size_t n)
|
||||||
|
{
|
||||||
|
ft_memset(s, 0, n);
|
||||||
|
}
|
20
lib/libft/ft_isalnum.c
Normal file
20
lib/libft/ft_isalnum.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isalnum.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:11:05 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:17:24 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isalnum(int c)
|
||||||
|
{
|
||||||
|
if (ft_isalpha(c) || ft_isdigit(c))
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
21
lib/libft/ft_isalpha.c
Normal file
21
lib/libft/ft_isalpha.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isalpha.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 14:58:04 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:05:30 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isalpha(int c)
|
||||||
|
{
|
||||||
|
if ((c >= 'A' && c <= 'Z') ||
|
||||||
|
(c >= 'a' && c <= 'z'))
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
20
lib/libft/ft_isascii.c
Normal file
20
lib/libft/ft_isascii.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isascii.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:18:01 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:21:12 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isascii(int c)
|
||||||
|
{
|
||||||
|
if (c >= 0 && c <= 127)
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
20
lib/libft/ft_isdigit.c
Normal file
20
lib/libft/ft_isdigit.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isdigit.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:08:32 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:09:31 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isdigit(int c)
|
||||||
|
{
|
||||||
|
if (c >= '0' && c <= '9')
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
20
lib/libft/ft_isprint.c
Normal file
20
lib/libft/ft_isprint.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isprint.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:22:01 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:24:46 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isprint(int c)
|
||||||
|
{
|
||||||
|
if (c >= 32 && c <= 126)
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
20
lib/libft/ft_isspace.c
Normal file
20
lib/libft/ft_isspace.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_isspace.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 14:58:04 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:05:30 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_isspace(int c)
|
||||||
|
{
|
||||||
|
if ((c >= 0x09 && c <= 0x13) || c == 0x20)
|
||||||
|
return (1);
|
||||||
|
return (0);
|
||||||
|
}
|
73
lib/libft/ft_itoa.c
Normal file
73
lib/libft/ft_itoa.c
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_itoa.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/02 19:59:03 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:12:59 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
static void help_help(int *n, char *ret, int *i)
|
||||||
|
{
|
||||||
|
if (*n < 0)
|
||||||
|
{
|
||||||
|
ret[0] = '-';
|
||||||
|
*i = *i + 1;
|
||||||
|
*n = -(*n);
|
||||||
|
}
|
||||||
|
if (*n == 0)
|
||||||
|
ret[0] = '0';
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *help(int n, long *div)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
len = 0;
|
||||||
|
while (n)
|
||||||
|
{
|
||||||
|
n /= 10;
|
||||||
|
*div = *div * 10;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
if (n < 0 || n == 0)
|
||||||
|
len++;
|
||||||
|
ret = ft_strnew(len);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *ft_itoa(int n)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
long div;
|
||||||
|
int i;
|
||||||
|
int exception;
|
||||||
|
|
||||||
|
exception = 0;
|
||||||
|
div = 1;
|
||||||
|
i = 0;
|
||||||
|
if (n == -2147483648)
|
||||||
|
{
|
||||||
|
n = n / 10;
|
||||||
|
exception = 1;
|
||||||
|
}
|
||||||
|
if (!(ret = help(n, &div)))
|
||||||
|
return (NULL);
|
||||||
|
help_help(&n, ret, &i);
|
||||||
|
while (div > 1)
|
||||||
|
{
|
||||||
|
div /= 10;
|
||||||
|
ret[i++] = n / div + '0';
|
||||||
|
n = n % div;
|
||||||
|
}
|
||||||
|
if (exception)
|
||||||
|
ret[i] = '8';
|
||||||
|
return (ret);
|
||||||
|
}
|
20
lib/libft/ft_lst_at.c
Normal file
20
lib/libft/ft_lst_at.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lst_at.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/06 17:17:21 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:49:09 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lst_at(t_list *l, unsigned int at)
|
||||||
|
{
|
||||||
|
while (at-- && l)
|
||||||
|
l = l->next;
|
||||||
|
return (l);
|
||||||
|
}
|
26
lib/libft/ft_lst_len.c
Normal file
26
lib/libft/ft_lst_len.c
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lst_len.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 19:13:25 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/03/24 20:06:06 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_lst_len(t_list *lst)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
while (lst)
|
||||||
|
{
|
||||||
|
lst = lst->next;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
return (len);
|
||||||
|
}
|
79
lib/libft/ft_lst_merge_sort.c
Normal file
79
lib/libft/ft_lst_merge_sort.c
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lst_merge_sort.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/04/02 06:44:41 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/04/02 06:44:43 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
static t_list *merge(t_list *a, t_list *b, int (*cmp)())
|
||||||
|
{
|
||||||
|
t_list *result;
|
||||||
|
|
||||||
|
result = NULL;
|
||||||
|
if (a == NULL)
|
||||||
|
return (b);
|
||||||
|
else if (b == NULL)
|
||||||
|
return (a);
|
||||||
|
if (cmp(a->content, b->content))
|
||||||
|
{
|
||||||
|
result = a;
|
||||||
|
result->next = merge(a->next, b, cmp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = b;
|
||||||
|
result->next = merge(a, b->next, cmp);
|
||||||
|
}
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void split(t_list *source, t_list **front_ptr, t_list **back_ptr)
|
||||||
|
{
|
||||||
|
t_list *fast;
|
||||||
|
t_list *slow;
|
||||||
|
|
||||||
|
if (source == NULL || source->next == NULL)
|
||||||
|
{
|
||||||
|
*front_ptr = source;
|
||||||
|
*back_ptr = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slow = source;
|
||||||
|
fast = source->next;
|
||||||
|
while (fast != NULL)
|
||||||
|
{
|
||||||
|
fast = fast->next;
|
||||||
|
if (fast != NULL)
|
||||||
|
{
|
||||||
|
slow = slow->next;
|
||||||
|
fast = fast->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*front_ptr = source;
|
||||||
|
*back_ptr = slow->next;
|
||||||
|
slow->next = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ft_lst_merge_sort(t_list **head_ptr, int (*cmp)())
|
||||||
|
{
|
||||||
|
t_list *head;
|
||||||
|
t_list *a;
|
||||||
|
t_list *b;
|
||||||
|
|
||||||
|
head = *head_ptr;
|
||||||
|
if ((head == NULL) || (head->next == NULL))
|
||||||
|
return ;
|
||||||
|
split(head, &a, &b);
|
||||||
|
ft_lst_merge_sort(&a, cmp);
|
||||||
|
ft_lst_merge_sort(&b, cmp);
|
||||||
|
*head_ptr = merge(a, b, cmp);
|
||||||
|
}
|
31
lib/libft/ft_lst_rev.c
Normal file
31
lib/libft/ft_lst_rev.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lst_rev.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/09 16:28:30 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/09 17:06:02 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lst_rev(t_list **begin_list)
|
||||||
|
{
|
||||||
|
t_list *prev;
|
||||||
|
t_list *next;
|
||||||
|
t_list *curr;
|
||||||
|
|
||||||
|
prev = NULL;
|
||||||
|
curr = *begin_list;
|
||||||
|
while (curr)
|
||||||
|
{
|
||||||
|
next = curr->next;
|
||||||
|
curr->next = prev;
|
||||||
|
prev = curr;
|
||||||
|
curr = next;
|
||||||
|
}
|
||||||
|
*begin_list = prev;
|
||||||
|
}
|
29
lib/libft/ft_lst_search.c
Normal file
29
lib/libft/ft_lst_search.c
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lst_search.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/09 16:28:30 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2018/06/21 19:44:24 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lst_search
|
||||||
|
(
|
||||||
|
t_list *l,
|
||||||
|
void *to_find,
|
||||||
|
int (*cmp)(void *to_find, void *l_content)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
while (l && cmp)
|
||||||
|
{
|
||||||
|
if (cmp(to_find, l->content))
|
||||||
|
return (l);
|
||||||
|
l = l->next;
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
22
lib/libft/ft_lstadd.c
Normal file
22
lib/libft/ft_lstadd.c
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstadd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 19:01:42 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 19:12:10 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lstadd(t_list **alst, t_list *new)
|
||||||
|
{
|
||||||
|
if (alst && new)
|
||||||
|
{
|
||||||
|
new->next = *alst;
|
||||||
|
*alst = new;
|
||||||
|
}
|
||||||
|
}
|
27
lib/libft/ft_lstadd_back.c
Normal file
27
lib/libft/ft_lstadd_back.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstadd_back.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/06 17:45:28 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 20:06:23 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lstadd_back(t_list **l, void *content, size_t size)
|
||||||
|
{
|
||||||
|
if (!l)
|
||||||
|
return ;
|
||||||
|
if (*l == NULL)
|
||||||
|
(*l) = ft_lstnew(content, size);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ((*l)->next)
|
||||||
|
l = &(*l)->next;
|
||||||
|
(*l)->next = ft_lstnew(content, size);
|
||||||
|
}
|
||||||
|
}
|
31
lib/libft/ft_lstdel.c
Normal file
31
lib/libft/ft_lstdel.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstdel.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 18:48:08 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/05 18:50:39 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lstdel(t_list **alst, void (*del)(void *, size_t))
|
||||||
|
{
|
||||||
|
t_list *tmp;
|
||||||
|
|
||||||
|
tmp = NULL;
|
||||||
|
if (alst)
|
||||||
|
{
|
||||||
|
while (*alst)
|
||||||
|
{
|
||||||
|
tmp = (*alst)->next;
|
||||||
|
del((*alst)->content, (*alst)->content_size);
|
||||||
|
free(*alst);
|
||||||
|
*alst = tmp;
|
||||||
|
}
|
||||||
|
*alst = NULL;
|
||||||
|
}
|
||||||
|
}
|
23
lib/libft/ft_lstdelone.c
Normal file
23
lib/libft/ft_lstdelone.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstdelone.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 18:30:18 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:46:45 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lstdelone(t_list **alst, void (*del)(void *, size_t))
|
||||||
|
{
|
||||||
|
if (alst && *alst && del)
|
||||||
|
{
|
||||||
|
del((*alst)->content, (*alst)->content_size);
|
||||||
|
free(*alst);
|
||||||
|
*alst = NULL;
|
||||||
|
}
|
||||||
|
}
|
24
lib/libft/ft_lstfind.c
Normal file
24
lib/libft/ft_lstfind.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstfind.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/06 16:56:43 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:47:14 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lstfind(t_list *lst, void *data, size_t size)
|
||||||
|
{
|
||||||
|
while (lst)
|
||||||
|
{
|
||||||
|
if ((ft_memcmp(lst->content, data, size) == 0))
|
||||||
|
return (lst);
|
||||||
|
lst = lst->next;
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
22
lib/libft/ft_lstiter.c
Normal file
22
lib/libft/ft_lstiter.c
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstiter.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 19:13:25 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:47:50 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_lstiter(t_list *lst, void (*f)(t_list *elem))
|
||||||
|
{
|
||||||
|
while (lst && f)
|
||||||
|
{
|
||||||
|
f(lst);
|
||||||
|
lst = lst->next;
|
||||||
|
}
|
||||||
|
}
|
26
lib/libft/ft_lstmap.c
Normal file
26
lib/libft/ft_lstmap.c
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstmap.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 19:18:15 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 18:08:53 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem))
|
||||||
|
{
|
||||||
|
t_list *new;
|
||||||
|
|
||||||
|
new = NULL;
|
||||||
|
if (lst && f)
|
||||||
|
{
|
||||||
|
new = f(lst);
|
||||||
|
new->next = ft_lstmap(lst->next, f);
|
||||||
|
}
|
||||||
|
return (new);
|
||||||
|
}
|
40
lib/libft/ft_lstnew.c
Normal file
40
lib/libft/ft_lstnew.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstnew.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 15:59:21 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:45:44 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lstnew(void const *content, size_t content_size)
|
||||||
|
{
|
||||||
|
t_list *new;
|
||||||
|
|
||||||
|
new = NULL;
|
||||||
|
if ((new = (t_list *)malloc(sizeof(t_list))))
|
||||||
|
{
|
||||||
|
if (!content)
|
||||||
|
{
|
||||||
|
new->content = NULL;
|
||||||
|
new->content_size = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!(new->content = (char *)malloc(content_size)))
|
||||||
|
{
|
||||||
|
free(new);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
ft_memcpy(new->content, content, content_size);
|
||||||
|
new->content_size = content_size;
|
||||||
|
}
|
||||||
|
new->next = NULL;
|
||||||
|
}
|
||||||
|
return (new);
|
||||||
|
}
|
31
lib/libft/ft_lstreduce.c
Normal file
31
lib/libft/ft_lstreduce.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lstreduce.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/10/31 10:27:11 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2018/06/21 19:42:58 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_lstreduce
|
||||||
|
(
|
||||||
|
t_list *l,
|
||||||
|
void *(*iterator)(t_list *, void *, int index),
|
||||||
|
void *acc
|
||||||
|
)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (l && iterator && acc)
|
||||||
|
{
|
||||||
|
acc = iterator(l, acc, i++);
|
||||||
|
l = l->next;
|
||||||
|
}
|
||||||
|
return (acc);
|
||||||
|
}
|
38
lib/libft/ft_lststrsplit.c
Normal file
38
lib/libft/ft_lststrsplit.c
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_lststrsplit.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/06 15:32:39 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 20:07:14 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_list *ft_lststrsplit(const char *s, char c)
|
||||||
|
{
|
||||||
|
char **arr_table;
|
||||||
|
t_list *lst_table;
|
||||||
|
t_list *tmp;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
lst_table = NULL;
|
||||||
|
arr_table = ft_strsplit(s, c);
|
||||||
|
if (arr_table[i])
|
||||||
|
{
|
||||||
|
lst_table = ft_lstnew(arr_table[i], ft_strlen(arr_table[i]) + 1);
|
||||||
|
tmp = lst_table;
|
||||||
|
i++;
|
||||||
|
while (arr_table[i])
|
||||||
|
{
|
||||||
|
tmp->next = ft_lstnew(arr_table[i], ft_strlen(arr_table[i]) + 1);
|
||||||
|
tmp = tmp->next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (lst_table);
|
||||||
|
}
|
23
lib/libft/ft_memalloc.c
Normal file
23
lib/libft/ft_memalloc.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memalloc.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 16:07:55 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 16:49:22 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memalloc(size_t size)
|
||||||
|
{
|
||||||
|
void *ret;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if ((ret = malloc(size)))
|
||||||
|
ft_bzero(ret, size);
|
||||||
|
return (ret);
|
||||||
|
}
|
28
lib/libft/ft_memccpy.c
Normal file
28
lib/libft/ft_memccpy.c
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memccpy.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/29 13:35:32 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/05 13:12:20 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memccpy(void *dst, const void *src, int c, size_t n)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < n)
|
||||||
|
{
|
||||||
|
*((char *)dst + i) = *((const char *)src + i);
|
||||||
|
if (*((unsigned char *)src + i) == (unsigned char)c)
|
||||||
|
return ((dst + i + 1));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
24
lib/libft/ft_memchr.c
Normal file
24
lib/libft/ft_memchr.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memchr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/29 15:55:30 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 18:51:40 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memchr(const void *s, int c, size_t n)
|
||||||
|
{
|
||||||
|
while (n--)
|
||||||
|
{
|
||||||
|
if (*(unsigned char *)s == (unsigned char)c)
|
||||||
|
return ((unsigned char *)s);
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
25
lib/libft/ft_memcmp.c
Normal file
25
lib/libft/ft_memcmp.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memcmp.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/29 16:31:56 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 14:07:47 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_memcmp(const void *s1, const void *s2, size_t n)
|
||||||
|
{
|
||||||
|
while ((int)n--)
|
||||||
|
{
|
||||||
|
if ((*(unsigned char *)s1 != *(unsigned char *)s2))
|
||||||
|
return (*(unsigned char *)s1 - *(unsigned char *)s2);
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
21
lib/libft/ft_memcpy.c
Normal file
21
lib/libft/ft_memcpy.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memcpy.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/28 17:19:13 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/29 14:52:27 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memcpy(void *dst, const void *src, size_t len)
|
||||||
|
{
|
||||||
|
if (dst && src)
|
||||||
|
while (len--)
|
||||||
|
*((char *)dst++) = *((const char *)src++);
|
||||||
|
return (dst);
|
||||||
|
}
|
22
lib/libft/ft_memdel.c
Normal file
22
lib/libft/ft_memdel.c
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memdel.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 16:50:09 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:18:12 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_memdel(void **ap)
|
||||||
|
{
|
||||||
|
if (ap)
|
||||||
|
{
|
||||||
|
free(*ap);
|
||||||
|
*ap = NULL;
|
||||||
|
}
|
||||||
|
}
|
33
lib/libft/ft_memmove.c
Normal file
33
lib/libft/ft_memmove.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memmove.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/29 14:55:05 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 16:38:06 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memmove(void *dst, const void *src, size_t len)
|
||||||
|
{
|
||||||
|
unsigned char *tmp;
|
||||||
|
|
||||||
|
tmp = dst;
|
||||||
|
if (src < dst)
|
||||||
|
{
|
||||||
|
src += len;
|
||||||
|
dst += len;
|
||||||
|
while (len--)
|
||||||
|
*((char *)--dst) = *((const char *)--src);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (len--)
|
||||||
|
*(char *)dst++ = *(const char *)src++;
|
||||||
|
}
|
||||||
|
return (tmp);
|
||||||
|
}
|
21
lib/libft/ft_memset.c
Normal file
21
lib/libft/ft_memset.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_memset.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/28 12:06:20 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/28 16:47:35 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_memset(void *b, int c, size_t len)
|
||||||
|
{
|
||||||
|
if (b)
|
||||||
|
while (len--)
|
||||||
|
*(unsigned char *)b++ = (unsigned char)c;
|
||||||
|
return (b);
|
||||||
|
}
|
28
lib/libft/ft_num_len.c
Normal file
28
lib/libft/ft_num_len.c
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_num_len.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/04/02 06:46:38 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/04/02 06:46:41 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_num_len(long num)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = 1;
|
||||||
|
if (num > 9)
|
||||||
|
while (num)
|
||||||
|
{
|
||||||
|
num /= 10;
|
||||||
|
if (num)
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
return (len);
|
||||||
|
}
|
18
lib/libft/ft_putchar.c
Normal file
18
lib/libft/ft_putchar.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putchar.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 14:29:56 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:04:42 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putchar(char c)
|
||||||
|
{
|
||||||
|
write(1, &c, 1);
|
||||||
|
}
|
18
lib/libft/ft_putchar_fd.c
Normal file
18
lib/libft/ft_putchar_fd.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putchar_fd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 15:03:56 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:04:30 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putchar_fd(char c, int fd)
|
||||||
|
{
|
||||||
|
write(fd, &c, 1);
|
||||||
|
}
|
21
lib/libft/ft_putendl.c
Normal file
21
lib/libft/ft_putendl.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putendl.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 14:57:59 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:24:37 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putendl(char const *s)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
while (*s)
|
||||||
|
write(1, s++, 1);
|
||||||
|
write(1, "\n", 1);
|
||||||
|
}
|
21
lib/libft/ft_putendl_fd.c
Normal file
21
lib/libft/ft_putendl_fd.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putendl_fd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 15:17:18 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:24:55 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putendl_fd(char const *s, int fd)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
while (*s)
|
||||||
|
write(fd, s++, 1);
|
||||||
|
write(fd, "\n", 1);
|
||||||
|
}
|
58
lib/libft/ft_putnbr.c
Normal file
58
lib/libft/ft_putnbr.c
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putnbr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/10/31 09:45:39 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:26:28 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
static void ft_putnbr_print(int nb, long div, int exeption)
|
||||||
|
{
|
||||||
|
if (nb < 0)
|
||||||
|
{
|
||||||
|
nb = -nb;
|
||||||
|
ft_putchar('-');
|
||||||
|
}
|
||||||
|
if (div == 1)
|
||||||
|
ft_putchar('0');
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (div > 1)
|
||||||
|
{
|
||||||
|
div = div / 10;
|
||||||
|
ft_putchar(nb / div + '0');
|
||||||
|
nb = nb % div;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (exeption)
|
||||||
|
ft_putchar('8');
|
||||||
|
}
|
||||||
|
|
||||||
|
void ft_putnbr(int nb)
|
||||||
|
{
|
||||||
|
int temp;
|
||||||
|
long div;
|
||||||
|
int exeption;
|
||||||
|
|
||||||
|
div = 1;
|
||||||
|
exeption = 0;
|
||||||
|
temp = nb;
|
||||||
|
if (nb == -2147483648)
|
||||||
|
{
|
||||||
|
nb = nb / 10;
|
||||||
|
temp = temp / 10;
|
||||||
|
exeption = 1;
|
||||||
|
}
|
||||||
|
while (temp)
|
||||||
|
{
|
||||||
|
temp = temp / 10;
|
||||||
|
div = div * 10;
|
||||||
|
}
|
||||||
|
ft_putnbr_print(nb, div, exeption);
|
||||||
|
}
|
58
lib/libft/ft_putnbr_fd.c
Normal file
58
lib/libft/ft_putnbr_fd.c
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putnbr_fd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 15:19:18 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:25:42 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
static void ft_putnbr_print(int nb, long div, int exeption, int fd)
|
||||||
|
{
|
||||||
|
if (nb < 0)
|
||||||
|
{
|
||||||
|
nb = -nb;
|
||||||
|
ft_putchar_fd('-', fd);
|
||||||
|
}
|
||||||
|
if (div == 1)
|
||||||
|
ft_putchar_fd('0', fd);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (div > 1)
|
||||||
|
{
|
||||||
|
div = div / 10;
|
||||||
|
ft_putchar_fd(nb / div + '0', fd);
|
||||||
|
nb = nb % div;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (exeption)
|
||||||
|
ft_putchar_fd('8', fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ft_putnbr_fd(int nb, int fd)
|
||||||
|
{
|
||||||
|
int temp;
|
||||||
|
long div;
|
||||||
|
int exeption;
|
||||||
|
|
||||||
|
div = 1;
|
||||||
|
exeption = 0;
|
||||||
|
temp = nb;
|
||||||
|
if (nb == -2147483648)
|
||||||
|
{
|
||||||
|
nb = nb / 10;
|
||||||
|
temp = temp / 10;
|
||||||
|
exeption = 1;
|
||||||
|
}
|
||||||
|
while (temp)
|
||||||
|
{
|
||||||
|
temp = temp / 10;
|
||||||
|
div = div * 10;
|
||||||
|
}
|
||||||
|
ft_putnbr_print(nb, div, exeption, fd);
|
||||||
|
}
|
20
lib/libft/ft_putstr.c
Normal file
20
lib/libft/ft_putstr.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putstr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 14:55:00 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:25:12 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putstr(char const *s)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
while (*s)
|
||||||
|
write(1, s++, 1);
|
||||||
|
}
|
20
lib/libft/ft_putstr_fd.c
Normal file
20
lib/libft/ft_putstr_fd.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_putstr_fd.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/04 15:14:02 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/04 15:26:07 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_putstr_fd(char const *s, int fd)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
while (*s)
|
||||||
|
write(fd, s++, 1);
|
||||||
|
}
|
31
lib/libft/ft_read_file.c
Normal file
31
lib/libft/ft_read_file.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_read_file.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/27 17:59:03 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/27 18:01:33 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_read_file(const int fd)
|
||||||
|
{
|
||||||
|
long readed;
|
||||||
|
long old_size;
|
||||||
|
char buf[BUFF_SIZE + 1];
|
||||||
|
char *string;
|
||||||
|
|
||||||
|
string = ft_memalloc(sizeof(char) * BUFF_SIZE);
|
||||||
|
while ((readed = read(fd, buf, BUFF_SIZE)))
|
||||||
|
{
|
||||||
|
buf[readed] = '\0';
|
||||||
|
old_size = ft_strlen(string);
|
||||||
|
string = ft_realloc(string, old_size + readed + 1, old_size);
|
||||||
|
ft_strcat(string, buf);
|
||||||
|
}
|
||||||
|
return (string);
|
||||||
|
}
|
32
lib/libft/ft_realloc.c
Normal file
32
lib/libft/ft_realloc.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_realloc.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/06 18:57:55 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/07 17:16:48 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void *ft_realloc(void *old, unsigned int new_size, unsigned int old_size)
|
||||||
|
{
|
||||||
|
void *new;
|
||||||
|
|
||||||
|
new = NULL;
|
||||||
|
if ((new = ft_memalloc(new_size)))
|
||||||
|
{
|
||||||
|
if (old)
|
||||||
|
{
|
||||||
|
if (old_size)
|
||||||
|
ft_memcpy(new, old, old_size);
|
||||||
|
free(old);
|
||||||
|
old = NULL;
|
||||||
|
}
|
||||||
|
return (new);
|
||||||
|
}
|
||||||
|
return (old);
|
||||||
|
}
|
25
lib/libft/ft_str_table_len.c
Normal file
25
lib/libft/ft_str_table_len.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_str_table_len.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/11/05 17:25:40 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/11/05 17:25:42 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
int ft_str_table_len(char **tab)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
if (tab)
|
||||||
|
while (*tab)
|
||||||
|
{
|
||||||
|
tab++;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
return (len);
|
||||||
|
}
|
26
lib/libft/ft_strcat.c
Normal file
26
lib/libft/ft_strcat.c
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strcat.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 14:58:16 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 15:02:50 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strcat(char *s1, const char *s2)
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
s = s1;
|
||||||
|
while (*s1)
|
||||||
|
s1++;
|
||||||
|
while (*s2)
|
||||||
|
*s1++ = *s2++;
|
||||||
|
*s1 = '\0';
|
||||||
|
return (s);
|
||||||
|
}
|
22
lib/libft/ft_strchr.c
Normal file
22
lib/libft/ft_strchr.c
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strchr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 18:14:04 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 18:29:27 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strchr(const char *s, int c)
|
||||||
|
{
|
||||||
|
while (*s && *s != (char)c)
|
||||||
|
s++;
|
||||||
|
if (*s == (char)c)
|
||||||
|
return ((char *)s);
|
||||||
|
return (NULL);
|
||||||
|
}
|
19
lib/libft/ft_strclr.c
Normal file
19
lib/libft/ft_strclr.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strclr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:21:04 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:30:26 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_strclr(char *s)
|
||||||
|
{
|
||||||
|
if (s)
|
||||||
|
ft_bzero(s, ft_strlen(s));
|
||||||
|
}
|
25
lib/libft/ft_strcmp.c
Normal file
25
lib/libft/ft_strcmp.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strcmp.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 13:40:16 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:52:50 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_strcmp(const char *s1, const char *s2)
|
||||||
|
{
|
||||||
|
while (*s1 && *s2 && *(unsigned char *)s1 == *(unsigned char *)s2)
|
||||||
|
{
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
}
|
||||||
|
if (*(unsigned char *)s1 != *(unsigned char *)s2)
|
||||||
|
return (*(unsigned char *)s1 - *(unsigned char *)s2);
|
||||||
|
return (0);
|
||||||
|
}
|
32
lib/libft/ft_strcmp_lex.c
Normal file
32
lib/libft/ft_strcmp_lex.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_tolower.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:58:52 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/04/02 06:47:00 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_strcmp_lex(const char *s1, const char *s2)
|
||||||
|
{
|
||||||
|
int s1_low;
|
||||||
|
int s2_low;
|
||||||
|
|
||||||
|
s1_low = ft_tolower(*(unsigned char *)s1);
|
||||||
|
s2_low = ft_tolower(*(unsigned char *)s2);
|
||||||
|
while (*s1 && *s2 && s1_low == s2_low)
|
||||||
|
{
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
s1_low = ft_tolower(*(unsigned char *)s1);
|
||||||
|
s2_low = ft_tolower(*(unsigned char *)s2);
|
||||||
|
}
|
||||||
|
if (s1_low != s2_low)
|
||||||
|
return (s1_low - s2_low);
|
||||||
|
return (0);
|
||||||
|
}
|
24
lib/libft/ft_strcpy.c
Normal file
24
lib/libft/ft_strcpy.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strcpy.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 13:03:43 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 13:09:52 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strcpy(char *dst, const char *src)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (*src)
|
||||||
|
*(dst + i++) = *src++;
|
||||||
|
*(dst + i) = '\0';
|
||||||
|
return (dst);
|
||||||
|
}
|
18
lib/libft/ft_strdel.c
Normal file
18
lib/libft/ft_strdel.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strdel.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:15:34 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:17:50 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_strdel(char **as)
|
||||||
|
{
|
||||||
|
ft_memdel((void **)as);
|
||||||
|
}
|
32
lib/libft/ft_strdup.c
Normal file
32
lib/libft/ft_strdup.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strdup.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 12:51:34 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 18:31:11 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strdup(const char *s1)
|
||||||
|
{
|
||||||
|
char *new;
|
||||||
|
size_t size;
|
||||||
|
|
||||||
|
new = 0;
|
||||||
|
if (s1)
|
||||||
|
{
|
||||||
|
if ((size = ft_strlen(s1)) != 0)
|
||||||
|
{
|
||||||
|
if (!(new = (char *)malloc(sizeof(char) * (size + 1))))
|
||||||
|
return (0);
|
||||||
|
ft_memcpy(new, s1, size);
|
||||||
|
*(new + size) = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (new);
|
||||||
|
}
|
28
lib/libft/ft_strequ.c
Normal file
28
lib/libft/ft_strequ.c
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strequ.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 18:51:03 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 19:00:02 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_strequ(char const *s1, char const *s2)
|
||||||
|
{
|
||||||
|
if (s1 && s2)
|
||||||
|
{
|
||||||
|
while (*s1 && *s2 && *s1 == *s2)
|
||||||
|
{
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
}
|
||||||
|
if (*s1 != *s2)
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
return (1);
|
||||||
|
}
|
20
lib/libft/ft_striter.c
Normal file
20
lib/libft/ft_striter.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_striter.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:36:39 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:37:33 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_striter(char *s, void (*f)(char *))
|
||||||
|
{
|
||||||
|
if (s && f)
|
||||||
|
while (*s)
|
||||||
|
f(s++);
|
||||||
|
}
|
23
lib/libft/ft_striteri.c
Normal file
23
lib/libft/ft_striteri.c
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_striteri.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:31:23 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:38:48 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
void ft_striteri(char *s, void (*f)(unsigned int, char *))
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
if (s && f)
|
||||||
|
while (*s)
|
||||||
|
f(i++, s++);
|
||||||
|
}
|
32
lib/libft/ft_strjoin.c
Normal file
32
lib/libft/ft_strjoin.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strjoin.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 19:53:30 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/02 16:18:10 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strjoin(char const *s1, char const *s2)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
char *tmp;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if (s1 &&
|
||||||
|
s2 &&
|
||||||
|
(ret = ft_strnew(ft_strlen(s1) + ft_strlen(s2))) &&
|
||||||
|
(tmp = ret))
|
||||||
|
{
|
||||||
|
while (*s1)
|
||||||
|
*tmp++ = *s1++;
|
||||||
|
while (*s2)
|
||||||
|
*tmp++ = *s2++;
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
32
lib/libft/ft_strlcat.c
Normal file
32
lib/libft/ft_strlcat.c
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strlcat.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 15:16:55 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 18:13:07 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
size_t ft_strlcat(char *dst, const char *src, size_t size)
|
||||||
|
{
|
||||||
|
size_t dst_size;
|
||||||
|
size_t src_size;
|
||||||
|
|
||||||
|
dst_size = ft_strlen(dst);
|
||||||
|
src_size = ft_strlen(src);
|
||||||
|
while (*dst)
|
||||||
|
dst++;
|
||||||
|
if (size > dst_size)
|
||||||
|
{
|
||||||
|
while (*src && (size-- - dst_size - 1))
|
||||||
|
*dst++ = *src++;
|
||||||
|
*dst = '\0';
|
||||||
|
return (src_size + dst_size);
|
||||||
|
}
|
||||||
|
return (src_size + size);
|
||||||
|
}
|
24
lib/libft/ft_strlen.c
Normal file
24
lib/libft/ft_strlen.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strlen.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 12:37:23 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 12:48:50 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
size_t ft_strlen(const char *s)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
if (s)
|
||||||
|
while (*(unsigned char *)s++)
|
||||||
|
len++;
|
||||||
|
return (len);
|
||||||
|
}
|
30
lib/libft/ft_strmap.c
Normal file
30
lib/libft/ft_strmap.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strmap.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:39:51 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 19:53:31 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strmap(char const *s, char (*f)(char))
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
ret = NULL;
|
||||||
|
if (s)
|
||||||
|
if ((ret = (char *)ft_strnew(ft_strlen(s))))
|
||||||
|
while (*(s + i))
|
||||||
|
{
|
||||||
|
*(ret + i) = f(*(s + i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
30
lib/libft/ft_strmapi.c
Normal file
30
lib/libft/ft_strmapi.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strmapi.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 18:47:40 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/02 16:18:37 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strmapi(char const *s, char (*f)(unsigned int, char))
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
ret = NULL;
|
||||||
|
if (s)
|
||||||
|
if ((ret = (char *)ft_strnew(ft_strlen(s))))
|
||||||
|
while (*(s + i))
|
||||||
|
{
|
||||||
|
*(ret + i) = f(i, *(s + i));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
28
lib/libft/ft_strncat.c
Normal file
28
lib/libft/ft_strncat.c
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strncat.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 15:03:18 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 15:11:23 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strncat(char *s1, const char *s2, size_t n)
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
size_t s1_size;
|
||||||
|
|
||||||
|
s = s1;
|
||||||
|
s1_size = sizeof(s1);
|
||||||
|
while (*s1)
|
||||||
|
s1++;
|
||||||
|
while (*s2 && s1_size - 1 && n--)
|
||||||
|
*s1++ = *s2++;
|
||||||
|
*s1 = '\0';
|
||||||
|
return (s);
|
||||||
|
}
|
29
lib/libft/ft_strncmp.c
Normal file
29
lib/libft/ft_strncmp.c
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strncmp.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 14:33:11 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 14:23:45 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_strncmp(const char *s1, const char *s2, size_t n)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < n && (*s1 || *s2))
|
||||||
|
{
|
||||||
|
if (*(unsigned char *)s1 != *(unsigned char *)s2)
|
||||||
|
return (*(unsigned char *)s1 - *(unsigned char *)s2);
|
||||||
|
s1++;
|
||||||
|
s2++;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
30
lib/libft/ft_strncpy.c
Normal file
30
lib/libft/ft_strncpy.c
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strncpy.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 13:12:41 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/11/30 14:39:28 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strncpy(char *dst, const char *src, size_t len)
|
||||||
|
{
|
||||||
|
char *new_dest;
|
||||||
|
|
||||||
|
new_dest = dst;
|
||||||
|
while (len && *src)
|
||||||
|
{
|
||||||
|
*new_dest++ = *src++;
|
||||||
|
if (!len)
|
||||||
|
return (dst);
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
while (len-- > 0)
|
||||||
|
*(new_dest++) = '\0';
|
||||||
|
return (dst);
|
||||||
|
}
|
22
lib/libft/ft_strnequ.c
Normal file
22
lib/libft/ft_strnequ.c
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strnequ.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 19:00:40 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/02 19:00:55 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_strnequ(char const *s1, char const *s2, size_t n)
|
||||||
|
{
|
||||||
|
if (s1 && s2)
|
||||||
|
while (n--)
|
||||||
|
if (ft_tolower(*s1++) != ft_tolower(*s2++))
|
||||||
|
return (0);
|
||||||
|
return (1);
|
||||||
|
}
|
25
lib/libft/ft_strnew.c
Normal file
25
lib/libft/ft_strnew.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strnew.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 17:09:46 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 17:14:53 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strnew(size_t size)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if ((ret = (char *)malloc(size + 1)))
|
||||||
|
{
|
||||||
|
ft_bzero(ret, size + 1);
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
33
lib/libft/ft_strnstr.c
Normal file
33
lib/libft/ft_strnstr.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strnstr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 20:26:05 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 13:22:59 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strnstr(const char *big, const char *little, size_t len)
|
||||||
|
{
|
||||||
|
size_t l;
|
||||||
|
size_t b;
|
||||||
|
|
||||||
|
l = ft_strlen(little);
|
||||||
|
b = ft_strlen(big);
|
||||||
|
if (*little == '\0')
|
||||||
|
return ((char *)big);
|
||||||
|
while (len >= l && b)
|
||||||
|
{
|
||||||
|
if (ft_memcmp(big, little, l) == 0)
|
||||||
|
return ((char *)big);
|
||||||
|
big++;
|
||||||
|
len--;
|
||||||
|
b--;
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
27
lib/libft/ft_strrchr.c
Normal file
27
lib/libft/ft_strrchr.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strrchar.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 18:32:21 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/02 16:19:20 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strrchr(const char *s, int c)
|
||||||
|
{
|
||||||
|
const char *str;
|
||||||
|
|
||||||
|
str = s;
|
||||||
|
while (*s)
|
||||||
|
s++;
|
||||||
|
while (s != str && *s != (char)c)
|
||||||
|
s--;
|
||||||
|
if (*s == (char)c)
|
||||||
|
return ((char *)s);
|
||||||
|
return (NULL);
|
||||||
|
}
|
85
lib/libft/ft_strsplit.c
Normal file
85
lib/libft/ft_strsplit.c
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strsplit.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/02 17:36:40 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/07 17:24:37 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static int count_words(char const *str, char c)
|
||||||
|
{
|
||||||
|
int words;
|
||||||
|
int has_word;
|
||||||
|
|
||||||
|
words = 0;
|
||||||
|
has_word = 0;
|
||||||
|
while (*str)
|
||||||
|
{
|
||||||
|
while (*str == c)
|
||||||
|
str++;
|
||||||
|
while (*str != c && *str)
|
||||||
|
{
|
||||||
|
str++;
|
||||||
|
has_word = 1;
|
||||||
|
}
|
||||||
|
if (has_word)
|
||||||
|
words++;
|
||||||
|
has_word = 0;
|
||||||
|
}
|
||||||
|
return (words);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fill_table(char const *str, char **table, char c)
|
||||||
|
{
|
||||||
|
int chars;
|
||||||
|
int char_position;
|
||||||
|
int word_position;
|
||||||
|
|
||||||
|
word_position = 0;
|
||||||
|
while (*str)
|
||||||
|
{
|
||||||
|
chars = 0;
|
||||||
|
char_position = 0;
|
||||||
|
while (*str == c)
|
||||||
|
str++;
|
||||||
|
while (*str != c && *str && ++chars)
|
||||||
|
str++;
|
||||||
|
if (chars != 0)
|
||||||
|
{
|
||||||
|
if (!(table[word_position] = malloc(sizeof(char) * (chars + 1))))
|
||||||
|
return (1);
|
||||||
|
while (chars)
|
||||||
|
table[word_position][char_position++] = *(str - chars--);
|
||||||
|
table[word_position++][char_position] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table[word_position] = 0;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
char **ft_strsplit(char const *s, char c)
|
||||||
|
{
|
||||||
|
char **table;
|
||||||
|
int words;
|
||||||
|
|
||||||
|
table = NULL;
|
||||||
|
if (!s)
|
||||||
|
return (NULL);
|
||||||
|
words = count_words(s, c);
|
||||||
|
if (!words)
|
||||||
|
{
|
||||||
|
if (!(table = (char **)malloc(sizeof(char *))))
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
else if (!(table = (char **)malloc(sizeof(char *) * (words + 1))))
|
||||||
|
return (NULL);
|
||||||
|
if (fill_table(s, table, c))
|
||||||
|
return (table);
|
||||||
|
return (table);
|
||||||
|
}
|
29
lib/libft/ft_strstr.c
Normal file
29
lib/libft/ft_strstr.c
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strstr.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 19:32:43 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 14:23:54 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strstr(const char *big, const char *little)
|
||||||
|
{
|
||||||
|
size_t l;
|
||||||
|
|
||||||
|
l = ft_strlen(little);
|
||||||
|
if (!*little)
|
||||||
|
return ((char *)big);
|
||||||
|
while (*big)
|
||||||
|
{
|
||||||
|
if (!(ft_memcmp(big, little, l)))
|
||||||
|
return ((char *)big);
|
||||||
|
big++;
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
27
lib/libft/ft_strsub.c
Normal file
27
lib/libft/ft_strsub.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strsub.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 19:02:56 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/02 16:21:00 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strsub(char const *s, unsigned int start, size_t len)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
char *tmp;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if (s)
|
||||||
|
if ((ret = ft_strnew(len)) &&
|
||||||
|
(tmp = ret))
|
||||||
|
while (len--)
|
||||||
|
*tmp++ = *(s++ + start);
|
||||||
|
return (ret);
|
||||||
|
}
|
61
lib/libft/ft_strtol.c
Normal file
61
lib/libft/ft_strtol.c
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strtol.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/30 19:32:43 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2018/06/21 20:21:38 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
static void get_sign_and_base(const char **s, char *ch, int *sign, int *base)
|
||||||
|
{
|
||||||
|
if (*ch == '-' && (*ch = GETCH(*s)))
|
||||||
|
*sign = -1;
|
||||||
|
else if (*ch == '+' && (*ch = GETCH(*s)))
|
||||||
|
*sign = 1;
|
||||||
|
if (*base == 0)
|
||||||
|
{
|
||||||
|
if (*ch == '0' && (*ch = GETCH(*s)))
|
||||||
|
{
|
||||||
|
if (ft_tolower(*ch) == 'x' && (*ch = GETCH(*s)))
|
||||||
|
*base = 16;
|
||||||
|
else
|
||||||
|
*base = 8;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*base = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long int ft_strtol(const char *s, char **endptr, int base)
|
||||||
|
{
|
||||||
|
long int result;
|
||||||
|
int sign;
|
||||||
|
char ch;
|
||||||
|
|
||||||
|
sign = 1;
|
||||||
|
result = 0;
|
||||||
|
ch = 0;
|
||||||
|
while (s && *s && (ch = GETCH(s)) && ft_isspace(ch))
|
||||||
|
;
|
||||||
|
get_sign_and_base(&s, &ch, &sign, &base);
|
||||||
|
if (base == 16 && ch == '0' && ft_tolower(ch = GETCH(s)) == 'x')
|
||||||
|
ch = GETCH(s);
|
||||||
|
while (ch && (ft_isdigit(ch) || ft_isalpha(ch)))
|
||||||
|
{
|
||||||
|
ft_isdigit(ch) ? (ch -= '0') : (ch = (char)(ft_tolower(ch) - 'a' + 10));
|
||||||
|
if (ch < base)
|
||||||
|
result = result * base + ch;
|
||||||
|
else
|
||||||
|
break ;
|
||||||
|
ch = GETCH(s);
|
||||||
|
}
|
||||||
|
if (endptr)
|
||||||
|
*endptr = (char *)s;
|
||||||
|
return (result * sign);
|
||||||
|
}
|
40
lib/libft/ft_strtrim.c
Normal file
40
lib/libft/ft_strtrim.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_strtrim.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 20:25:11 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/06 14:24:05 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
char *ft_strtrim(char const *s)
|
||||||
|
{
|
||||||
|
char *ret;
|
||||||
|
char *tmp;
|
||||||
|
const char *start;
|
||||||
|
const char *end;
|
||||||
|
|
||||||
|
ret = NULL;
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
while (*s == ' ' || *s == '\n' || *s == '\t')
|
||||||
|
s++;
|
||||||
|
start = s;
|
||||||
|
while (*s && *(s + 1))
|
||||||
|
s++;
|
||||||
|
while (*s == ' ' || *s == '\n' || *s == '\t')
|
||||||
|
s--;
|
||||||
|
end = s;
|
||||||
|
if (!(ret = ft_strnew(end - start + 1)))
|
||||||
|
return (ret);
|
||||||
|
tmp = ret;
|
||||||
|
while (start <= end)
|
||||||
|
*tmp++ = *start++;
|
||||||
|
}
|
||||||
|
return (ret);
|
||||||
|
}
|
20
lib/libft/ft_tolower.c
Normal file
20
lib/libft/ft_tolower.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_tolower.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:58:52 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:59:14 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_tolower(int c)
|
||||||
|
{
|
||||||
|
if (c >= 'A' && c <= 'Z')
|
||||||
|
return (c + 32);
|
||||||
|
return (c);
|
||||||
|
}
|
20
lib/libft/ft_toupper.c
Normal file
20
lib/libft/ft_toupper.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* ft_toupper.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/12/01 15:26:03 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2016/12/01 15:58:00 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_toupper(int c)
|
||||||
|
{
|
||||||
|
if (c >= 'a' && c <= 'z')
|
||||||
|
return (c - 32);
|
||||||
|
return (c);
|
||||||
|
}
|
113
lib/libft/get_next_line.c
Normal file
113
lib/libft/get_next_line.c
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* get_next_line.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2017/01/28 18:15:15 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2017/03/24 20:41:17 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
t_fd *new_node(int fd)
|
||||||
|
{
|
||||||
|
t_fd *new;
|
||||||
|
|
||||||
|
new = NULL;
|
||||||
|
if ((new = (t_fd *)malloc(sizeof(t_fd))))
|
||||||
|
{
|
||||||
|
new->fd = fd;
|
||||||
|
new->n = NULL;
|
||||||
|
new->next = NULL;
|
||||||
|
new->t = 0;
|
||||||
|
}
|
||||||
|
return (new);
|
||||||
|
}
|
||||||
|
|
||||||
|
t_fd *find_fd(int fd, t_fd **cur_fd)
|
||||||
|
{
|
||||||
|
if (!*cur_fd)
|
||||||
|
return ((*cur_fd = new_node(fd)));
|
||||||
|
while ((*cur_fd))
|
||||||
|
{
|
||||||
|
if ((*cur_fd)->fd == fd)
|
||||||
|
return (*cur_fd);
|
||||||
|
cur_fd = &((*cur_fd)->next);
|
||||||
|
}
|
||||||
|
return ((*cur_fd = new_node(fd)));
|
||||||
|
}
|
||||||
|
|
||||||
|
int check_reminder(t_fd *c, char **line)
|
||||||
|
{
|
||||||
|
char *substr;
|
||||||
|
char *old_line;
|
||||||
|
|
||||||
|
old_line = *line;
|
||||||
|
if (c->n)
|
||||||
|
{
|
||||||
|
if ((c->t = ft_strchr(c->n, '\n')))
|
||||||
|
{
|
||||||
|
substr = ft_strsub(c->n, 0, c->t - c->n);
|
||||||
|
*line = ft_strjoin(*line, substr);
|
||||||
|
free(substr);
|
||||||
|
c->n = ++(c->t);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*line = ft_strjoin(*line, c->n);
|
||||||
|
c->n = 0;
|
||||||
|
}
|
||||||
|
free(old_line);
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int check_buf(t_fd *c, char **line)
|
||||||
|
{
|
||||||
|
char *substr;
|
||||||
|
char *old_line;
|
||||||
|
|
||||||
|
old_line = *line;
|
||||||
|
while ((c->readed = read(c->fd, c->b, BUFF_SIZE)))
|
||||||
|
{
|
||||||
|
if (c->readed == -1)
|
||||||
|
return (-1);
|
||||||
|
c->b[c->readed] = 0;
|
||||||
|
if ((c->n = ft_strchr(c->b, '\n')))
|
||||||
|
{
|
||||||
|
substr = ft_strsub(c->b, 0, c->n++ - c->b);
|
||||||
|
old_line = *line;
|
||||||
|
*line = ft_strjoin(*line, substr);
|
||||||
|
free(substr);
|
||||||
|
free(old_line);
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
old_line = *line;
|
||||||
|
*line = ft_strjoin(*line, c->b);
|
||||||
|
free(old_line);
|
||||||
|
}
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_next_line(const int fd, char **line)
|
||||||
|
{
|
||||||
|
static t_fd *head_fd;
|
||||||
|
t_fd *c;
|
||||||
|
|
||||||
|
if (fd < 0 || !line)
|
||||||
|
return (-1);
|
||||||
|
*line = ft_strnew(0);
|
||||||
|
c = find_fd(fd, &head_fd);
|
||||||
|
c->readed = 0;
|
||||||
|
if (check_reminder(c, line))
|
||||||
|
return (1);
|
||||||
|
if (check_buf(c, line) == -1)
|
||||||
|
return (-1);
|
||||||
|
if ((c->readed == 0) && !ft_strlen(*line))
|
||||||
|
return (0);
|
||||||
|
return (1);
|
||||||
|
}
|
131
lib/libft/includes/libft.h
Normal file
131
lib/libft/includes/libft.h
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* libft.h :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2016/11/28 12:21:43 by gtertysh #+# #+# */
|
||||||
|
/* Updated: 2018/06/21 19:40:37 by gtertysh ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#ifndef LIBFT_H
|
||||||
|
# define LIBFT_H
|
||||||
|
|
||||||
|
# include <string.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <unistd.h>
|
||||||
|
|
||||||
|
# define BUFF_SIZE 640000
|
||||||
|
# define GETCH(s) *(s)++
|
||||||
|
|
||||||
|
typedef struct s_fd
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char b[BUFF_SIZE + 1];
|
||||||
|
char *n;
|
||||||
|
struct s_fd *next;
|
||||||
|
char *t;
|
||||||
|
int readed;
|
||||||
|
} t_fd;
|
||||||
|
|
||||||
|
typedef struct s_list
|
||||||
|
{
|
||||||
|
void *content;
|
||||||
|
size_t content_size;
|
||||||
|
struct s_list *next;
|
||||||
|
} t_list;
|
||||||
|
|
||||||
|
void *ft_memset(void *b, int c, size_t len);
|
||||||
|
void ft_bzero(void *s, size_t n);
|
||||||
|
void *ft_memcpy(void *dst, const void *src, size_t len);
|
||||||
|
void *ft_memccpy(void *dst, const void *src, int c, size_t n);
|
||||||
|
void *ft_memmove(void *dst, const void *src, size_t len);
|
||||||
|
void *ft_memchr(const void *s, int c, size_t n);
|
||||||
|
int ft_memcmp(const void *s1, const void *s2, size_t n);
|
||||||
|
size_t ft_strlen(const char *s);
|
||||||
|
char *ft_strdup(const char *s1);
|
||||||
|
char *ft_strcpy(char *dst, const char *src);
|
||||||
|
char *ft_strncpy(char *dst, const char *src, size_t len);
|
||||||
|
char *ft_strcat(char *s1, const char *s2);
|
||||||
|
char *ft_strncat(char *s1, const char *s2, size_t n);
|
||||||
|
size_t ft_strlcat(char *dst, const char *src, size_t size);
|
||||||
|
char *ft_strchr(const char *s, int c);
|
||||||
|
char *ft_strrchr(const char *s, int c);
|
||||||
|
char *ft_strstr(const char *big, const char *little);
|
||||||
|
char *ft_strnstr(const char *big, const char *little,
|
||||||
|
size_t len);
|
||||||
|
int ft_strcmp(const char *s1, const char *s2);
|
||||||
|
int ft_strncmp(const char *s1, const char *s2, size_t n);
|
||||||
|
int ft_strcmp_lex(const char *s1, const char *s2);
|
||||||
|
int ft_atoi(const char *str);
|
||||||
|
int ft_isalpha(int c);
|
||||||
|
int ft_isspace(int c);
|
||||||
|
int ft_isdigit(int c);
|
||||||
|
int ft_isalpha(int c);
|
||||||
|
int ft_isalnum(int c);
|
||||||
|
int ft_isascii(int c);
|
||||||
|
int ft_isprint(int c);
|
||||||
|
int ft_tolower(int c);
|
||||||
|
int ft_toupper(int c);
|
||||||
|
|
||||||
|
void *ft_memalloc(size_t size);
|
||||||
|
void ft_memdel(void **ap);
|
||||||
|
char *ft_strnew(size_t size);
|
||||||
|
void ft_strdel(char **as);
|
||||||
|
void ft_strclr(char *s);
|
||||||
|
void ft_striter(char *s, void (*f)(char *));
|
||||||
|
void ft_striteri(char *s, void (*f)(unsigned int, char *));
|
||||||
|
char *ft_strmap(char const *s, char (*f)(char));
|
||||||
|
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
|
||||||
|
int ft_strequ(char const *s1, char const *s2);
|
||||||
|
int ft_strnequ(char const *s1, char const *s2, size_t n);
|
||||||
|
char *ft_strsub(char const *s, unsigned int start, size_t len);
|
||||||
|
char *ft_strjoin(char const *s1, char const *s2);
|
||||||
|
char *ft_strtrim(char const *s);
|
||||||
|
char **ft_strsplit(char const *s, char c);
|
||||||
|
int ft_str_table_len(char **tab);
|
||||||
|
char *ft_itoa(int c);
|
||||||
|
void ft_putchar(char c);
|
||||||
|
void ft_putstr(char const *s);
|
||||||
|
void ft_putendl(char const *s);
|
||||||
|
void ft_putnbr(int n);
|
||||||
|
void ft_putchar_fd(char c, int fd);
|
||||||
|
void ft_putstr_fd(char const *s, int fd);
|
||||||
|
void ft_putendl_fd(char const *s, int fd);
|
||||||
|
void ft_putnbr_fd(int n, int fd);
|
||||||
|
|
||||||
|
t_list *ft_lstnew(void const *content, size_t content_size);
|
||||||
|
void ft_lstdelone(t_list **alst, void (*del)(void *, size_t));
|
||||||
|
void ft_lstdel(t_list **alst, void (*del)(void *, size_t));
|
||||||
|
void ft_lstadd(t_list **alst, t_list *new);
|
||||||
|
void ft_lstiter(t_list *lst, void (*f)(t_list *elem));
|
||||||
|
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem));
|
||||||
|
void *ft_lstreduce(t_list *lst,
|
||||||
|
void *(*iterator)(t_list *elem,
|
||||||
|
void *accumulator, int index), void *accumulator);
|
||||||
|
|
||||||
|
int ft_lst_len(t_list *lst);
|
||||||
|
t_list *ft_lststrsplit(const char *s, char c);
|
||||||
|
t_list *ft_lstfind(t_list *lst, void *data, size_t size);
|
||||||
|
t_list *ft_lst_at(t_list *l, unsigned int at);
|
||||||
|
void ft_lstadd_back(t_list **l, void *data, size_t size);
|
||||||
|
void ft_lst_merge_sort(t_list
|
||||||
|
**head_ptr, int (*cmp)(void *a, void *b));
|
||||||
|
void ft_lst_rev(t_list **begin_list);
|
||||||
|
t_list *ft_lst_search(t_list *l, void *to_find,
|
||||||
|
int (*comparator)(void *to_find, void *lst_content));
|
||||||
|
|
||||||
|
void *ft_realloc(void *old, unsigned int new_size,
|
||||||
|
unsigned int old_size);
|
||||||
|
|
||||||
|
char *ft_read_file(const int fd);
|
||||||
|
int get_next_line(const int fd, char **line);
|
||||||
|
|
||||||
|
int ft_num_len(long num);
|
||||||
|
|
||||||
|
double ft_atof(const char *nptr);
|
||||||
|
long int ft_strtol(const char *nptr, char **endptr, int base);
|
||||||
|
|
||||||
|
#endif
|
2
obj/.gitignore
vendored
Normal file
2
obj/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
./*
|
||||||
|
!.gitignore
|
1
src/.gitignore
vendored
Normal file
1
src/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
!.gitignore
|
9
src/main.c
Normal file
9
src/main.c
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#include "stdio.h"
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
printf("hello from ft_ssl!\n");
|
||||||
|
return(0);
|
||||||
|
}
|
1
t/.gitignore
vendored
Normal file
1
t/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
!.gitignore
|
Loading…
Reference in a new issue