11os_char *formatted_path(
const os_char *path) {
12 os_char *f_path = (os_char *)malloc((strlen(path) + 2) *
sizeof(os_char));
13 size_t len = strlen(path);
14 strncpy(f_path, path, strlen(path));
16 strncat(f_path, SEPARATOR, 2);
20#elif defined(__linux__)
23os_char *formatted_path(
const os_char *path) {
24 os_char *f_path = (os_char *)malloc((strlen(path) + 2) *
sizeof(os_char));
25 strncpy(f_path, SEPARATOR, 1);
27 strncat(f_path, path, strlen(path));
39 str += strspn(str, delim);
45 str = strpbrk(token, delim);
48 *saveptr = strchr(token,
'\0');
57bool in_path_env(
const os_char *path_env,
const os_char *new_path) {
58 size_t len = strlen(path_env);
59 os_char tmp_path_env[SHRT_MAX];
60 strncpy(tmp_path_env, path_env, len);
61 tmp_path_env[len] =
'\0';
65 while(token != NULL) {
66 if(!strcmp(token, new_path)) {
75 char buffer[SHRT_MAX];
76 unsigned int bufferSize =
sizeof(buffer) /
sizeof(
char);
79 format_error(
"Fail to get PATH environment variable!\n");
84 format_error(
"The path %s is already in the PATH environment variable.\n", new_path);
88 os_char *f_path = formatted_path(new_path);
89 strncat(buffer, f_path, strlen(f_path));
92 format_error(
"Failed to set the PATH environment variable!\n");
96 format_success(
"PATH environment variable is updated successfully.\n");
char * strtok_r_custom(char *str, const char *delim, char **saveptr)
bool in_path_env(const os_char *path_env, const os_char *new_path)
bool add_path(const os_char *new_path)
enum run_result run_add_path(const os_char *new_path)
void format_success(char *fmt,...)
Used format_xxx instead of printf and such for uniform output.
void format_error(char *fmt,...)
Used format_xxx instead of printf and such for uniform output.
bool get_shell_env(const os_char *var, unsigned int buffer_size, os_char *buffer)
Get value of an an environment variable.
bool set_shell_env(const os_char *name, const os_char *val)
Set environment variable of the shell process.
run_result
Result of the execution of a command line.