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; }
-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); } } } }