/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* get_next_line_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/11/21 17:21:38 by dgaillet #+# #+# */ /* Updated: 2025/11/25 12:55:35 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include "get_next_line.h" #include int index_of_nl(char *str, int limit) { int i; if (!str) return (-1); i = 0; while (i < limit && str[i]) { if (str[i] == '\n') return (i); i++; } return (-1); } size_t ft_strlen(const char *s) { size_t i; i = 0; while (s[i]) i++; return (i); } char *ft_strjoin_new(char const *s1, char const *s2, size_t limit) { char *str; size_t i; size_t j; str = malloc(sizeof(char) * (ft_strlen(s1) + ft_strlen(s2) + 1)); if (!str) return (NULL); i = 0; j = 0; while (s1[i]) { str[i] = s1[i]; i++; } while (j <= limit && s2[j]) { str[i + j] = s2[j]; j++; } str[i + j] = '\0'; free((void *) s1); return (str); } char *ft_substr(char const *s, unsigned int start, size_t len) { size_t i; char *sub_str; size_t s_len; if (!s) return (NULL); s_len = ft_strlen(s); if (start > s_len) len = 0; else if (s_len < (start + len)) len = s_len - start; sub_str = malloc(sizeof(char) * (len + 1)); if (!sub_str) return (NULL); i = 0; while (i < len) { sub_str[i] = s[start + i]; i++; } sub_str[i] = '\0'; return (sub_str); } void *ft_calloc(size_t nmemb, size_t size) { void *all_mem; size_t i; if (size && nmemb > SIZE_MAX / size) return (malloc(0)); all_mem = malloc(size * nmemb); if (!all_mem) return (NULL); i = 0; while (i < nmemb * size) { ((char *)all_mem)[i] = '\0'; i++; } return (all_mem); }