diff options
| author | Dominik Kaiser | 2024-05-07 16:05:24 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-05-07 16:05:24 +0200 |
| commit | d2fc33211204c4885f54c518fb5d6f1b31160136 (patch) | |
| tree | 219fa21550e6bb3fc0060336e75a25e091c9ee27 /src/env_utils.c | |
| parent | ff846486ce845beab8b0fe31c227b5c5ad620bb9 (diff) | |
| download | pipex-d2fc33211204c4885f54c518fb5d6f1b31160136.tar.gz pipex-d2fc33211204c4885f54c518fb5d6f1b31160136.zip | |
Restore progress
I deleted almost my entire progress of today, but now everything should
be restored.
Diffstat (limited to 'src/env_utils.c')
| -rw-r--r-- | src/env_utils.c | 22 |
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 { |
