char *replace_esc_char(char *str, char replace, int flag, int *i) { replace = 0; if (str[*i + 1] == 'a') replace = '\a'; else if (str[*i + 1] == 'b') replace = '\b'; else if (str[*i + 1] == 'n') replace = '\n'; else if (str[*i + 1] == 't') replace = '\t'; else if (str[*i + 1] == 'v') replace = '\v'; else if (str[*i + 1] == 'f') replace = '\f'; else if (str[*i + 1] == 'r') replace = '\r'; if (replace && flag) { ++*i; str = del_c(str, i); ++*i; str = del_c(str, i); str = change_cmd(*i, ft_strdup(str), replace); } return (str); }
int distrib_buttons(int i, char **result, char *buffer, int *v) { if (buffer[0] == 10) return (-2); else if (buffer[0] == 27 && buffer[1] == 91) i = distrib_arrow(i, result, buffer, v); else if (buffer[0] == 127) *result = del_c(*result, &i); else if (buffer[0] == 9 && *result && i == ft_strlen(*result)) i = distrib_tab(i, result); else if (buffer[0] == 12) clear_and_prompt(); else if (buffer[0] == 1) i = ctrl_a(i, result); else if (buffer[0] == 5) i = ctrl_k(i, result); else if (buffer[0] == 21) { clear_line(i + 1, ft_strlen(*result)); *result = NULL; i = 0; } else if (buffer[0] == 4) ft_exit(NULL); else ft_putstr(tgetstr("le", NULL)); return (i); }
int main () { cout << "begin main" << endl; lt_dlhandle _dl_c; NEW_C new_c; DEL_C del_c; c *_c; lt_dlinit (); _dl_c = lt_dlopen ("./c.so"); if (! _dl_c) { cout << "lt_dlopen ./c.so failed" << endl; return -1; } new_c = (NEW_C) lt_dlsym (_dl_c, "new_c"); if (! new_c) { cout << "lt_dlsym failed: " << lt_dlerror () << endl; return -2; } del_c = (DEL_C) lt_dlsym (_dl_c, "del_c"); if (! del_c) { cout << "lt_dlsym failed: " << lt_dlerror () << endl; return -3; } new_c (&_c, 5); _c->print_x (); cout << "_c->x = 10" << endl; _c->x = 10; _c->print_x (); del_c (_c); lt_dlclose (_dl_c); lt_dlexit (); cout << "end main" << endl; return 0; }