void ft_processing(t_data *d, char *str) { t_lexer *lex; t_parser *parser; parser = NULL; lex = NULL; d->pipe = 0; if (!str) return ; ft_backup_termcap(d); ft_lexer(&lex, str); if (lex) { ft_parser(&parser, lex, 1); ft_free_lex(&lex); ft_process_tree(parser, d); ft_free_pars(&parser); } else ft_process(d, str); ft_reset_termcap(d); if (d->first) ft_free_list(d->first); }
int main(int ac, char **av, char **ep) { char *line; char *prompt; t_lxem *lex; prompt = (ac < 2 ? "" : av[1]); g_ftenviron = ep; while (42) { line = ft_readline(prompt, (RL_GECHO | RL_GHISTORY | RL_GSAVE | RL_GLOAD), ft_getenv(ep, "TERM")); if (line) { if (!ft_strcmp(line, "exit")) { ft_memdel((void **)&line); break ; } if ((lex = ft_lexer(line))) lx_del(&lex); ft_memdel((void **)&line); } } ft_atexit(EXIT_SUCCESS, av[0], "main: Success"); return (0); }
void ft_build_env(t_seq *seq) { char *tmp_args; char **environ; char **tab; t_seq *tmp; int index[2]; tab = ft_strsplit(seq->args, ' '); index[0] = 0; while (ft_strstr(tab[index[0] + 1], "=")) (index[0])++; if (index[0] > 0 && (index[1] = -1)) { if ((environ = (char **)ft_malloc(sizeof(char *) * (index[0] + 1)))) { while (++(index[1]) < index[0]) environ[index[1]] = tab[index[1] + 1]; environ[index[1]] = NULL; } } else environ = NULL; tmp_args = ft_strstr(seq->args, tab[index[0] + 1]); tmp = ft_lexer(tmp_args); ft_launch(1, tmp, environ); ft_lib_env(tab, tmp, environ); }
void link_files(t_env *env, char *line) { t_data data; ft_bzero(&data, sizeof(t_data)); data.env = E_EN; data.old_pwd = find_var_val(env, "OLDPWD"); data.pwd = find_var_val(env, "PWD"); data.path = find_var_val(env, "PATH"); ft_lexer(line, &data); }
static void ft_other(t_lexer **root, char *str, int i, int j) { ft_add_lexer(root, ft_strndup(str, i), 0, 5); if (str[i] && str[i + 1] && str[i] == str[i + 1] && g_t[j].type <= 7) { j++; ft_add_lexer(root, ft_strndup(str + i++, 2), g_t[j].type, g_t[j].rank); } else if (str[i] && g_t[j].type > 0) ft_add_lexer(root, ft_strndup(str + i, 1), g_t[j].type, g_t[j].rank); if (str[i] && *(str + i + 1)) ft_lexer(root, str + i + 1); }
int ft_is_valid(char *line) { t_dlist *dlist; dlist = NULL; ft_putchar('\n'); if (ft_has_char(line)) { ft_lexer(line, &dlist); return (OK == ft_lexer_check_err(dlist)); } return (TRUE); }
static void ft_redirection(t_lexer **root, char *str, int i, int j) { ft_add_lexer(root, ft_search_word(&str, i, g_t[j].c), 0, 5); if (str[i] && str[i + 1] && str[i] == str[i + 1]) { j++; ft_add_lexer(root, ft_strndup(str + i++, 2), g_t[j].type, g_t[j].rank); str[i - 1] = ' '; str[i] = ' '; } else if (str[i]) { ft_add_lexer(root, ft_strndup(str + i, 1), g_t[j].type, g_t[j].rank); str[i] = ' '; } if (str[i]) ft_lexer(root, str); }
static int after_while(t_env **ev, t_data *en, t_edit **lst, t_hist **hst) { if (ft_sigleton(0) == 3) { ft_sigleton(-1); ft_putchar('\n'); ft_read(ev, en); } else { if (*lst) ft_jumprint(lst); ft_putchar('\n'); if ((ft_write_on_file(lst, en->env)) == 0) ft_lexer(ft_creat_string(*lst), en); clean_all(lst, hst); ft_read(ev, en); return (1); } return (0); }