static void test_task_env_role_members_standalone(void) { Task *task = g_slice_new0(Task); Param rmem = {"RECIPE_MEMBERS", "otherhost localhost"}; gchar *rmembers = NULL; task->rhts_compat = FALSE; task->recipe = g_slice_new0(Recipe); task->params = g_list_append(task->params, &rmem); build_env("http://localhost", task); g_ptr_array_foreach(task->env, (GFunc)get_env_rmembers, &rmembers); g_assert_cmpstr(rmembers, ==, "otherhost localhost"); g_slice_free(Recipe, task->recipe); if (task->env != NULL) { g_ptr_array_free(task->env, TRUE); } g_list_free(task->params); g_slice_free(Task, task); if (rmembers != NULL) { g_free(rmembers); } }
int main(int argc, char **argv) { extern char **environ; t_sllist *myenv; int fd; build_env(environ, &myenv); if (argc > 1) { if (!access(argv[1], R_OK)) { fd = xopen(argv[1], O_RDONLY, 0644); xdup2(fd, 0); mysh(1, &myenv); xclose(fd); } else fprintf(stderr, "%s %s\n", "Unable to access :", argv[1]); } else mysh(!isatty(0), &myenv); free_env(myenv); auto_comp(NULL, NULL, DEL, NULL); return (EXIT_SUCCESS); }
static void exec_file(char **cmd, int isnew_env, char **env) { if (!isnew_env) env = build_env(glob()->env); isaccess(&(*cmd), 0, 0); execve(*cmd, cmd, env); ft_puttext_fd("42sh: cannot exec: ", *cmd, "\n", 2); if (env) ft_p_free(&env); exit(3); }
static void exec_bin(char **cmd, int isnew_env, char **env) { char **path; int i; if (!isnew_env) env = build_env(glob()->env); if ((!isnew_env) || (isnew_env && !getenv_path(env))) path = bin(*cmd, ft_getenv("PATH")); else path = bin(*cmd, getenv_path(env)); if ((i = isaccess(path, 1, 0)) > -1) execve(path[i], cmd, env); ft_puttext_fd("42sh: command not found: ", *cmd, "\n", 2); if (path) ft_p_free(&path); if (env) ft_p_free(&env); exit(5); }
static void test_task_env_role_members_beaker(void) { Task *task = g_slice_new0(Task); GList *roles = NULL; gchar *rmembers = NULL; Role srv = { "SERVERS", "localhost" }; Role clt = { "CLIENTS", "otherhost" }; Role dupe = { "CLIENTS", "localhost" }; roles = g_list_append(roles, &srv); roles = g_list_append(roles, &clt); roles = g_list_append(roles, &dupe); task->rhts_compat = FALSE; task->recipe = g_slice_new0(Recipe); task->roles = roles; build_env("http://localhost", task); g_ptr_array_foreach(task->env, (GFunc)get_env_rmembers, &rmembers); g_assert_cmpstr(rmembers, ==, "otherhost localhost"); g_list_free(roles); g_slice_free(Recipe, task->recipe); if (task->env != NULL) { g_ptr_array_free(task->env, TRUE); } g_slice_free(Task, task); if (rmembers != NULL) { g_free(rmembers); } }