void bye(void) { /* Force my personal prejudices upon the poor luser */ if (LOG_ENABLED) fprintf(log_fp, "Cleanup & exit\n"); default_level(); /* Enter ANSI mode (if in VT52 mode) */ decckm(FALSE); /* cursor keys normal */ deccolm(FALSE); /* 80 col mode */ decscnm(FALSE); /* Normal screen */ decom(FALSE); /* Absolute origin mode */ decawm(TRUE); /* Wrap around on */ decarm(TRUE); /* Auto repeat on */ decstbm(0, 0); /* No scroll region */ sgr("0"); /* Normal character attributes */ /* Say goodbye */ vt_clear(2); vt_move(12, 30); printf("That's all, folks!\n"); printf("\n\n\n"); inflush(); close_tty(); exit(EXIT_SUCCESS); }
/* Set up my personal prejudices */ int setup_terminal(MENU_ARGS) { if (LOG_ENABLED) fprintf(log_fp, "Setup Terminal with test-defaults\n"); default_level(); /* Enter ANSI mode (if in VT52 mode) */ decckm(FALSE); /* cursor keys normal */ deccolm(FALSE); /* 80 col mode */ decsclm(FALSE); /* Jump scroll */ decscnm(FALSE); /* Normal screen */ decom(FALSE); /* Absolute origin mode */ decawm(TRUE); /* Wrap around on */ decarm(FALSE); /* Auto repeat off */ sm("?40"); /* Enable 80/132 switch (xterm) */ rm("?45"); /* Disable reverse wrap (xterm) */ decstbm(0, 0); /* No scroll region */ sgr("0"); /* Normal character attributes */ return MENU_NOHOLD; }
std::vector<Pattern> get_patterns(std::string const& envvar) { std::vector<std::string> patterns; boost::algorithm::split( patterns, envvar, boost::algorithm::is_any_of(","), boost::algorithm::token_compress_on ); std::vector<Pattern> res; for (auto& pattern: patterns) { boost::algorithm::trim(pattern); std::vector<std::string> parts; boost::algorithm::split( parts, pattern, boost::algorithm::is_any_of(":"), boost::algorithm::token_compress_on ); if (parts.size() == 0) { detail::log("Ignoring empty log pattern"); continue; } else if (parts.size() > 2) { detail::log("Ignoring invalid log pattern:", "'" + pattern + "'"); continue; } std::string match = parts[0]; Level level = default_level(); if (parts.size() == 2) { try { level = level_from_string(parts[1]); } catch (std::out_of_range const&) { log("Unknown level string", parts[1]); level = default_level(); } } detail::log("match:", match, "level:", level); if (match.size() == 0 || (match.size() == 1 && ( match[0] == '+' || match[0] == '-'))) { detail::log("Invalid match expression:", "'" + match + "'"); continue; } if (match[0] == '+') res.emplace_back( Pattern::add_match, "*" + match.substr(1) + "*", level ); else if (match[0] == '-') res.emplace_back( Pattern::remove_match, "*" + match.substr(1) + "*", level ); else res.emplace_back( Pattern::add_match, "*" + match + "*", level ); } for (auto const& p: res) detail::log("Pattern:", p.level, p.str, p.op); return res; }