static int deal_with_arg(t_shell *sh, char **arg, char **env_cpy) { char **res; char *cmd; res = NULL; if (cmp_line(arg, env_cpy) == 0) { if (check_caract(*arg, '=') < 0) return (print_wrong_identifier_env(*arg)); else if (check_caract(*arg, '=') != 1) { cmd = join_tab(arg); exec_env(sh, cmd, env_cpy); free(cmd); return (sh->return_val); } else if (check_caract(*arg, '=') == 1) { res = add_elem(env_cpy, *arg); ft_print_tab(res); ft_free_tab(res); return (0); } } ft_print_tab(env_cpy); return (0); }
void ft_free_tab(t_list **begin_list) { int size; char **tab; int i; size = ft_tab_len(begin_list); tab = ft_init_tab(size); i = 0; while (!ft_backtraking(begin_list, tab)) { while (tab[i]) { free(tab[i++]); } free(tab); size++; tab = ft_init_tab(size); } ft_print_tab(tab); i = 0; while (tab[i]) { free(tab[i++]); } free(tab); }
void ft_print_comb2(void) { char tb[4]; tb[0] = 0; tb[1] = 0; tb[2] = 0; tb[3] = 1; while (!((tb[0] == 9) && (tb[1] == 9))) { ft_print_tab(tb[0], tb[1], tb[2], tb[3]); tb[3]++; if ((tb[3] = tb[3] % 10) == 0) { tb[2] = (tb[2] + 1); } if (tb[2] == 10) { tb[2] = tb[0]; tb[1]++; if ((tb[1] = tb[1] % 10) == 0) { tb[0]++; } tb[3] = tb[1] + 1; } } }
static int moove_aux(int **tab, t_docker *data) { data->enum_moove = 0; if (data->len_a > 2 && data->last_a > tab[0][0] && (data->len_b > 2 && data->last_b < tab[1][0])) m_rr(data); else if (data->len_b > 2 && data->last_b < tab[1][0]) m_rb(data); else if (data->len_a > 1 && data->last_a > tab[0][data->len_a - 2] && data->len_b > 1 && data->last_b < tab[1][data->len_b - 2]) m_ss(data); else if (data->len_b > 1 && data->last_b < tab[1][data->len_b - 2]) m_sb(data); else if (data->len_a > 2 && tab[0][0] < tab[0][1] && data->len_b > 2 && tab[1][0] > data->last_b) m_rrr(data); else if (data->len_b > 2 && tab[1][0] > data->last_b) m_rrb(data); if (data->enum_moove > 0) { print_moove(data); data->empty > 1 ? ft_print_tab(data->tab, data) : 0; return (1); } else return (0); }
static void ft_completion(t_data *d, char **result, char *name) { int save; if (!result) return ; if (ft_tablen(result) == 1) ft_tab_replace(d, result[0], name); else { if (ft_prefix_completion(d, result, name)) { save = d->line->len; ft_print_tab(result); ft_putchar('\n'); ft_prompt(0); ft_putstr(d->line->str); while (save > d->line->index) { tputs(tgetstr("le", NULL), 1, ft_int_putchar); save--; } } } }
int distrib(int **tab, t_docker *data) { while (!(verif_tab(data->tab[0], data, data->len_a - 1)) || data->len_b) { if (!moove_aux(tab, data) && data->len_a > 1 && data->last_a > tab[0][data->len_a - 2]) m_sa(data); else if (data->len_a > 2 && data->last_a > tab[0][0]) m_ra(data); else if (data->len_a > 2 && tab[0][0] < tab[0][1]) m_rra(data); else if (data->len_b && verif_tab(data->tab[0], data, data->len_a - 1)) m_pa(data); else if (data->len_a > 1 && !verif_tab(data->tab[0], data, data->len_a - 1)) m_pb(data); data->empty < 4 ? print_moove(data) : 0; data->empty > 1 ? ft_print_tab(data->tab, data) : 0; } return (0); }
void ft_ls(char **argv, int argc) { t_option *op; int start; char ***tab; g_error1 = 0; g_error2 = 0; op = (t_option *)malloc(sizeof(t_option)); ft_initoption(&op); if ((start = ft_start_after_option(argv, argc, op)) != -1) { if (argc >= 3) { if (ft_strcmp(argv[1], "-") == 0 && ft_strcmp(argv[2], "--") == 0 && ft_strcmp(argv[3], "---") == 0) start = 1; } tab = ft_maketab_of_argv(argv + start, argc - start, op); ft_printf(""); ft_print_tab(tab, op, ft_getnb_out(argv + start, argc - start, op)); } }
static int check_u_opt(t_shell *sh, char **arg, char **env_cpy) { char *cmd; if (arg[0][0] == '-' && arg[0][1] == 'u' && !arg[0][2] && arg[1]) { arg++; if (check_arg(env_cpy, *arg) == 0) return (print_error_opt(*arg)); arg++; if (*arg) { cmd = join_tab(arg); exec_env(sh, cmd, env_cpy); free(cmd); return (sh->return_val); } else ft_print_tab(env_cpy); return (0); } else return (1); }