Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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));
		}
	}
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
0
Archivo: main.c Proyecto: bibop-qu/SH1
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);
}
Ejemplo n.º 9
0
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);
}
Ejemplo n.º 10
0
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++;
		}
	}
}
Ejemplo n.º 11
0
Archivo: shell.c Proyecto: mrachid/SH2
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);
}
Ejemplo n.º 12
0
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();
	}
}
Ejemplo n.º 13
0
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);
}
Ejemplo n.º 14
0
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);
}
Ejemplo n.º 15
0
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);
}
Ejemplo n.º 16
0
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);
	}
}
Ejemplo n.º 17
0
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);
}
Ejemplo n.º 18
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);
}
Ejemplo n.º 19
0
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);
	}
}
Ejemplo n.º 20
0
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);
}
Ejemplo n.º 21
0
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);
}
Ejemplo n.º 22
0
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);
}
Ejemplo n.º 23
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);
	}
}
Ejemplo n.º 24
0
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);
}
Ejemplo n.º 25
0
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);
}
Ejemplo n.º 26
0
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));
		}
	}
}