firstpush

This commit is contained in:
djonker 2023-06-06 16:48:34 +02:00
commit ca5f376c45
1576 changed files with 1281278 additions and 0 deletions

70
Makefile Normal file
View File

@ -0,0 +1,70 @@
# **************************************************************************** #
# #
# .--. _ #
# Makefile |o_o || | #
# |:_/ || |_ _ ___ __ #
# By: djonker <djonker@student.codam.nl> // \ \ __| | | \ \/ / #
# (| | )|_| |_| |> < #
# Created: 2021/08/19 15:20:20 by djonker /'\_ _/`\__|\__,_/_/\_\ #
# Updated: 2023/05/29 22:07:56 by houtworm \___)=(___/ #
# #
# **************************************************************************** #
NAME =minishell
CC =gcc
CFLAGS =-Wall -Werror -Wextra# -g -fsanitize=address
RM =rm -f
SRC =src/main.c\
src/init.c\
src/prompt.c\
src/parse.c\
src/exec.c\
src/script.c\
src/builtin/exit.c\
src/builtin/chdir.c\
src/builtin/unset.c\
src/builtin/export.c\
src/builtin/env.c\
src/builtin/pwd.c\
src/builtin/echo.c
OBJ =$(SRC:src/%.c=obj/%.o)
LIB =printf/ft_printf.a getnextline/get_next_line.a libft/libft.a
all: libft getnextline printf $(NAME)
clean:
@$(RM) -r obj
@$(MAKE) -C libft clean > /dev/null
@$(MAKE) -C printf clean > /dev/null
@$(MAKE) -C getnextline clean > /dev/null
@printf "\e[1;35mCleaned Object Files\n\e[0;00m"
fclean: clean
@$(RM) $(NAME)
@$(MAKE) -C libft fclean > /dev/null
@$(MAKE) -C printf fclean > /dev/null
@$(MAKE) -C getnextline fclean > /dev/null
@printf "\e[1;31mCleaned Executables\n\e[0;00m"
re: fclean all
$(OBJ): $(SRC)
@mkdir -p $(dir $@)
@printf "\e[1;34mBuilding $@\n\e[0;00m"
@$(CC) $(CFLAGS) -c $(@:obj/%.o=src/%.c) -o $@
$(NAME): $(OBJ)
@printf "\e[1;36mCompiling $@\n\e[0;00m"
@$(CC) $(CFLAGS) -lreadline $^ -o $@ $(LIB)
@printf "\e[1;32mDone\e[0;00m\n"
libft:
@$(MAKE) -C libft all
printf:
@$(MAKE) -C printf all
getnextline:
@$(MAKE) -C getnextline all
.PHONY: all clean fclean re libft getnextline printf

64
Readme.md Normal file
View File

@ -0,0 +1,64 @@
# Project Name
Minishell is a lightweight implementation of bash
---
## Todo
#### Environment
- Write new CWD to $CWD
- Parse ~/.mshrc
- write return code to $?
#### Prompt
- Rework execution time so it works cross platform, maybe with time?
- Fix on Mac, Total garbage
#### Parser
1. Quotes
2. ;
3. {} () < > << >> <<< | [] ? & && ||
4. * $NAME $(command)
5. prepare commands for execve
#### Exec
1. fork if there are pipes
2. execve all the commands
#### Builtins
- cd
- export
- unset
- alias
- env Test properly
- pwd Test properly
- echo Test properly
- exit Test properly
#### Signals
- ^C should break the readline
- ^\ shouldn't print anything
---
## Bugs
#### crashes when giving proper memory and a lot of arguments
#### Overwrites line when typing past the terminal width at first command
---
## Improvements
#### Handle scripts from stdin or argument
- Functions()
- Statements, if, then, else, elif, while, for
#### Posix Compliant
- //// is the same as / or /////////////////////////////
#### Extra Builtins
- z to jump around
---
## Usage
1. Simply clone or download the repository
2. Run `make` in the cloned directory
3. Start the shell with `./minishell`
---
## Tester
### Todo
- Figure out the best way to test minishell
---
[This project is part of the studies at 42](https://42.fr/en/homepage/)

8
getnextline/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*.pdf
*.o
*.a
LICENSE
obj
tests/tmp
.git
.ccls-cache

44
getnextline/Makefile Normal file
View File

@ -0,0 +1,44 @@
# **************************************************************************** #
# #
# .--. _ #
# Makefile |o_o || | #
# |:_/ || |_ _ ___ __ #
# By: djonker <djonker@student.codam.nl> // \ \ __| | | \ \/ / #
# (| | )|_| |_| |> < #
# Created: 2021/05/27 01:24:02 by djonker /'\_ _/`\__|\__,_/_/\_\ #
# Updated: 2023/02/20 20:37:06 by houtworm \___)=(___/ #
# #
# **************************************************************************** #
NAME =get_next_line.a
CC =gcc
FC =-Wall -Werror -Wextra
RM =rm -f
SRC =src/get_next_line.c\
src/get_next_line_utils.c
OBJ =$(SRC:src/%.c=obj/%.o)
FAR =ar -crs
all: $(NAME)
bonus: $(NAME)
clean:
@$(RM) -r obj
@printf "\e[1;35mCleaned Object Files\n\e[0;00m"
fclean: clean
@$(RM) $(NAME)
@printf "\e[1;31mCleaned Executables\n\e[0;00m"
re: fclean all
$(OBJ): $(SRC)
@mkdir -p $(dir $@)
@printf "\e[1;34mBuilding $@\n\e[0;00m"
@$(CC) $(CFLAGS) -c $(@:obj/%.o=src/%.c) -o $@
$(NAME): $(OBJ)
@printf "\e[1;36mCompiling get next line\e[0;00m\n"
@$(FAR) $(NAME) $^ > /dev/null 2>&1
@printf "\e[1;32mDone\e[0;00m\n"

22
getnextline/Readme.md Normal file
View File

@ -0,0 +1,22 @@
# Project Name
Get Next Line is a very handy function that keeps feeding you the next line of a file descriptor
---
## Todo
#### Remove the struct for some extra speed
---
## Usage
1. Simply clone or download the repository
2. Run `make` in the cloned directory
3. You can include the get_next_line.a into your own programs
---
## Tester
#### Usage
1. Download test.sh and the tests folder to your GNL directory
2. Make the file executable `chmod +x test.sh`
3. Run `./test.sh` to start the test
---
[This project is part of the studies at 42](https://42.fr/en/homepage/)

View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* get_next_line.h |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/12/19 06:09:11 by djonker #+# #+# */
/* Updated: 2023/03/09 03:26:07 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#ifndef GET_NEXT_LINE_H
# define GET_NEXT_LINE_H
# include <unistd.h>
# include <stdlib.h>
# include <fcntl.h>
# ifndef BUFFER_SIZE
# define BUFFER_SIZE 300
# endif
struct s_gnl
{
char b[BUFFER_SIZE + 1];
int fd;
};
int get_next_line(int fd, char **line);
int findnewline(struct s_gnl *strct);
int newline(struct s_gnl *strct, char **line);
int blimit(int l, struct s_gnl *strct, char **line, char *t);;
int nonewline(int l, struct s_gnl *strct, char **line);
char *gnl_substr(char const *s, unsigned int start, size_t len);
void *gnl_memcpy(void *dst, const void *src, size_t n);
size_t gnl_strlen(char *str);
void gnl_bzero(void *s, size_t n);
char *gnl_strjoin(char const *s1, char const *s2);
#endif

View File

@ -0,0 +1,114 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* get_next_line.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/03/15 22:51:05 by djonker #+# #+# */
/* Updated: 2023/02/20 20:32:05 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../get_next_line.h"
int findnewline(struct s_gnl *strct)
{
int l;
l = 0;
while (strct->b[l] != '\0')
{
if (strct->b[l] == '\n')
return (l + 1);
l++;
}
return (-1);
}
int newline(struct s_gnl *strct, char **line)
{
int l;
char *t;
l = findnewline(strct);
line[0] = gnl_substr((const char *)strct->b, 0, l - 1);
if (line[0] == NULL)
return (-1);
t = gnl_substr((const char *)strct->b, l, BUFFER_SIZE - l);
if (t == NULL)
{
free(line[0]);
return (-1);
}
gnl_memcpy(strct->b, t, gnl_strlen(t));
gnl_bzero(&strct->b[gnl_strlen(t)], BUFFER_SIZE - gnl_strlen(t));
free(t);
return (1);
}
int blimit(int l, struct s_gnl *strct, char **line, char *t)
{
char *f;
l = get_next_line(strct->fd, line);
if (l == 1 || l == 0)
{
f = line[0];
line[0] = gnl_strjoin(t, line[0]);
free (f);
}
free(t);
if (line[0] == NULL)
return (-1);
return (l);
}
int nonewline(int l, struct s_gnl *strct, char **line)
{
char *t;
t = gnl_substr((const char *)strct->b, 0, gnl_strlen(strct->b));
gnl_bzero(&strct->b[0], BUFFER_SIZE);
l = read(strct->fd, strct->b, BUFFER_SIZE);
if (l == -1 || t == NULL)
{
line[0] = NULL;
return (-1);
}
if (l == BUFFER_SIZE || findnewline(strct) > -1)
return (blimit(l, strct, line, t));
line[0] = gnl_strjoin(t, strct->b);
gnl_bzero(&strct->b, BUFFER_SIZE);
free(t);
if (line[0] == NULL)
return (-1);
return (0);
}
int get_next_line(int fd, char **line)
{
static struct s_gnl strct[256];
int l;
l = 0;
if (!line)
return (-1);
if (fd < 0 || BUFFER_SIZE <= 0)
{
line[0] = NULL;
return (-1);
}
strct[fd].b[BUFFER_SIZE] = '\0';
strct[fd].fd = fd;
if (strct[fd].b[0] == '\0')
l = read(strct[fd].fd, strct[fd].b, BUFFER_SIZE);
if (l == -1)
{
line[0] = NULL;
return (-1);
}
if (findnewline(&strct[fd]) > -1)
return (newline(&strct[fd], line));
return (nonewline(l, &strct[fd], line));
}

View File

@ -0,0 +1,103 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* get_next_line_utils.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/04/05 07:45:24 by djonker #+# #+# */
/* Updated: 2023/02/07 00:54:10 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../get_next_line.h"
size_t gnl_strlen(char *str)
{
size_t a;
a = 0;
while (*str)
{
a++;
str++;
}
return (a);
}
void gnl_bzero(void *s, size_t n)
{
char *p;
p = s;
while (n)
{
*p = '\0';
p++;
n--;
}
}
void *gnl_memcpy(void *dst, const void *src, size_t n)
{
char *d;
const char *s;
long unsigned int i;
i = 0;
d = dst;
s = src;
while (n > i)
{
d[i] = s[i];
i++;
}
return (dst);
}
char *gnl_strjoin(char const *s1, char const *s2)
{
int c1;
int c2;
int l1;
int l2;
char *r;
c1 = 0;
c2 = 0;
l1 = gnl_strlen((char *)s1);
l2 = gnl_strlen((char *)s2);
r = malloc(l1 + l2 + 1);
if (r == NULL)
return (r);
while (c1 < l1)
{
r[c1] = s1[c1];
c1++;
}
while (c2 < l2)
{
r[c1 + c2] = s2[c2];
c2++;
}
r[c1 + c2] = '\0';
return (r);
}
char *gnl_substr(char const *s, unsigned int start, size_t len)
{
char *r;
long unsigned int i;
i = 0;
r = malloc(len + 1);
if (r == NULL)
return (NULL);
while (len > i)
{
r[i] = s[i + start];
i++;
}
r[i] = '\0';
return (r);
}

398
getnextline/test.sh Executable file
View File

@ -0,0 +1,398 @@
# **************************************************************************** #
# #
# .--. _ #
# test.sh |o_o || | #
# |:_/ || |_ _ ___ __ #
# By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / #
# (| | )|_| |_| |> < #
# Created: 2023/02/20 12:46:46 by houtworm /'\_ _/`\__|\__,_/_/\_\ #
# Updated: 2023/03/11 08:07:29 by houtworm \___)=(___/ #
# #
# **************************************************************************** #
#!/bin/bash
# Vars and Init
PNAME=get_next_line.a
SLEEP=1
FAULTS=0
VALGRIND=0
which valgrind > /dev/null
if [ $? -eq 0 ]
then
VALGRIND=1
else
printf "\n\e[1;31mInstall Valgrind for extra Memory Checking\e[0;00m\n"
fi
HEADLOC=$(find ./ -name '*line.h' | grep -v tests | grep -v ccls)
mkdir -p tests/tmp
cp $HEADLOC tests/tmp/get_next_line.h
if [ $1 == "old" ]
then
SRCPATH="tests/src/old/"
FILPATH="tests/files/old/"
elif [ $1 == "new" ]
then
SRCPATH="tests/src/new/"
FILPATH="tests/files/new/"
else
printf "\e[1;31mPlease run the tester as follows\n./test.sh [VERSION] [SLEEPTIME]\nold returns an int while new returns the line\nexamples:\n./test.sh old\n./test.sh new\n./test.sh old 5\e[0;00m\n"
rm -rf tests/tmp
exit 1
fi
if [ $2 ]
then
SLEEP=$2
fi
# Functions
getnextline()
{
gcc -D BUFFER_SIZE=$1 -o tests/tmp/binary ${SRCPATH}$2 get_next_line.a
./tests/tmp/binary > tests/tmp/output
diff ${FILPATH}$3 tests/tmp/output > /dev/null
if [ $? -eq 0 ]
then
printf "\e[1;32mOutput OK\e[0;00m\n"
else
printf "\e[1;31mOutput is wrong\e[0;00m\n"
FAULTS=$(($FAULTS+1))
fi
gcc -g -fsanitize=address -D BUFFER_SIZE=$1 -o tests/tmp/binary ${SRCPATH}$2 get_next_line.a
./tests/tmp/binary > tests/tmp/output 2>tests/tmp/memorycheck
diff ${FILPATH}$3 tests/tmp/output > /dev/null
if [ $? -eq 0 ]
then
cat tests/tmp/memorycheck | grep "leaked" > /dev/null
if [ $? -eq 1 ]
then
printf "\e[1;32mNo Leaks Fsanitize\e[0;00m\n"
else
printf "\n\e[1;31mKO found Leaks \e[0;00m\n"
cat tests/tmp/memorycheck
FAULTS=$(($FAULTS+1))
fi
else
printf "\e[1;31mKO with fsanitize\e[0;00m\n"
cat tests/tmp/memorycheck
FAULTS=$(($FAULTS+1))
fi
if [ $VALGRIND -eq 1 ]
then
gcc -o tests/tmp/binary ${SRCPATH}$2 get_next_line.a 2> /dev/null
valgrind --leak-check=full ./tests/tmp/binary 2> tests/tmp/memorycheck > /dev/null
cat tests/tmp/memorycheck | grep indirectly | grep "[123456789] bytes" > /dev/null
if [ $? -eq 0 ]
then
printf "\n\e[1;31mLeaks Valgrind $1 $2\e[0;00m\n"
cat tests/tmp/memorycheck
FAULTS=$(($FAULTS+1))
CURFUNERR=1
else
printf "\e[1;32mNo Leaks Valgrind\e[0;00m\n"
fi
cat tests/tmp/memorycheck | grep definitely | grep "[123456789] bytes" > /dev/null
if [ $? -eq 0 ]
then
printf "\n\e[1;31mLeaks Valgrind $1 $2\e[0;00m\n"
cat tests/tmp/memorycheck
FAULTS=$(($FAULTS+1))
CURFUNERR=1
fi
fi
}
checkfile()
{
ls $1 2> /dev/null | grep $1 > /dev/null
if [ $? -ne $2 ]
then
printf "\e[1;31mMakefile does not create $1\e[0;00m\n"
rm -rf tests/tmp
exit 1
fi
}
searchobj()
{
FILES=$(find ./ -name '*.o' | wc -l)
if [ $1 -eq 0 ]
then
if [ $FILES -ne 0 ]
then
printf "\e[1;31mObject files found after clean\e[0;00m\n"
FAULTS=$(($FAULTS+1))
fi
fi
if [ $1 -eq 1 ]
then
if [ $FILES -eq 0 ]
then
printf "\e[1;31mObject files not found after make\e[0;00m\n"
FAULTS=$(($FAULTS+1))
fi
fi
}
checkrule()
{
make $1 > /dev/null 2>&1
if [ $? -eq 2 ]
then
printf "\e[1;31mMissing rule $1\e[0;00m\n"
FAULTS=$(($FAULTS+1))
fi
}
relinkcheck()
{
make $1 2>&1 | grep -v Nothing > tests/tmp/relink && cat tests/tmp/relink | grep -v directory > /dev/null
if [ $? -eq 0 ]
then
printf "\n\e[1;31mMakefile relinks\e\n[0;00m"
cat tests/tmp/relink
FAULTS=$(($FAULTS+1))
else
printf "\e[1;32mMakefile OK\n\e[0;00m"
fi
}
# Tests
# Test 1
printf "\e[1;36mTest 1 Checking all source with Norminette\e[0;00m\n"
norminette $(find ./ -name '*.[ch]' | grep -v ./tests/ | grep -v ccls) > tests/tmp/norm
if [ $? -eq 1 ]
then
printf "\e[1;31mYour shit is not norm!\e[0;00m\n"
cat tests/tmp/norm
FAULTS=$(($FAULTS+1))
else
printf "\e[1;32mNorminette OK\e[0;00m\n"
fi
sleep $SLEEP
# Test 2
printf "\e[1;36mTest 2 Checking all mandatory rules Makefile\e[0;00m\n"
checkrule all
checkfile $PNAME 0
searchobj 1
checkrule clean
searchobj 0
checkfile $PNAME 0
checkrule $PNAME
searchobj 1
checkfile $PNAME 0
checkrule fclean
searchobj 0
checkfile $PNAME 1
checkrule re
searchobj 1
checkfile $PNAME 0
if [ $FAULTS -eq 0 ]
then
printf "\e[1;32mMakefile rules OK\e[0;00m\n"
fi
sleep $SLEEP
# Test 3
printf "\e[1;36mTest 3 Checking if Makefile relinks\e[0;00m\n"
relinkcheck
sleep $SLEEP
# Test 4
printf "\e[1;36mTest 4 Basic test with Buffer size 0\e[0;00m\n"
getnextline 0 maina.c basic
sleep $SLEEP
# Test 5
printf "\e[1;36mTest 5 Basic test with Buffer size 1\e[0;00m\n"
getnextline 1 maina.c basic
sleep $SLEEP
# Test 6
printf "\e[1;36mTest 6 Basic test with Buffer size 2\e[0;00m\n"
getnextline 2 maina.c basic
sleep $SLEEP
# Test 7
printf "\e[1;36mTest 7 Basic test with Buffer size 3\e[0;00m\n"
getnextline 3 maina.c basic
sleep $SLEEP
# Test 8
printf "\e[1;36mTest 8 Basic test with Buffer size 4\e[0;00m\n"
getnextline 4 maina.c basic
sleep $SLEEP
# Test 9
printf "\e[1;36mTest 9 Basic test with Buffer size 5\e[0;00m\n"
getnextline 5 maina.c basic
sleep $SLEEP
# Test 10
printf "\e[1;36mTest 10 Basic test with Buffer size 6\e[0;00m\n"
getnextline 6 maina.c basic
sleep $SLEEP
# Test 11
printf "\e[1;36mTest 11 Basic test with Buffer size 7\e[0;00m\n"
getnextline 7 maina.c basic
sleep $SLEEP
# Test 12
printf "\e[1;36mTest 12 Basic test with Buffer size 8\e[0;00m\n"
getnextline 8 maina.c basic
sleep $SLEEP
# Test 13
printf "\e[1;36mTest 13 Basic test with Buffer size 9\e[0;00m\n"
getnextline 9 maina.c basic
sleep $SLEEP
# Test 14
printf "\e[1;36mTest 14 Basic test with Buffer size 10\e[0;00m\n"
getnextline 10 maina.c basic
sleep $SLEEP
# Test 15
printf "\e[1;36mTest 15 Basic test with Buffer size 100\e[0;00m\n"
getnextline 100 maina.c basic
sleep $SLEEP
# Test 16
printf "\e[1;36mTest 16 Basic test with Buffer size 1000\e[0;00m\n"
getnextline 1000 maina.c basic
sleep $SLEEP
# Test 17
printf "\e[1;36mTest 17 Basic test with Buffer size 10000\e[0;00m\n"
getnextline 10000 maina.c basic
sleep $SLEEP
# Test 18
printf "\e[1;36mTest 18 Basic test with Buffer size 100000\e[0;00m\n"
getnextline 100000 maina.c basic
sleep $SLEEP
# Test 19
printf "\e[1;36mTest 19 Basic test with Buffer size 1000000\e[0;00m\n"
getnextline 1000000 maina.c basic
sleep $SLEEP
# Test 20
printf "\e[1;36mTest 20 Basic test with Buffer size 10000000\e[0;00m\n"
getnextline 10000000 maina.c basic
sleep $SLEEP
# Test 21
printf "\e[1;36mTest 21 300.000 character line with buffer size 1\e[0;00m\n"
getnextline 1 mainb.c extreme1
sleep $SLEEP
# Test 22
printf "\e[1;36mTest 22 300.000 character line with buffer size 100.000\e[0;00m\n"
getnextline 100000 mainb.c extreme1
sleep $SLEEP
# Test 23
printf "\e[1;36mTest 23 300.000 empty lines with buffer size 1\e[0;00m\n"
getnextline 1 mainc.c extreme2
sleep $SLEEP
# Test 24
printf "\e[1;36mTest 24 300.000 empty lines with buffer size 100.000\e[0;00m\n"
getnextline 100000 mainc.c extreme2
sleep $SLEEP
# Test 25
printf "\e[1;36mTest 25 All unicode characters with buffer size 1\e[0;00m\n"
getnextline 1 maine.c unicode
sleep $SLEEP
# Test 26
printf "\e[1;36mTest 26 All unicode characters with buffer size 100.000\e[0;00m\n"
getnextline 100000 maine.c unicode
sleep $SLEEP
# Test 27
printf "\e[1;36mTest 27 Reading from stdin buffer size 1\e[0;00m\n"
printf "Please type Hello, Press Enter and hit CTRL+D with every empty line\n"
getnextline 1 mainf.c hello
sleep $SLEEP
# Test 28
printf "\e[1;36mTest 28 Reading from stdin buffer size 100.000\e[0;00m\n"
printf "Please type Hello, Press Enter and hit CTRL+D with every empty line\n"
getnextline 100000 mainf.c hello
sleep $SLEEP
# Test 29
find ./ -name '*bonus.h' | grep bonus > /dev/null
if [ $? -eq 0 ]
then
HEADLOC=$(find ./ -name '*bonus.h')
cp $HEADLOC tests/tmp/get_next_line.h
fi
printf "\e[1;36mTest 29 Checking if Makefile bonus rule exists\e[0;00m\n"
make fclean > /dev/null
make bonus >/dev/null 2>&1
if [ $? -eq 2 ]
then
printf "\e[1;31mNo bonus? I am a little dissapointed...\e[0;00m\n"
if [ $FAULTS -eq 0 ]
then
printf "\e[1;35mBut we got no errors, Congratulations\e[0;00m\n"
make fclean > /dev/null
rm -rf tests/tmp
exit 0
else
printf "\e[1;31mAnd we got $FAULTS errors\nSo that's a bummer\e[0;00m\n"
make fclean > /dev/null
rm -rf tests/tmp
exit 1
fi
fi
printf "\e[1;32mbonus rule OK\e[0;00m\n"
sleep $SLEEP
# Test 30
printf "\e[1;36mTest 30 Checking if Makefile relinks for bonus\e[0;00m\n"
relinkcheck bonus
sleep $SLEEP
# Test 31
printf "\e[1;36mTest 31 Reading from 2 files at once buffer size 1\e[0;00m\n"
getnextline 1 maind.c resd
sleep $SLEEP
# Test 32
printf "\e[1;36mTest 32 Reading from 2 files at once buffer size 100.000\e[0;00m\n"
getnextline 100000 maind.c resd
sleep $SLEEP
# Test 33
printf "\e[1;36mTest 33 Reading from 5 files at once buffer size 1\e[0;00m\n"
getnextline 1 maing.c resg
sleep $SLEEP
# Test 34
printf "\e[1;36mTest 34 Reading from 5 files at once buffer size 100.000\e[0;00m\n"
getnextline 100000 maing.c resg
sleep $SLEEP
# Conclusion
if [ $FAULTS -eq 0 ]
then
printf "\e[1;35mwe got no errors, Congratulations\e[0;00m\n"
else
printf "\e[1;31mwe got $FAULTS errors\nSo that's a bummer\e[0;00m\n"
make fclean > /dev/null
rm -rf tests/tmp
exit 1
fi
make fclean > /dev/null
rm -rf tests/tmp
exit 0

View File

@ -0,0 +1,9 @@
1 character on a line
1
1
empty line
3000 characters on a line
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

View File

@ -0,0 +1,10 @@
line 1
line 3
line 5
line 7
line 9
line 11
line 13
line 15
line 17
line 19

View File

@ -0,0 +1,10 @@
line 2
line 4
line 6
line 8
line 10
line 12
line 14
line 16
line 18
line 20

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
Hello

View File

@ -0,0 +1,20 @@
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
line 11
line 12
line 13
line 14
line 15
line 16
line 17
line 18
line 19
line 20

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
<<1>>1 character on a line
<<1>>1
<<1>>1
<<1>>empty line
<<1>>
<<1>>
<<1>>3000 characters on a line
<<1>>123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
<<1>>123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
<<0>>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
<<1>>Hello
<<0>>

View File

@ -0,0 +1,22 @@
<<1>>line 1
<<1>>line 2
<<1>>line 3
<<1>>line 4
<<1>>line 5
<<1>>line 6
<<1>>line 7
<<1>>line 8
<<1>>line 9
<<1>>line 10
<<1>>line 11
<<1>>line 12
<<1>>line 13
<<1>>line 14
<<1>>line 15
<<1>>line 16
<<1>>line 17
<<1>>line 18
<<1>>line 19
<<1>>line 20
<<0>>
<<0>>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maina.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:36:49 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
char *line;
line = "\n";
fd1 = open("tests/files/new/basic", O_RDONLY);
while (line)
{
line = get_next_line(fd1);
printf("%s\n", line);
free (line);
}
return (0);
}

View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainb.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:36:03 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
char *line;
line = "\n";
fd1 = open("tests/files/new/extreme1", O_RDONLY);
while (line)
{
line = get_next_line(fd1);
printf("%s\n", line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainc.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:35:58 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
char *line;
line = "\n";
fd1 = open("tests/files/new/extreme2", O_RDONLY);
while (line)
{
line = get_next_line(fd1);
printf("%s\n", line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,43 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maind.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:35:54 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int fd2;
char *line1;
char *line2;
line1 = "\n";
line2 = "\n";
fd1 = open("tests/files/new/compare1", O_RDONLY);
fd2 = open("tests/files/new/compare2", O_RDONLY);
while (line1 || line2)
{
if (line1)
{
line1 = get_next_line(fd1);
printf("%s\n", line1);
free(line1);
}
if (line2)
{
line2 = get_next_line(fd2);
printf("%s\n", line2);
free(line2);
}
}
return (0);
}

View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maine.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/23 15:00:31 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
char *line;
line = "\n";
fd1 = open("tests/files/new/unicode", O_RDONLY);
while (line)
{
line = get_next_line(fd1);
printf("%s\n", line);
free (line);
}
return (0);
}

View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainf.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:35:34 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
char *line;
line = "\n";
fd1 = 0;
while (line)
{
line = get_next_line(fd1);
printf("%s\n", line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,50 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maing.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/03/01 01:41:42 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
char *printline(char *line, int fd)
{
line = get_next_line(fd);
printf("%s\n", line);
free(line);
}
int main(void)
{
int *fd[6];
char *line[5];
fd[5] = 5;
while (--fd[5] >= 0)
*line[fd5] = "\n";
fd[0] = open("tests/files/new/compare1", O_RDONLY);
fd[1] = open("tests/files/new/basic", O_RDONLY);
fd[2] = open("tests/files/new/extreme1", O_RDONLY);
fd[3] = open("tests/files/new/compare2", O_RDONLY);
fd[4] = open("tests/files/new/extreme2", O_RDONLY);
while (line[0] || line[1] || line[2] || line[3] || line[4])
{
if (line[0])
line[0] = printline(line[0], fd[0]);
if (line[1])
line[1] = printline(line[1], fd[1]);
if (line[2])
line[2] = printline(line[2], fd[2]);
if (line[3])
line[3] = printline(line[3], fd[3]);
if (line[4])
line[4] = printline(line[4], fd[4]);
}
return (0);
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maina.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:42:59 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int r1;
char *line;
r1 = 1;
fd1 = open("tests/files/new/basic", O_RDONLY);
while (r1 > 0)
{
r1 = get_next_line(fd1, &line);
printf("<<%d>>%s\n", r1, line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainb.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:43:10 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int r1;
char *line;
r1 = 1;
fd1 = open("tests/files/new/extreme1", O_RDONLY);
while (r1 > 0)
{
r1 = get_next_line(fd1, &line);
printf("<<%d>>%s\n", r1, line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainc.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:43:21 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int r1;
char *line;
r1 = 1;
fd1 = open("tests/files/new/extreme2", O_RDONLY);
while (r1 > 0)
{
r1 = get_next_line(fd1, &line);
printf("<<%d>>%s\n", r1, line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maind.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/03/01 01:24:29 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd[2];
int r[2];
char *line;
r[0] = 1;
r[1] = 1;
fd[0] = open("tests/files/new/compare1", O_RDONLY);
fd[1] = open("tests/files/new/compare2", O_RDONLY);
while (r[0] > 0 || r[1] > 0)
{
if (r[0] > 0)
{
r[0] = get_next_line(fd[0], &line);
printf("<<%d>>%s\n", r[0], line);
free(line);
}
if (r[1] > 0)
{
r[1] = get_next_line(fd[1], &line);
printf("<<%d>>%s\n", r[1], line);
free(line);
}
}
return (0);
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maine.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/23 15:00:34 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int r1;
char *line;
r1 = 1;
fd1 = open("tests/files/new/unicode", O_RDONLY);
while (r1 > 0)
{
r1 = get_next_line(fd1, &line);
printf("<<%d>>%s\n", r1, line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* mainf.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/02/21 00:44:00 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int main(void)
{
int fd1;
int r1;
char *line;
r1 = 1;
fd1 = 0;
while (r1 > 0)
{
r1 = get_next_line(fd1, &line);
printf("<<%d>>%s\n", r1, line);
free(line);
}
return (0);
}

View File

@ -0,0 +1,51 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* maing.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/15 03:43:05 by djonker #+# #+# */
/* Updated: 2023/03/01 01:39:22 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../../tmp/get_next_line.h"
#include <stdio.h>
int printline(int fd, char *line)
{
int r;
r = get_next_line(fd, &line);
printf("<<%d>>%s\n", r, line);
free(line);
return (r);
}
int main(void)
{
int fd[6];
int r[5];
char *line;
fd[5] = 5;
while (--fd[5] >= 0)
r[fd[5]] = 2;
fd[0] = open("tests/files/new/compare1", O_RDONLY);
fd[1] = open("tests/files/new/basic", O_RDONLY);
fd[2] = open("tests/files/new/extreme1", O_RDONLY);
fd[3] = open("tests/files/new/compare2", O_RDONLY);
fd[4] = open("tests/files/new/extreme2", O_RDONLY);
while (r[0] > 0 || r[1] > 0 || r[2] > 0 || r[3] > 0 || r[4] > 0)
{
fd[5] = 0;
while (fd[5] < 5)
{
if (r[fd[5]] > 0)
r[fd[5]] = printline(fd[fd[5]], line);
fd[5]++;
}
}
return (0);
}

8
libft/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*.pdf
*.o
*.a
LICENSE
obj
tests/tmp
.git
.ccls-cache

194
libft/Makefile Normal file
View File

@ -0,0 +1,194 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile |o_o || | #
# +:+ #
# By: djonker <marvin@codam.nl> +#+ #
# +#+ #
# Created: 2020/10/27 15:02:02 by djonker #+# #+# #
# Updated: 2023/05/29 21:39:26 by houtworm \___)=(___/ #
# #
# **************************************************************************** #
NAME =libft.a
CC =gcc
FC =-Wall -Werror -Wextra -fsanitize=address
FAR =ar -rs
RM =rm -f
SRC =src/ft_atoi.c \
src/ft_bzero.c \
src/ft_calloc.c \
src/ft_cntwrd.c \
src/ft_intlen.c \
src/ft_isalnum.c \
src/ft_isalpha.c \
src/ft_isascii.c \
src/ft_isdigit.c \
src/ft_isprint.c \
src/ft_itoa.c \
src/ft_malstr.c \
src/ft_memccpy.c \
src/ft_memchr.c \
src/ft_memcmp.c \
src/ft_memmove.c \
src/ft_memcpy.c \
src/ft_memset.c \
src/ft_putchar_fd.c \
src/ft_putendl_fd.c \
src/ft_putnbr_fd.c \
src/ft_putstr_fd.c \
src/ft_split.c \
src/ft_strchr.c \
src/ft_strdup.c \
src/ft_strjoin.c \
src/ft_strlcat.c \
src/ft_strlcpy.c \
src/ft_strlen.c \
src/ft_strmapi.c \
src/ft_strncmp.c \
src/ft_strnstr.c \
src/ft_strrchr.c \
src/ft_strtrim.c \
src/ft_substr.c \
src/ft_tolower.c \
src/ft_toupper.c \
src/ft_wrdlen.c \
src/ft_frenarr.c \
src/ft_btoi.c \
src/ft_itob.c \
src/ft_revstr.c \
src/ft_frearr.c \
src/ft_putznbr.c \
src/ft_strupp.c \
src/ft_strlow.c \
src/ft_power.c \
src/ft_sqrt.c \
src/ft_factor.c \
src/ft_fnprim.c \
src/ft_isprim.c \
src/ft_dtoh.c \
src/ft_htod.c \
src/ft_htoi.c \
src/ft_itoh.c \
src/ft_ddtoi.c \
src/ft_itodd.c \
src/ft_otoi.c \
src/ft_itoo.c \
src/ft_swap.c \
src/ft_swaplong.c \
src/ft_round.c \
src/ft_putznbr_fd.c \
src/ft_putzflo_fd.c \
src/ft_putzflo.c \
src/ft_putstr.c \
src/ft_putnbr.c \
src/ft_putnbr_base.c \
src/ft_putflo.c \
src/ft_putendl.c \
src/ft_putchar.c \
src/ft_linlen.c \
src/ft_itof.c \
src/ft_isneg.c \
src/ft_iftof.c \
src/ft_ftoi.c \
src/ft_ftoa.c \
src/ft_fround.c \
src/ft_flolen.c \
src/ft_declen.c \
src/ft_atof.c \
src/ft_putflo_fd.c \
src/ft_arrlen.c \
src/ft_chrstr.c \
src/ft_cntwrds.c \
src/ft_isodigit.c \
src/ft_isxdigit.c \
src/ft_malstrs.c \
src/ft_min.c \
src/ft_max.c \
src/ft_lincpy.c \
src/ft_linlcpy.c \
src/ft_splits.c \
src/ft_wrdlens.c \
src/ft_vamin.c \
src/ft_vamax.c \
src/ft_islowc.c \
src/ft_isuppc.c \
src/ft_bitswap.c \
src/ft_itozh.c \
src/ft_itoba.c \
src/ft_itohx.c \
src/ft_cntchr.c \
src/ft_cntarg.c \
src/ft_around.c \
src/ft_putzsci.c \
src/ft_putull.c \
src/ft_putlong.c \
src/ft_ltoa.c \
src/ft_utoa.c \
src/ft_atou.c \
src/ft_atol.c \
src/ft_putzscih.c \
src/ft_luilen.c \
src/ft_itooa.c \
src/ft_dtoa.c \
src/ft_atodec.c \
src/ft_fczero.c \
src/ft_lftoi.c \
src/ft_lftoa.c \
src/ft_islneg.c \
src/ft_ldeclen.c \
src/ft_isallbyte.c \
src/ft_getuser.c \
src/ft_gethome.c \
src/ft_getpwd.c \
src/ft_vastrjoin.c \
src/ft_vafree.c \
src/ft_intrchr.c \
src/ft_system.c \
src/ft_getpaths.c \
src/ft_getenvval.c \
src/ft_abspathcmd.c
BSRC =src/ft_lstadd_back.c \
src/ft_lstadd_front.c \
src/ft_lstclear.c \
src/ft_lstdelone.c \
src/ft_lstiter.c \
src/ft_lstlast.c \
src/ft_lstmap.c \
src/ft_lstnew.c \
src/ft_lstsize.c
OBJ =$(SRC:src/%.c=obj/%.o)
BOBJ =$(BSRC:src/%.c=obj/%.o)
ifdef WITBON
COBJ =$(OBJ) $(BOBJ)
CSRC =$(SRC) $(BSRC)
else
COBJ =$(OBJ)
CSRC =$(SRC)
endif
all: $(NAME)
clean:
@$(RM) -r obj
@printf "\e[1;35mCleaned Object Files\n\e[0;00m"
fclean: clean
@$(RM) $(NAME)
@printf "\e[1;31mCleaned Executables\n\e[0;00m"
re: fclean all
$(COBJ): $(CSRC)
@mkdir -p $(dir $@)
@printf "\e[1;34mBuilding $@\n\e[0;00m"
@$(CC) $(CFLAGS) -c $(@:obj/%.o=src/%.c) -o $@
$(NAME): $(COBJ)
@printf "\e[1;36mCompiling $@\e[0;00m\n"
@$(FAR) $(NAME) $^ > /dev/null 2>&1
@printf "\e[1;32mDone\e[0;00m\n"
bonus:
@$(MAKE) WITBON=1 all

33
libft/Readme.md Normal file
View File

@ -0,0 +1,33 @@
# Libft
Libft is a self written implementation of some of the standard c function.\
It also includes a lot of undocumented functions not in the standard c library.\
Nonetheless the functions have been named somewhat properly and the code should be easy to read.
---
## Todo
#### Write ft_striteri
`void ft_striteri(char *s, void (*f)(unsigned int, char*));`
---
## Usage
1. Simply clone or download the repository
2. Run `make` in the cloned directory
3. You can include the created libft.a in your own programs
---
## Tester
#### Todo
- Add striteri test
- check for -Wall -Werror -Wextra
- Think of more edge cases for all functions
- Extra functions, check if function exists in .h and run the tests for that fucntion
- putchar 4 should print 0
#### Usage
1. Download test.sh and the tests folder into your own project directory
2. Make the file executable `chmod +x test.sh`
3. Run `./test.sh` to start the test
---
[This project is part of the studies at 42](https://42.fr/en/homepage/)

175
libft/libft.h Normal file
View File

@ -0,0 +1,175 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* libft.h |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/11 16:02:53 by djonker #+# #+# */
/* Updated: 2023/05/29 21:39:54 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#ifndef LIBFT_H
# define LIBFT_H
# include <unistd.h>
# include <stdlib.h>
# include <stdarg.h>
# include <fcntl.h>
# include <sys/wait.h>
typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
void *ft_memset(void *s, int c, size_t n);
void ft_bzero(void *s, size_t n);
void *ft_memcpy(void *dst, const void *src, size_t n);
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 *str);
size_t ft_strlcpy(char *dst, const char *src, size_t dstsize);
size_t ft_strlcat(char *dst, const char *src, size_t dstsize);
char *ft_strchr(const char *s, int c);
char *ft_strrchr(const char *s, int c);
char *ft_strnstr(const char *h, const char *n, size_t len);
int ft_strncmp(char *s1, char *s2, unsigned int n);
int ft_atoi(char *str);
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);
int ft_toupper(int c);
int ft_tolower(int c);
void *ft_calloc(size_t count, size_t size);
char *ft_strdup(const char *s);
char *ft_substr(char const *s, unsigned int start, size_t len);
char *ft_strjoin(char const *s1, char const *s2);
char *ft_strtrim(char const *s1, char const *set);
char **ft_split(char const *s, char c);
char *ft_itoa(int n);
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
void ft_putchar_fd(char s, 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);
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 *));
char *ft_bitswap(char *str);
void *ft_lincpy(char *dst, const char *src);
void *ft_linlcpy(char *dst, const char *src, size_t n);
int ft_linlen(char *str);
int ft_intlen(long long n);
int ft_luilen(unsigned long long n);
int ft_flolen(double n);
int ft_arrlen(char **s);
int ft_declen(double n);
int ft_wrdlen(char *s, char c, int i);
int ft_wrdlens(char *s, char *c, int i);
int ft_cntwrd(char *s, char c);
int ft_cntwrds(char *s, char *c);
char *ft_malstr(char *s, char c);
char *ft_malstrs(char *s, char *c);
void *ft_frenarr(char **s, int i);
void *ft_frearr(char **s);
char *ft_revstr(char *s);
char *ft_strupp(char *s);
char *ft_strlow(char *s);
int ft_isuppc(char c);
int ft_islowc(char c);
int ft_isneg(double n);
int ft_isxdigit(char *str);
int ft_isodigit(int n);
int ft_power(int n, int p);
unsigned long long ft_sqrt(unsigned long long n);
unsigned long long ft_factor(unsigned long long n);
unsigned long long ft_fnprim(unsigned long long n);
int ft_isprim(unsigned long long n);
void ft_putznbr_fd(int n, int e, int fd);
void ft_putflo_fd(double n, int fd);
void ft_putzflo_fd(double n, int e, int fd);
int ft_ftoi(double n);
double ft_itof(int n);
double ft_iftof(int n, int f);
char *ft_ltoa(long long n);
char *ft_utoa(unsigned long long n);
char *ft_ftoa(double n);
char *ft_ftoe(double n);
long long ft_atol(char *str);
unsigned long long ft_atou(char *str);
double ft_atof(char *str);
long double ft_atodec(char *str);
int ft_itob(int d);
char *ft_itoba(unsigned long long d, size_t e);
int ft_btoi(int i, int e);
int ft_dtoh(char c);
char ft_htod(long long n);
int ft_htoi(char *str);
char *ft_itoh(long double n);
char *ft_itohx(long double n);
char *ft_itozh(double n, int z);
int ft_ddtoi(char *str);
char *ft_itodd(double n);
int ft_otoi(int i);
unsigned long long ft_itoo(double n);
char *ft_itooa(long double n);
int ft_round(int n, int h);
double ft_fround(double n, int h);
int ft_around(char *n, int e);
void ft_swap(int *a, int *b);
void ft_swaplong(long *a, long *b);
void ft_putchar(char s);
void ft_putstr(char *s);
void ft_putendl(char *s);
void ft_putnbr(int n);
void ft_putnbr_base(unsigned long long number, int base);
void ft_putlong(long long n);
void ft_putull(unsigned long long n);
void ft_putznbr(int n, int e);
void ft_putflo(double n);
void ft_putzflo(double n, int e);
void ft_putzsci(long double n, int e, int cap);
void ft_putzscih(long double n, int e, int cap);
int ft_varlen(int c, ...);
int ft_max(int a, int b);
int ft_vamax(int n, ...);
int ft_min(int a, int b);
int ft_vamin(int n, ...);
int ft_chrstr(char c, char *s);
char **ft_splits(char *s, char *c);
int ft_cntchr(const char *str, char c, int s);
int ft_fczero(long double n);
long long ft_lftoi(long double n);
char *ft_lftoa(long double n);
int ft_ldeclen(long double n);
int ft_islneg(long long n);
char *ft_dtoa(long double n);
int ft_isallbyte(char *str, char byte);
char *ft_getpwd(char **envp, int slash);
char *ft_getuser(char **envp);
char *ft_gethome(char **envp);
char *ft_vastrjoin(int n, ...);
void ft_vafree(int n, ...);
int ft_intrchr(const char *s, int c);
char *ft_system(char *command, char **envp);
char **ft_getpaths(char **envp, int i);
char *ft_getenvval(char **envp, char *var);
char *ft_abspathcmd(char **paths, char *command);
#endif

32
libft/src/ft_abspathcmd.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_abspathcmd.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/03/20 16:39:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/03/20 18:58:08 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_abspathcmd(char **paths, char *cmd)
{
char *absolute;
int i;
i = 0;
if (cmd && ft_chrstr('/', cmd))
absolute = ft_strdup(cmd);
else
absolute = ft_strjoin(paths[i], cmd);
while (access(absolute, F_OK) && paths[i] && !ft_chrstr('/', cmd))
{
free(absolute);
i++;
absolute = ft_strjoin(paths[i], cmd);
}
return (absolute);
}

41
libft/src/ft_around.c Normal file
View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_around.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 07:26:00 by djonker #+# #+# */
/* Updated: 2023/02/07 00:42:07 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_around(char *n, int e)
{
int i;
i = 0;
while (n[i] == '0')
{
e++;
i++;
}
i = ft_strlen(n);
while (i >= e)
{
if (n[i] >= '5')
n[i - 1] = n[i - 1] + 1;
while (n[i - 1] > '9')
{
n[i - 1] = '0';
n[i - 2] = n[i - 2] + 1;
i--;
if (i == 1 && n[0] > '9')
return (1);
}
i--;
}
return (0);
}

23
libft/src/ft_arrlen.c Normal file
View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_arrlen.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/06 17:38:27 by djonker #+# #+# */
/* Updated: 2023/02/07 00:42:08 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_arrlen(char **s)
{
int l;
l = 0;
while (s[l] != NULL)
l++;
return (l);
}

28
libft/src/ft_atodec.c Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_atodec.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 05:48:34 by djonker #+# #+# */
/* Updated: 2023/02/07 00:42:08 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
long double ft_atodec(char *str)
{
long double f;
int l;
f = ft_atoi(str);
l = ft_intlen(f);
while (l > 0)
{
f = f / 10;
l--;
}
return (f);
}

33
libft/src/ft_atof.c Normal file
View File

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_atof.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 05:48:34 by djonker #+# #+# */
/* Updated: 2023/02/07 00:42:08 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
double ft_atof(char *str)
{
int i;
double f;
char **t;
int l;
t = ft_split(str, '.');
f = ft_atoi(t[1]);
l = ft_intlen(f);
i = ft_atoi(t[0]);
while (l > 0)
{
f = f / 10;
l--;
}
ft_frenarr(t, 2);
return (i + f);
}

41
libft/src/ft_atoi.c Normal file
View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_atoi.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:08:11 by djonker #+# #+# */
/* Updated: 2023/02/07 00:42:09 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_atoi(char *str)
{
unsigned int r;
int c;
int n;
r = 0;
c = 0;
n = 1;
if (str == NULL)
return (0);
while ((str[c] == 32) || (str[c] > 8 && str[c] < 14))
c++;
if (str[c] == '-' || str[c] == '+')
if (str[c++] == '-')
n = -1;
while (str[c] >= '0' && str[c] <= '9')
{
r = 10 * r + (str[c] - '0');
if (r > 2147483647 && n == 1)
return (-1);
else if (r > 2147483648 && n == -1)
return (0);
c++;
}
return (n * r);
}

42
libft/src/ft_atol.c Normal file
View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_atol.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:08:11 by djonker #+# #+# */
/* Updated: 2023/02/07 00:36:46 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
long long ft_atol(char *str)
{
unsigned long long r;
int c;
int n;
r = 0;
c = 0;
n = 1;
while ((str[c] == 32) || (str[c] > 8 && str[c] < 14))
c++;
if (str[c] == '-' || str[c] == '+')
{
if (str[c] == '-')
n = -1;
c++;
}
while (str[c] >= '0' && str[c] <= '9')
{
r = 10 * r + (str[c] - '0');
if (r > 9223372036854775807 && n == 1)
return (-1);
else if (r > 9223372036854775807 && n == -1)
return (0);
c++;
}
return (n * r);
}

31
libft/src/ft_atou.c Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_atou.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:08:11 by djonker #+# #+# */
/* Updated: 2023/03/05 21:13:18 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
unsigned long long ft_atou(char *str)
{
unsigned long long r;
int c;
r = 0;
c = 0;
while ((str[c] == 32) || (str[c] > 8 && str[c] < 14))
c++;
while (str[c] >= '0' && str[c] <= '9')
{
r = 10 * r + (str[c] - '0');
c++;
}
free (str);
return (r);
}

26
libft/src/ft_bitswap.c Normal file
View File

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_bitswap.c :+: :+: :+: */
/* +:+ */
/* By: djonker <djonker@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2021/05/17 06:29:44 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:18 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_bitswap(char *str)
{
while (*str)
{
if (*str == '1')
*str = '0';
else if (*str == '0')
*str = '1';
str++;
}
return (str);
}

42
libft/src/ft_btoi.c Normal file
View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_btoi.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/18 13:44:56 by djonker #+# #+# */
/* Updated: 2023/02/07 00:36:46 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_btoi(int i, int e)
{
char *s;
int is;
int it;
int d;
int r;
d = ft_intlen(i);
it = 128;
is = 0;
r = 0;
while (d < e)
{
it = it / 2;
d++;
}
s = ft_itoa(i);
while (s[is] != '\0')
{
if (s[is] == '1')
r = r + it;
it = it / 2;
is++;
}
free(s);
return (r);
}

28
libft/src/ft_bzero.c Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_bzero.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 08:35:25 by djonker #+# #+# */
/* Updated: 2023/02/22 02:01:25 by djonker \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
void ft_bzero(void *s, size_t n)
{
char *p;
if (!s || n <= 0)
return ;
p = s;
while (n)
{
*p = '\0';
p++;
n--;
}
}

40
libft/src/ft_calloc.c Normal file
View File

@ -0,0 +1,40 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_calloc.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 21:20:32 by djonker #+# #+# */
/* Updated: 2023/02/25 16:18:01 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
void *ft_calloc(size_t count, size_t size)
{
void *p;
size_t i;
char *t;
if (count == 0 || size == 0)
{
count = 1;
size = 1;
}
p = malloc(count * size);
if (p == NULL)
return (0x0);
if (p)
{
t = p;
i = 0;
while (count * size > i)
{
t[i] = '\0';
i++;
}
}
return (p);
}

26
libft/src/ft_chrstr.c Normal file
View File

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_chrstr.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/15 02:30:48 by djonker #+# #+# */
/* Updated: 2023/02/07 00:36:47 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_chrstr(char c, char *s)
{
while (*s)
{
if (c == *s)
return (1);
s++;
}
if (c == *s)
return (1);
return (0);
}

23
libft/src/ft_cntarg.c Normal file
View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_cntarg.c |o_o || | */
/* +:+ +:+ +:+ */
/* By: houtworm <codam@houtworm.net> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/07 00:38:26 by houtworm #+# #+# */
/* Updated: 2023/02/21 01:43:17 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_cntarg(char **argv)
{
int i;
i = 0;
while (argv[i])
i++;
return (i);
}

36
libft/src/ft_cntchr.c Normal file
View File

@ -0,0 +1,36 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_cntchr.c :+: :+: :+: */
/* |:_/ || |_ _ ___ __ */
/* By: djonker <djonker@student.codam.nl> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2021/06/11 17:23:36 by djonker /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/02/07 00:38:41 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_cntchr(const char *str, char c, int s)
{
int i;
int t;
i = 0;
while (*str)
{
if (*str == c)
{
i++;
str++;
}
t = s;
while (t > 0)
{
str++;
t--;
}
}
return (i);
}

35
libft/src/ft_cntwrd.c Normal file
View File

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_cntwrd.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/21 20:37:04 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:43 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_cntwrd(char *s, char c)
{
int iw;
int is;
is = 0;
iw = 0;
while (s[is] != '\0')
{
if (s[is] == c)
while (s[is] == c)
is++;
if (s[is] != c && s[is] != '\0')
{
while (s[is] != c && s[is] != '\0')
is++;
iw++;
}
}
return (iw);
}

35
libft/src/ft_cntwrds.c Normal file
View File

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_cntwrds.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/21 20:37:04 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:44 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_cntwrds(char *s, char *c)
{
int iw;
int is;
is = 0;
iw = 0;
while (s[is] != '\0')
{
if (ft_chrstr(s[is], c))
while (ft_chrstr(s[is], c))
is++;
if (!(ft_chrstr(s[is], c)))
{
while (!(ft_chrstr(s[is], c)))
is++;
iw++;
}
}
return (iw);
}

34
libft/src/ft_ddtoi.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_ddtoi.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/31 01:24:28 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:44 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_ddtoi(char *str)
{
int r;
int p;
r = 0;
p = ft_strlen(str) - 1;
while (p >= 0)
{
if (*str >= '0' && *str <= '9')
r = r + (*str - '0') * ft_power(12, p);
else if ((*str >= 'a' && *str <= 'b') || (*str >= 'A' && *str <= 'B'))
r = r + ft_dtoh(*str) * ft_power(12, p);
else
return (-0);
str++;
p--;
}
return (r);
}

32
libft/src/ft_declen.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_declen.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 04:29:09 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:45 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_declen(double n)
{
double f;
int i;
int l;
i = n;
f = n - i;
l = 0;
while (f != 0 && l < 10)
{
l++;
n = n * 10;
i = n;
f = n - i;
}
return (l);
}

38
libft/src/ft_dtoa.c Normal file
View File

@ -0,0 +1,38 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_dtoa.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 03:46:17 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:46 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_dtoa(long double n)
{
char p[100];
long double temp;
long long i;
char *t;
char *f;
i = n;
temp = (long double)n - (long double)i;
i = 0;
while (temp * 10 < 1 && i < 49)
{
temp = temp * 10;
p[i] = '0';
i++;
}
p[i] = '\0';
i = ft_lftoi(n);
t = ft_ltoa(i);
f = ft_strjoin(p, t);
free(t);
return (f);
}

23
libft/src/ft_dtoh.c Normal file
View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_dtoh.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/31 02:22:34 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:47 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_dtoh(char c)
{
int r;
int t;
t = ft_tolower(c);
r = t - 87;
return (r);
}

25
libft/src/ft_factor.c Normal file
View File

@ -0,0 +1,25 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_factor.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/01 04:03:20 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:48 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
unsigned long long ft_factor(unsigned long long n)
{
unsigned long long r;
r = 1;
if (!(n >= 1 && n <= 20))
return (0);
if (n > 1)
r = n * ft_factor(n - 1);
return (r);
}

34
libft/src/ft_fczero.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_fczero.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 04:29:09 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:49 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_fczero(long double n)
{
long double f;
long long i;
int l;
l = 0;
i = n;
f = n - i;
f = f * 10;
while (f < 1)
{
l++;
n = n * 10;
i = n;
f = n - i;
f = f * 10;
}
return (l);
}

23
libft/src/ft_flolen.c Normal file
View File

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_flolen.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 04:00:01 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:50 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_flolen(double n)
{
int l;
l = 1;
l = l + ft_declen(n);
l = l + ft_intlen(n);
return (l);
}

24
libft/src/ft_fnprim.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_fnprim.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/01 04:42:24 by djonker #+# #+# */
/* Updated: 2023/02/07 00:38:50 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
unsigned long long ft_fnprim(unsigned long long n)
{
while (n < 1000000000000000000)
{
if (ft_isprim(n) == 1)
return (n);
n++;
}
return (0);
}

29
libft/src/ft_frearr.c Normal file
View File

@ -0,0 +1,29 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_frearr.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/12/11 21:54:13 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:42 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
void *ft_frearr(char **s)
{
int n;
n = 0;
while (s[n] != NULL)
n++;
while (n >= 0)
{
free(s[n]);
n--;
}
free(s);
return (NULL);
}

24
libft/src/ft_frenarr.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_frenarr.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/12/11 21:54:13 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:47 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
void *ft_frenarr(char **s, int n)
{
while (n > 0)
{
n--;
free(s[n]);
}
free(s);
return (NULL);
}

41
libft/src/ft_fround.c Normal file
View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_fround.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 07:42:16 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:49 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
double ft_fround(double n, int h)
{
char *s;
char **t;
char *r;
s = ft_ftoa(n);
t = ft_split(s, '.');
t[0][ft_intlen(n)] = '.';
t[0][ft_intlen(n) + 1] = '\0';
if (h == 0)
{
if (t[1][0] > '5')
t[0][ft_intlen(n) - 1] = t[0][ft_intlen(n) - 1] + 1;
}
else if (t[1][h] > '5')
{
t[1][h - 1] = t[1][h - 1] + 1;
}
t[1][h] = '\0';
r = ft_strjoin(t[0], t[1]);
n = ft_atof(r);
ft_frenarr(t, 2);
free(r);
free(s);
return (n);
}

31
libft/src/ft_ftoa.c Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_ftoa.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 03:46:17 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:49 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_ftoa(double n)
{
char *ti;
char *tf;
int i;
char *r;
ti = ft_itoa(n);
i = ft_ftoi(n);
r = ft_itoa(i);
tf = ft_strjoin(".", r);
free(r);
r = ft_strjoin(ti, tf);
free(ti);
free(tf);
return (r);
}

33
libft/src/ft_ftoi.c Normal file
View File

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_ftoi.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 21:30:30 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:50 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_ftoi(double n)
{
int r;
int l;
double f;
if (ft_isneg(n))
n = n * -1;
l = ft_declen(n);
r = n;
f = n - r;
while (l > 0)
{
f = f * 10;
l--;
}
r = f;
return (r);
}

30
libft/src/ft_getenvval.c Normal file
View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_getenvval.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/02/17 02:40:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/05/29 21:40:38 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_getenvval(char **envp, char *var)
{
char *value;
int i;
char *temp;
temp = ft_strjoin(var, "=");
i = -1;
while (envp[++i])
if (ft_strncmp(envp[i], temp, ft_strlen(temp)) == 0)
break ;
if (!envp[i])
return (NULL);
value = ft_substr(envp[i], ft_strlen(temp), ft_strlen(envp[i]));
return (value);
}

28
libft/src/ft_gethome.c Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_gethome.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/02/17 02:40:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/03/24 19:03:02 by djonker \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_gethome(char **envp)
{
char *home;
int i;
i = -1;
while (envp[++i])
if (ft_strncmp(envp[i], "HOME=", 5) == 0)
break ;
if (!envp[i])
return (NULL);
home = ft_substr(envp[i], 5, ft_strlen(envp[i]));
return (home);
}

42
libft/src/ft_getpaths.c Normal file
View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_getpaths.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/03/20 16:39:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/03/20 18:57:24 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char **ft_getpaths(char **envp, int i)
{
char **paths;
char **temp;
char *firsttemp;
i = -1;
while (envp[++i])
if (ft_strncmp(envp[i], "PATH=", 5) == 0)
break ;
if (!envp[i])
return (0);
else
temp = ft_split(envp[i], ':');
if (!temp)
return (0);
paths = ft_calloc(sizeof(char *) * (ft_arrlen(temp) + 1), 1);
firsttemp = ft_substr(temp[0], 5, ft_strlen(temp[0]));
if (!paths || !firsttemp)
return (0);
paths[0] = ft_strjoin(firsttemp, "/");
free(firsttemp);
i = 0;
while (temp[++i])
paths[i] = ft_strjoin(temp[i], "/");
ft_frearr(temp);
return (paths);
}

36
libft/src/ft_getpwd.c Normal file
View File

@ -0,0 +1,36 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_getpwd.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/02/17 02:40:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/02/17 02:55:28 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_getpwd(char **envp, int slash)
{
char *pwd;
char *temp;
int i;
i = -1;
while (envp[++i])
if (ft_strncmp(envp[i], "PWD=", 4) == 0)
break ;
if (!envp[i])
return (NULL);
temp = ft_substr(envp[i], 4, ft_strlen(envp[i]));
if (!temp)
return (NULL);
if (slash)
pwd = ft_strjoin(temp, "/");
else
pwd = ft_strjoin(temp, NULL);
free(temp);
return (pwd);
}

28
libft/src/ft_getuser.c Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_getuser.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/02/17 02:40:22 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/02/17 02:55:28 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_getuser(char **envp)
{
char *user;
int i;
i = -1;
while (envp[++i])
if (ft_strncmp(envp[i], "USER=", 5) == 0)
break ;
if (!envp[i])
return (NULL);
user = ft_substr(envp[i], 5, ft_strlen(envp[i]));
return (user);
}

24
libft/src/ft_htod.c Normal file
View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_htod.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/31 03:18:45 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:51 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char ft_htod(long long n)
{
char r;
if (n > 9)
r = n + 87;
else
r = n + '0';
return (r);
}

34
libft/src/ft_htoi.c Normal file
View File

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_htoi.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/31 01:24:28 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:52 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_htoi(char *str)
{
int r;
int p;
r = 0;
p = ft_strlen(str) - 1;
while (p >= 0)
{
if (*str >= '0' && *str <= '9')
r = r + (*str - '0') * ft_power(16, p);
else if ((*str >= 'a' && *str <= 'f') || (*str >= 'A' && *str <= 'F'))
r = r + ft_dtoh(*str) * ft_power(16, p);
else
return (-0);
str++;
p--;
}
return (r);
}

22
libft/src/ft_iftof.c Normal file
View File

@ -0,0 +1,22 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_iftof.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 22:27:51 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:52 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
double ft_iftof(int i, int f)
{
double r;
r = 0;
r = r + i + ft_itof(f);
return (r);
}

30
libft/src/ft_intlen.c Normal file
View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_intlen.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/13 02:04:46 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:54 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_intlen(long long n)
{
int l;
l = 0;
if (n == 0)
return (1);
if (n <= 0)
l++;
while (n != 0)
{
n = n / 10 + (l * 0);
l++;
}
return (l);
}

28
libft/src/ft_intrchr.c Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_intrchr.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/11 16:14:50 by djonker #+# #+# */
/* Updated: 2023/03/20 14:48:22 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_intrchr(const char *s, int c)
{
int i;
if (!s)
return (-1);
i = 0;
while (s[i] != '\0')
i++;
i--;
while (i >= 0 && s[i] != c)
i--;
return (i);
}

22
libft/src/ft_isallbyte.c Normal file
View File

@ -0,0 +1,22 @@
/* ************************************************************************** */
/* */
/* .--. _ */
/* ft_isallbyte.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: houtworm <codam@houtworm.net> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2023/02/21 01:43:42 by houtworm /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2023/02/21 01:43:44 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isallbyte(char *str, char byte)
{
while (*str == byte)
str++;
if (!*str)
return (1);
return (0);
}

20
libft/src/ft_isalnum.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isalnum.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/11 15:56:37 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:54 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isalnum(int c)
{
if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z') && (c < '0' || c > '9'))
return (0);
return (1);
}

20
libft/src/ft_isalpha.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isalpha.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:10:41 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:55 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isalpha(int c)
{
if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z'))
return (0);
return (1);
}

20
libft/src/ft_isascii.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isascii.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:10:41 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:56 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isascii(int c)
{
if (c < 0 || c > 127)
return (0);
return (1);
}

20
libft/src/ft_isdigit.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isdigit.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:10:41 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:56 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isdigit(int c)
{
if (c < '0' || c > '9')
return (0);
return (1);
}

20
libft/src/ft_islneg.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_islneg.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: houtworm <codam@houtworm.net> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/25 11:39:27 by houtworm #+# #+# */
/* Updated: 2023/02/07 00:39:57 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_islneg(long long n)
{
if (n < 0)
return (1);
return (0);
}

20
libft/src/ft_islowc.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_islowc.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/04/13 17:57:31 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:58 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_islowc(char c)
{
if (c >= 'a' && c <= 'z')
return (1);
return (0);
}

20
libft/src/ft_isneg.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isneg.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/02 03:38:29 by djonker #+# #+# */
/* Updated: 2023/02/07 00:39:59 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isneg(double n)
{
if (n < 0)
return (1);
return (0);
}

32
libft/src/ft_isodigit.c Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isodigit.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/06 17:19:46 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:00 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isodigit(int n)
{
char *s;
s = ft_itoa(n);
while (*s != '\0')
{
if (*s >= '0' && *s <= '7')
s++;
else
{
free(s);
return (0);
}
}
free(s);
return (1);
}

35
libft/src/ft_isprim.c Normal file
View File

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isprim.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/01 04:32:30 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:00 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isprim(unsigned long long n)
{
unsigned long long c;
unsigned long long d;
if (n < 2)
return (0);
c = 2;
while (c <= n / 2)
{
d = 1;
while (d <= n / 2)
{
if (c * d == n)
return (0);
d++;
}
c++;
}
return (1);
}

20
libft/src/ft_isprint.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isprint.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/01 19:10:41 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:01 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isprint(int c)
{
if (c < 32 || c > 126)
return (0);
return (1);
}

20
libft/src/ft_isuppc.c Normal file
View File

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isuppc.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/04/13 17:57:31 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:02 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isuppc(char c)
{
if (c >= 'A' && c <= 'Z')
return (1);
return (0);
}

27
libft/src/ft_isxdigit.c Normal file
View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_isxdigit.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/02/06 17:19:46 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:03 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_isxdigit(char *str)
{
while (*str != '\0')
{
if ((*str >= 'a' && *str <= 'f') || (*str >= 'A' && *str <= 'F'))
str++;
else if (*str >= '0' && *str <= '9')
str++;
else
return (0);
}
return (1);
}

42
libft/src/ft_itoa.c Normal file
View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_itoa.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2020/11/12 23:20:24 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:04 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_itoa(int n)
{
char *r;
int l;
l = ft_intlen(n) - 1;
r = ft_calloc(l + 2, 1);
if (r == NULL)
return (NULL);
while ((n > 9 || n < 0) && n != -2147483648)
{
if (n >= 10)
{
r[l] = n % 10 + '0';
l--;
n = (n / 10);
}
else
{
r[0] = '-';
n = (n * -1);
}
}
r[l] = n + '0';
if (n == -2147483648)
ft_strlcpy(r, "-2147483648", 12);
return (r);
}

33
libft/src/ft_itob.c Normal file
View File

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_itob.c |o_o || | */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/04 04:42:54 by djonker #+# #+# */
/* Updated: 2023/03/07 05:07:51 by houtworm \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../libft.h"
int ft_itob(int d)
{
char s[20];
int i;
char *r;
i = 0;
while (d != 0)
{
s[i] = d % 2 + '0';
d = d / 2;
i++;
}
s[i] = '\0';
r = ft_revstr(s);
i = ft_atoi(r);
free(r);
return (i);
}

40
libft/src/ft_itoba.c Normal file
View File

@ -0,0 +1,40 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_itoba.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/04 04:42:54 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:05 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_itoba(unsigned long long d, size_t e)
{
char s[65];
int i;
size_t j;
char *r;
i = 0;
while (d != 0)
{
s[i] = d % 2 + '0';
d = d / 2;
i++;
}
s[i] = '\0';
j = ft_strlen(s);
while (e > j)
{
s[i] = '0';
i++;
j++;
}
s[i] = '\0';
r = ft_revstr(s);
return (r);
}

42
libft/src/ft_itodd.c Normal file
View File

@ -0,0 +1,42 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_itodd.c :+: :+: :+: */
/* +:+ */
/* By: djonker <marvin@codam.nl> +#+ */
/* +#+ */
/* Created: 2021/01/31 03:00:29 by djonker #+# #+# */
/* Updated: 2023/02/07 00:40:07 by houtworm ### ########.fr */
/* */
/* ************************************************************************** */
#include "../libft.h"
char *ft_itodd(double n)
{
char r[20];
int c;
double tf;
int ti;
char *s;
c = 0;
while (n != 0)
{
if (n < 12)
r[c] = ft_htod(n);
else if (n > 11)
{
tf = n / 12;
ti = n / 12;
tf = (tf - ti) * 12;
r[c] = ft_htod(tf);
}
ti = n / 12;
n = ti;
c++;
}
r[c] = '\0';
s = ft_revstr(r);
return (s);
}

Some files were not shown because too many files have changed in this diff Show More