summaryrefslogtreecommitdiff
path: root/src/env_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/env_utils.c')
-rw-r--r--src/env_utils.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/env_utils.c b/src/env_utils.c
index 4e02032..5195c2f 100644
--- a/src/env_utils.c
+++ b/src/env_utils.c
@@ -6,10 +6,11 @@
/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/02 16:19:31 by dkaiser #+# #+# */
-/* Updated: 2024/05/07 15:16:32 by dkaiser ### ########.fr */
+/* Updated: 2024/05/07 16:02:38 by dkaiser ### ########.fr */
/* */
/* ************************************************************************** */
+#include "libft.h"
#include "pipex.h"
char **get_split_path(char *envp[])
@@ -51,7 +52,7 @@ char *find_in_path(char *cmd, char **path)
if (!cmd_path)
return (NULL);
if (access(cmd_path, X_OK) != -1)
- return (cur_path);
+ return (cmd_path);
path++;
}
return (NULL);
@@ -60,20 +61,29 @@ char *find_in_path(char *cmd, char **path)
char *get_cmd_path(char *cmd, char **path, char *pwd)
{
char *cur_dir;
+ char *lone_cmd;
+ int len;
+ char *res;
if (cmd[0] == '/')
return (cmd); // TODO: Maybe use duplicate instead, so there will be no problem on free()
- else if (strchr(cmd, '/'))
+ else if (ft_strchr(cmd, '/'))
{
cur_dir = ft_strjoin(pwd, "/");
// TODO: Free on fail
// TODO: Maybe check if executable, else there might be a problem...
return (ft_strjoin(cur_dir, cmd));
}
- else if (strchr(cmd, ' '))
+ else if (ft_strchr(cmd, ' '))
{
- //AAAAAAAAAAA
- return (NULL);
+ len = ft_strchr(cmd, ' ') - cmd + 1;
+ lone_cmd = malloc(len * sizeof(char));
+ // TODO: Free on fail
+ ft_strlcpy(lone_cmd, cmd, len);
+ res = find_in_path(lone_cmd, path);
+ if (!res)
+ return (NULL);
+ return(ft_strjoin(res, ft_strchr(cmd, ' ')));
}
else
{