int check_builtins(t_cpe *cpe) { check_cmd_path(cpe); if (ft_strcmp(CMD, "exit") == 0) return (exec_err(cpe)); if (ft_strcmp(CMD, "echo") == 0) return (ft_echo(cpe) + 10); else if (ft_strcmp(CMD, "cd") == 0) return (ft_chdir(cpe)); else if (ft_strcmp(CMD, "env") == 0) return (check_envi(cpe)); else if (ft_strcmp(CMD, "setenv") == 0) { if (!PRM) return (print_arr(ENV) + 10); if (arr_size(PRM) > 2) { ft_putendl("setenv: Too many arguments"); ft_putendl("usage: setenv [name[value]]"); return (11); } return (ft_setenv(cpe) + 10); } else if (ft_strcmp(CMD, "unsetenv") == 0) return (ft_unsetenv(cpe) + 10); else return (-1); }
int is_builtin(char *line, t_env **env) { (*env)->av = ft_strsplit(line, ' '); if (ft_strcmp(ft_strtolower((*env)->av[0]), "setenv") == 0) { ft_setenv(&(*env)); return (1); } else if (ft_strcmp(ft_strtolower((*env)->av[0]), "unsetenv") == 0) { ft_unsetenv(&(*env)); return (1); } else if (ft_strcmp(ft_strtolower((*env)->av[0]), "cd") == 0) { ft_cd(&(*env)); return (1); } else if (ft_strcmp(ft_strtolower((*env)->av[0]), "exit") == 0) { exit (0); return (1); } else return (0); }
int ft_isbuiltin(t_env *env, char *line) { char **line2; int i; t_main w; i = 0; line2 = ft_strsplit(line, ' '); if (ft_strcmp(line2[0], "echo") == 0 && (i = 1)) { line = ft_strfcut(line, 5); ft_echo(line); } else if (ft_strncmp(line, "cd", 2) == 0 && (i = 1)) ft_cd(line); else if (ft_strncmp(line, "unsetenv", 7) == 0 && (i = 1)) env = ft_unsetenv(env); else if (ft_strncmp(line, "env", 2) == 0 && (i = 1)) print_env(env); else if (ft_strncmp(line, "setenv", 5) == 0 && (i = 1)) { line = ft_strrw(line); line2 = ft_strsplit(line, ' '); env = set_env(line2, env); } if (i == 1) ft_doublecoms(env, &w, 0); return (1); }
int exec_builtin(t_group *grp, char *order) { int active; active = 0; order = ft_strtrim(order); if (ft_strcmp(grp->cmd[0], "env") == 0) { active++; if (manage_opt(grp) < 0) return (active); (grp->options->on[u] == true || (grp->define_cmd[namenv] > 0 && grp->define_cmd[utils] == false) || grp->cmd[1] == NULL) ? exec_env(grp, 1) : exec_env(grp, 0); } else if (ft_strcmp(grp->cmd[0], "cd") == 0) (active += 1) ? manage_cd(grp) : 0; else if (ft_strcmp(grp->cmd[0], "setenv") == 0) (active += 1) ? ft_setenv(grp) : 0; else if (ft_strcmp(grp->cmd[0], "unsetenv") == 0) (active += 1) ? ft_unsetenv(grp) : 0; else if (ft_strcmp(grp->cmd[0], "exit") == 0) grp->cmd[1] ? exit(ft_atoi(grp->cmd[1])) : exit(0); return (active); }
void ft_parse_input(t_shun **shell) { if (*(*shell)->input) { (*shell)->argv = ft_parse_get_args((*shell)->input); (*shell)->argc = ft_tablen((*shell)->argv); if ((*shell)->argc != 0) { if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "exit") == 0) ft_exit(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "env") == 0) ft_print_environ(*shell); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "setenv") == 0) ft_setenv(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "unsetenv") == 0) ft_unsetenv(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "cd") == 0) ft_cd(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "prompt") == 0) ft_chg_prompt(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "pwd") == 0) ft_putendl(ft_get_pwd()); else ft_exec_bin(&(*shell)); } } }
int ft_builtin(t_env *env, char *line) { int i; char **line2; i = 0; line2 = NULL; line2 = ft_strsplit(line, ' '); line2[0] = ft_strtrim(line2[0]); if (ft_strcmp(line2[0], "echo") == 0 && (i = 1)) { line = ft_strfcut(line, 5); ft_echo(env, line); } else if (ft_strncmp(line, "cd", 2) == 0 && (i = 1)) ft_cd(line, env); else if (ft_strcmp(line, "clear") == 0 && (i = 1)) tputs(tgetstr("cl", NULL), 1, ft_ft_putchar); else if (ft_strncmp(line, "unsetenv", 7) == 0 && (i = 1)) { line2 = ft_strsplit(line, ' '); env = ft_unsetenv(env, line2[1]); } else if (i == 0) i = ft_builtin2(env, line); return (i); }
int ft_check_env(t_tab *t, t_struc *s, int ret) { ret = (ft_unsetenv(t, s, ret)); if (ret > 0) return (ret); if (s->arg[0] && !ft_strcmp(s->arg[0], "setenv")) { if (s->ac == 1) { ft_aff_env(t); ret++; return (ret); } else if (s->ac > 3) ft_putendl("setenv : too few arguments"); else ft_setenv(t, s); ret++; return (ret); } if (s->arg[0] && !ft_strcmp(s->arg[0], "env")) { ft_aff_env(t); ret++; return (ret); } return (0); }
void ft_loop(char **cmd, t_env **e, char **tab_e) { if (!ft_strcmp(cmd[0], "echo")) ft_echo(cmd, *e); else if (!ft_strcmp(cmd[0], "exit")) { free_list(*e); exit(0); } else if (!ft_strcmp(cmd[0], "env")) { tab_e = listtotab(*e); ft_env(*e, cmd, tab_e); } else if (!ft_strcmp(cmd[0], "setenv")) ft_setenv(e, cmd); else if (!ft_strcmp(cmd[0], "unsetenv")) ft_unsetenv(e, cmd); else if (!ft_strcmp(cmd[0], "cd") && *e) ft_cd(*e, cmd); else { tab_e = listtotab(*e); do_fork(cmd, *e, tab_e); } free_tab(cmd); }
int sh_unsetenv(t_info *info, char **env, char **args) { int i; (void)info; i = 0; while (args[i]) { ft_unsetenv(args[i], env); i++; } return (EXIT_SUCCESS); }
void builtin_unsetenv(char ***env, char **cmd) { int i; i = 1; if (error_unsetenv(cmd) == 0) { while (cmd[i] != NULL) { *env = ft_unsetenv(*env, cmd[i]); i++; } } }
int check_cmd(char **arg) { if (*arg == (void*)0) return (0); else if (ft_strcmp(arg[0], "exit") == 0) exit(1); else if (ft_strcmp(arg[0], "env") == 0) return (print_env()); else if (ft_strcmp(arg[0], "cd") == 0) return (ft_cd(arg[1])); else if (ft_strcmp(arg[0], "unsetenv") == 0) return (ft_unsetenv(arg[1])); else if (ft_strcmp(arg[0], "setenv") == 0) return (ft_setenv(arg[1], arg[2], arg[3])); return (1); }
void ft_stophandler(int n) { char cp[2]; if (n == SIGTSTP) { cp[0] = 032; cp[1] = 0; signal(SIGTSTP, SIG_DFL); ioctl(ft_tty(), TIOCSTI, cp); ft_unsetenv(); } if (n == SIGCONT) { signal(SIGTSTP, ft_stophandler); ft_setenv(); ft_plst(); } }
int opt_env(int *i, char ***env, char **args) { if (!ft_strcmp(args[*i], "-i")) *env = newtab(); else if (!ft_strcmp(args[*i], "-u")) { if (args[*i + 1] && args[*i + 1][0] != '-') { ft_unsetenv(env, args[*i + 1], NULL); (*i)++; } } else { ft_putendl("Illegal option. please use -i or -u"); return (0); } return (1); }
int check_builtin(t_env *e) { int ret; if (!e->av[0]) return (0); ret = (ft_strequ(e->av[0], "env") && !(e->av[1])) ? display_env(e) : 0; if (ret != 2) ret = (ft_strequ(e->av[0], "cd")) ? ft_cd(e) : 0; if (ret != 2) ret = (ft_strequ(e->av[0], "setenv")) ? ft_setenv(e) : 0; if (ret != 2) ret = (ft_strequ(e->av[0], "unsetenv")) ? ft_unsetenv(e) : 0; if (ret != 2) ret = (!(ft_strncmp(e->av[0], "./", 2))) ? ft_exec(e) : 0; if (ret != 2) ret = (ft_strcmp(e->av[0], "exit")) ? 0 : 1; return (ret); }
int ft_setenv(const char *key, const char *val, int overwrite) { char *es; if (key == NULL || key[0] == '\0' || ft_strchr(key, '=') != NULL) { erro_msg("Invalid argument(s)", NULL); return (-1); } if (getenv(key) != NULL && overwrite == 0) return (0); ft_unsetenv(key); if (!(es = (char *)malloc(ft_strlen(key) + ft_strlen(val) + 2))) return (-1); ft_strjoin(ft_strjoin(ft_strcpy(es, key), "="), val); if (!putenv(es)) return (-1); return (1); }
void ft_unsetenv(t_env **begin_list, char *varname) { t_env *tmp; tmp = *begin_list; if (*begin_list) { if (!(ft_strcmp((*(begin_list))->name, varname))) { tmp = *begin_list; *begin_list = (*(begin_list))->next; ft_strdel(&(tmp->name)); ft_strdel(&(tmp->content)); free(tmp); } else ft_unsetenv(&(*begin_list)->next, varname); } }
int ft_setenv(const char *name, const char *value, int overwrite) { int i; char *tmp; if (!name || !*name || ft_strchr(name, '=')) return (-1); if (ft_getenv(name) && !overwrite) return (0); i = 0; ft_unsetenv(name); while (g_environ[i]) i++; g_environ = ft_realloc(&g_environ, i * sizeof(*g_environ), (i + 2) * sizeof(*g_environ)); tmp = ft_strjoin(name, "="); g_environ[i] = ft_strjoin(tmp, value); ft_strdel(&tmp); return (0); }
int ft_perform_cmd(t_tree *t, t_env *e) { int value; value = 0; if (!ft_strcmp(t->p->tok, "exit")) value = ft_exit(t->p); else if (!ft_strcmp(t->p->tok, "echo")) ft_echo(t->p); else if (!(ft_strcmp(t->p->tok, "cd"))) value = ft_cd(t->p, e); else if (!(ft_strcmp(t->p->tok, "env"))) value = ft_env(t->p, e); else if (!(ft_strcmp(t->p->tok, "unsetenv"))) value = ft_unsetenv(t->p, &(e->env)); else if (!(ft_strcmp(t->p->tok, "setenv"))) value = ft_setenv(t->p, &(e->env)); else value = ft_perform_exe(t->p, e); return (value); }
static void ft_env_u(t_env *env, char **cmd) { int i; i = 1; if (!cmd[2]) { ft_env_usage(cmd[1][i]); return ; } else if (cmd[3]) { ft_env_error(cmd[3]); return ; } else if (cmd[1][i] == 'u' && cmd[2]) { ft_unsetenv(&env, cmd[2]); print_list(env); } }
void execute(t_env *env) { if (ft_strcmp(env->com, "exit") == 0 || ft_strcmp(env->com, "quit") == 0) env->done = 1; else if (ft_strcmp(env->com, "clear") == 0) ft_printf("\033c"); else if (ft_strcmp(env->com, "echo") == 0) echo(env); else if (ft_strcmp(env->com, "env") == 0) show_env(env->env_var); else if (ft_strcmp(env->com, "setenv") == 0) ft_setenv(env); else if (ft_strcmp(env->com, "unsetenv") == 0) ft_unsetenv(env); else if (ft_strcmp(env->com, "cd") == 0) ft_cd(env); else if (ft_strcmp(env->com, "pwd") == 0) ft_pwd(env); else ft_run(env); }
int implemented_function(char **cmd) { if (!cmd) return (1); if (ft_strcmp(cmd[0], "exit") == 0) { free_arr(&cmd); return (-1); } else if (ft_strcmp(cmd[0], "env") == 0) ft_env(cmd); else if (ft_strcmp(cmd[0], "cd") == 0) ft_cd(cmd); else if (ft_strcmp(cmd[0], "setenv") == 0) ENVP = ft_setenv(cmd); else if (ft_strcmp(cmd[0], "unsetenv") == 0) ENVP = ft_unsetenv(cmd); else return (0); return (1); }
int builtin_commands(char *name, char **args, t_env **env_list) { int ret; ret = 0; if (ft_strcmp(name, "cd") == 0 && (ret = 1)) change_cwd(args, env_list); else if (ft_strcmp(name, "env") == 0 && (ret = 1)) print_env(*env_list); else if (ft_strcmp(name, "setenv") == 0 && (ret = 1)) ft_setenv(args[1], args[2], env_list); else if (ft_strcmp(name, "unsetenv") == 0 && (ret = 1)) ft_unsetenv(args[1], env_list); else if (ft_strcmp(name, "echo") == 0 && (ret = 1)) ft_echo(args, *env_list); else if (ft_strcmp(name, "exit") == 0) ret = 1; if (ret == 1) return (1); return (0); }
void ft_handler(int n) { t_env *env; int len; if (n == SIGWINCH) { env = ft_sglt(); if (tgetent(NULL, env->env) == ERROR) ft_perror(); env->screen->x = tgetnum("co"); env->screen->y = tgetnum("li"); len = ft_lstlen(); env->scroll = (len > env->screen->y) ? len - env->screen->y : 0; ft_plst(); } if (n == SIGQUIT || n == SIGINT) { ft_unsetenv(); exit(EXIT_FAILURE); } }
void own_command(t_env *env, char **sa, char *s) { if (ft_memcmp(sa[0], "echo", 4) == 0) ft_echo(sa); else if (ft_memcmp(sa[0], "cd", 2) == 0) ft_cd(env, sa); else if (ft_memcmp(sa[0], "setenv", 6) == 0) ft_setenv(env, sa); else if (ft_memcmp(sa[0], "unsetenv", 8) == 0) ft_unsetenv(env, sa); else if (ft_memcmp(sa[0], "env", 3) == 0) call_env(*env, s); else if (ft_memcmp(sa[0], "help", 4) == 0) ft_help(env, sa); else if (ft_memcmp(sa[0], "easter", 6) == 0) easteregg(env, sa); else if (ft_memcmp(sa[0], "history", 7) == 0) list_history(env, sa); else ft_putstr(E_MESS05); FREE_(s); }
int check_bultins(char **av, t_env *env) { if (!ft_strcmp(av[0], "exit")) ft_exit(av, env); else if (!ft_strcmp(av[0], "cd")) ft_cd(av, env); else if (!ft_strcmp(av[0], "setenv")) ft_setenv(av, env); else if (!ft_strcmp(av[0], "unsetenv")) ft_unsetenv(av, env); else if (!ft_strcmp(av[0], "env")) { ft_env(av, env->environ); resumed_terminal(); } else if (!ft_strcmp(av[0], "echo")) ft_echo(av, env->environ); else return (0); free_double_array(av); return (1); }
void ft_parse_input(t_shell **shell) { if (*(*shell)->input) { (*shell)->argv = ft_parse_get_args((*shell)->input); (*shell)->argc = ft_count_arg((*shell)->argv); if ((*shell)->argc != 0) { if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "env") == 0) ft_print_environ(*shell); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "setenv") == 0) ft_setenv(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "unsetenv") == 0) ft_unsetenv(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "exit") == 0) ft_exit(&(*shell)); else if (ft_strcmp(ft_strtolower((*shell)->argv[0]), "cd") == 0) ft_cd(&(*shell)); else ft_exec_bin(&(*shell)); } } }