static void ft_splitcmd(t_conf *config, char *cmdline) { char **split; char **splitbuf; if ((split = ft_strsplit(cmdline, ';'))) { splitbuf = split; while (split && *split) { ft_checkcmd(*split, config); split++; } ft_free_split(splitbuf); free(splitbuf); } }
static void ft_open_redirection(char c, t_seq *cmd, char *str, int two) { char **tab; tab = ft_strsplit(str, ' '); if (c == '<') ft_open_infile(cmd, tab[0], two); else ft_open_outfile(cmd, tab[0], two); while (*str == ' ' || *str == '\t') str++; while (*str && *str != ' ' && *str != '\t' && *str != '<' && *str != '>') { *str = ' '; str++; } ft_free_split(tab); }
void get_material_attributes(t_env *e, int fd) { t_split_string attr; char *temp_line; attr.words = 0; e->material[e->materials] = (t_material *)malloc(sizeof(t_material)); init_material(e->material[e->materials]); while (ft_gnl(fd, &temp_line)) { if (temp_line[0] == '\0') break ; attr = ft_nstrsplit(temp_line, '\t'); ft_strdel(&temp_line); if (attr.words < 2) err(FILE_FORMAT_ERROR, "Material attributes", e); set_material_values(e, attr.strings[0], attr.strings[1]); ft_free_split(&attr); } ft_strdel(&temp_line); ++e->materials; }
static void ft_checkcmd(char *cmdline, t_conf *config) { char **cmdline_split; static void (*tabf[5])(t_conf *, char **) = {&ft_cd, &ft_exit, &ft_unsetenv, &ft_env, &ft_setenv}; int builtin; t_bin *cmd; cmd = NULL; if (!cmdline || !*cmdline || !(cmdline_split = ft_strsplit(cmdline, ' '))) return ; if ((builtin = ft_findbuiltin(*cmdline_split)) != -1) (tabf[builtin])(config, cmdline_split); else if (*cmdline_split[0] == '/' || *cmdline_split[0] == '.' || (cmd = ft_findcmd(*cmdline_split, ft_hashsearch(config, *cmdline_split)))) ft_execcmd(cmd, cmdline_split, config); else ft_error(*cmdline_split, CMD_NOTFOUND, KEEP); ft_free_split(cmdline_split); free(cmdline_split); }
static void set_material_values(t_env *e, char *pt1, char *pt2) { t_split_string values; values = ft_nstrsplit(pt2, ' '); if (!ft_strcmp(pt1, "NAME")) { ft_strdel(&e->material[e->materials]->name); e->material[e->materials]->name = ft_strdup(values.strings[0]); } else if (!ft_strcmp(pt1, "DIFFUSE")) e->material[e->materials]->diff = get_colour(e, values); else if (!ft_strcmp(pt1, "SPECULAR")) e->material[e->materials]->spec = get_colour(e, values); else if (!ft_strcmp(pt1, "REFLECT")) e->material[e->materials]->reflect = to_range(ft_atod(values.strings[0]), 0.0, 1.0); else if (!ft_strcmp(pt1, "REFRACT")) e->material[e->materials]->refract = to_range(ft_atod(values.strings[0]), 0.0, 1.0); else if (!ft_strcmp(pt1, "IOR")) e->material[e->materials]->ior = ft_atod(values.strings[0]); ft_free_split(&values); }
void ft_lib_env(char **t1, t_seq *tmp, char **environ) { ft_free_split(t1); ft_clean_seq(tmp); ft_free(environ); }