added basic checks

This commit is contained in:
djonker 2023-10-26 17:40:01 +02:00
parent 42d03c95aa
commit b26803cb1b
45 changed files with 1225505 additions and 57 deletions

View File

@ -6,7 +6,7 @@
# By: houtworm <codam@houtworm.net> +#+ #
# +#+ #
# Created: 2023/10/26 10:46:29 by houtworm #+# #+# #
# Updated: 2023/10/26 16:56:54 by houtworm ######## odam.nl #
# Updated: 2023/10/26 17:30:17 by houtworm ######## odam.nl #
# #
# **************************************************************************** #
@ -15,25 +15,28 @@ CC =gcc
FC =-Wall -Werror -Wextra -Wunreachable-code -Ofast -g #-fsanitize=address
HEAD =-I ./include -I $(MLX)/include
RM =rm -rf
LIB =libft/libft.a mlx/build/libmlx42.a -ldl -lglfw -pthread -lm
LIB =libft/libft.a getnextline/get_next_line.a mlx/build/libmlx42.a -ldl -lglfw -pthread -lm
SRC =src/main.c\
src/init.c\
src/parse.c\
src/keys.c\
src/draw.c
src/draw.c\
src/error.c
OBJ =$(SRC:src/%.c=obj/%.o)
all: libft mlx/build/mlx42.a $(NAME)
all: libft getnextline mlx/build/mlx42.a $(NAME)
clean:
@$(RM) obj
@$(MAKE) -C libft clean > /dev/null
@$(MAKE) -C getnextline clean > /dev/null
@$(MAKE) -C mlx/build clean > /dev/null
@printf "\e[1;35mCleaned Object Files\n\e[0;00m"
fclean: clean
@$(RM) $(NAME) mlx/build > /dev/null
@$(MAKE) -C libft fclean > /dev/null
@$(MAKE) -C getnextline fclean > /dev/null
@printf "\e[1;31mCleaned Executables\n\e[0;00m"
re: fclean all
@ -51,6 +54,9 @@ $(NAME): $(OBJ)
libft:
@$(MAKE) -C libft all
getnextline:
@$(MAKE) -C getnextline all
mlx/build/mlx42.a:
@cmake -S mlx -B mlx/build
@$(MAKE) -C mlx/build -j4

13
config.cub Normal file
View File

@ -0,0 +1,13 @@
F 220,100,0
C 225,30,0
NO ./path_to_the_north_texture
EA ./path_to_the_east_texture
SO ./path_to_the_south_texture
WE ./path_to_the_west_texture
111111
100101
101001
1100N1
111111

BIN
cub3d

Binary file not shown.

View File

@ -6,7 +6,7 @@
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 10:46:35 by houtworm #+# #+# */
/* Updated: 2023/10/26 16:56:10 by houtworm ######## odam.nl */
/* Updated: 2023/10/26 17:25:30 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
@ -15,7 +15,9 @@
# include <unistd.h>
# include <math.h>
# include <fcntl.h>
# include "libft/libft.h"
# include "getnextline/get_next_line.h"
# include "mlx/include/MLX42/MLX42.h"
typedef struct s_varlist
@ -34,6 +36,7 @@ typedef struct s_varlist
t_varlist initvarlist(void);
// parse.c
char **ft_getmap(void);
t_varlist ft_parseconfigfile(t_varlist vl, char *filename);
// keys.c
void ft_movementkeys(t_varlist *vl);
void keyhook(mlx_key_data_t kd, void *param);
@ -41,4 +44,6 @@ void scrollhook(double xdelta, double ydelta, void *param);
void resizehook(int x, int y, void *param);
// draw.c
void ft_drawnextframe(t_varlist *vl);
// error.c
int ft_errorexit(char *reason, char *function, int code);
#endif

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);
}

21
src/error.c Normal file
View File

@ -0,0 +1,21 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* error.c :+: :+: */
/* +:+ */
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 17:13:58 by houtworm #+# #+# */
/* Updated: 2023/10/26 17:16:06 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
#include "../cub3d.h"
int ft_errorexit(char *reason, char *function, int code)
{
ft_putstr("Error: ");
ft_putstr(reason);
ft_putendl(function);
exit(code);
}

View File

@ -6,7 +6,7 @@
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 16:49:12 by houtworm #+# #+# */
/* Updated: 2023/10/26 16:49:14 by houtworm ######## odam.nl */
/* Updated: 2023/10/26 17:19:28 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
@ -20,9 +20,7 @@ t_varlist initvarlist(void)
vl.h = 600;
vl.mlx = mlx_init(vl.w, vl.h, "Cub3D", true);
if (!vl.mlx)
exit (1);
ft_errorexit("MLX failed to init", "initvarlist", 1);
vl.img = mlx_new_image(vl.mlx, vl.w, vl.h);
vl.map = ft_getmap();
// we should validate the map here
return (vl);
}

View File

@ -6,7 +6,7 @@
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 14:13:07 by houtworm #+# #+# */
/* Updated: 2023/10/26 16:54:42 by houtworm ######## odam.nl */
/* Updated: 2023/10/26 17:39:01 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
@ -22,7 +22,7 @@ void mainloop(void *param)
ft_movementkeys(vl);
ft_drawnextframe(vl);
if (!vl->img || (mlx_image_to_window(vl->mlx, vl->img, 0, 0) < 0))
exit (1);
ft_errorexit("image to window failed ", "mainloop", 1);
ft_putendl("frame");
}
@ -31,11 +31,14 @@ int main(int argc, char **argv)
t_varlist vl;
if (argc > 2)
exit(2);
argv = argv;
ft_errorexit("Too many arguments", "main", 2);
vl = initvarlist();
if (argc == 2)
vl = ft_parseconfigfile(vl, argv[1]);
else
ft_errorexit("Please include a .cub file ", "main", 2); // we could start with a menu here
if (!vl.img || (mlx_image_to_window(vl.mlx, vl.img, 0, 0) < 0))
exit (1);
ft_errorexit("image failed to window ", "main", 1);
mlx_key_hook(vl.mlx, &keyhook, &vl);
mlx_resize_hook(vl.mlx, &resizehook, &vl);
mlx_scroll_hook(vl.mlx, &scrollhook, &vl);

60
src/map.c Normal file
View File

@ -0,0 +1,60 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* map.c :+: :+: */
/* +:+ */
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 17:33:50 by houtworm #+# #+# */
/* Updated: 2023/10/26 17:34:02 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
#include "../cub3d.h"
char **ft_getmap(void)
{
int y;
int x;
char **map;
char localmap[24][24] = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
map = ft_calloc(24, 8);
y = 0;
while (y < 24)
{
map[y] = ft_calloc(24, 8);
x = 0;
while (x < 24)
{
map[y][x] = localmap[y][x];
x++;
}
y++;
}
return (map);
}

View File

@ -6,55 +6,23 @@
/* By: houtworm <codam@houtworm.net> +#+ */
/* +#+ */
/* Created: 2023/10/26 16:48:55 by houtworm #+# #+# */
/* Updated: 2023/10/26 16:49:07 by houtworm ######## odam.nl */
/* Updated: 2023/10/26 17:33:49 by houtworm ######## odam.nl */
/* */
/* ************************************************************************** */
#include "../cub3d.h"
char **ft_getmap(void)
t_varlist ft_parseconfigfile(t_varlist vl, char *filename)
{
int y;
int x;
char **map;
char localmap[24][24] = {
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
map = ft_calloc(24, 8);
y = 0;
while (y < 24)
int fd;
char *line;
fd = open(filename, O_RDONLY);
if (fd == -1)
ft_errorexit("file does not exist", "parseconfigfile", 1);
while (get_next_line(fd, &line))
{
map[y] = ft_calloc(24, 8);
x = 0;
while (x < 24)
{
map[y][x] = localmap[y][x];
x++;
}
y++;
free(line);
}
return (map);
return (vl);
}