/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* b_export.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include "b_env.h" #include "f_fail.h" #include "s_struct.h" #include "u_utils.h" static int8_t check_valid_identifier(const char *arg) { char *ptr; ptr = (char*)arg; if (ft_isalpha(ptr[0])) { return (1); } return (0); } static int8_t check_equals(const char *arg) { char *ptr; ptr = (char*)arg; while (*ptr) { if (*ptr == '=') return (1); ptr++; } return (0); } uint8_t b_export(char *args[], t_msh *msh) { const uint64_t argc = get_argc((const char**)args); char **ptr; int8_t next; uint8_t r; if (argc == 0) { return (b_env(NULL, msh)); } ptr = args; r = 0; while (*ptr) { ft_printf("export: [%s]\n", *ptr); next = 0; if (!check_valid_identifier(*ptr)) { fail_identifier("export", *ptr, msh); next = 1; r = 1; } if (next == 0 && !check_equals(*ptr)) { next = 1; /* TODO: export already set variable */ /* examples: */ /* ~> QWE=qwe */ /* ~> export QWE */ /* -------------- */ /* # non-existant variable QWE */ /* ~> export QWE */ } ptr++; } /* TODO: finish export */ return (r); }