yyang42 / moulitest

This repository contains tests for several projects done at 42.
127 stars 37 forks source link

GNL Erreur a tout les tests #63

Open linor78 opened 7 years ago

linor78 commented 7 years ago

Bonjour , j'ai un petit probleme , quel que soit la maniere dont je fait mon gnl aucun des tests du moulitest ne passent, quand je les fait moi meme , il n'y a aucun probleme mais quand je passe par moulitest rien ne marche. je vous joint mon gnl et son header si certains veulent bien tester et me dire si mon gnl ne marche juste pas ou si c'est la maniere dont je m'y prend qui n'est pas compatible avec les tests du moulitest? je l'ai refait entierement plusieurs fois mais les test ne passent jamais. Les basic tests du 42fc fonctionnent. Merci d'avance!

GNL:

include "get_next_line.h"

char *ft_rea(char *str,char strtoadd) { char nstr; char tmp;

tmp = *str;
if ((int)ft_strlen(strtoadd) > 0)
{
    nstr = NULL;
    nstr = ft_strjoin(*str,strtoadd);
    nstr[(int)ft_strlen(*str) + (int)ft_strlen(strtoadd)] = 0;
    ft_strdel(&tmp);
    return (nstr);
}
return (*str);

} int inwait(char *line,t_inwait cur) { char *n;

n = 0;
if (ft_strchr(cur->inwait,'\n') == NULL)
{
    *line = ft_rea(line, cur->inwait);
    ft_strdel(&cur->inwait);
    return (0);
}
else
{
    n = ft_strchr(cur->inwait,'\n');
    *n = 0;
    *line = ft_rea(line,cur->inwait);
    cur->inwait = ft_strcpy(cur->inwait,n + 1);
    return (1);
}

}

int line_add(char *buff, char *line, t_inwait cur) { char *n;

n = 0;
if (ft_strchr(buff,'\n') == NULL)
{
    *line = ft_rea(line, buff);
    cur->wr = 1;
    return (0);
}
else
{
    if(!cur->inwait)
        cur->inwait = ft_strnew(0);
    n =ft_strchr(buff,'\n');
    *n = 0;
    *line = ft_rea(line, buff);
    cur->inwait = ft_rea(&cur->inwait, n + 1);
    return (1);
}

} int get_next_line(const int fd, char *line) { char buff; static t_inwait cur;

cur.wr = 0;
cur.rc = 0;
buff=(char *)malloc(sizeof(char) * (BUFF_SIZE + 1));
if ((fd < 0) || read(fd,buff,0) == -1 || !buff)
    return (-1);
if (*line && line)
    ft_bzero(*line,ft_strlen(*line) + 1);
else if (!*line)
    *line = ft_strnew(0);
if ((cur.inwait) && (inwait(line, &cur) == 1))
        return (1);
while ((cur.rc = read(fd,buff,BUFF_SIZE)) > 0)
{
    buff[cur.rc] = 0;
    if (line_add(buff, line, &cur) == 1)
        return (1);
}
free(buff);
return (((cur.wr == 1 ) && (cur.rc == 0))? 1 : 0);

}

header:

define BUFF_SIZE 1

include <sys/types.h>

include <sys/uio.h>

include

include

include

include

include "./libft/libft.h"

typedef struct s_inwait { char *inwait; int rc; int wr; } t_inwait; int get_next_line(const int fd,char line); char *ft_rea(char *str,char strtoadd); int inwait(char line,t_inwait cur); int line_add(char buff, char *line, t_inwait cur);