int exec_rm(char **env) { char **tab5; char *str; tab5 = init_tab_rm(); str = cpy_str("/bin", tab5[0]); if ((my_access(str)) == 2) { my_do(str, env, tab5); return (0); } free(str); return (0); }
//jni funcs void Java_org_mono_android_AndroidRunner_init (JNIEnv* env, jobject _this, jstring path0, jstring path1, jstring path2, jstring path3) { char buff[1024]; _log ("IN Java_com_example_hellojni_HelloJni_init \n"); cpy_str (env, file_dir, path0); cpy_str (env, cache_dir, path1); cpy_str (env, data_dir, path2); cpy_str (env, assemblies_dir, path3); _log ("-- file dir %s\n", file_dir); _log ("-- cache dir %s\n", cache_dir); _log ("-- data dir %s\n", data_dir); _log ("-- assembly dir %s\n", assemblies_dir); prctl (PR_SET_DUMPABLE, 1); sprintf (buff, "%s/libmonosgen-2.0.so", data_dir); void *libmono = dlopen (buff, RTLD_LAZY); mono_jit_init_version = dlsym (libmono, "mono_jit_init_version"); mono_assembly_open = dlsym (libmono, "mono_assembly_open"); mono_domain_get = dlsym (libmono, "mono_domain_get"); mono_jit_exec = dlsym (libmono, "mono_jit_exec"); mono_set_assemblies_path = dlsym (libmono, "mono_set_assemblies_path"); mono_string_new = dlsym (libmono, "mono_string_new"); mono_class_from_name_case = dlsym (libmono, "mono_class_from_name_case"); mono_assembly_get_image = dlsym (libmono, "mono_assembly_get_image"); mono_class_from_name = dlsym (libmono, "mono_class_from_name"); mono_class_get_method_from_name = dlsym (libmono, "mono_class_get_method_from_name"); mono_object_to_string = dlsym (libmono, "mono_object_to_string"); mono_string_to_utf8 = dlsym (libmono, "mono_string_to_utf8"); mono_runtime_invoke = dlsym (libmono, "mono_runtime_invoke"); mono_free = dlsym (libmono, "mono_free"); mono_set_crash_chaining = dlsym (libmono, "mono_set_crash_chaining"); mono_set_signal_chaining = dlsym (libmono, "mono_set_signal_chaining"); mono_dl_fallback_register = dlsym (libmono, "mono_dl_fallback_register"); mono_thread_attach = dlsym (libmono, "mono_thread_attach"); mono_domain_set_config = dlsym (libmono, "mono_domain_set_config"); mono_runtime_set_main_args = dlsym (libmono, "mono_runtime_set_main_args"); //MUST HAVE envs setenv ("TMPDIR", cache_dir, 1); setenv ("MONO_CFG_DIR", file_dir, 1); create_and_set (file_dir, "home", "HOME"); create_and_set (file_dir, "home/.local/share", "XDG_DATA_HOME"); create_and_set (file_dir, "home/.local/share", "XDG_DATA_HOME"); create_and_set (file_dir, "home/.config", "XDG_CONFIG_HOME"); //Debug flags // setenv ("MONO_LOG_LEVEL", "debug", 1); // setenv ("MONO_VERBOSE_METHOD", "GetCallingAssembly", 1); mono_set_assemblies_path (assemblies_dir); mono_set_crash_chaining (1); mono_set_signal_chaining (1); mono_dl_fallback_register (my_dlopen, my_dlsym, NULL, NULL); root_domain = mono_jit_init_version ("TEST RUNNER", "mobile"); mono_domain_set_config (root_domain, assemblies_dir, file_dir); sprintf (buff, "%s/libruntime-bootstrap.so", data_dir); runtime_bootstrap_dso = dlopen (buff, RTLD_LAZY); sprintf (buff, "%s/libMonoPosixHelper.so", data_dir); mono_posix_helper_dso = dlopen (buff, RTLD_LAZY); }