aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------minishell_test0
-rw-r--r--print_argv_env_main.c18
-rw-r--r--src/ms_glob.c27
-rw-r--r--src/utils.c2
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, &param,
+ if (absolute)
+ chdir("/");
+ if (utils_directory_iter(absolute ? "/" : dirname, &param,
(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 */
/* */
/* ************************************************************************** */