parser and globbing working nicely

This commit is contained in:
Clément Le Bihan
2020-05-23 17:00:54 +02:00
parent 1001222c54
commit 5471c59eb7
3 changed files with 9 additions and 15 deletions
+2 -1
View File
@@ -8,6 +8,7 @@
#pragma once
#include "shell.h"
#include <wordexp.h>
#include <stddef.h>
#include <string.h>
@@ -16,7 +17,7 @@ typedef struct parser_map {
int (*parser)(char *, char **, env_t *);
} parser_map;
char **parse_input(char *cmd, env_t *env);
char **parse_input(char *cmd, env_t *env, wordexp_t *parser);
void free_array(char **array);
int parse_quotes(char *ptr, char **data, env_t *env);
+3 -5
View File
@@ -16,7 +16,6 @@
#include "parser.h"
#include "builtin.h"
#include <malloc.h>
#include <wordexp.h>
const parser_map parsers[] = {
{'\'', &parse_quotes},
@@ -98,16 +97,15 @@ int parser_loop(char *cmd, char **buffer, char **ptr, void **pack)
return (0);
}
char **parse_input(char *cmd, env_t *e)
char **parse_input(char *cmd, env_t *e, wordexp_t *parser)
{
wordexp_t truc;
int ret;
cmd = process_vars(cmd, e);
ret = wordexp(cmd, &truc, WRDE_SHOWERR);
ret = wordexp(cmd, parser, WRDE_SHOWERR);
if (ret) {
perror("Wordexp");
return (NULL);
}
return (truc.we_wordv);
return (parser->we_wordv);
}
+4 -9
View File
@@ -34,16 +34,10 @@ const builtin builtins[] = {
int prompt_run(char *cmd, redirection *inout[2], env_t *env)
{
//char **argv = globbing(get_argv(cmd));
char **argv;
// if (!argv)
// return (0);
//free(cmd);
// cmd = fusion(argv[0], argv);
//free(argv);
//if (!cmd)
// return (-1);
argv = parse_input(cmd, env);
wordexp_t parser;
argv = parse_input(cmd, env, &parser);
if (!argv)
return (0);
if (**argv == '!' && argv[0][1] && argv[0][1] != ' ')
@@ -53,6 +47,7 @@ int prompt_run(char *cmd, redirection *inout[2], env_t *env)
return (run_builtin(&builtins[i], argv, inout, env));
run_cmd(argv, inout, env);
free_array(argv);
// wordfree(&parser);
return (0);
}