Example #1
0
bool area___::expose_evt__(GdkEventExpose* event){
	if(code_.size()>0){
		Glib::RefPtr<Gdk::Window> window=da_->get_window();
		if(window){
			cr_ = window->create_cairo_context();
			if(event){
				cr_->rectangle(event->area.x, event->area.y,
						event->area.width, event->area.height);
				cr_->clip();
			}

#ifdef debug_
			test__();
#else
			char buf[32];
			l2s__((long)this,buf);
			d_(sh_,on_,code_.c_str(),NULL,3,ht_->name__(),"重绘",buf);
#endif
		}
		return true;
	}
	return false;
}
Example #2
0
        -help\n\
\n";


int
faultd_main(int argc, char* argv[])
{
    char** arg;

    char* pidfile = NULL;
    int daemonize = 0;
    int restart = 0;
    int test = 0;
    char* pipename = FAULTD_CONFIG_MAIN_PIPENAME;

    aim_pvs_t* aim_pvs_syslog = NULL;
    faultd_server_t* faultd_server = NULL;
    int sid = -1;


    for(arg = argv+1; *arg; arg++) {
        if(!strcmp(*arg, "-dr")) {
            daemonize=1;
            restart=1;
        }
        else if(!strcmp(*arg, "-d")) {
            daemonize=1;
            restart=0;
        }
        else if(!strcmp(*arg, "-pid")) {
            arg++;
            pidfile = *arg;
            if(!pidfile) {
                fprintf(stderr, "-pid requires an argument.\n");
                exit(1);
            }
        }
        else if(!strcmp(*arg, "-p")) {
            arg++;
            pipename = *arg;
            if(!pipename) {
                fprintf(stderr, "-p requires an argument.\n");
                exit(1);
            }
        }
        else if(!strcmp(*arg, "-t")) {
            test = 1;
        }
        else if(!strcmp(*arg, "-h") || !strcmp(*arg, "--help")) {
            printf(help__, FAULTD_CONFIG_MAIN_PIPENAME);
            exit(0);
        }
    }

    if(test) {
        return test__(argv[0], pipename);
    }

    /**
     * Start Server
     */
    aim_pvs_syslog = aim_pvs_syslog_open("faultd", LOG_PID, LOG_DAEMON);
    aim_printf(aim_pvs_syslog, "faultd starting");
    faultd_server_create(&faultd_server);
    sid = faultd_server_add(faultd_server, pipename);

    if(sid < 0) {
        perror("server_add:");
        abort();
    }

    if(daemonize) {
        aim_daemon_restart_config_t rconfig;
        aim_daemon_config_t config;

        memset(&config, 0, sizeof(config));
        aim_daemon_restart_config_init(&rconfig, 1, 1);
        AIM_BITMAP_CLR(&rconfig.signal_restarts, SIGTERM);
        AIM_BITMAP_CLR(&rconfig.signal_restarts, SIGKILL);
        rconfig.maximum_restarts=0;
        rconfig.pvs = aim_pvs_syslog_get();

        config.wd = "/";
        if(restart) {
            aim_daemonize(&config, &rconfig);
        }
        else {
            aim_daemonize(&config, NULL);
        }
    }

    /*
     * Write our PID file if requested.
     */
    if(pidfile) {
        FILE* fp = fopen(pidfile, "w");
        if(fp == NULL) {
            int e = errno;
            aim_printf(aim_pvs_syslog, "fatal: open(%s): %s\n",
                       pidfile, strerror(e));
            aim_printf(&aim_pvs_stderr, "fatal: open(%s): %s\n",
                       pidfile, strerror(e));

            /* Don't attempt restart */
            raise(SIGTERM);
        }
        fprintf(fp, "%d\n", getpid());
        fclose(fp);
    }

    /**
     * Process Fault Messages
     */
    for(;;) {
        faultd_info_t faultd_info;
        memset(&faultd_info, 0, sizeof(faultd_info));
        if(faultd_server_read(faultd_server, &faultd_info, sid) >= 0) {
            faultd_info_show(&faultd_info, aim_pvs_syslog, 0);
            if(aim_pvs_isatty(&aim_pvs_stderr)) {
                faultd_info_show(&faultd_info, &aim_pvs_stderr, 0);
            }
        }
    }
}