/ libft / src / get_next_line / get_next_line_utils.c
get_next_line_utils.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   get_next_line_utils.c                              :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42.fr>          +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2024/06/25 13:18:14 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/06/25 15:07:40 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include <stdlib.h>
14  
15  void	gnl_memcpy(void *dest, void *src, u_long size)
16  {
17  	if (size & 1)
18  		*((char *)dest++) = *((char *)src++);
19  	if (size & 2)
20  		*((short *)dest) = *((short *)src);
21  	dest += (size & 2);
22  	src += (size & 2);
23  	if (size & 4)
24  		*((int *)dest) = *((int *)src);
25  	dest += (size & 4);
26  	src += (size & 4);
27  	size >>= 3;
28  	while (size--)
29  	{
30  		*((long *)dest) = *((long *)src);
31  		dest += 8;
32  		src += 8;
33  	}
34  }
35  
36  void	*gnl_realloc(void *p, u_long old_size, u_long size)
37  {
38  	void	*new_p;
39  
40  	new_p = malloc(size);
41  	if (new_p)
42  		gnl_memcpy(new_p, p, old_size);
43  	free(p);
44  	return (new_p);
45  }
46  
47  u_long	gnl_strichr(char *str, int c)
48  {
49  	u_long	i;
50  
51  	i = 0;
52  	while (str[i] && str[i] != c)
53  		i += 1;
54  	return (i);
55  }