/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   init.c                                             :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: lperrey <lperrey@student.42.fr>            +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/10/08 09:22:12 by lperrey           #+#    #+#             */
/*   Updated: 2021/10/10 21:56:33 by lperrey          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include "minishell.h"

static char	*init_prompt_base(void);
static char	*init_prompt(char *prompt_base);

int		init(t_all *c, char *envp[])
{
	ft_bzero(c, sizeof *c);
	c->envp = envp;
	c->prompt_base = init_prompt_base();
	if (!c->prompt_base)
		return (ft_reti_perror(0, "init_prompt_base() fail"));
	c->prompt = init_prompt(c->prompt_base);
	if (!c->prompt)
		return (ft_reti_perror(0, "init_prompt() fail"));
	return (1);
}

static char	*init_prompt_base(void)
{
	char	*prompt_base;
	char	*tmp;

	tmp = getenv("USER");
	if (!tmp)
		tmp = getenv("LOGNAME");
	if (!tmp)
		tmp = U_DEFAULT_USER;
	prompt_base = ft_strjoin(TERM_LIGHT_GREEN, tmp);
	prompt_base = ft_strjoinfree_s1(prompt_base, "@");
	tmp = getenv("NAME");
	if (!tmp)
		tmp = U_DEFAULT_NAME;
	prompt_base = ft_strjoinfree_s1(prompt_base, tmp);
	prompt_base = ft_strjoinfree_s1(prompt_base, TERM_RESET":"TERM_LIGHT_BLUE);
	return (prompt_base);
}

static char	*init_prompt(char *prompt_base)
{
	char	*prompt;

	prompt = ft_strjoinfree_s2(prompt_base, getcwd(NULL, 0));
	prompt = ft_strjoinfree_s1(prompt, TERM_RESET U_PROMPT_END);
	return (prompt);
}
