(feat): command_list_exec() et get_executable_path()

This commit is contained in:
guamss 2023-06-29 19:02:51 +02:00
parent 69d4d2613b
commit 03140543ce
2 changed files with 22 additions and 0 deletions

View File

@ -6,6 +6,7 @@
#include "../cmd/cmd.h" #include "../cmd/cmd.h"
#include <unistd.h> #include <unistd.h>
#include "../env/env.h" #include "../env/env.h"
#include "../../lib/bozolib/bozolib.h"
int len(void** list) int len(void** list)
{ {
@ -94,3 +95,22 @@ int command_list_exec(cmd** cmds, lst** env)
} }
return 0; return 0;
} }
char* get_executable_path(char* executable, lst** env)
{
int size_path_str;
char * path_file;
char* path_env = get_env_variable(env, "PATH");
char** path_env_splited =split(path_env, ":");
for (int i=0; path_env_splited[i] != NULL; i++)
{
size_path_str = strlen(path_env_splited[i])+strlen(executable);
path_file = malloc(size_path_str*sizeof(char*));
strcpy(path_file, path_env_splited[i]);
strcat(path_file, executable);
if (access(path_file, X_OK) == 0)
return path_file;
free(path_file);
}
return NULL;
}

View File

@ -1,5 +1,7 @@
#pragma once #pragma once
int command_list_exec(cmd** cmds, lst** env)
int execute(cmd* input, lst** env); int execute(cmd* input, lst** env);
int builtin_execute(cmd* input, lst** env); int builtin_execute(cmd* input, lst** env);
int piper(cmd** cmds, lst** env); int piper(cmd** cmds, lst** env);
char* get_executable_path(char* executable, lst** env);