static t_list *get_reglist(t_list **list) { t_list *reg_list; t_list *prev; t_list *cur; reg_list = NULL; prev = *list; while (prev != NULL && (S_ISDIR(((t_file *)prev->content)->mode) == 0 && ((t_file *)prev->content)->lnk_isdir == 0)) { *list = (*list)->next; ft_lstadd_last(®_list, prev); prev = *list; } while (prev != NULL && prev->next != NULL) { cur = prev->next; if (S_ISDIR(((t_file *)cur->content)->mode) == 0 && MACRODEGEULASS == 0) { prev->next = cur->next; ft_lstadd_last(®_list, cur); } else prev = prev->next; } return (reg_list); }
int check_for_closing_quote(t_var *var, char **tmp, t_list **alst) { int i; char *del[2]; t_list *el; i = 0; while (LN_S[i] && !is_valid_quote(var, LN_S, i)) i++; if (!LN_S[i]) return (0); PROMPT_LEN = PROMPT_LEN_VALUE; i++; del[0] = *tmp; *tmp = ft_strjoin(*tmp, "\n"); ft_strdel(&del[0]); del[0] = *tmp; del[1] = ft_strndup(LN_S, i - 1); *tmp = ft_strjoin(*tmp, del[1]); ft_strdel(&del[0]); ft_strdel(&del[1]); el = ft_lstnew((void *)ft_strdup(*tmp), sizeof(char *)); ft_strdel(tmp); LN_S += i; ft_lstadd_last(alst, el); move_to_next_line(var); return (1); }
void lex_quote(t_var *var, char **buf, t_list **alst) { char *s; t_list *tmp; int i; i = 1; LN_QUOTE = **buf; s = *buf; while (*(*buf + i) && !is_valid_quote(var, *buf, i)) i++; if (!*(*buf + i)) missing_quote_loop(var, s, alst); else { tmp = ((*(*buf + i) == LN_QUOTE) && (i >= 1) ? \ ft_lstnew((void *)ft_strndup(s, i + 1), sizeof(char *)) : NULL); while (*(*buf + i) != LN_QUOTE) i++; i++; *buf += i; ft_lstadd_last(alst, tmp); } LN_QUOTE = '\0'; }
void lex_pipe(t_var *var, char **buf, t_list **alst) { t_list *tmp; var = (void *)var; if (*((*buf) + 1) == '|') { tmp = ft_lstnew((void *)ft_strndup(*buf, 2), sizeof(char *)); ft_lstadd_last(alst, tmp); (*buf) += 2; } else { tmp = ft_lstnew((void *)ft_strndup(*buf, 1), sizeof(char *)); ft_lstadd_last(alst, tmp); (*buf)++; } }
void lex_big(t_var *var, char **buf, t_list **alst) { t_list *tmp; var = (void *)var; if (buf[0][1] == '>') { tmp = ft_lstnew((void *)ft_strndup(*buf, 2), sizeof(char *)); ft_lstadd_last(alst, tmp); *buf += 2; } else { tmp = ft_lstnew((void *)ft_strndup(*buf, 1), sizeof(char *)); ft_lstadd_last(alst, tmp); (*buf)++; } }
t_list *create_filenames_list(int ac, char **av) { int i; t_list *ret; ret = NULL; i = 1; while (i < ac) { if (av[i][0] != '-') ft_lstadd_last(&ret, ft_lstnew(av[i], sizeof(char *))); i++; } return (ret); }
void storage_env(t_list **e, char *new_var) { int i; t_env env; t_list *new_node; i = 0; if ((if_key_replace(new_var, e)) == 0) return ; env.str = ft_strdup(new_var); while (new_var[i] != '=' && new_var[i] != '\0') ++i; env.name = ft_strsub(new_var, 0, i); if (new_var[i] != '\0' && new_var[++i] != '\0') env.value = ft_strsub(new_var, i, ft_strlen(new_var) - i); else env.value = NULL; new_node = ft_lstnew((void *)&env, sizeof(env)); if (new_node) ft_lstadd_last(e, new_node); }
static int split_line(t_list **av_list, char *line) { t_list *temp; t_av av; char **tab; int i; i = 0; tab = ft_strsplit(line, ';'); if (tab == NULL) return (1); while (tab[i] != NULL) { fill_av(&av, tab[i]); temp = ft_lstnew((void *)&av, sizeof(t_av)); if (temp == NULL) return (1); ft_lstadd_last(av_list, temp); i++; } return (0); }