diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-17 14:44:21 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-17 14:44:21 +0200 |
| commit | 0475dcbf969271f02e193f36f1d5620909621219 (patch) | |
| tree | fe9b59880fa55620406ae1e6bb9fa25b08bd016b | |
| parent | a1704494c323177d4c4d8cf822aa80297181c4fe (diff) | |
| download | minishell-0475dcbf969271f02e193f36f1d5620909621219.tar.gz minishell-0475dcbf969271f02e193f36f1d5620909621219.tar.bz2 minishell-0475dcbf969271f02e193f36f1d5620909621219.zip | |
Fixing (mostly) glob with absolute path
| m--------- | minishell_test | 0 | ||||
| -rw-r--r-- | print_argv_env_main.c | 18 | ||||
| -rw-r--r-- | src/ms_glob.c | 27 | ||||
| -rw-r--r-- | src/utils.c | 2 |
4 files changed, 38 insertions, 9 deletions
diff --git a/minishell_test b/minishell_test -Subproject b636afa67abd97c61259071922d2f4f6f34a60b +Subproject d845a683e67a89c699109dab660f6ec0eb74a2c diff --git a/print_argv_env_main.c b/print_argv_env_main.c index dcc6e0e..4011275 100644 --- a/print_argv_env_main.c +++ b/print_argv_env_main.c @@ -1,12 +1,18 @@ #include <stdio.h> +#include <unistd.h> +#include <limits.h> int main(int argc, char **argv, char **envp) { - printf("ARGV:\n"); - for (int i = 0; i < argc; i++) - printf("[%d] %s\n", i, argv[i]); - printf("\nENV:\n"); - for (int i = 0; envp[i] != NULL && i < 10; i++) - printf("[%d] %s\n", i, envp[i]); + char buf[PATH_MAX]; + + getcwd(buf, PATH_MAX); + printf("%s\n", buf); + /* printf("ARGV:\n"); */ + /* for (int i = 0; i < argc; i++) */ + /* printf("[%d] %s\n", i, argv[i]); */ + /* printf("\nENV:\n"); */ + /* for (int i = 0; envp[i] != NULL && i < 10; i++) */ + /* printf("[%d] %s\n", i, envp[i]); */ return 0; } diff --git a/src/ms_glob.c b/src/ms_glob.c index 39c537c..dae2bd8 100644 --- a/src/ms_glob.c +++ b/src/ms_glob.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/05 11:44:07 by charles #+# #+# */ -/* Updated: 2020/06/12 11:51:41 by charles ### ########.fr */ +/* Updated: 2020/06/17 14:39:52 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -111,23 +111,46 @@ t_ftvec *glob_matches(char *pattern) { char dirname[PATH_MAX]; struct s_glob_param param; + bool absolute; + size_t i; if (getcwd(dirname, PATH_MAX) == NULL) return (NULL); + absolute = *pattern == '/'; + if (*pattern == '/') + pattern++; if ((param.pattern = ft_strdup(pattern)) == NULL || (param.matches = ft_vecnew(MATCHES_VEC_START_SIZE)) == NULL) { free(param.pattern); return (NULL); } - if (utils_directory_iter(dirname, ¶m, + if (absolute) + chdir("/"); + if (utils_directory_iter(absolute ? "/" : dirname, ¶m, (t_directory_iter_func)glob_iter) == -1) { + chdir(dirname); free(param.pattern); ft_vecdestroy(param.matches, free); return (NULL); } + chdir(dirname); free(param.pattern); + if (absolute) + { + i = 0; + while (i < param.matches->size) + { + param.matches->data[i] = ft_strjoinf("/", param.matches->data[i], FT_STRJOINF_SND); + if (param.matches->data[i] == NULL) + { + ft_vecdestroy(param.matches, free); + return (NULL); + } + i++; + } + } return (param.matches); } diff --git a/src/utils.c b/src/utils.c index 3449c25..6de97c0 100644 --- a/src/utils.c +++ b/src/utils.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:56:31 by cacharle #+# #+# */ -/* Updated: 2020/06/09 15:49:39 by charles ### ########.fr */ +/* Updated: 2020/06/17 14:43:07 by charles ### ########.fr */ /* */ /* ************************************************************************** */ |
