2026-01-19 18:15:38 +00:00
|
|
|
#include "ast_redir.h"
|
2026-01-17 19:11:55 +01:00
|
|
|
|
2026-01-31 15:50:57 +01:00
|
|
|
#include <stdio.h>
|
2026-01-17 17:33:22 +01:00
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
struct ast_redir *ast_get_redir(struct ast *node)
|
|
|
|
|
{
|
2026-01-31 15:50:57 +01:00
|
|
|
if (node == NULL || node->type != AST_REDIR)
|
|
|
|
|
return NULL;
|
|
|
|
|
return node->data;
|
2026-01-17 17:33:22 +01:00
|
|
|
}
|
|
|
|
|
|
2026-01-27 19:56:33 +01:00
|
|
|
struct ast *ast_create_redir(char *filename, int io_number,
|
2026-01-17 19:11:55 +01:00
|
|
|
enum ast_redir_type type)
|
2026-01-17 17:33:22 +01:00
|
|
|
{
|
2026-01-31 15:50:57 +01:00
|
|
|
struct ast_redir *redir_node = malloc(sizeof(struct ast_redir));
|
|
|
|
|
if (redir_node == NULL)
|
|
|
|
|
{
|
|
|
|
|
perror("Error: could not allocate more memory");
|
2026-01-17 17:33:22 +01:00
|
|
|
return NULL;
|
2026-01-31 15:50:57 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
redir_node->filename =
|
2026-01-17 19:11:55 +01:00
|
|
|
filename; // Takes ownership? Usually yes in simple ASTs, or dup. Let's
|
|
|
|
|
// assume pointer copy for now, but user must manage memory.
|
2026-01-31 15:50:57 +01:00
|
|
|
redir_node->io_number = io_number;
|
|
|
|
|
redir_node->type = type;
|
|
|
|
|
|
|
|
|
|
struct ast *result = ast_create(AST_REDIR, redir_node);
|
|
|
|
|
if (result == NULL)
|
|
|
|
|
free(redir_node);
|
2026-01-17 17:33:22 +01:00
|
|
|
|
2026-01-31 15:50:57 +01:00
|
|
|
return result;
|
2026-01-17 17:33:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ast_free_redir(struct ast_redir *redir)
|
|
|
|
|
{
|
2026-01-31 15:50:57 +01:00
|
|
|
if (redir == NULL)
|
2026-01-17 17:33:22 +01:00
|
|
|
return;
|
2026-01-31 15:50:57 +01:00
|
|
|
|
|
|
|
|
if (redir->filename != NULL)
|
|
|
|
|
free(redir->filename);
|
2026-01-17 17:33:22 +01:00
|
|
|
free(redir);
|
|
|
|
|
}
|