Get the next line of text available on a file descriptor. Calling get_next_line in a loop will allow us to read the text available on the file descriptor one line at a time until the end of it.
"May it be a file, stdin, or even later a network connection, you will always need a way to read content line by line. It is time to start working on this function, which will be essential for your future projects." - Subject
External functions: read, malloc, free
Code written in accordance with 42 C coding style, ANSI C89 compliant and entirely documented with docstrings.
Add get_next_line.h to your project header to access the function.
To test the function run make from within the test directory and launch as
follows: ./get_next_line <path_to_file>
For example: ./get_next_line main.c
First of all cd test && make.
- Gnltester check if the number of characters returned by
get_next_linecall on multiple pre defined input files with a set of different BUFFER_SIZE is correct. Uses valgrind.
Usage: make test or bash gnltester.sh
- Gnldiff is a simple tester that check
get_next_lineoutput accuracy and create adiff.logfile if something went wrong.
Usage: bash gnldiff.sh <file_path>
Example:
cat Makefile > file; bash gnldiff.sh file
cat ../*.[ch] > file; bash gnldiff.sh file
Make sure to use a BUFFER_SIZE of 1 if your <file> parameter contains
multi byte characters like those from binary file or /dev/urandom like:
cat /bin/cat > file; bash gnldiff.sh file
head -4242 /dev/urandom > file; bash gnldiff.sh file
Check with different arguments (ft_mallocator/config.sh:ARGS) and buffer size (get_next_line.h:BUFFER_SIZE).
-
valgrind:
valgrind -q --leak-check=yes --show-leak-kinds=all -
sanitizer:
-fsanitize=address
Add -g flag when compiling with -fsanitize=address to print errors line numbers instead of addresses in hexadecimal.