aboutsummaryrefslogtreecommitdiff
path: root/src/preprocess.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/preprocess.c')
-rw-r--r--src/preprocess.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/preprocess.c b/src/preprocess.c
index 22f42ab..278e8ef 100644
--- a/src/preprocess.c
+++ b/src/preprocess.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/03 08:58:49 by charles #+# #+# */
-/* Updated: 2020/06/14 16:02:46 by charles ### ########.fr */
+/* Updated: 2020/06/14 21:25:05 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -113,6 +113,7 @@ static void st_iter_func_unwrap_token(void **addr)
*(char**)addr = content;
}
+// need to free argv on error
char **preprocess(t_ftlst *tokens, t_env env)
{
size_t i;
@@ -157,3 +158,22 @@ char **preprocess(t_ftlst *tokens, t_env env)
ft_vecpush(argv, NULL);
return ((char**)ft_vecunwrap(argv));
}
+
+// need to free tokens
+char *preprocess_filename(t_ftlst *tokens, t_env env)
+{
+ char **strs;
+ char *ret;
+
+ if ((strs = preprocess(tokens, env)) == NULL
+ || strs[0] == NULL)
+ return (NULL);
+ if (strs[1] != NULL)
+ {
+ // ambiguous
+ return (NULL);
+ }
+ ret = strs[0];
+ free(strs);
+ return (ret);
+}