int __wrap_main(int argc, char **argv) // , char **envp { // NOTE: parse all ctrl args at beg (or end -- easy to discard) while (argc > 1) { if (!strcmp(argv[1], "-src-path")) { printf("%s\n", src_path); return 0; } else if (!strcmp(argv[1], "-no-rebuild")) { return __real_main(argc, argv); } else break; --argc, argv[1] = argv[0], argv++; } char bin_path[PATH_MAX] = {0}; if (0 >= readlink("/proc/self/exe", bin_path, PATH_MAX)) { error(2, errno, "readlink(\"%s\")", argv[0]); } // WARN: rebuild won't be triggered // * changes saved directly during compilation // ALT:(slow): -cmp-hash and func_ptr // * updated static libs ALT:(slow): use make if (0 < timestamp_cmp(src_path, bin_path)) { if (0 != run_cmd(recompile_cmdv)) return 99; execvp(bin_path, argv); error(9, errno, "execvp"); } return __real_main(argc, argv); }
int xenomai_main(int argc, char *const argv[]) { if (early_argc) return __real_main(early_argc, early_argv); xenomai_init(&argc, &argv); return __real_main(argc, argv); }
// Meant to be run in another thread or will block the GUI. void Emulator::runGame(){ isThreadRunning = true; std::cout << "Emulation starting..." << std::endl; screen->setActive(true); // cpp3ds_main(); __real_main(0, NULL); std::cout << "Emulation ended. " << std::endl; screen->setActive(false); isThreadRunning = false; }
int __wrap_main(int argc, char* argv[]) { printf("Wrapped main\n"); return __real_main(argc, argv); }
int __wrap_main(int argc, char * const *argv) { setvbuf(stdout, NULL, _IOLBF, 0); const char * identifier = "RUU_Decrypt_Tool_Wrapper"; // text to identify wrapped binaries return __real_main(argc, argv); }
int __wrap_main(void) { /* For backwards compatibility */ return __real_main(); }
int __wrap_main(void) { return __real_main(); }
int __wrap_main(int argc, char *argv[], char *envp[]) { int c; char *config_file = NULL; char *log_file = NULL; bool daemon = false; while ((c = getopt(argc, argv, "c:dhl:vV")) != -1) { switch (c) { case 'c': config_file = strdup(optarg); break; case 'd': daemon = true; break; case 'h': usage(); _exit(EXIT_SUCCESS); case 'l': log_file = strdup(optarg); break; case 'v': ++verbose; break; case 'V': printf("%s\n", openrelease_version()); _exit(EXIT_SUCCESS); case '?': usage(); _exit(EXIT_FAILURE); default: say_error("unmatched option: -%c", c); _exit(EXIT_FAILURE); } } create_log(log_file); config_init(config_file); if (getenv("OPENRELEASE_STAGE2") == NULL) { if (daemon) { if (daemonize(1, 0) == -1) { say_error("can't daemonize"); _exit(EXIT_FAILURE); } } if (stdio_wrap(config.input, config.output) == -1) { say_error("stdio_wrap failed"); _exit(EXIT_FAILURE); } putenv("OPENRELEASE_STAGE2=1"); execvp(argv[0], argv); } mmaps_init(); symfile_load(config.symfile); wrap_init(); debug_init(); key_action_init(); say_info("dive into RELEASE"); unsetenv("LD_PRELOAD"); argc = 1; if (optind != argc) { memmove(&argv[1], &argv[optind], (optind - argc) * sizeof(argv[0])); argc += optind - argc; } argv[argc] = NULL; __real_main(argc, argv, envp); _exit(EXIT_SUCCESS); return 0; }