示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
	// 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;
	}
示例#4
0
文件: wrap.c 项目: cmeon/xwax-android
int __wrap_main(int argc, char* argv[])
{
    printf("Wrapped main\n");
    return __real_main(argc, argv);
}
示例#5
0
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);
}
示例#6
0
int __wrap_main(void)
{
    /* For backwards compatibility */
    return __real_main();
}
int __wrap_main(void) {
    return __real_main();
}
示例#8
0
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;
}