Beispiel #1
0
void			do_unsetenv(t_env *env, char *line)
{
	size_t		pos;
	char		*tmp;
	size_t		len;

	pos = 0;
	while (pos < ENV_TABLE_SIZE && env->env_table[pos][0])
	{
		tmp = get_env_name(env->env_table[pos]);
		len = strlen(tmp);
		if (!strncmp(tmp, line, len) && (line[len] == ' ' || line[len] == '\t'))
		{
			memcpy(env->env_table[pos], env->env_table[pos + 1], ENV_TABLE_CONTENT_SIZE);
			while (pos < ENV_TABLE_SIZE && env->env_table[pos + 1][0])
			{
				memcpy(env->env_table[pos], env->env_table[pos + 1], ENV_TABLE_CONTENT_SIZE);
				++pos;
			}
			env->env_table[pos][0] = '\0';
			return ;
		}
		++pos;
	}
}
Beispiel #2
0
char	*get_env_var(char *var, char **envp)
{
	char	*tmp;

	if (!var || !*var)
		return (NULL);
	while (*envp)
	{
		tmp = get_env_name(envp, 0);
		if (ft_strequ(tmp, var))
		{
			ft_strdel(&tmp);
			tmp = ft_strdup(*envp + ft_strlen(var) + 1);
			return (tmp);
		}
		ft_strdel(&tmp);
		envp++;
	}
	return (NULL);
}
Beispiel #3
0
static void		do_setenv_insert(t_env *env, char buffer[ENV_TABLE_CONTENT_SIZE])
{
	const char	error[] = {"setenv: Too many environment variables\n"};
	size_t		element;

	element = 0;
	while (element < ENV_TABLE_SIZE && env->env_table[element][0])
	{
		if (env_name_match(get_env_name(env->env_table[element]), buffer))
		{
			memcpy(env->env_table[element], buffer, ENV_TABLE_CONTENT_SIZE);
			return ;
		}
		++element;
	}
	if (element < ENV_TABLE_SIZE)
	{
		memcpy(env->env_table[element], buffer, ENV_TABLE_CONTENT_SIZE);
		env->env_table[element + 1][0] = '\0';
	}
	else
		write(2, error, sizeof(error) - 1);
}