#define BUFF_SIZE 40 #define READ_SIZE 40 char *get_next_line(const int fd) { static char *buff_read; static int repeat; static char *suite; char *retour; int i; int j; int k; k = 0; j = 0; suite = (char *)malloc(sizeof(buff_read) * BUFF_SIZE * 2); retour = (char *)malloc(sizeof(buff_read) * BUFF_SIZE); buff_read = (char *)malloc(sizeof(buff_read) * BUFF_SIZE); if (BUFF_SIZE < READ_SIZE) return ("BUFF SIZE cannot be shorter than READ SIZE."); i = 0; repeat = read(fd, buff_read, READ_SIZE); while (suite[k] && suite[k] != '\n') { retour[k] = suite[k]; k++; } free (suite); while (buff_read[i] != '\n' && buff_read[i] != '\0' && BUFF_SIZE >= i && READ_SIZE >= i) { retour[i + k] = buff_read[i]; i++; } if ((buff_read[i] == '/n') ||(buff_read[i] == '\0')) { suite[0] = '\0'; free (buff_read); return (retour); } else { i++; while (buff_read[i] != '\n' && buff_read[i] != '\0') { suite[j] = buff_read[i]; i++; } } free (buff_read); return (retour); }