working Makefile

This commit is contained in:
Gregory 2019-04-24 20:59:37 +03:00
parent 241fa411c3
commit b00d4f01cc
87 changed files with 2679 additions and 7 deletions

4
.gitignore vendored
View file

@ -1,3 +1,5 @@
*.o *.o
*.a *.a
.vscode *.so
.vscode
malloc_test

View file

@ -17,7 +17,7 @@ endif
# name of the main target # name of the main target
NAME := libft_malloc_$(HOSTTYPE) NAME := libft_malloc_$(HOSTTYPE).so
# project directories # project directories
@ -32,8 +32,12 @@ TST_DIR := $(ROOT)/t/
# project headers # project headers
TST_HEADER := $(INC_DIR)/t.h MLC_HEADER := $(INC_DIR)/ft_malloc.h
HEADERS := $(TST_HEADER) TST_HEADER := $(INC_DIR)/tests.h
TST_RUNNER_HEADER := $(INC_DIR)/t.h
HEADERS := $(MLC_HEADER) \
$(TST_HEADER) \
$(TST_RUNNER_HEADER)
# libraries # libraries
@ -46,7 +50,9 @@ LIBFT = $(LIBFT_DIR)libft.a
# project source files # project source files
SRC := malloc.c MALLOC_SRC = malloc.c
SRC := $(MALLOC_SRC)
# project object files # project object files
@ -58,7 +64,11 @@ OBJ = $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
TEST_BIN = malloc_test TEST_BIN = malloc_test
TEST_SRC = tests.c MALLOC_TESTS = malloc_tests.c
MALLOC_TESTS += $(MALLOC_SRC)
TEST_SRC = tests.c \
$(MALLOC_TESTS)
TEST_OBJ = $(addprefix $(OBJ_DIR), $(TEST_SRC:.c=.o)) TEST_OBJ = $(addprefix $(OBJ_DIR), $(TEST_SRC:.c=.o))
@ -108,7 +118,7 @@ CC := clang
# rules # rules
$(NAME): $(OBJ) $(NAME): $(OBJ)
$(CC) $(OBJ) $(LINK_FLAGS) -o $(NAME) $(CC) -shared -fpic $(OBJ) -o $(NAME) $(LINK_FLAGS)
$(TEST_BIN): $(TEST_OBJ) $(TEST_BIN): $(TEST_OBJ)
$(CC) $(TEST_OBJ) $(LINK_FLAGS) -o $(TEST_BIN) $(CC) $(TEST_OBJ) $(LINK_FLAGS) -o $(TEST_BIN)

10
inc/ft_malloc.h Normal file
View file

@ -0,0 +1,10 @@
#ifndef FT_MALLOC_H
# define FT_MALLOC_H
# include <stdlib.h>
void free(void *ptr);
void *malloc(size_t size);
void *realloc(void *ptr, size_t size);
#endif

24
inc/t.h Normal file
View file

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* t.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/10/23 19:36:58 by gtertysh #+# #+# */
/* Updated: 2018/10/23 19:40:12 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef T_H
# define T_H
# include <stdio.h>
# define FAIL() printf("\nfail in %s() %s:%d\n\n", __func__, __FILE__, __LINE__)
# define _IS(t) do { if (!(t)) { FAIL(); return 1; } } while(0)
# define _SHOULD(t) do { int r = t(); if(r) return r; } while(0)
# define _P_START(m) do { printf("%s\n", m); } while(0)
# define _VERIFY(m, t) do { _P_START(m); int r = t(); if(r) return r; } while(0)
# define _END(m) do { printf(" %s - OK\n", m); return 0; } while(0)
#endif

18
inc/tests.h Normal file
View file

@ -0,0 +1,18 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* tests.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/10/23 19:36:58 by gtertysh #+# #+# */
/* Updated: 2018/10/23 19:40:12 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef TESTS_H
# define TESTS_H
int malloc_tests(void);
#endif

114
lib/libft/Makefile Normal file
View 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
View file

@ -0,0 +1 @@
gtertysh

41
lib/libft/ft_atof.c Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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);
}

View 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
View 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
View 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
View 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;
}
}

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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);
}

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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);
}

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

7
src/malloc.c Normal file
View file

@ -0,0 +1,7 @@
#include "ft_malloc.h"
void *malloc(size_t size)
{
(void)size;
return NULL;
}

14
t/malloc_tests.c Normal file
View file

@ -0,0 +1,14 @@
#include "t.h"
#include "tests.h"
int return_null_on_zero_size()
{
_IS(1 == 1);
_END("return null on zero size");
}
int malloc_tests(void)
{
_SHOULD(return_null_on_zero_size);
return 0;
}

31
t/tests.c Normal file
View file

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* tests.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/10/23 21:00:24 by gtertysh #+# #+# */
/* Updated: 2018/10/23 21:05:47 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#include "t.h"
#include "tests.h"
int all_tests()
{
_VERIFY("malloc:", malloc_tests);
return 0;
}
int main()
{
int result;
result = all_tests();
if (result == 0)
printf("PASSED\n");
return result != 0;
}