ssl_des/src/base64/ft_base64_encode.c

41 lines
1.5 KiB
C
Raw Normal View History

2019-02-10 23:11:01 +02:00
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_base64_encode.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/02/10 20:52:07 by gtertysh #+# #+# */
/* Updated: 2019/02/10 20:52:59 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
2019-02-02 19:13:36 +02:00
#include "ft_base64.h"
2019-02-10 23:11:01 +02:00
#include "libft.h"
2019-02-02 19:13:36 +02:00
2019-02-16 22:10:21 +02:00
void ft_base64_encode(t_base64_ctx *c)
2019-02-02 19:13:36 +02:00
{
2019-02-16 22:10:21 +02:00
t_byte1 buffer[FT_BASE64_READ_SIZE + FT_BASE64_TRANS_SIZE];
2019-02-10 23:11:01 +02:00
t_byte8 readed;
t_byte8 reminder;
int fd;
reminder = 0;
2019-02-16 22:10:21 +02:00
fd = c->input_fd;
while ((readed = read(fd, buffer + reminder, FT_BASE64_READ_SIZE)) > 0)
2019-02-10 23:11:01 +02:00
{
2019-02-16 22:10:21 +02:00
if (readed + reminder >= FT_BASE64_TRANS_SIZE)
2019-02-10 23:11:01 +02:00
{
2019-02-16 22:10:21 +02:00
reminder = ft_base64_encode_step(c, readed + reminder, buffer);
ft_memmove(buffer, buffer + readed - reminder, reminder);
2019-02-10 23:11:01 +02:00
}
else
{
reminder += readed;
}
2019-02-16 22:10:21 +02:00
2019-02-10 23:11:01 +02:00
}
2019-02-16 22:10:21 +02:00
ft_base64_encode_finish(c, reminder, buffer);
2019-02-10 23:11:01 +02:00
}