/* ************************************************************************** */
/* */
/* :::::::: */
/* ft_select :+: :+: */
/* +:+ */
/* Author: Noah Loomans +#+ */
/* <nloomans@student.codam.nl> +#+ */
/* #+# #+# */
/* License: GPLv3 ######## odam.nl */
/* */
/* ************************************************************************** */
#include <unistd.h>
#include <errno.h>
#include <libft.h>
#include <ft_printf.h>
#include "read.h"
struct s_read_seq read_seq(void)
{
char seq[4 + 1];
struct s_read_seq ret;
ft_memset(&ret, '\0', sizeof(ret));
ft_memset(&seq, '\0', sizeof(seq));
if (read(STDIN_FILENO, &seq, sizeof(seq) - 1) == -1)
{
return ((struct s_read_seq){
.error = errorf("%s", strerror(errno)),
});
}
if (seq[0] == '\x1b' && seq[1] == '[')
{
return ((struct s_read_seq){
.c = seq[2],
.type = seq[3] == '~' ? READ_TYPE_ESC_SQL : READ_TYPE_ESC,
});
}
return ((struct s_read_seq){
.c = seq[0],
});
}