int main(int argc, char** argv) { // args FILE *outfile, *infile, *layoutfile; char *outfile_path = DEFAULT_OUTPUT_FILE; // sanity check on argument count if (argc < 3) err(ERR_USAGE, false, true); int optchar; while((optchar = getopt(argc, argv, "s:l:o:")) != -1) { switch (optchar) { case 's': // open script file infile = fopen(optarg, "rb"); if (infile == NULL) err(ERR_CANNOT_OPEN_INFILE, true, true); break; case 'l': // open layout file layoutfile = fopen(optarg, "rb"); if (layoutfile == NULL) err(ERR_CANNOT_OPEN_INFILE, true, true); break; case 'o': // get output file path outfile_path = optarg; break; } } // open output file outfile = fopen(outfile_path, "a"); if (outfile == NULL) err(ERR_CANNOT_OPEN_OUTFILE, true, true); // load layout file struct Layout *layout = load_layout(layoutfile); if (layout == NULL) err(ERR_BAD_LAYOUTFILE, false, true); // set layout set_layout(layout); parse(infile, outfile); // free resources destroy_layout(layout); fclose(layoutfile); fclose(infile); fclose(outfile); return EXIT_SUCCESS; }
void FePresent::set_filter_index( int idx ) { int new_offset = idx - get_filter_index(); if ( new_offset != 0 ) { if ( m_feSettings->navigate_filter( new_offset ) ) load_layout(); else update_to_new_list( new_offset ); } }
bool FePresent::reset_screen_saver() { if ( m_feSettings->get_present_state() == FeSettings::ScreenSaver_Showing ) { // Reset from screen saver // load_layout(); return true; } m_lastInput=m_layoutTimer.getElapsedTime(); return false; }
int main(int argc, char *argv[]) { char *pagedir; xymongen_page_t *p; dispsummary_t *s; int i; char *pageset = NULL; char *nssidebarfilename = NULL; char *egocolumn = NULL; char *csvfile = NULL; char csvdelim = ','; int embedded = 0; char *envarea = NULL; int do_normal = 1; int do_nongreen = 1; /* Setup standard header+footer (might be modified by option pageset) */ select_headers_and_footers("std"); xymon_color = nongreen_color = critical_color = -1; pagedir = NULL; init_timestamp(); fqdn = get_fqdn(); /* Setup values from env. vars that may be overridden via command-line options */ if (xgetenv("XYMONPAGECOLREPEAT")) { int i = atoi(xgetenv("XYMONPAGECOLREPEAT")); if (i > 0) maxrowsbeforeheading = i; } for (i = 1; (i < argc); i++) { if ( (strcmp(argv[i], "--hobbitd") == 0) || (argnmatch(argv[i], "--purplelifetime=")) || (strcmp(argv[i], "--nopurple") == 0) ) { /* Deprecated */ } else if (argnmatch(argv[i], "--env=")) { char *lp = strchr(argv[i], '='); loadenv(lp+1, envarea); } else if (argnmatch(argv[i], "--area=")) { char *lp = strchr(argv[i], '='); envarea = strdup(lp+1); } else if (argnmatch(argv[i], "--ignorecolumns=")) { char *lp = strchr(argv[i], '='); ignorecolumns = (char *) malloc(strlen(lp)+2); sprintf(ignorecolumns, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--critical-reds-only") || argnmatch(argv[i], "--nk-reds-only")) { critonlyreds = 1; } else if (argnmatch(argv[i], "--nongreen-ignorecolumns=") || argnmatch(argv[i], "--bb2-ignorecolumns=")) { char *lp = strchr(argv[i], '='); nongreenignorecolumns = (char *) malloc(strlen(lp)+2); sprintf(nongreenignorecolumns, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--nongreen-colors=") || argnmatch(argv[i], "--bb2-colors=")) { char *lp = strchr(argv[i], '=') + 1; nongreencolors = colorset(lp, (1 << COL_GREEN)); } else if (argnmatch(argv[i], "--nongreen-ignorepurples") || argnmatch(argv[i], "--bb2-ignorepurples")) { nongreencolors = (nongreencolors & ~(1 << COL_PURPLE)); } else if (argnmatch(argv[i], "--nongreen-ignoredialups") || argnmatch(argv[i], "--bb2-ignoredialups")) { nongreennodialups = 1; } else if (argnmatch(argv[i], "--includecolumns=")) { char *lp = strchr(argv[i], '='); includecolumns = (char *) malloc(strlen(lp)+2); sprintf(includecolumns, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--eventignore=")) { char *lp = strchr(argv[i], '='); eventignorecolumns = (char *) malloc(strlen(lp)+2); sprintf(eventignorecolumns, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--doccgi=")) { char *lp = strchr(argv[i], '='); char *url = (char *)malloc(strlen(xgetenv("CGIBINURL"))+strlen(lp+1)+2); sprintf(url, "%s/%s", xgetenv("CGIBINURL"), lp+1); setdocurl(url); xfree(url); } else if (argnmatch(argv[i], "--docurl=")) { char *lp = strchr(argv[i], '='); setdocurl(lp+1); } else if (argnmatch(argv[i], "--no-doc-window")) { /* This is a no-op now */ } else if (argnmatch(argv[i], "--doc-window")) { setdoctarget("TARGET=\"_blank\""); } else if (argnmatch(argv[i], "--htmlextension=")) { char *lp = strchr(argv[i], '='); htmlextension = strdup(lp+1); } else if (argnmatch(argv[i], "--htaccess")) { char *lp = strchr(argv[i], '='); if (lp) htaccess = strdup(lp+1); else htaccess = ".htaccess"; } else if ((strcmp(argv[i], "--wml") == 0) || argnmatch(argv[i], "--wml=")) { char *lp = strchr(argv[i], '='); if (lp) { wapcolumns = (char *) malloc(strlen(lp)+2); sprintf(wapcolumns, ",%s,", (lp+1)); } enable_wmlgen = 1; } else if (argnmatch(argv[i], "--nstab=")) { char *lp = strchr(argv[i], '='); if (strlen(lp+1) > 0) { nssidebarfilename = strdup(lp+1); } else errprintf("--nstab requires a filename\n"); } else if (argnmatch(argv[i], "--nslimit=")) { char *lp = strchr(argv[i], '='); nssidebarcolorlimit = parse_color(lp+1); } else if (argnmatch(argv[i], "--rssversion=")) { char *lp = strchr(argv[i], '='); rssversion = strdup(lp+1); } else if (argnmatch(argv[i], "--rsslimit=")) { char *lp = strchr(argv[i], '='); rsscolorlimit = parse_color(lp+1); } else if (argnmatch(argv[i], "--rss")) { wantrss = 1; } else if (argnmatch(argv[i], "--rssextension=")) { char *lp = strchr(argv[i], '='); rssextension = strdup(lp+1); } else if (argnmatch(argv[i], "--reportopts=")) { char style[MAX_LINE_LEN]; unsigned int rstart, rend; int count = sscanf(argv[i], "--reportopts=%u:%u:%d:%s", &rstart, &rend, &dynamicreport, style); reportstart = rstart; reportend = rend; if (count < 2) { errprintf("Invalid --reportopts option: Must have start- and end-times\n"); return 1; } if (count < 3) dynamicreport = 1; if (count == 4) { if (strcmp(style, stylenames[STYLE_CRIT]) == 0) reportstyle = STYLE_CRIT; else if (strcmp(style, stylenames[STYLE_NONGR]) == 0) reportstyle = STYLE_NONGR; else reportstyle = STYLE_OTHER; } if (reportstart < 788918400) reportstart = 788918400; if (reportend > getcurrenttime(NULL)) reportend = getcurrenttime(NULL); if (xgetenv("XYMONREPWARN")) reportwarnlevel = atof(xgetenv("XYMONREPWARN")); if (xgetenv("XYMONREPGREEN")) reportgreenlevel = atof(xgetenv("XYMONREPGREEN")); if ((reportwarnlevel < 0.0) || (reportwarnlevel > 100.0)) reportwarnlevel = 97.0; if ((reportgreenlevel < 0.0) || (reportgreenlevel > 100.0)) reportgreenlevel = 99.995; select_headers_and_footers("rep"); sethostenv_report(reportstart, reportend, reportwarnlevel, reportgreenlevel); } else if (argnmatch(argv[i], "--csv=")) { char *lp = strchr(argv[i], '='); csvfile = strdup(lp+1); } else if (argnmatch(argv[i], "--csvdelim=")) { char *lp = strchr(argv[i], '='); csvdelim = *(lp+1); } else if (argnmatch(argv[i], "--snapshot=")) { char *lp = strchr(argv[i], '='); snapshot = atol(lp+1); select_headers_and_footers("snap"); sethostenv_snapshot(snapshot); } else if (strcmp(argv[i], "--pages-first") == 0) { hostsbeforepages = 0; } else if (strcmp(argv[i], "--pages-last") == 0) { hostsbeforepages = 1; } else if (argnmatch(argv[i], "--subpagecolumns=")) { char *lp = strchr(argv[i], '='); subpagecolumns = atoi(lp+1); if (subpagecolumns < 1) subpagecolumns=1; } else if (argnmatch(argv[i], "--maxrows=")) { char *lp = strchr(argv[i], '='); maxrowsbeforeheading = atoi(lp+1); if (maxrowsbeforeheading < 0) maxrowsbeforeheading=0; } else if (strcmp(argv[i], "--recentgifs") == 0) { use_recentgifs = 1; } else if (argnmatch(argv[i], "--recentgifs=")) { char *lp = strchr(argv[i], '='); use_recentgifs = 1; recentgif_limit = 60*durationvalue(lp+1); } else if (strcmp(argv[i], "--sort-group-only-items") == 0) { sort_grouponly_items = 1; } else if (argnmatch(argv[i], "--page-title=")) { char *lp = strchr(argv[i], '='); defaultpagetitle = strdup(lp+1); } else if (argnmatch(argv[i], "--dialupskin=")) { char *lp = strchr(argv[i], '='); dialupskin = strdup(lp+1); } else if (argnmatch(argv[i], "--reverseskin=")) { char *lp = strchr(argv[i], '='); reverseskin = strdup(lp+1); } else if (strcmp(argv[i], "--pagetitle-links") == 0) { pagetitlelinks = 1; } else if (strcmp(argv[i], "--pagetext-headings") == 0) { pagetextheadings = 1; } else if (strcmp(argv[i], "--underline-headings") == 0) { underlineheadings = 1; } else if (strcmp(argv[i], "--no-underline-headings") == 0) { underlineheadings = 0; } else if (strcmp(argv[i], "--no-eventlog") == 0) { nongreeneventlog = 0; } else if (argnmatch(argv[i], "--max-eventcount=")) { char *lp = strchr(argv[i], '='); nongreeneventlogmaxcount = atoi(lp+1); } else if (argnmatch(argv[i], "--max-eventtime=")) { char *lp = strchr(argv[i], '='); nongreeneventlogmaxtime = atoi(lp+1); } else if (argnmatch(argv[i], "--max-ackcount=")) { char *lp = strchr(argv[i], '='); nongreenacklogmaxcount = atoi(lp+1); } else if (argnmatch(argv[i], "--max-acktime=")) { char *lp = strchr(argv[i], '='); nongreenacklogmaxtime = atoi(lp+1); } else if (strcmp(argv[i], "--no-acklog") == 0) { nongreenacklog = 0; } else if (strcmp(argv[i], "--no-pages") == 0) { do_normal = 0; } else if ((strcmp(argv[i], "--no-nongreen") == 0) || (strcmp(argv[i], "--no-bb2") == 0)) { do_nongreen = 0; } else if (argnmatch(argv[i], "--noprop=")) { char *lp = strchr(argv[i], '='); nopropyellowdefault = (char *) malloc(strlen(lp)+2); sprintf(nopropyellowdefault, ",%s,", (lp+1)); errprintf("--noprop is deprecated - use --nopropyellow instead\n"); } else if (argnmatch(argv[i], "--nopropyellow=")) { char *lp = strchr(argv[i], '='); nopropyellowdefault = (char *) malloc(strlen(lp)+2); sprintf(nopropyellowdefault, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--nopropred=")) { char *lp = strchr(argv[i], '='); nopropreddefault = (char *) malloc(strlen(lp)+2); sprintf(nopropreddefault, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--noproppurple=")) { char *lp = strchr(argv[i], '='); noproppurpledefault = (char *) malloc(strlen(lp)+2); sprintf(noproppurpledefault, ",%s,", (lp+1)); } else if (argnmatch(argv[i], "--nopropack=")) { char *lp = strchr(argv[i], '='); nopropackdefault = (char *) malloc(strlen(lp)+2); sprintf(nopropackdefault, ",%s,", (lp+1)); } else if (strcmp(argv[i], "--bbpageONLY") == 0) { /* Deprecated */ errprintf("--bbpageONLY is deprecated - use --pageset=NAME to generate pagesets\n"); } else if (strcmp(argv[i], "--embedded") == 0) { embedded = 1; } else if (argnmatch(argv[i], "--pageset=")) { char *lp = strchr(argv[i], '='); pageset = strdup(lp+1); } else if (argnmatch(argv[i], "--template=")) { char *lp = strchr(argv[i], '='); lp++; select_headers_and_footers(lp); } else if (argnmatch(argv[i], "--tooltips=")) { char *lp = strchr(argv[i], '='); lp++; if (strcmp(lp, "always") == 0) tooltipuse = TT_ALWAYS; else if (strcmp(lp, "never") == 0) tooltipuse = TT_NEVER; else tooltipuse = TT_STDONLY; } else if (argnmatch(argv[i], "--purplelog=")) { char *lp = strchr(argv[i], '='); if (*(lp+1) == '/') purplelogfn = strdup(lp+1); else { purplelogfn = (char *) malloc(strlen(xgetenv("XYMONHOME"))+1+strlen(lp+1)+1); sprintf(purplelogfn, "%s/%s", xgetenv("XYMONHOME"), (lp+1)); } } else if (argnmatch(argv[i], "--report=") || (strcmp(argv[i], "--report") == 0)) { char *lp = strchr(argv[i], '='); if (lp) { egocolumn = strdup(lp+1); } else egocolumn = "xymongen"; timing = 1; } else if ( argnmatch(argv[i], "--criticallog=") || (strcmp(argv[i], "--criticallog") == 0) || argnmatch(argv[i], "--nklog=") || (strcmp(argv[i], "--nklog") == 0) ){ char *lp = strchr(argv[i], '='); if (lp) { logcritstatus = strdup(lp+1); } else logcritstatus = "critical"; } else if (strcmp(argv[i], "--timing") == 0) { timing = 1; } else if (strcmp(argv[i], "--debug") == 0) { debug = 1; } else if (strcmp(argv[i], "--no-update") == 0) { dontsendmessages = 1; } else if (strcmp(argv[i], "--loadhostsfromxymond") == 0) { loadhostsfromxymond = 1; } else if (strcmp(argv[i], "--version") == 0) { printf("xymongen version %s\n", VERSION); printf("\n"); exit(0); } else if ((strcmp(argv[i], "--help") == 0) || (strcmp(argv[i], "-?") == 0)) { printf("xymongen for Xymon version %s\n\n", VERSION); printf("Usage: %s [options] [WebpageDirectory]\n", argv[0]); printf("Options:\n"); printf(" --ignorecolumns=test[,test] : Completely ignore these columns\n"); printf(" --critical-reds-only : Only show red statuses on the Critical page\n"); printf(" --nongreen-ignorecolumns=test[,test]: Ignore these columns for the non-green page\n"); printf(" --nongreen-ignorepurples : Ignore all-purple hosts on non-green page\n"); printf(" --includecolumns=test[,test]: Always include these columns on non-green page\n"); printf(" --max-eventcount=N : Max number of events to include in eventlog\n"); printf(" --max-eventtime=N : Show events that occurred within the last N minutes\n"); printf(" --eventignore=test[,test] : Columns to ignore in non-green event-log display\n"); printf(" --no-eventlog : Do not generate the non-green eventlog display\n"); printf(" --no-acklog : Do not generate the non-green ack-log display\n"); printf(" --no-pages : Generate only the nongreen and critical pages\n"); printf(" --docurl=documentation-URL : Hostnames link to a general (dynamic) web page for docs\n"); printf(" --doc-window : Open doc-links in a new browser window\n"); printf(" --htmlextension=.EXT : Sets filename extension for generated file (default: .html\n"); printf(" --report[=COLUMNNAME] : Send a status report about the running of xymongen\n"); printf(" --reportopts=ST:END:DYN:STL : Run in Xymon Reporting mode\n"); printf(" --csv=FILENAME : For Xymon Reporting, output CSV file\n"); printf(" --csvdelim=CHARACTER : Delimiter in CSV file output (default: comma)\n"); printf(" --snapshot=TIME : Snapshot mode\n"); printf("\nPage layout options:\n"); printf(" --pages-first : Put page- and subpage-links before hosts (default)\n"); printf(" --pages-last : Put page- and subpage-links after hosts\n"); printf(" --subpagecolumns=N : Number of columns for links to pages and subpages\n"); printf(" --maxrows=N : Repeat column headings for every N hosts shown\n"); printf(" --recentgifs : Use xxx-recent.gif icons for newly changed tests\n"); printf(" --sort-group-only-items : Display group-only items in alphabetical order\n"); printf(" --page-title=TITLE : Set a default page title for all pages\n"); printf(" --dialupskin=URL : Use a different icon skin for dialup tests\n"); printf(" --reverseskin=URL : Use a different icon skin for reverse tests\n"); printf(" --pagetitle-links : Make page- and subpage-titles act as links\n"); printf(" --pagetext-headings : Use page texts as headings\n"); printf(" --no-underline-headings : Do not underline the page headings\n"); printf("\nStatus propagation control options:\n"); printf(" --noprop=test[,test] : Disable upwards status propagation when YELLOW\n"); printf(" --nopropred=test[,test] : Disable upwards status propagation when RED or YELLOW\n"); printf(" --noproppurple=test[,test] : Disable upwards status propagation when PURPLE\n"); printf("\nAlternate pageset generation support:\n"); printf(" --pageset=SETNAME : Generate non-standard pageset with tag SETNAME\n"); printf(" --template=TEMPLATE : template for header and footer files\n"); printf("\nAlternate output formats:\n"); printf(" --wml[=test1,test2,...] : Generate a small (All nongreen-style) WML page\n"); printf(" --nstab=FILENAME : Generate a Netscape Sidebar feed\n"); printf(" --nslimit=COLOR : Minimum color to include on Netscape sidebar\n"); printf(" --rss : Generate a RSS/RDF feed of alerts\n"); printf(" --rssextension=.EXT : Sets filename extension for RSS files (default: .rss\n"); printf(" --rssversion={0.91|0.92|1.0|2.0} : Specify RSS/RDF version (default: 0.91)\n"); printf(" --rsslimit=COLOR : Minimum color to include on RSS feed\n"); printf("\nDebugging/troubleshooting options:\n"); printf(" --timing : Collect timing information\n"); printf(" --debug : Debugging information\n"); printf(" --version : Show version information\n"); printf(" --purplelog=FILENAME : Create a log of purple hosts and tests\n"); exit(0); } else if (argnmatch(argv[i], "-")) { errprintf("Unknown option : %s\n", argv[i]); } else { /* Last argument is pagedir */ pagedir = strdup(argv[i]); } } /* In case they changed the name of our column ... */ if (egocolumn) setup_signalhandler(egocolumn); if (debug) { int i; printf("Command: xymongen"); for (i=1; (i<argc); i++) printf(" '%s'", argv[i]); printf("\n"); printf("Environment HOSTSCFG='%s'\n", textornull(xgetenv("HOSTSCFG"))); printf("\n"); } add_timestamp("Startup"); /* Check that all needed environment vars are defined */ envcheck(reqenv); /* Catch a SEGV fault */ setup_signalhandler("xymongen"); /* Set umask to 0022 so that the generated HTML pages have world-read access */ umask(0022); if (pagedir == NULL) { if (xgetenv("XYMONWWWDIR")) { pagedir = strdup(xgetenv("XYMONWWWDIR")); } else { pagedir = (char *) malloc(strlen(xgetenv("XYMONHOME"))+5); sprintf(pagedir, "%s/www", xgetenv("XYMONHOME")); } } if (xgetenv("XYMONHTACCESS")) xymonhtaccess = strdup(xgetenv("XYMONHTACCESS")); if (xgetenv("XYMONPAGEHTACCESS")) xymonpagehtaccess = strdup(xgetenv("XYMONPAGEHTACCESS")); if (xgetenv("XYMONSUBPAGEHTACCESS")) xymonsubpagehtaccess = strdup(xgetenv("XYMONSUBPAGEHTACCESS")); /* * When doing embedded- or snapshot-pages, dont build the WML/RSS pages. */ if (embedded || snapshot) enable_wmlgen = wantrss = 0; if (embedded) { egocolumn = htaccess = NULL; /* * Need to have default SIGPIPE handling when doing embedded stuff. * We are probably run from a CGI script or something similar. */ signal(SIGPIPE, SIG_DFL); } /* Load all data from the various files */ load_all_links(); add_timestamp("Load links done"); pagehead = load_layout(pageset); add_timestamp("Load hosts.cfg done"); if (!embedded) { /* Remove old acknowledgements */ delete_old_acks(); add_timestamp("ACK removal done"); } statehead = load_state(&dispsums); if (statehead == NULL) { errprintf("Failed to load current Xymon status, aborting page-update\n"); return 0; } if (embedded || snapshot) dispsums = NULL; add_timestamp("Load STATE done"); /* Calculate colors of hosts and pages */ calc_hostcolors(nongreenignorecolumns); calc_pagecolors(pagehead); /* Topmost page (background color for xymon.html) */ for (p=pagehead; (p); p = p->next) { if (p->color > pagehead->color) pagehead->color = p->color; } xymon_color = pagehead->color; if (xgetenv("SUMMARY_SET_BKG") && (strcmp(xgetenv("SUMMARY_SET_BKG"), "TRUE") == 0)) { /* * Displayed summaries affect the Xymon page only, * but should not go into the color we report to * others. */ for (s=dispsums; (s); s = s->next) { if (s->color > pagehead->color) pagehead->color = s->color; } } add_timestamp("Color calculation done"); if (debug) dumpall(pagehead); /* Generate pages */ if (chdir(pagedir) != 0) { errprintf("Cannot change to webpage directory %s\n", pagedir); exit(1); } if (embedded) { /* Just generate that one page */ do_one_page(pagehead, NULL, 1); return 0; } /* The main page - xymon.html and pages/subpages thereunder */ add_timestamp("Xymon pagegen start"); if (reportstart && csvfile) { csv_availability(csvfile, csvdelim); } if (do_normal) { do_page_with_subs(pagehead, dispsums); } add_timestamp("Xymon pagegen done"); if (reportstart) { /* Reports end here */ return 0; } /* The full summary page - nongreen.html */ if (do_nongreen) { nongreen_color = do_nongreen_page(nssidebarfilename, PAGE_NONGREEN, "nongreen"); nongreencolors = (nongreencolors & ~(1 << COL_YELLOW)); nongreencolors = (nongreencolors & ~(1 << COL_PURPLE)); nongreen_color = do_nongreen_page(nssidebarfilename, PAGE_NONGREEN, "red"); add_timestamp("Non-green page generation done"); } /* Reduced summary (alerts) page - critical.html */ critical_color = do_nongreen_page(NULL, PAGE_CRITICAL, "critical"); add_timestamp("Critical page generation done"); if (snapshot) { /* Snapshots end here */ return 0; } /* Send summary notices - only once, so not on pagesets */ if (pageset == NULL) { send_summaries(sumhead); add_timestamp("Summary transmission done"); } /* Generate WML cards */ if (enable_wmlgen) { do_wml_cards(pagedir); add_timestamp("WML generation done"); } /* Need to do this before sending in our report */ add_timestamp("Run completed"); /* Tell about us */ if (egocolumn) { char msgline[4096]; char *timestamps; long tasksleep = (xgetenv("TASKSLEEP") ? atol(xgetenv("TASKSLEEP")) : 300); int usebackfeedqueue, color; /* Go yellow if it runs for too long */ if (total_runtime() > tasksleep) { errprintf("WARNING: Runtime %ld longer than TASKSLEEP (%ld)\n", total_runtime(), tasksleep); } color = (errbuf ? COL_YELLOW : COL_GREEN); usebackfeedqueue = (sendmessage_init_local() > 0); if (usebackfeedqueue) combo_start_local(); else combo_start(); init_status(color); sprintf(msgline, "status %s.%s %s %s - xymongen completed in %lds\n\n", xgetenv("MACHINE"), egocolumn, colorname(color), timestamp, total_runtime()); addtostatus(msgline); sprintf(msgline, "xymongen for Xymon version %s\n", VERSION); addtostatus(msgline); addtostatus("\nStatistics:\n"); sprintf(msgline, " Hosts : %5d\n", hostcount); addtostatus(msgline); sprintf(msgline, " Pages : %5d\n", pagecount); addtostatus(msgline); sprintf(msgline, " Status messages : %5d\n", statuscount); addtostatus(msgline); sprintf(msgline, " - Red : %5d (%5.2f %%)\n", colorcount[COL_RED], ((100.0 * colorcount[COL_RED]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Red (non-propagating) : %5d (%5.2f %%)\n", colorcount_noprop[COL_RED], ((100.0 * colorcount_noprop[COL_RED]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Yellow : %5d (%5.2f %%)\n", colorcount[COL_YELLOW], ((100.0 * colorcount[COL_YELLOW]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Yellow (non-propagating) : %5d (%5.2f %%)\n", colorcount_noprop[COL_YELLOW], ((100.0 * colorcount_noprop[COL_YELLOW]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Clear : %5d (%5.2f %%)\n", colorcount[COL_CLEAR], ((100.0 * colorcount[COL_CLEAR]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Green : %5d (%5.2f %%)\n", colorcount[COL_GREEN], ((100.0 * colorcount[COL_GREEN]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Purple : %5d (%5.2f %%)\n", colorcount[COL_PURPLE], ((100.0 * colorcount[COL_PURPLE]) / statuscount)); addtostatus(msgline); sprintf(msgline, " - Blue : %5d (%5.2f %%)\n", colorcount[COL_BLUE], ((100.0 * colorcount[COL_BLUE]) / statuscount)); addtostatus(msgline); if (errbuf) { addtostatus("\n\nError output:\n"); addtostatus(errbuf); } show_timestamps(×tamps); addtostatus(timestamps); finish_status(); combo_end(); if (usebackfeedqueue) sendmessage_finish_local(); } else show_timestamps(NULL); return 0; }
void load_setup (void) { static char *buffer; char *profile; char *inifile; int i; #ifdef USE_NETCODE extern char *ftpfs_proxy_host; #endif buffer = concat_dir_and_file (home_dir, PROFILE_NAME); inifile = concat_dir_and_file (mc_home, "mc.ini"); if (exist_file (buffer)){ profile = buffer; } else if (exist_file (inifile)){ profile = strdup (inifile); free (buffer); } else { profile = buffer; } free (inifile); profile_name = profile; /* Load integer boolean options */ for (i = 0; options [i].opt_name; i++) *options [i].opt_addr = get_int (profile, options [i].opt_name, *options [i].opt_addr); load_layout (profile); load_panelize (); startup_left_mode = load_mode ("New Left Panel"); startup_right_mode = load_mode ("New Right Panel"); /* At least one of the panels is a listing panel */ if (startup_left_mode != view_listing && startup_right_mode!=view_listing) startup_left_mode = view_listing; if (!other_dir){ buffer = (char*) malloc (MC_MAXPATHLEN); load_string ("Dirs", "other_dir", ".", buffer, MC_MAXPATHLEN); if (vfs_file_is_local (buffer)) other_dir = buffer; else free (buffer); } #ifdef USE_NETCODE ftpfs_proxy_host = do_load_string ("Misc", "ftp_proxy_host", "gate"); #endif boot_current_is_left = GetPrivateProfileInt ("Dirs", "current_is_left", 1, profile); load_string ("Misc", "find_ignore_dirs", "", setup_color_string, sizeof (setup_color_string)); if (setup_color_string [0]) find_ignore_dirs = copy_strings (":", setup_color_string, ":", 0); /* The default color and the terminal dependent color */ load_string ("Colors", "base_color", "", setup_color_string, sizeof (setup_color_string)); load_string ("Colors", getenv ("TERM"), "", term_color_string, sizeof (term_color_string)); load_string ("Colors", "color_terminals", "", color_terminal_string, sizeof (color_terminal_string)); /* Load the directory history */ /* directory_history_load (); */ /* Remove the temporal entries */ profile_clean_section ("Temporal:New Left Panel", profile_name); profile_clean_section ("Temporal:New Right Panel", profile_name); #ifdef USE_VFS #ifdef USE_NETCODE ftpfs_init_passwd (); #endif #endif }
void load_setup (void) { const char *profile; size_t i; const char *kt; #ifdef HAVE_CHARSET char *buffer; load_codepages_list (); #endif /* HAVE_CHARSET */ profile = setup_init (); /* mc.lib is common for all users, but has priority lower than ${XDG_CONFIG_HOME}/mc/ini. FIXME: it's only used for keys and treestore now */ global_profile_name = g_build_filename (mc_global.sysconfig_dir, MC_GLOBAL_CONFIG_FILE, (char *) NULL); if (!exist_file (global_profile_name)) { g_free (global_profile_name); global_profile_name = g_build_filename (mc_global.share_data_dir, MC_GLOBAL_CONFIG_FILE, (char *) NULL); } panels_profile_name = mc_config_get_full_path (MC_PANELS_FILE); mc_main_config = mc_config_init (profile, FALSE); if (!exist_file (panels_profile_name)) setup__move_panels_config_into_separate_file (profile); mc_panels_config = mc_config_init (panels_profile_name, FALSE); /* Load integer boolean options */ for (i = 0; int_options[i].opt_name != NULL; i++) *int_options[i].opt_addr = mc_config_get_int (mc_main_config, CONFIG_APP_SECTION, int_options[i].opt_name, *int_options[i].opt_addr); #ifndef USE_INTERNAL_EDIT /* reset forced in case of build without internal editor */ use_internal_edit = 0; #endif /* USE_INTERNAL_EDIT */ if (option_tab_spacing <= 0) option_tab_spacing = DEFAULT_TAB_SPACING; #ifdef USE_INTERNAL_EDIT if (option_word_wrap_line_length <= 0) option_word_wrap_line_length = DEFAULT_WRAP_LINE_LENGTH; #endif /* USE_INTERNAL_EDIT */ /* overwrite old_esc_mode_timeout */ kt = getenv ("KEYBOARD_KEY_TIMEOUT_US"); if ((kt != NULL) && (kt[0] != '\0')) old_esc_mode_timeout = atoi (kt); /* Load string options */ for (i = 0; str_options[i].opt_name != NULL; i++) *str_options[i].opt_addr = mc_config_get_string (mc_main_config, CONFIG_APP_SECTION, str_options[i].opt_name, str_options[i].opt_defval); load_layout (); panels_load_options (); load_panelize (); startup_left_mode = setup__load_panel_state ("New Left Panel"); startup_right_mode = setup__load_panel_state ("New Right Panel"); /* At least one of the panels is a listing panel */ if (startup_left_mode != view_listing && startup_right_mode != view_listing) startup_left_mode = view_listing; boot_current_is_left = mc_config_get_bool (mc_panels_config, "Dirs", "current_is_left", TRUE); /* Load time formats */ user_recent_timeformat = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "timeformat_recent", FMTTIME); user_old_timeformat = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "timeformat_old", FMTYEAR); #ifdef ENABLE_VFS_FTP ftpfs_proxy_host = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "ftp_proxy_host", "gate"); ftpfs_ignore_chattr_errors = mc_config_get_bool (mc_main_config, CONFIG_APP_SECTION, "ignore_ftp_chattr_errors", TRUE); ftpfs_init_passwd (); #endif /* ENABLE_VFS_FTP */ /* The default color and the terminal dependent color */ mc_global.tty.setup_color_string = mc_config_get_string (mc_main_config, "Colors", "base_color", ""); mc_global.tty.term_color_string = mc_config_get_string (mc_main_config, "Colors", getenv ("TERM"), ""); mc_global.tty.color_terminal_string = mc_config_get_string (mc_main_config, "Colors", "color_terminals", ""); /* Load the directory history */ /* directory_history_load (); */ /* Remove the temporal entries */ #ifdef HAVE_CHARSET if (codepages->len > 1) { buffer = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "display_codepage", ""); if (buffer[0] != '\0') { mc_global.display_codepage = get_codepage_index (buffer); cp_display = get_codepage_id (mc_global.display_codepage); } g_free (buffer); buffer = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "source_codepage", ""); if (buffer[0] != '\0') { default_source_codepage = get_codepage_index (buffer); mc_global.source_codepage = default_source_codepage; /* May be source_codepage doesn't need this */ cp_source = get_codepage_id (mc_global.source_codepage); } g_free (buffer); } autodetect_codeset = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "autodetect_codeset", ""); if ((autodetect_codeset[0] != '\0') && (strcmp (autodetect_codeset, "off") != 0)) is_autodetect_codeset_enabled = TRUE; g_free (init_translation_table (mc_global.source_codepage, mc_global.display_codepage)); buffer = (char *) get_codepage_id (mc_global.display_codepage); if (buffer != NULL) mc_global.utf8_display = str_isutf8 (buffer); #endif /* HAVE_CHARSET */ #ifdef HAVE_ASPELL spell_language = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "spell_language", "en"); #endif /* HAVE_ASPELL */ clipboard_store_path = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "clipboard_store", ""); clipboard_paste_path = mc_config_get_string (mc_main_config, CONFIG_MISC_SECTION, "clipboard_paste", ""); }
bool FePresent::handle_event( FeInputMap::Command c ) { if ( reset_screen_saver() ) return true; switch( c ) { case FeInputMap::Down: change_selection( 1, false ); break; case FeInputMap::Up: change_selection( -1, false ); break; case FeInputMap::PageDown: change_selection( get_page_size(), false ); break; case FeInputMap::PageUp: change_selection( -get_page_size(), false ); break; case FeInputMap::RandomGame: { int ls = m_feSettings->get_filter_size( m_feSettings->get_current_filter_index() ); if ( ls > 0 ) { int step = rand() % ls; if ( step != 0 ) change_selection( step ); } } break; case FeInputMap::ToggleRotateRight: toggle_rotate( FeSettings::RotateRight ); break; case FeInputMap::ToggleFlip: toggle_rotate( FeSettings::RotateFlip ); break; case FeInputMap::ToggleRotateLeft: toggle_rotate( FeSettings::RotateLeft ); break; case FeInputMap::ToggleMovie: toggle_movie(); break; case FeInputMap::NextDisplay: case FeInputMap::PrevDisplay: if ( m_feSettings->navigate_display( ( c == FeInputMap::NextDisplay ) ? 1 : -1 ) ) load_layout(); else update_to_new_list( 0, true ); break; case FeInputMap::NextFilter: case FeInputMap::PrevFilter: { int offset = ( c == FeInputMap::NextFilter ) ? 1 : -1; if ( m_feSettings->navigate_filter( offset ) ) load_layout(); else update_to_new_list( offset ); } break; case FeInputMap::ToggleLayout: m_feSettings->toggle_layout(); load_layout(); break; case FeInputMap::PrevFavourite: case FeInputMap::NextFavourite: case FeInputMap::PrevLetter: case FeInputMap::NextLetter: { int step( 0 ); switch ( c ) { case FeInputMap::PrevFavourite: step = m_feSettings->get_prev_fav_offset(); break; case FeInputMap::NextFavourite: step = m_feSettings->get_next_fav_offset(); break; case FeInputMap::PrevLetter: step = m_feSettings->get_next_letter_offset( -1 ); break; case FeInputMap::NextLetter: step = m_feSettings->get_next_letter_offset( 1 ); break; default: break; } if ( step != 0 ) change_selection( step, false ); } break; case FeInputMap::ScreenSaver: load_screensaver(); break; case FeInputMap::Intro: if ( !load_intro() ) load_layout(); break; case FeInputMap::LAST_COMMAND: default: // Not handled by us, return false so calling function knows // return false; } return true; }
int load_layout(const char *layout_path, layout * cur_layout) { int i, err = 0; char *ver, *ver_sys; size_t nodes_size = 0; xmlDocPtr doc = NULL; xmlNodePtr node = NULL; if(layout_path == NULL || cur_layout == NULL) return -1; if(access(layout_path, F_OK)) { ALOGE("Can't find %s\n", layout_path); return -1; } doc = xmlReadFile(layout_path, "UTF-8", XML_PARSE_RECOVER); if(doc == NULL) { ALOGE("%s parse failed\n", layout_path); return -1; } node = xmlDocGetRootElement(doc); if(node == NULL) { ALOGE("%s empty\n", layout_path); xmlFreeDoc(doc); return -1; } if(xmlStrcmp(node->name, (const xmlChar *) "layout")) { ALOGE("%s not a layout xml\n", layout_path); xmlFreeDoc(doc); return -1; } node = node->xmlChildrenNode; while(node != NULL) { // parse button attr if(!xmlStrcmp(node->name, (const xmlChar *) "button")) { button *btn = new button(); parse_button(node, btn); cur_layout->add_button_locked(btn); } else if(!xmlStrcmp(node->name, (const xmlChar *) "textview")) { textview *tv = new textview(); parse_textview(node, tv); cur_layout->add_textview_locked(tv); } else if(!xmlStrcmp(node->name, (const xmlChar *) "listview")) { listview *view = new listview(); parse_listview(node, view); cur_layout->add_listview_locked(view); } else if(!xmlStrcmp(node->name, (const xmlChar *) "include")) { char xml_path[128] = { 0 }; char *str = (char *) xmlGetProp(node, (const xmlChar *) "layout"); if(str != NULL) { snprintf(xml_path, sizeof(xml_path), "%s%s", MMI_LAYOUT_BASE_DIR, str); load_layout(xml_path, cur_layout); } } node = node->next; } xmlFreeDoc(doc); xmlCleanupParser(); return 0; }