updating after push_swap
This commit is contained in:
parent
18e88699a6
commit
85580c0405
11
Makefile
11
Makefile
@ -23,7 +23,7 @@ WARNINGS = -Wall -Wextra -Werror
|
||||
CFLAGS = $(WARNINGS)
|
||||
|
||||
VPATH = src:src/conversion:src/ft_printf:src/list:src/memory:src/output:\
|
||||
src/string
|
||||
src/string:src/get_next_line
|
||||
|
||||
SRC_CONVERSION = ft_atoi.c ft_itoa.c ft_tolower.c ft_toupper.c \
|
||||
|
||||
@ -33,7 +33,7 @@ SRC_MEMORY = ft_memchr.c ft_memcmp.c ft_memcpy.c ft_memmove.c ft_memset.c \
|
||||
SRC_STRING = ft_isalnum.c ft_isalpha.c ft_isascii.c ft_isdigit.c ft_isprint.c \
|
||||
ft_split.c ft_strchr.c ft_strdup.c ft_striteri.c ft_strjoin.c \
|
||||
ft_strlcat.c ft_strlcpy.c ft_strlen.c ft_strmapi.c ft_strncmp.c \
|
||||
ft_strnstr.c ft_strrchr.c ft_strtrim.c ft_substr.c
|
||||
ft_strnstr.c ft_strrchr.c ft_strtrim.c ft_substr.c ft_strcmp.c
|
||||
|
||||
SRC_LIST = ft_lstadd_back.c ft_lstadd_front.c ft_lstclear.c ft_lstdelone.c \
|
||||
ft_lstiter.c ft_lstlast.c ft_lstmap.c ft_lstnew.c ft_lstsize.c
|
||||
@ -45,8 +45,10 @@ SRC_FT_PRINTF = ft_isbase.c ft_putnbr_base.c ft_write_str.c parse_placeholder.c
|
||||
ft_putnbr_signed.c parse_conversion.c print_char.c \
|
||||
print_number.c print_string.c
|
||||
|
||||
SRC_GET_NEXT_LINE = get_next_line.c
|
||||
|
||||
SOURCES = $(SRC_CONVERSION) $(SRC_MEMORY) $(SRC_STRING) \
|
||||
$(SRC_LIST) $(SRC_OUTPUT) $(SRC_FT_PRINTF)
|
||||
$(SRC_LIST) $(SRC_OUTPUT) $(SRC_FT_PRINTF) $(SRC_GET_NEXT_LINE)
|
||||
|
||||
OBJECTS = $(addprefix $(OBJ_DIR)/, $(SOURCES:.c=.o))
|
||||
|
||||
@ -69,4 +71,7 @@ fclean: clean
|
||||
|
||||
re: fclean all
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: $(NAME)
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
||||
@ -28,5 +28,4 @@ int print_pointer(va_list args);
|
||||
int parse_conversion(const char **format, va_list args);
|
||||
int parse_placeholder(const char **format, va_list args);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
18
inc/libft.h
18
inc/libft.h
@ -20,14 +20,6 @@ typedef struct s_list
|
||||
struct s_list *next;
|
||||
} t_list;
|
||||
|
||||
typedef struct s_clist
|
||||
{
|
||||
void *content;
|
||||
struct s_clist *next;
|
||||
struct s_clist *prev;
|
||||
} t_clist;
|
||||
|
||||
|
||||
int ft_isalpha(int c);
|
||||
int ft_isdigit(int c);
|
||||
int ft_isalnum(int c);
|
||||
@ -45,6 +37,7 @@ int ft_tolower(int c);
|
||||
char *ft_strchr(const char *s, int c);
|
||||
char *ft_strrchr(const char *s, int c);
|
||||
int ft_strncmp(const char *s1, const char *s2, size_t n);
|
||||
int ft_strcmp(const char *s1, const char *s2);
|
||||
void *ft_memchr(const void *s, int c, size_t n);
|
||||
int ft_memcmp(const void *s1, const void *s2, size_t n);
|
||||
char *ft_strnstr(const char *big, const char *little, size_t len);
|
||||
@ -82,4 +75,13 @@ t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *));
|
||||
*/
|
||||
|
||||
int ft_printf(const char *format, ...);
|
||||
|
||||
/*
|
||||
* get_next_line
|
||||
*/
|
||||
# define OPEN_MAX 1024
|
||||
# define BUFFER_SIZE 256
|
||||
|
||||
char *get_next_line(int fd);
|
||||
|
||||
#endif
|
||||
|
||||
@ -22,7 +22,7 @@ int print_pointer(va_list args)
|
||||
size_t len;
|
||||
char *str;
|
||||
int wrote;
|
||||
|
||||
|
||||
n = va_arg(args, unsigned long);
|
||||
if (!n)
|
||||
return (write(1, "(nil)", 5));
|
||||
|
||||
124
src/get_next_line/get_next_line.c
Normal file
124
src/get_next_line/get_next_line.c
Normal file
@ -0,0 +1,124 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: o_ :::::: ::: */
|
||||
/* get_next_line.c :+: / :+::+: :+: */
|
||||
/* +:+ > +:++:+ +:+ */
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ */
|
||||
/* +#+ +#+#+ +#++#+ +#+ \o/ */
|
||||
/* Created: 2024/07/15 16:59:55 by whaffman #+#+# #+#+# #+# #+# | */
|
||||
/* Updated: 2024/07/15 17:00:24 by whaffman ### ### ### ### / \ */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void gnl_clean(void **ptr)
|
||||
{
|
||||
if (*ptr)
|
||||
{
|
||||
free(*ptr);
|
||||
*ptr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static int gnl_check_and_extract(char **line, char **stock)
|
||||
{
|
||||
char *temp1;
|
||||
char *temp2;
|
||||
|
||||
if (!stock || !*stock)
|
||||
return (0);
|
||||
temp1 = *stock;
|
||||
while (temp1 && *temp1 != '\n')
|
||||
if (!*temp1++)
|
||||
return (0);
|
||||
if (temp1)
|
||||
temp1++;
|
||||
temp2 = ft_strdup(temp1);
|
||||
*temp1 = '\0';
|
||||
*line = ft_strdup(*stock);
|
||||
free(*stock);
|
||||
*stock = temp2;
|
||||
if (!*line || !*stock)
|
||||
{
|
||||
gnl_clean((void **)line);
|
||||
gnl_clean((void **)stock);
|
||||
return (-1);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
static int gnl_read(int fd, char **buffer, size_t size)
|
||||
{
|
||||
int bytes_read;
|
||||
|
||||
if (!*buffer)
|
||||
{
|
||||
*buffer = malloc(sizeof(char) * (BUFFER_SIZE + 1));
|
||||
if (!*buffer)
|
||||
return (-1);
|
||||
}
|
||||
bytes_read = read(fd, *buffer, size);
|
||||
if (bytes_read >= 0)
|
||||
(*buffer)[bytes_read] = '\0';
|
||||
return (bytes_read);
|
||||
}
|
||||
|
||||
static int gnl_read_file(int fd, char **stock, char **line)
|
||||
{
|
||||
char *buffer;
|
||||
char *temp;
|
||||
int bytes_read;
|
||||
|
||||
buffer = NULL;
|
||||
bytes_read = gnl_read(fd, &buffer, BUFFER_SIZE);
|
||||
while (bytes_read > 0)
|
||||
{
|
||||
if (!*stock)
|
||||
*stock = ft_strdup(buffer);
|
||||
else
|
||||
{
|
||||
temp = *stock;
|
||||
*stock = ft_strjoin(temp, buffer);
|
||||
free(temp);
|
||||
}
|
||||
if (gnl_check_and_extract(line, stock))
|
||||
break ;
|
||||
bytes_read = gnl_read(fd, &buffer, BUFFER_SIZE);
|
||||
}
|
||||
free(buffer);
|
||||
if (!*stock)
|
||||
return (-1);
|
||||
return (bytes_read);
|
||||
}
|
||||
|
||||
char *get_next_line(int fd)
|
||||
{
|
||||
static char *stock[OPEN_MAX];
|
||||
char *line;
|
||||
int status;
|
||||
|
||||
if (fd < 0 || fd >= OPEN_MAX || BUFFER_SIZE <= 0)
|
||||
return (NULL);
|
||||
if (stock[fd] && gnl_check_and_extract(&line, &stock[fd]))
|
||||
return (line);
|
||||
status = gnl_read_file(fd, &stock[fd], &line);
|
||||
if (status > 0)
|
||||
return (line);
|
||||
else if (status < 0)
|
||||
{
|
||||
gnl_clean((void **)&stock[fd]);
|
||||
return (NULL);
|
||||
}
|
||||
if (stock[fd] && *stock[fd])
|
||||
{
|
||||
line = ft_strdup(stock[fd]);
|
||||
gnl_clean((void **)&stock[fd]);
|
||||
if (line)
|
||||
return (line);
|
||||
}
|
||||
gnl_clean((void **)&stock[fd]);
|
||||
return (NULL);
|
||||
}
|
||||
23
src/string/ft_strcmp.c
Normal file
23
src/string/ft_strcmp.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: o_ :::::: ::: */
|
||||
/* ft_strcmp.c :+: / :+::+: :+: */
|
||||
/* +:+ > +:++:+ +:+ */
|
||||
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ */
|
||||
/* +#+ +#+#+ +#++#+ +#+ \o/ */
|
||||
/* Created: 2024/11/24 20:06:19 by whaffman #+#+# #+#+# #+# #+# | */
|
||||
/* Updated: 2024/11/24 20:07:08 by whaffman ### ### ### ### / \ */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
int ft_strcmp(const char *s1, const char *s2)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
i = 0;
|
||||
while (s1[i] && s2[i] && s1[i] == s2[i])
|
||||
i++;
|
||||
return ((unsigned char)s1[i] - (unsigned char)s2[i]);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user