Exemplo n.º 1
0
int main(void) {

	elevate_privileges();

	int system_info = ClearStandbyPageList;

	NTSTATUS ret = NtSetSystemInformation(SystemMemoryListInformation, &system_info, sizeof(system_info));

	printf("NtSetSystemInformation() result: %#x (%u)\n", ret, ret);
	return 0;
}
Exemplo n.º 2
0
int main(int argc, char **argv)
{
    int do_fork = 1;
    char *config_fn = DEFAULT_CONFIG_FILE;
    char *pid_fn = DEFAULT_PID_FILE;
    int c;

    evloop = EV_DEFAULT;
    ev_started_at = ev_time();

    opterr = 0;

    while ((c = getopt (argc, argv, "vhdfc:p:s:l:")) != -1) {
	switch (c) {
	case 'v':
	    verbose++;
	    break;
	case 'h':
	    usage(0);
	    return 0;
	case 'd':
	    debug = 1;
	    do_fork = 0;
	    break;
	case 'f':
	    do_fork = 0;
	    break;
	case 'c':
	    config_fn = optarg;
	    break;
	case 'p':
	    pid_fn = optarg;
	    break;
	case 's':
	    server_str_id = strdup(optarg);
	    break;
	case 'l':
	    server_listen_port = atoi(optarg);
	    if (server_listen_port < 1 || server_listen_port > 65534){
		fprintf (stderr, "Invalid listen port: %s.\n", optarg);
		return 1;
	    }
	    break;
	case '?':
	    if ((optopt == 'c') || (optopt == 'p') || (optopt == 's') || (optopt == 'l'))
		fprintf (stderr, "Option -%c requires an argument.\n", optopt);
	    else if (isprint (optopt))
		fprintf (stderr, "Unknown option `-%c'.\n", optopt);
	    else
		fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt);

	    return 1;

	default:
	    usage();
	    return 1;
	}
    }

    if (optind < argc) {
	fprintf (stderr, "Unknown option: %s.\n", argv[optind]);
	return 1;
    }


    rtsp_server = rtsp_alloc();
    if (!rtsp_server){
	return 0;
    }

    log_to_stderr = !do_fork;

    if (!log_to_stderr)
	openlog(PROGRAM_NAME, LOG_PID, LOG_DAEMON);

    if (load_config(config_fn)) {
	fprintf (stderr, "Error loading config file.\n");
	return 2;
    }

    my_random_init();

    if (do_fork){
	log_debug("forking...");
	if (daemon(0, 0)){
	    log_error("daemonize failed: %s", strerror(errno));
	    return -1;
	}
	if (write_pid_file(pid_fn)){
	    log_warning("failed to create pid file");
	}
	ev_loop_fork(evloop);
    }


    if (!do_fork) {
	ev_signal_init (&signal_watcher1, sig_term_cb, SIGINT);
	ev_signal_start (evloop, &signal_watcher1);
    }

    ev_signal_init (&signal_watcher2, sig_term_cb, SIGTERM);
    ev_signal_start (evloop, &signal_watcher2);

    ev_signal_init (&signal_watcher3, sig_ignore_cb, SIGHUP);
    ev_signal_start (evloop, &signal_watcher3);

    ev_signal_init (&signal_watcher4, sig_ignore_cb, SIGPIPE);
    ev_signal_start (evloop, &signal_watcher4);


    if (csconv_init()){
	return 0;
    }
    if (rtsp_init(rtsp_server)){
	csconv_cleanup();
	return 0;
    }

    elevate_privileges();

    setup_io_prio();

    drop_privileges();

    log_info("starting...");

    ev_run(evloop, 0);

    log_info("cleaning up...");

    rtsp_cleanup(rtsp_server);

    csconv_cleanup();

    if (server_str_id)
	free(server_str_id);

    log_info("exiting...");

    if (!log_to_stderr)
	closelog();

    return 0;
}