diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-03-30 22:27:16 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-03-30 22:27:16 +0200 |
| commit | 941099778b59da6b904c284e8a82affe4766124b (patch) | |
| tree | 4457787a1b09408fcd1a5607109cc1c902c80af8 /src/eval/val.c | |
| parent | 74787eefa2ac85d85b484d0ca5dffc6a2a13331d (diff) | |
| download | minishell-941099778b59da6b904c284e8a82affe4766124b.tar.gz minishell-941099778b59da6b904c284e8a82affe4766124b.tar.bz2 minishell-941099778b59da6b904c284e8a82affe4766124b.zip | |
Added doc
Diffstat (limited to 'src/eval/val.c')
| -rw-r--r-- | src/eval/val.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/eval/val.c b/src/eval/val.c new file mode 100644 index 0000000..3293972 --- /dev/null +++ b/src/eval/val.c @@ -0,0 +1,69 @@ +/** +** \file val.c +** \brief Evaluation value manipulation +*/ + +#include "ms_evalue.h" + +/** +** \brief Allocate memory for a t_value and set his type +** \param type Type of valueue +** \return The allocated value +*/ + +t_value *value_new(t_value_type type) +{ + t_value *value; + + if ((value = (t_value*)malloc(sizeof(t_value*))) == NULL) + return (NULL); + value->type = type; + return (value); +} + +/** +** \brief Create a new redirection value from a filename +** \param type Type of redirection and value +** \param filename Name of the file to open +** \return Redirection value +** \warning Undefined behavior on none redirection type. +*/ + +t_value *value_new_redir(t_value_type type, char *filename) +{ + t_value *value; + + if ((value = value_new(type)) == NULL) + return (NULL); + if (type == VAL_REDIR_IN) + value->data.fd = open(filename, O_RDONLY); + else if (type == VAL_REDIR_OUT) + value->data.fd = open(filename, O_WRONLY | O_CREAT); + else if (type == VAL_REDIR_APPEND) + value->data.fd = open(filename, O_APPEND | O_CREAT); + if (value->data.fd < 0) + { + free(value); + return (NULL); + } + return (value); +} + +/** +** \brief Create a new string value (i.e error, arg, cmd) +** \param type String value type +** \param str String data +** \return String value +*/ + +t_value *value_new_string(t_value_type type, char *str) +{ + t_value *value; + + if ((value == malloc(sizeof(t_value))) == NULL) + return (NULL); + value->type = type; + if ((value->data.str = ft_strdup(str)) == NULL) + return (NULL); + return (value); +} |
