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); }
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); }
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); }
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); }
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; }
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'; } }
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); }
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); }