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)
|
CFLAGS = $(WARNINGS)
|
||||||
|
|
||||||
VPATH = src:src/conversion:src/ft_printf:src/list:src/memory:src/output:\
|
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 \
|
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 \
|
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_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_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 \
|
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
|
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 \
|
ft_putnbr_signed.c parse_conversion.c print_char.c \
|
||||||
print_number.c print_string.c
|
print_number.c print_string.c
|
||||||
|
|
||||||
|
SRC_GET_NEXT_LINE = get_next_line.c
|
||||||
|
|
||||||
SOURCES = $(SRC_CONVERSION) $(SRC_MEMORY) $(SRC_STRING) \
|
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))
|
OBJECTS = $(addprefix $(OBJ_DIR)/, $(SOURCES:.c=.o))
|
||||||
|
|
||||||
@ -69,4 +71,7 @@ fclean: clean
|
|||||||
|
|
||||||
re: fclean all
|
re: fclean all
|
||||||
|
|
||||||
|
debug: CFLAGS += -DDEBUG -g
|
||||||
|
debug: $(NAME)
|
||||||
|
|
||||||
.PHONY: all clean fclean re
|
.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_conversion(const char **format, va_list args);
|
||||||
int parse_placeholder(const char **format, va_list args);
|
int parse_placeholder(const char **format, va_list args);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
18
inc/libft.h
18
inc/libft.h
@ -20,14 +20,6 @@ typedef struct s_list
|
|||||||
struct s_list *next;
|
struct s_list *next;
|
||||||
} t_list;
|
} 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_isalpha(int c);
|
||||||
int ft_isdigit(int c);
|
int ft_isdigit(int c);
|
||||||
int ft_isalnum(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_strchr(const char *s, int c);
|
||||||
char *ft_strrchr(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_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);
|
void *ft_memchr(const void *s, int c, size_t n);
|
||||||
int ft_memcmp(const void *s1, const void *s2, 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);
|
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, ...);
|
int ft_printf(const char *format, ...);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get_next_line
|
||||||
|
*/
|
||||||
|
# define OPEN_MAX 1024
|
||||||
|
# define BUFFER_SIZE 256
|
||||||
|
|
||||||
|
char *get_next_line(int fd);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
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