minishell/src/parser/connec_cmd/connec_reorient_subtree.c

42 lines
1.6 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* connec_reorient_subtree.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 11:37:35 by kcolin #+# #+# */
/* Updated: 2025/04/15 11:39:41 by kcolin ### ########.fr */
/* */
/* ************************************************************************** */
#include "connec_reorient_subtree.h"
#include "../cmd/cmd.h"
#include "../cmd/cmd_destroy.h"
#include "../../ft_errno.h"
t_cmd *connec_reorient_subtree(t_cmd **list, t_cmd **subtree,
t_cmd **opt, t_connector connec)
{
*list = cmd_create(FT_CONNECTION);
if (!*list)
{
cmd_destroy(*subtree);
cmd_destroy(*opt);
return (NULL);
}
(*list)->value.connection = ft_calloc(1, sizeof(t_connec_cmd));
if (!(*list)->value.connection)
{
ft_errno(FT_ENOMEM);
cmd_destroy(*subtree);
cmd_destroy(*opt);
return (free(*list), NULL);
}
(*list)->type = FT_CONNECTION;
(*list)->value.connection->connector = connec;
(*list)->value.connection->first = *subtree;
(*list)->value.connection->second = *opt;
*subtree = *list;
return (*subtree);
}