From: Axy Date: Fri, 31 Oct 2025 11:51:56 +0000 (+0100) Subject: Finished up core functionality, now need to norm + possibly use buffers X-Git-Tag: Testable~6 X-Git-Url: https://git.uwuaxy.net/?a=commitdiff_plain;h=3a43553c0b624d2d1171d1081fb62b2fca9040fb;p=axy%2Fft%2Fft_printf.git Finished up core functionality, now need to norm + possibly use buffers --- diff --git a/ft_printf.c b/ft_printf.c index 746db14..ff11be0 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/10/29 14:24:47 by agilliar #+# #+# */ -/* Updated: 2025/10/31 00:28:58 by agilliar ### ########.fr */ +/* Updated: 2025/10/31 12:49:51 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,7 @@ #include #include #include +#include /* Because of variadic argument promotion, @@ -63,78 +64,130 @@ typedef enum e_specifier SPECIFIER_PERCENT, } t_specifier; -typedef enum e_num_prefix -{ - NUM_PREFIX_NONE, - NUM_PREFIX_FORMAT, -} t_num_prefix; - typedef struct s_format { t_specifier specifier; t_sign_flag sign_flag; t_justify justify; - t_num_prefix num_prefix; + bool num_prefix; int width; bool zero_pad; int precision; bool enable_precision; } t_format; -int ft_putchar_sim(char c, bool simulated) +typedef struct s_uintptr_format +{ + bool print_zeros; + uintptr_t base; + const char *base_s; +} t_uintptr_format; + +int ft_putchar_sim(char c, bool sim) { - if (!simulated && write(STDOUT_FILENO, &c, 1) != 1) + if (!sim && write(STDOUT_FILENO, &c, 1) != 1) return (-1); return (1); } -int ft_putnchar(char c, int n, bool simulated) +int ft_putnchar(char c, int n, bool sim) { int i; i = 0; while (i++ < n) - if (ft_putchar_sim(c, simulated) == -1) + if (ft_putchar_sim(c, sim) == -1) return (-1); return (n); } -int ft_put_size(size_t n, bool simulated, int base, const char *base_s, - bool print_zero) +uintptr_t ft_int_abs(int64_t n) +{ + if (n < 0) + return (-n); + return (n); +} + +t_uintptr_format ft_uintptr_format_new(const t_format *format) +{ + t_uintptr_format res; + t_specifier spec; + + res.print_zeros = !format->enable_precision; + spec = format->specifier; + res.base = 16; + res.base_s = "0123456789abcdef"; + if (spec == SPECIFIER_INT || spec == SPECIFIER_UINT) + res.base = 10; + if (spec == SPECIFIER_UINT_HEX_UPPER) + res.base_s = "0123456789ABCDEF"; + return (res); +} + +/* + Prints a uintptr_t without prefixes, padding or precision padding +*/ +int ft_put_uintptr(t_uintptr_format format, uintptr_t n, bool sim) { int written; + uintptr_t base; + const char *base_s; - if (!n && !print_zero) + if (!n && !format.print_zeros) return (0); + format.print_zeros = true; + base = format.base; + base_s = format.base_s; if (n < base) written = 0; else - written = ft_put_size(n / base, simulated, base, base_s, true); - if (written == -1 || ft_putchar_sim(base_s[n % base], simulated) == -1) + written = ft_put_uintptr(format, n / base, sim); + if (written == -1 || ft_putchar_sim(base_s[n % base], sim) == -1) return (-1); return (written + 1); } -int ft_precision_pad(const t_format *format, int written, bool simulated) +int ft_putprefix(const t_format *format, bool sim) +{ + t_specifier spec; + char c; + + spec = format->specifier; + if (!format->num_prefix && spec != SPECIFIER_PTR) + return (0); + if (spec == SPECIFIER_PTR || spec == SPECIFIER_UINT_HEX_LOWER) + c = 'x'; + else if (spec == SPECIFIER_UINT_HEX_UPPER) + c = 'X'; + else + return (0); + if (ft_putchar_sim('0', sim) == -1 + || ft_putchar_sim(c, sim) == -1) + return (-1); + return (2); +} + +int ft_precision_pad(const t_format *format, int written, bool sim) { if (written >= format->precision || !format->enable_precision) return (0); - return (ft_putnchar('0', format->precision - written, simulated)); + return (ft_putnchar('0', format->precision - written, sim)); } -int ft_zero_pad(const t_format *format, int written, bool simulated) +int ft_zero_pad(const t_format *format, int written, bool sim) { if (written >= format->width || !format->zero_pad) return (0); - return (ft_putnchar('0', format->width - written, simulated)); + return (ft_putnchar('0', format->width - written, sim)); } -int ft_putformat_char(const t_format *format, t_step_arg arg, bool simulated) +int ft_putformat_char(const t_format *format, t_step_arg arg, bool sim) { - return (ft_putchar_sim(arg.v_int, simulated)); + (void) format; + return (ft_putchar_sim(arg.v_int, sim)); } -int ft_putformat_str(const t_format *format, t_step_arg arg, bool simulated) +int ft_putformat_str(const t_format *format, t_step_arg arg, bool sim) { int i; const char *s; @@ -144,55 +197,110 @@ int ft_putformat_str(const t_format *format, t_step_arg arg, bool simulated) if (!s) s = "(null)"; while ((!format->enable_precision || format->precision > i) && s[i]) - if (ft_putchar_sim(s[i++], simulated) == -1) + if (ft_putchar_sim(s[i++], sim) == -1) return (-1); return (i); } -int ft_putformat_ptr(const t_format *format, t_step_arg arg, bool simulated) +int ft_putformat_ptr(const t_format *format, t_step_arg arg, bool sim) { int written; - int n; - size_t val; + uintptr_t val; + val = (uintptr_t) arg.v_ptr; if (!arg.v_ptr) { arg.v_ptr = "(nil)"; - return (ft_putformat_str(format, arg, simulated)); + return (ft_putformat_str(format, arg, sim)); } - val = (size_t) arg.v_ptr; - if (ft_putchar_sim('0', simulated) == -1 - || ft_putchar_sim('x', simulated) == -1) + if (ft_putprefix(format, sim) == -1) + return (-1); + written = ft_put_uintptr(ft_uintptr_format_new(format), val, sim); + if (written == -1) return (-1); - written = ft_put_size(val, true, 16, "0123456789abcdef", - format->enable_precision); - n = ft_precision_pad(format, written, simulated); - if (n == -1) + return (written + 2); +} + +uintptr_t ft_int_arg_abs(const t_format *format, t_step_arg arg) +{ + if (format->specifier == SPECIFIER_INT) + return (ft_int_abs(arg.v_int)); + return (arg.v_uint); +} + +int ft_putsign(const t_format *format, t_step_arg arg, bool sim) +{ + if (format->specifier != SPECIFIER_INT) + return (0); + if (arg.v_int < 0) + return (ft_putchar_sim('-', sim)); + if (format->sign_flag == SIGN_FORCED) + return (ft_putchar_sim('+', sim)); + if (format->sign_flag == SIGN_SPACE) + return (ft_putchar_sim(' ', sim)); + return (0); +} + +int ft_putformat_scalar(const t_format *format, t_step_arg arg, bool sim) +{ + int sign; + int prefix; + int core; + int precision; + int zero_pad; + + sign = ft_putsign(format, arg, sim); + if (sign == -1) + return (-1); + prefix = ft_putprefix(format, sim); + if (prefix == -1) return (-1); - written += n + 2; - n = ft_zero_pad(format, written, simulated); - if (n == -1 || ft_put_size(val, simulated, 16, "0123456789abcdef", - format->enable_precision) == -1) + core = ft_put_uintptr(ft_uintptr_format_new(format), + ft_int_arg_abs(format, arg), true); + precision = ft_precision_pad(format, core, sim); + if (precision == -1) return (-1); - return (written + n); + zero_pad = ft_zero_pad(format, sign + prefix + precision + core, sim); + if (zero_pad == -1) + return (-1); + if (ft_put_uintptr(ft_uintptr_format_new(format), + ft_int_arg_abs(format, arg), sim) == -1) + return (-1); + return (sign + prefix + zero_pad + precision + core); +} + +int ft_putformat_percent(const t_format *format, t_step_arg arg, bool sim) +{ + (void)format; + (void)arg; + + return (ft_putchar_sim('%', sim)); } int ft_putformat(const t_format *format, t_step_arg arg) { - int (*f)(const t_format *, t_step_arg, bool); - int len; + int (*f)(const t_format *, t_step_arg, bool); + int len; + t_specifier spec; - if (format->specifier == SPECIFIER_CHAR) + spec = format->specifier; + if (spec == SPECIFIER_CHAR) f = ft_putformat_char; - else if (format->specifier == SPECIFIER_STR) + else if (spec == SPECIFIER_STR) f = ft_putformat_str; - else if (format->specifier == SPECIFIER_PTR) + else if (spec == SPECIFIER_PTR) f = ft_putformat_ptr; + else if (spec == SPECIFIER_INT || spec == SPECIFIER_UINT + || spec == SPECIFIER_UINT_HEX_LOWER || spec == SPECIFIER_UINT_HEX_UPPER) + f = ft_putformat_scalar; + else if (spec == SPECIFIER_PERCENT) + f = ft_putformat_percent; else return (-1); len = f(format, arg, true); if ((format->justify == JUSTIFY_LEFT && f(format, arg, false) == -1) - || (format->width > len && ft_putnchar(' ', format->width - len, false) == -1) + || (format->width > len + && ft_putnchar(' ', format->width - len, false) == -1) || (format->justify == JUSTIFY_RIGHT && f(format, arg, false) == -1)) return (-1); return (len); @@ -205,7 +313,7 @@ t_format ft_format_default(void) res.specifier = SPECIFIER_NONE; res.sign_flag = SIGN_NEG_ONLY; res.justify = JUSTIFY_RIGHT; - res.num_prefix = NUM_PREFIX_NONE; + res.num_prefix = false; res.width = 0; res.zero_pad = false; res.precision = 0; @@ -236,7 +344,7 @@ bool ft_parse_flag(char c, t_format *format) else if (c == ' ') format->sign_flag = SIGN_SPACE; else if (c == '#') - format->num_prefix = NUM_PREFIX_FORMAT; + format->num_prefix = true; else if (c == '0') format->zero_pad = true; else @@ -285,12 +393,6 @@ t_specifier ft_parse_specifier(char c) return (SPECIFIER_NONE); } -void ft_format_normalize(t_format *format) -{ - if (format->justify == JUSTIFY_LEFT) - format->zero_pad = false; -} - t_format ft_parse_format(const char **s) { t_format res; @@ -301,7 +403,6 @@ t_format ft_parse_format(const char **s) ft_parse_width(s, &res); ft_parse_precision(s, &res); res.specifier = ft_parse_specifier(*((*s)++)); - ft_format_normalize(&res); return (res); } @@ -309,7 +410,6 @@ int ft_print_step(const char **s, t_format *format, t_step_arg arg) { int written; - if (format->specifier == SPECIFIER_NONE && **s != '%') return (ft_putchar_sim(*((*s)++), false)); if (format->specifier != SPECIFIER_NONE) @@ -363,9 +463,9 @@ int ft_printf(const char *s, ...) } #include + int main(void) { - const char *s = "hai"; - ft_printf("c%-25.17p", s); - printf("c%-25.17p", s); + ft_printf("%12.5u\n", 120); + printf("%12.5u\n", 120); } diff --git a/libft/Makefile b/libft/Makefile deleted file mode 100644 index a423fba..0000000 --- a/libft/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -NAME=libft.a - -SRCS=ft_calloc.c ft_strnstr.c ft_isdigit.c ft_strrchr.c ft_strncmp.c ft_strjoin.c ft_toupper.c ft_tolower.c ft_strlcat.c ft_strchr.c ft_strdup.c ft_atoi.c ft_strtrim.c ft_substr.c ft_split.c ft_isalpha.c ft_isascii.c ft_isprint.c ft_isalnum.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c ft_memchr.c ft_strlen.c ft_strlcpy.c ft_memcmp.c ft_itoa.c ft_strmapi.c ft_striteri.c ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c - -BONUS_SRCS=ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c - -OBJS=${SRCS:.c=.o} - -BONUS_OBJS=${BONUS_SRCS:.c=.o} - -CFLAGS=-Wall -Wextra -Werror - -CC=cc - -all : ${NAME} - -%.o : %.c - ${CC} ${CFLAGS} -c -o $@ -- $< - -${NAME} : ${OBJS} - ar -rcs $@ $^ - -bonus : ${BONUS_OBJS} - ar -rcs ${NAME} $^ - -clean : - rm -f ${OBJS} ${BONUS_OBJS} - -fclean : clean - rm -f ${NAME} - -re : fclean all - -.PHONY : all clean fclean re diff --git a/libft/ft_atoi.c b/libft/ft_atoi.c deleted file mode 100644 index b31be33..0000000 --- a/libft/ft_atoi.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:05:22 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:13:14 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -static bool ft_isspace(char c) -{ - return (c == ' ' || (c >= '\t' && c <= '\r')); -} - -int ft_atoi(const char *nptr) -{ - int sign; - int res; - - sign = 1; - res = 0; - while (ft_isspace(*nptr)) - nptr++; - if (*nptr == '-') - sign = -1; - else if (*nptr != '+') - nptr--; - nptr++; - while (ft_isdigit(*nptr)) - res = res * 10 + sign * (*(nptr++) - '0'); - return (res); -} diff --git a/libft/ft_bzero.c b/libft/ft_bzero.c deleted file mode 100644 index 29aafa1..0000000 --- a/libft/ft_bzero.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:47:42 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:47:59 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void *ft_bzero(void *s, size_t n) -{ - return (ft_memset(s, '\0', n)); -} diff --git a/libft/ft_calloc.c b/libft/ft_calloc.c deleted file mode 100644 index 5b6d5ce..0000000 --- a/libft/ft_calloc.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:52:41 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:55:36 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include "libft.h" - -void *ft_calloc(size_t nmemb, size_t size) -{ - void *res; - size_t alloc; - - if (__builtin_mul_overflow(nmemb, size, &alloc)) - return (NULL); - res = malloc(alloc); - if (res) - ft_bzero(res, alloc); - return (res); -} diff --git a/libft/ft_isalnum.c b/libft/ft_isalnum.c deleted file mode 100644 index 3fbaba8..0000000 --- a/libft/ft_isalnum.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:42:58 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:43:50 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_isalnum(int c) -{ - return (ft_isalpha(c) || ft_isdigit(c)); -} diff --git a/libft/ft_isalpha.c b/libft/ft_isalpha.c deleted file mode 100644 index b4c95db..0000000 --- a/libft/ft_isalpha.c +++ /dev/null @@ -1,16 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalpha.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:42:17 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:42:31 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isalpha(int c) -{ - return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); -} diff --git a/libft/ft_isascii.c b/libft/ft_isascii.c deleted file mode 100644 index ca4fb05..0000000 --- a/libft/ft_isascii.c +++ /dev/null @@ -1,16 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:43:14 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:43:17 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isascii(int c) -{ - return (c >= '\0' && c <= '\x7F'); -} diff --git a/libft/ft_isdigit.c b/libft/ft_isdigit.c deleted file mode 100644 index 417eb36..0000000 --- a/libft/ft_isdigit.c +++ /dev/null @@ -1,16 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:42:38 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:42:45 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isdigit(int c) -{ - return (c >= '0' && c <= '9'); -} diff --git a/libft/ft_isprint.c b/libft/ft_isprint.c deleted file mode 100644 index dcd2df9..0000000 --- a/libft/ft_isprint.c +++ /dev/null @@ -1,16 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:43:29 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:43:32 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_isprint(int c) -{ - return (c >= ' ' && c <= '~'); -} diff --git a/libft/ft_itoa.c b/libft/ft_itoa.c deleted file mode 100644 index 2ea2653..0000000 --- a/libft/ft_itoa.c +++ /dev/null @@ -1,54 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:19:15 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:34:53 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include - -static void ft_itoa_visit(long n, void (*f)(void *, char), void *f_dat) -{ - if (n < 0) - { - f(f_dat, '-'); - return (ft_itoa_visit(-n, f, f_dat)); - } - if (n > 9) - ft_itoa_visit(n / 10, f, f_dat); - f(f_dat, '0' + n % 10); -} - -static void ft_itoa_count(size_t *count, char _c) -{ - (void) _c; - (*count)++; -} - -static void ft_itoa_write(char **buf, char c) -{ - *((*buf)++) = c; -} - -char *ft_itoa(int n) -{ - size_t len; - char *res; - char *dat; - - len = 1; - ft_itoa_visit(n, (void (*)(void *, char))ft_itoa_count, &len); - res = malloc(len); - if (!res) - return (res); - dat = res; - ft_itoa_visit(n, (void (*)(void *, char)) ft_itoa_write, &dat); - *dat = '\0'; - return (res); -} diff --git a/libft/ft_lstadd_back.c b/libft/ft_lstadd_back.c deleted file mode 100644 index d0881fc..0000000 --- a/libft/ft_lstadd_back.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_back.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:55:01 by agilliar #+# #+# */ -/* Updated: 2025/10/29 12:57:51 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_lstadd_back(t_list **lst, t_list *new) -{ - if (!(*lst)) - *lst = new; - else - ft_lstadd_back(&(*lst)->next, new); -} diff --git a/libft/ft_lstadd_front.c b/libft/ft_lstadd_front.c deleted file mode 100644 index 36e03c1..0000000 --- a/libft/ft_lstadd_front.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_front.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:09:55 by agilliar #+# #+# */ -/* Updated: 2025/10/29 12:14:27 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_lstadd_front(t_list **lst, t_list *new) -{ - new->next = *lst; - *lst = new; -} diff --git a/libft/ft_lstclear.c b/libft/ft_lstclear.c deleted file mode 100644 index caeb50b..0000000 --- a/libft/ft_lstclear.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstclear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 13:03:33 by agilliar #+# #+# */ -/* Updated: 2025/10/29 13:10:12 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -void ft_lstclear(t_list **lst, void (*del)(void *)) -{ - t_list *lst_next; - - if (!*lst) - return ; - lst_next = (*lst)->next; - ft_lstdelone(*lst, del); - *lst = lst_next; - ft_lstclear(lst, del); -} diff --git a/libft/ft_lstdelone.c b/libft/ft_lstdelone.c deleted file mode 100644 index 9bb8d7f..0000000 --- a/libft/ft_lstdelone.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:58:54 by agilliar #+# #+# */ -/* Updated: 2025/10/29 13:00:44 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" -#include - -void ft_lstdelone(t_list *lst, void (*del)(void *)) -{ - del(lst->content); - free(lst); -} diff --git a/libft/ft_lstiter.c b/libft/ft_lstiter.c deleted file mode 100644 index 55a154d..0000000 --- a/libft/ft_lstiter.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstiter.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 13:10:47 by agilliar #+# #+# */ -/* Updated: 2025/10/29 13:13:22 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_lstiter(t_list *lst, void (*f)(void *)) -{ - if (!lst) - return ; - f(lst->content); - ft_lstiter(lst->next, f); -} diff --git a/libft/ft_lstlast.c b/libft/ft_lstlast.c deleted file mode 100644 index 8c14481..0000000 --- a/libft/ft_lstlast.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstlast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:18:37 by agilliar #+# #+# */ -/* Updated: 2025/10/29 12:21:34 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -t_list *ft_lstlast(t_list *lst) -{ - if (!lst || !lst->next) - return (lst); - else - return (ft_lstlast(lst->next)); -} diff --git a/libft/ft_lstmap.c b/libft/ft_lstmap.c deleted file mode 100644 index 5ead31d..0000000 --- a/libft/ft_lstmap.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstmap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 13:13:59 by agilliar #+# #+# */ -/* Updated: 2025/10/29 13:32:14 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) -{ - t_list *res; - void *content; - - if (!lst) - return (NULL); - content = f(lst->content); - res = ft_lstnew(content); - if (!res) - return (del(content), NULL); - if (!lst->next) - return (res); - res->next = ft_lstmap(lst->next, f, del); - if (res->next) - return (res); - del(res->content); - free(res); - return (NULL); -} diff --git a/libft/ft_lstnew.c b/libft/ft_lstnew.c deleted file mode 100644 index 0b6da10..0000000 --- a/libft/ft_lstnew.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstnew.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:05:45 by agilliar #+# #+# */ -/* Updated: 2025/10/29 12:07:12 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" -#include - -t_list *ft_lstnew(void *content) -{ - t_list *res; - - res = malloc(sizeof(t_list)); - if (!res) - return (res); - res->next = 0; - res->content = content; - return (res); -} diff --git a/libft/ft_lstsize.c b/libft/ft_lstsize.c deleted file mode 100644 index 869a15e..0000000 --- a/libft/ft_lstsize.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstsize.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 12:15:01 by agilliar #+# #+# */ -/* Updated: 2025/10/29 12:16:55 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -int ft_lstsize(t_list *lst) -{ - if (lst) - return (ft_lstsize(lst->next) + 1); - else - return (0); -} diff --git a/libft/ft_memchr.c b/libft/ft_memchr.c deleted file mode 100644 index b8e1820..0000000 --- a/libft/ft_memchr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:48:41 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:14:45 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void *ft_memchr(const void *s, int c, size_t n) -{ - size_t i; - - i = 0; - while (i < n) - { - if (((unsigned char *)s)[i] == (unsigned char)c) - return ((void *)&((unsigned char *)s)[i]); - i++; - } - return (NULL); -} diff --git a/libft/ft_memcmp.c b/libft/ft_memcmp.c deleted file mode 100644 index 2327d56..0000000 --- a/libft/ft_memcmp.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:51:58 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:15:40 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - size_t i; - int res; - - i = 0; - res = 0; - while (res == 0 && i < n) - { - res = ((unsigned char *) s1)[i] - ((unsigned char *) s2)[i]; - i++; - } - return (res); -} diff --git a/libft/ft_memcpy.c b/libft/ft_memcpy.c deleted file mode 100644 index 99619a2..0000000 --- a/libft/ft_memcpy.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:48:05 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:13:48 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void *ft_memcpy(void *restrict dest, const void *src, size_t n) -{ - size_t i; - - i = 0; - while (i < n) - { - ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; - i++; - } - return (dest); -} diff --git a/libft/ft_memmove.c b/libft/ft_memmove.c deleted file mode 100644 index a9bb4e8..0000000 --- a/libft/ft_memmove.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:48:19 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:14:18 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void *ft_memmove(void *dest, const void *src, size_t n) -{ - size_t i; - - if (dest < src) - { - i = 0; - while (i < n) - { - ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; - i++; - } - } - else - while (n--) - ((unsigned char *)dest)[n] = ((unsigned char *)src)[n]; - return (dest); -} diff --git a/libft/ft_memset.c b/libft/ft_memset.c deleted file mode 100644 index f0815fa..0000000 --- a/libft/ft_memset.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:47:17 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:13:36 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void *ft_memset(void *s, int c, size_t n) -{ - size_t i; - - i = 0; - while (i < n) - ((unsigned char *) s)[i++] = c; - return (s); -} diff --git a/libft/ft_putchar_fd.c b/libft/ft_putchar_fd.c deleted file mode 100644 index 7805cf3..0000000 --- a/libft/ft_putchar_fd.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:52:35 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:54:15 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void ft_putchar_fd(char c, int fd) -{ - write(fd, &c, 1); -} diff --git a/libft/ft_putendl_fd.c b/libft/ft_putendl_fd.c deleted file mode 100644 index 7f5cdee..0000000 --- a/libft/ft_putendl_fd.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:57:18 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:58:07 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - ft_putstr_fd(s, fd); - ft_putchar_fd('\n', fd); -} diff --git a/libft/ft_putnbr_fd.c b/libft/ft_putnbr_fd.c deleted file mode 100644 index 2599618..0000000 --- a/libft/ft_putnbr_fd.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:59:59 by agilliar #+# #+# */ -/* Updated: 2025/10/29 11:12:16 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -static void ft_itoa_visit(long n, void (*f)(void *, char), void *f_dat) -{ - if (n < 0) - { - f(f_dat, '-'); - return (ft_itoa_visit(-n, f, f_dat)); - } - if (n > 9) - ft_itoa_visit(n / 10, f, f_dat); - f(f_dat, '0' + n % 10); -} - -void ft_putnbr_fd_write(int *fd, char c) -{ - ft_putchar_fd(c, *fd); -} - -void ft_putnbr_fd(int n, int fd) -{ - ft_itoa_visit(n, (void (*)(void *, char))ft_putnbr_fd_write, &fd); -} diff --git a/libft/ft_putstr_fd.c b/libft/ft_putstr_fd.c deleted file mode 100644 index 90e5b5f..0000000 --- a/libft/ft_putstr_fd.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:55:24 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:56:44 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - while (*s) - ft_putchar_fd(*(s++), fd); -} diff --git a/libft/ft_split.c b/libft/ft_split.c deleted file mode 100644 index 765d7c7..0000000 --- a/libft/ft_split.c +++ /dev/null @@ -1,82 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/28 12:08:04 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:37:49 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" -#include - -static size_t ft_strlen_term(const char *s, char c) -{ - size_t i; - - i = 0; - while (s[i] && s[i] != c) - i++; - return (i); -} - -static char **ft_split_cleanup(char **res, size_t len) -{ - size_t i; - - i = 0; - while (i < len) - free(res[i++]); - free(res); - return (NULL); -} - -/* - Weird Formatting from norminette on that else, for some reason -*/ -static char **ft_split_with(char **res, const char *s, char c) -{ - size_t i; - - if (!res) - return (res); - i = 0; - while (*s) - { - if (ft_strlen_term(s, c) == 0) - s++; - else - { - res[i] = ft_substr(s, 0, ft_strlen_term(s, c)); - if (!res[i]) - return (ft_split_cleanup(res, i)); - i++; - s += ft_strlen_term(s, c); - } - } - res[i] = NULL; - return (res); -} - -char **ft_split(const char *s, char c) -{ - size_t i; - size_t len; - - i = 0; - len = 1; - while (s[i]) - { - if (ft_strlen_term(&s[i], c) == 0) - i++; - else - { - i += ft_strlen_term(&s[i], c); - len++; - } - } - return (ft_split_with(malloc(sizeof(char *) * len), s, c)); -} diff --git a/libft/ft_strchr.c b/libft/ft_strchr.c deleted file mode 100644 index 5db2152..0000000 --- a/libft/ft_strchr.c +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:50:12 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:51:18 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -char *ft_strchr(const char *s, int c) -{ - while (*s != (char)c && *s != '\0') - s++; - if (*s == (char)c) - return ((char *) s); - return (NULL); -} diff --git a/libft/ft_strdup.c b/libft/ft_strdup.c deleted file mode 100644 index 3901588..0000000 --- a/libft/ft_strdup.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strdup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:01:04 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:12:32 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -char *ft_strdup(char *src) -{ - return (ft_substr(src, 0, ft_strlen(src))); -} diff --git a/libft/ft_striteri.c b/libft/ft_striteri.c deleted file mode 100644 index c335ce9..0000000 --- a/libft/ft_striteri.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_striteri.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:48:45 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:51:20 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -void ft_striteri(char *s, void (*f)(unsigned int, char*)) -{ - size_t i; - - i = 0; - while (s[i]) - { - f(i, &s[i]); - i++; - } -} diff --git a/libft/ft_strjoin.c b/libft/ft_strjoin.c deleted file mode 100644 index 0bb0d59..0000000 --- a/libft/ft_strjoin.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strjoin.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:08:19 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:08:40 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" -#include - -char *ft_strjoin(const char *s1, const char *s2) -{ - size_t l1; - size_t l2; - char *res; - - l1 = ft_strlen(s1); - l2 = ft_strlen(s2); - res = malloc(l1 + l2 + 1); - if (!res) - return (res); - ft_memcpy(res, s1, l1); - ft_memcpy(&res[l1], s2, l2); - res[l1 + l2] = '\0'; - return (res); -} diff --git a/libft/ft_strlcat.c b/libft/ft_strlcat.c deleted file mode 100644 index 621b347..0000000 --- a/libft/ft_strlcat.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:49:32 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:12:16 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -size_t ft_strlcat(char *dest, const char *src, size_t size) -{ - size_t src_len; - size_t dest_len; - size_t i; - - src_len = 0; - while (src[src_len]) - src_len++; - dest_len = 0; - while (dest_len < size && dest[dest_len]) - dest_len++; - i = 0; - while (dest_len + i + 1 < size && i < src_len) - { - dest[dest_len + i] = src[i]; - i++; - } - if (dest_len != size) - dest[dest_len + i] = '\0'; - return (src_len + dest_len); -} diff --git a/libft/ft_strlcpy.c b/libft/ft_strlcpy.c deleted file mode 100644 index e46eeea..0000000 --- a/libft/ft_strlcpy.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:49:19 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:15:19 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -size_t ft_strlcpy(char *dest, const char *src, size_t size) -{ - size_t len; - size_t i; - - len = 0; - while (src[len] != '\0') - len++; - if (size == 0) - return (len); - i = 0; - while (i < len && i < size - 1) - *dest++ = src[i++]; - *dest = '\0'; - return (len); -} diff --git a/libft/ft_strlen.c b/libft/ft_strlen.c deleted file mode 100644 index 81b77be..0000000 --- a/libft/ft_strlen.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:48:58 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:14:59 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -size_t ft_strlen(const char *s) -{ - size_t i; - - i = 0; - while (s[i] != '\0') - i++; - return (i); -} diff --git a/libft/ft_strmapi.c b/libft/ft_strmapi.c deleted file mode 100644 index 436f395..0000000 --- a/libft/ft_strmapi.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:39:05 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:46:55 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -char *ft_strmapi(const char *s, char (*f)(unsigned int, char)) -{ - size_t len; - char *res; - size_t i; - - len = ft_strlen(s); - res = malloc(len + 1); - if (!res) - return (res); - i = 0; - while (i < len) - { - res[i] = f(i, s[i]); - i++; - } - res[i] = '\0'; - return (res); -} diff --git a/libft/ft_strncmp.c b/libft/ft_strncmp.c deleted file mode 100644 index f53ddbc..0000000 --- a/libft/ft_strncmp.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:03:01 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:04:21 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -int ft_strncmp(const char *s1, const char *s2, size_t n) -{ - size_t idx; - - if (n == 0) - return (0); - idx = 0; - while (s1[idx] != '\0' && s1[idx] == s2[idx] && idx < n - 1) - idx++; - return ((unsigned char) s1[idx] - (unsigned char) s2[idx]); -} diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c deleted file mode 100644 index 80ed25d..0000000 --- a/libft/ft_strnstr.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:04:47 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:05:14 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include - -char *ft_strnstr(const char *big, const char *little, size_t len) -{ - size_t i; - size_t j; - - i = 0; - j = 0; - while (little[i] && i + j < len && big[i + j]) - { - if (big[i + j] != little[i]) - { - i = 0; - j++; - } - else - i++; - } - if (little[i]) - return (NULL); - return ((char *)&big[j]); -} diff --git a/libft/ft_strrchr.c b/libft/ft_strrchr.c deleted file mode 100644 index c54f1d8..0000000 --- a/libft/ft_strrchr.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:51:22 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:37:33 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include - -char *ft_strrchr(const char *s, int c) -{ - char *res; - - res = (char *) s; - while (true) - { - if (*s == (char)c) - res = (char *) s; - if (!*s) - break ; - s++; - } - if (*res == (char)c) - return (res); - return (NULL); -} diff --git a/libft/ft_strtrim.c b/libft/ft_strtrim.c deleted file mode 100644 index 0a17515..0000000 --- a/libft/ft_strtrim.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:08:47 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:13:24 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -static bool ft_char_in_set(char c, const char *set) -{ - while (*set && *set != c) - set++; - return (*set == c); -} - -char *ft_strtrim(const char *s1, const char *set) -{ - size_t i; - size_t len; - - while (*s1 && ft_char_in_set(*s1, set)) - s1++; - i = 0; - len = 0; - while (s1[i]) - if (!ft_char_in_set(s1[i++], set)) - len = i; - return (ft_substr(s1, 0, len)); -} diff --git a/libft/ft_substr.c b/libft/ft_substr.c deleted file mode 100644 index bd41643..0000000 --- a/libft/ft_substr.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_substr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 10:07:38 by agilliar #+# #+# */ -/* Updated: 2025/10/29 10:08:13 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include "libft.h" - -char *ft_substr(const char *s, unsigned int start, size_t len) -{ - size_t s_len; - char *res; - - s_len = ft_strlen(s); - if (start > s_len) - start = s_len; - if (len > s_len - start) - len = s_len - start; - res = malloc(len + 1); - if (!res) - return (res); - ft_memcpy(res, s + start, len); - res[len] = '\0'; - return (res); -} diff --git a/libft/ft_tolower.c b/libft/ft_tolower.c deleted file mode 100644 index 1797e5d..0000000 --- a/libft/ft_tolower.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:44:28 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:44:39 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c = c - 'A' + 'a'; - return (c); -} diff --git a/libft/ft_toupper.c b/libft/ft_toupper.c deleted file mode 100644 index 570fbe7..0000000 --- a/libft/ft_toupper.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/29 09:44:12 by agilliar #+# #+# */ -/* Updated: 2025/10/29 09:44:20 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -int ft_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c = c - 'a' + 'A'; - return (c); -} diff --git a/libft/libft.h b/libft/libft.h deleted file mode 100644 index 7d32994..0000000 --- a/libft/libft.h +++ /dev/null @@ -1,69 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* libft.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: agilliar +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/10/27 11:27:06 by agilliar #+# #+# */ -/* Updated: 2025/10/29 13:31:51 by agilliar ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef LIBFT_H -# define LIBFT_H - -# include - -int ft_memcmp(const void *s1, const void *s2, size_t n); -void *ft_calloc(size_t nmemb, size_t size); -char *ft_strdup(char *src); -int ft_strncmp(const char *s1, const char *s2, size_t n); -char *ft_strnstr(const char *big, const char *little, size_t len); -int ft_atoi(const char *nptr); -char *ft_substr(const char *s, unsigned int start, size_t len); -void *ft_memset(void *s, int c, size_t n); -void *ft_bzero(void *s, size_t n); -void *ft_memcpy(void *dest, const void *src, size_t n); -void *ft_memmove(void *dest, const void *src, size_t n); -void *ft_memchr(const void *s, int c, size_t n); -size_t ft_strlen(const char *s); -size_t ft_strlcpy(char *dest, const char *src, size_t size); -size_t ft_strlcat(char *dest, const char *src, size_t size); -char *ft_strchr(const char *s, int c); -char *ft_strrchr(const char *s, int c); -int ft_isalpha(int c); -int ft_isdigit(int c); -int ft_isalnum(int c); -int ft_isascii(int c); -int ft_isprint(int c); -char *ft_strjoin(const char *s1, const char *s2); -char *ft_strtrim(const char *s1, const char *set); -int ft_toupper(int c); -int ft_tolower(int c); -char **ft_split(const char *s, char c); -char *ft_itoa(int n); -char *ft_strmapi(const char *s, char (*f)(unsigned int, char)); -void ft_striteri(char *s, void (*f)(unsigned int, char*)); -void ft_putchar_fd(char c, int fd); -void ft_putstr_fd(char *s, int fd); -void ft_putendl_fd(char *s, int fd); -void ft_putnbr_fd(int n, int fd); - -typedef struct s_list -{ - void *content; - struct s_list *next; -} t_list; - -t_list *ft_lstnew(void *content); -void ft_lstadd_front(t_list **lst, t_list *new); -int ft_lstsize(t_list *lst); -t_list *ft_lstlast(t_list *lst); -void ft_lstadd_back(t_list **lst, t_list *new); -void ft_lstdelone(t_list *lst, void (*del)(void *)); -void ft_lstclear(t_list **lst, void (*del)(void *)); -void ft_lstiter(t_list *lst, void (*f)(void *)); -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)); - -#endif