コード例 #1
0
ファイル: main.c プロジェクト: gmpetrov/ft_select
int		ft_while(t_data *d, struct termios *term, t_list *list)
{
	while (42)
	{
		ft_bzero(d->read_char, 3);
		read(0, d->read_char, 3);
		if (is_rtn(d->read_char))
		{
			ft_quit(term);
			final_print(list);
			return (1);
		}
		if (ft_while_help(d, term, list, d->read_char))
			;
		else if (is_arrow(d->read_char, d, list) == 0)
			;
		else if (is_spc(d->read_char,  list, d) == 0)
			;
		else if (is_del(d->read_char))
			list = ft_del_elem(list, d, term);
		if (list == NULL)
			return (0);
	}
	return (0);
}
コード例 #2
0
ファイル: prog.c プロジェクト: bignolles/ft_select
int			is_prog(t_list *list, int max_elem)
{
	int				*index;
	int				*coords;
	struct termios	term;
	char			*buf;
	char			buffer[2048];

	if (tgetent(buffer, getenv("TERM")) < 1)
		return (-1);
	index = init_prog(&term, list, max_elem, &coords);
	while (1)
	{
		buf = init_read(list, index);
		if (buf[0] == 27 && buf[1] == 0 && buf[2] == 0)
			is_escape(term);
		else if (buf[0] == 27 && buf[1] == 91 && buf[2] != 51)
			coords = is_arrow(list, buf, index, coords);
		else if ((buf[0] == 127 && buf[1] == 0 && buf[2] == 0)
				|| (buf[0] == 27 && buf[1] == 91 && buf[2] == 51))
			coords = is_del(&list, term, index, coords);
		else if (buf[0] == 10 && buf[1] == 0 && buf[2] == 0)
			is_return(term, list);
		else if (buf[0] == 32 && buf[1] == 0 && buf[2] == 0)
			coords = is_space(list, index, coords);
	}
	return (0);
}
コード例 #3
0
ファイル: ft_strsplit.c プロジェクト: tcarmet/Arkanoid
static int		find_nb_w(char *str, char ch)
{
	int result;

	result = 0;
	while (*str)
	{
		while (is_del(*str, ch))
			str++;
		if (*str)
			result++;
		while (!is_del(*str, ch) && *str)
			str++;
	}
	return (result);
}
コード例 #4
0
ファイル: my_strtok.c プロジェクト: budocay/corewar
int	cnt_tok(char *str, char *del)
{
  int	n;
  int	i;

  if (str == NULL || del == NULL)
    return (-1);
  i = 0;
  n = 0;
  while (str[i] != '\0')
    {
      --i;
      while (str[++i] != '\0' && is_del(str[i], del));
      if (!is_del(str[i], del) && str[i] != '\0')
	++n;
      --i;
      while (str[++i] != '\0' && !is_del(str[i], del));
    }
  return (n);
}
コード例 #5
0
ファイル: pj_getpass.c プロジェクト: aomelche/pj
static char* pj_getpass_masked( struct pj_getpass_context* ctx, int mask )
{
	char* ret = 0;
	size_t ret_size = 0;
	size_t cur = 0;

	if( !isprint( mask ) ) {
		mask = 0;
	}
	for(;;) {
		char c = fgetc( ctx->in );
		if( '\33' == c ) {
			if( pj_skip_escaped_sequence( ctx ) ) {
				cleanup_error( &ret );
				break;
			}
		}
		else if( is_del( c ) ) {
			if ( 0 < cur ) {
				if( mask ) {
					fputc( 0x8, ctx->out );
					fputs( s_clear_line_right, ctx->out );
				}
				ret[--cur] = 0;
			}
		}
		else {
			if( ret_size == cur) {
				size_t new_ret_size = ret_size + s_default_password_max;
				void* aux = realloc( ret, new_ret_size );
				if( !aux ) {
					cleanup_error( &ret );
					break;
				}
				ret_size = new_ret_size;
				ret = (char*)aux;
			}
			if( '\0' == c || '\n' == c || '\4' == c || EOF == c ) {
				fputc( '\n', ctx->out );
				ret[cur] = 0;
				break;
			}
			else if( isprint( c ) ) {
				if( mask ) {
					fputc( mask, ctx->out );
				}
				ret[cur++] = c;
			}
		}
	}
	return ret;
}
コード例 #6
0
ファイル: my_strtok.c プロジェクト: budocay/corewar
void	my_tokcut(char *str, char *del)
{
  int	i;

  i = -1;
  if (str == NULL || del == NULL)
    return;
  while (str[++i])
    {
      if (is_del(str[i], del))
	str[i] = '\0';
    }
}
コード例 #7
0
ファイル: key_handle.c プロジェクト: agadiffe/ft_select
static int		check_key(t_elem **list, struct termios *backup, char *buf)
{
	int		key;

	if ((key = is_return(buf)))
	{
		ft_strdel(&buf);
		handle_rtn(*list, backup);
		exit(0);
	}
	else if ((key = is_del(buf)))
	{
		if (handle_del(list))
			return (-1);
	}
	else if ((key = is_arrow(buf)))
		handle_arrow(*list, key);
	else if ((key = is_space(buf)))
		handle_space(*list);
	else
		return (0);
	return (key);
}
コード例 #8
0
ファイル: handle_input.c プロジェクト: GuillaumeBadi/select
int					handle_input(t_env *e, char *input)
{
	if (ft_strncmp(input, K_ESC, BUFFSIZE) == 0)
		input_exit();
	else if (is_enter(input))
		return (0);
	else if (is_del(input) && !input_del(e))
		return (0);
	else if (ft_strncmp(input, K_TOP, BUFFSIZE) == 0)
		e->current_index--;
	else if (ft_strncmp(input, K_BOTTOM, BUFFSIZE) == 0)
		e->current_index++;
	else if (ft_strncmp(input, K_RIGHT, BUFFSIZE) == 0)
		input_right(e);
	else if (ft_strncmp(input, K_LEFT, BUFFSIZE) == 0)
		input_left(e);
	else if (ft_strncmp(input, K_SPACE, BUFFSIZE) == 0)
		input_space(e);
	if (e->current_index < 0
			|| e->current_index > e->chain_size - e->deleted - 1)
		e->current_index = (e->current_index + e->chain_size - e->deleted)
							% (e->chain_size - e->deleted);
	return (1);
}