[console] syntax highlight some snippets

pull/1006/head
Timothy Stack 2 years ago
parent 64bee48fb0
commit bcc7436f66

@ -398,6 +398,11 @@
"description": "Styling for footnote text",
"title": "/ui/theme-defs/<theme_name>/styles/footnote-text",
"$ref": "#/definitions/style"
},
"snippet-border": {
"description": "Styling for snippet borders",
"title": "/ui/theme-defs/<theme_name>/styles/snippet-border",
"$ref": "#/definitions/style"
}
},
"additionalProperties": false

@ -18,6 +18,7 @@ add_library(
lnav_log.cc
network.tcp.cc
paths.cc
snippet_highlighters.cc
string_attr_type.cc
string_util.cc
strnatcmp.c
@ -50,6 +51,7 @@ add_library(
network.tcp.hh
paths.hh
result.h
snippet_highlighters.hh
string_attr_type.hh
strnatcmp.h
time_util.hh)

@ -50,6 +50,7 @@ noinst_HEADERS = \
opt_util.hh \
paths.hh \
result.h \
snippet_highlighters.hh \
string_attr_type.hh \
string_util.hh \
strnatcmp.h \
@ -73,6 +74,7 @@ libbase_a_SOURCES = \
lnav_log.cc \
network.tcp.cc \
paths.cc \
snippet_highlighters.cc \
string_attr_type.cc \
string_util.cc \
strnatcmp.c \

@ -146,7 +146,7 @@ user_message::to_attr_line(std::set<render_flags> flags) const
for (const auto& snip : this->um_snippets) {
attr_line_t header;
header.append(" --> "_comment)
header.append(" --> "_snippet_border)
.append(lnav::roles::file(snip.s_location.sl_source.get()));
if (snip.s_location.sl_line_number > 0) {
header.append(":").append(FMT_STRING("{}"),
@ -161,7 +161,9 @@ user_message::to_attr_line(std::set<render_flags> flags) const
for (auto& line : snippet_lines) {
line.pad_to(longest_line_length);
retval.append(" | "_comment).append(line).append("\n");
retval.append(" | "_snippet_border)
.append(line)
.append("\n");
}
}
}
@ -173,9 +175,9 @@ user_message::to_attr_line(std::set<render_flags> flags) const
attr_line_t prefix;
if (first_line) {
prefix.append(" ="_comment)
prefix.append(" ="_snippet_border)
.append(indent, ' ')
.append("note"_comment)
.append("note"_snippet_border)
.append(": ");
first_line = false;
} else {
@ -192,9 +194,9 @@ user_message::to_attr_line(std::set<render_flags> flags) const
attr_line_t prefix;
if (first_line) {
prefix.append(" ="_comment)
prefix.append(" ="_snippet_border)
.append(indent, ' ')
.append("help"_comment)
.append("help"_snippet_border)
.append(": ");
first_line = false;
} else {
@ -259,19 +261,23 @@ println(FILE* file, const attr_line_t& al)
nonstd::optional<size_t> last_point;
for (const auto& point : points) {
if (last_point) {
auto default_fg_style = fmt::text_style{};
auto default_bg_style = fmt::text_style{};
auto line_style = fmt::text_style{};
auto fg_style = fmt::text_style{};
auto start = last_point.value();
for (const auto& attr : al.get_attrs()) {
if (!attr.sa_range.contains(start)
&& !attr.sa_range.contains(point - 1)) {
continue;
}
if (!last_point) {
last_point = point;
continue;
}
auto default_fg_style = fmt::text_style{};
auto default_bg_style = fmt::text_style{};
auto line_style = fmt::text_style{};
auto fg_style = fmt::text_style{};
auto start = last_point.value();
for (const auto& attr : al.get_attrs()) {
if (!attr.sa_range.contains(start)
&& !attr.sa_range.contains(point - 1)) {
continue;
}
try {
if (attr.sa_type == &VC_BACKGROUND) {
auto saw = string_attr_wrapper<int64_t>(&attr);
auto color_opt = curses_color_to_terminal_color(saw.get());
@ -286,6 +292,16 @@ println(FILE* file, const attr_line_t& al)
if (color_opt) {
fg_style = fmt::fg(color_opt.value());
}
} else if (attr.sa_type == &VC_STYLE) {
auto saw = string_attr_wrapper<int64_t>(&attr);
auto style = saw.get();
if (style & A_REVERSE) {
line_style |= fmt::emphasis::reverse;
}
if (style & A_BOLD) {
line_style |= fmt::emphasis::bold;
}
} else if (attr.sa_type == &SA_LEVEL) {
auto level = static_cast<log_level_t>(
attr.sa_value.get<int64_t>());
@ -311,9 +327,13 @@ println(FILE* file, const attr_line_t& al)
line_style |= fmt::fg(fmt::terminal_color::red);
break;
case role_t::VCR_WARNING:
case role_t::VCR_RE_REPEAT:
line_style |= fmt::fg(fmt::terminal_color::yellow);
break;
case role_t::VCR_COMMENT:
line_style |= fmt::fg(fmt::terminal_color::green);
break;
case role_t::VCR_SNIPPET_BORDER:
line_style |= fmt::fg(fmt::terminal_color::cyan);
break;
case role_t::VCR_OK:
@ -325,8 +345,9 @@ println(FILE* file, const attr_line_t& al)
| fmt::fg(fmt::terminal_color::magenta);
break;
case role_t::VCR_KEYWORD:
case role_t::VCR_RE_SPECIAL:
line_style |= fmt::emphasis::bold
| fmt::fg(fmt::terminal_color::blue);
| fmt::fg(fmt::terminal_color::cyan);
break;
case role_t::VCR_VARIABLE:
line_style |= fmt::emphasis::underline;
@ -362,28 +383,27 @@ println(FILE* file, const attr_line_t& al)
break;
}
}
} catch (const fmt::format_error& e) {
log_error("style error: %s", e.what());
}
}
if (!line_style.has_foreground() && fg_style.has_foreground()) {
line_style |= fg_style;
}
if (!line_style.has_foreground()
&& default_fg_style.has_foreground()) {
line_style |= default_fg_style;
}
if (!line_style.has_background()
&& default_bg_style.has_background()) {
line_style |= default_bg_style;
}
if (!line_style.has_foreground() && fg_style.has_foreground()) {
line_style |= fg_style;
}
if (!line_style.has_foreground() && default_fg_style.has_foreground()) {
line_style |= default_fg_style;
}
if (!line_style.has_background() && default_bg_style.has_background()) {
line_style |= default_bg_style;
}
if (start < str.size()) {
auto actual_end
= std::min(str.size(), static_cast<size_t>(point));
fmt::print(file,
line_style,
FMT_STRING("{}"),
str.substr(start, actual_end - start));
}
if (start < str.size()) {
auto actual_end = std::min(str.size(), static_cast<size_t>(point));
fmt::print(file,
line_style,
FMT_STRING("{}"),
str.substr(start, actual_end - start));
}
last_point = point;
}

@ -0,0 +1,306 @@
/**
* Copyright (c) 2022, Timothy Stack
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of Timothy Stack nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "snippet_highlighters.hh"
#include "attr_line.builder.hh"
#include "view_curses.hh"
namespace lnav {
namespace snippets {
static bool
is_bracket(const std::string& str, int index, bool is_lit)
{
if (is_lit && str[index - 1] == '\\') {
return true;
}
if (!is_lit && str[index - 1] != '\\') {
return true;
}
return false;
}
static void
find_matching_bracket(
attr_line_t& al, int x, line_range sub, char left, char right)
{
bool is_lit = (left == 'Q');
attr_line_builder alb(al);
const auto& line = al.get_string();
int depth = 0;
if (x < sub.lr_start || x > sub.lr_end) {
return;
}
if (line[x] == right && is_bracket(line, x, is_lit)) {
for (int lpc = x - 1; lpc >= sub.lr_start; lpc--) {
if (line[lpc] == right && is_bracket(line, lpc, is_lit)) {
depth += 1;
} else if (line[lpc] == left && is_bracket(line, lpc, is_lit)) {
if (depth == 0) {
alb.overlay_attr_for_char(
lpc, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr_for_char(lpc,
VC_ROLE.value(role_t::VCR_OK));
break;
}
depth -= 1;
}
}
}
if (line[x] == left && is_bracket(line, x, is_lit)) {
for (size_t lpc = x + 1; lpc < sub.lr_end; lpc++) {
if (line[lpc] == left && is_bracket(line, lpc, is_lit)) {
depth += 1;
} else if (line[lpc] == right && is_bracket(line, lpc, is_lit)) {
if (depth == 0) {
alb.overlay_attr_for_char(
lpc, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr_for_char(lpc,
VC_ROLE.value(role_t::VCR_OK));
break;
}
depth -= 1;
}
}
}
nonstd::optional<int> first_left;
depth = 0;
for (size_t lpc = sub.lr_start; lpc < sub.lr_end; lpc++) {
if (line[lpc] == left && is_bracket(line, lpc, is_lit)) {
depth += 1;
if (!first_left) {
first_left = lpc;
}
} else if (line[lpc] == right && is_bracket(line, lpc, is_lit)) {
if (depth > 0) {
depth -= 1;
} else {
auto lr = line_range(is_lit ? lpc - 1 : lpc, lpc + 1);
alb.overlay_attr(lr, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(lr, VC_ROLE.value(role_t::VCR_ERROR));
}
}
}
if (depth > 0) {
auto lr
= line_range(is_lit ? first_left.value() - 1 : first_left.value(),
first_left.value() + 1);
alb.overlay_attr(lr, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(lr, VC_ROLE.value(role_t::VCR_ERROR));
}
}
static bool
check_re_prev(const std::string& line, int x)
{
bool retval = false;
if ((x > 0 && line[x - 1] != ')' && line[x - 1] != ']' && line[x - 1] != '*'
&& line[x - 1] != '?' && line[x - 1] != '+')
&& (x < 2 || line[x - 2] != '\\'))
{
retval = true;
}
return retval;
}
static char
safe_read(const std::string& str, std::string::size_type index)
{
if (index < str.length()) {
return str.at(index);
}
return 0;
}
void
regex_highlighter(attr_line_t& al, int x, line_range sub)
{
static const char* brackets[] = {
"[]",
"{}",
"()",
"QE",
nullptr,
};
const auto& line = al.get_string();
attr_line_builder alb(al);
bool backslash_is_quoted = false;
for (size_t lpc = sub.lr_start; lpc < sub.lr_end; lpc++) {
if (lpc == 0 || line[lpc - 1] != '\\') {
switch (line[lpc]) {
case '^':
case '$':
case '*':
case '+':
case '|':
case '.':
alb.overlay_attr_for_char(
lpc, VC_ROLE.value(role_t::VCR_RE_SPECIAL));
if ((line[lpc] == '*' || line[lpc] == '+')
&& check_re_prev(line, lpc)) {
alb.overlay_attr_for_char(
lpc - 1, VC_ROLE.value(role_t::VCR_RE_REPEAT));
}
break;
case '?': {
struct line_range lr(lpc, lpc + 1);
if (lpc == sub.lr_start || (lpc - sub.lr_start) == 0) {
alb.overlay_attr_for_char(
lpc, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr_for_char(
lpc, VC_ROLE.value(role_t::VCR_ERROR));
} else if (line[lpc - 1] == '(') {
switch (line[lpc + 1]) {
case ':':
case '!':
case '>':
case '<':
case '#':
lr.lr_end += 1;
break;
}
alb.overlay_attr(lr, VC_ROLE.value(role_t::VCR_OK));
} else {
alb.overlay_attr(lr,
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
if (check_re_prev(line, lpc)) {
alb.overlay_attr_for_char(
lpc - 1, VC_ROLE.value(role_t::VCR_RE_REPEAT));
}
}
break;
}
case '(':
case ')':
case '{':
case '}':
case '[':
case ']':
alb.overlay_attr_for_char(lpc,
VC_ROLE.value(role_t::VCR_OK));
break;
}
}
if (lpc > 0 && line[lpc - 1] == '\\') {
if (backslash_is_quoted) {
backslash_is_quoted = false;
continue;
}
switch (line[lpc]) {
case '\\':
backslash_is_quoted = true;
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
break;
case 'd':
case 'D':
case 'h':
case 'H':
case 'N':
case 'R':
case 's':
case 'S':
case 'v':
case 'V':
case 'w':
case 'W':
case 'X':
case 'A':
case 'b':
case 'B':
case 'G':
case 'Z':
case 'z':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_SYMBOL));
break;
case ' ':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_ERROR));
break;
case '0':
case 'x':
if (safe_read(line, lpc + 1) == '{') {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
} else if (isdigit(safe_read(line, lpc + 1))
&& isdigit(safe_read(line, lpc + 2)))
{
alb.overlay_attr(line_range(lpc - 1, lpc + 3),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
} else {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_ERROR));
}
break;
case 'Q':
case 'E':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_OK));
break;
default:
if (isdigit(line[lpc])) {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
}
break;
}
}
}
for (int lpc = 0; brackets[lpc]; lpc++) {
find_matching_bracket(al, x, sub, brackets[lpc][0], brackets[lpc][1]);
}
}
} // namespace snippets
} // namespace lnav

@ -0,0 +1,43 @@
/**
* Copyright (c) 2022, Timothy Stack
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of Timothy Stack nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef lnav_snippet_highlighters_hh
#define lnav_snippet_highlighters_hh
#include "attr_line.hh"
namespace lnav {
namespace snippets {
void regex_highlighter(attr_line_t& al, int x, line_range sub);
}
} // namespace lnav
#endif

@ -121,6 +121,7 @@ enum class role_t : int32_t {
VCR_QUOTED_TEXT,
VCR_FOOTNOTE_BORDER,
VCR_FOOTNOTE_TEXT,
VCR_SNIPPET_BORDER,
VCR__MAX
};
@ -593,6 +594,13 @@ inline std::pair<std::string, string_attr_pair> operator"" _footnote_text(
VC_ROLE.template value(role_t::VCR_FOOTNOTE_BORDER));
}
inline std::pair<std::string, string_attr_pair> operator"" _snippet_border(
const char* str, std::size_t len)
{
return std::make_pair(std::string(str, len),
VC_ROLE.template value(role_t::VCR_SNIPPET_BORDER));
}
} // namespace literals
} // namespace roles

@ -31,6 +31,7 @@
#include "base/ansi_scrubber.hh"
#include "base/humanize.time.hh"
#include "base/snippet_highlighters.hh"
#include "config.h"
#include "log_format_ext.hh"
#include "log_vtab_impl.hh"
@ -392,7 +393,10 @@ field_overlay_source::build_field_lines(const listview_curses& lv)
pattern_str = " Pattern: " + lf->get_pattern_name(cl) + " = ";
int skip = pattern_str.length();
pattern_str += lf->get_pattern_regex(cl);
readline_regex_highlighter(pattern_al, skip);
lnav::snippets::regex_highlighter(
pattern_al,
pattern_al.length(),
line_range{skip, (int) pattern_al.length()});
this->fos_lines.emplace_back(pattern_al);
}

@ -710,6 +710,13 @@ static const struct json_path_container theme_styles_handlers = {
return &root->lt_style_footnote_text;
})
.with_children(style_config_handlers),
yajlpp::property_handler("snippet-border")
.with_description("Styling for snippet borders")
.with_obj_provider<style_config, lnav_theme>(
[](const yajlpp_provider_context& ypc, lnav_theme* root) {
return &root->lt_style_snippet_border;
})
.with_children(style_config_handlers),
};
static const struct json_path_container theme_syntax_styles_handlers = {

@ -1977,10 +1977,10 @@ external_log_format::build(std::vector<lnav::console::user_message>& errors)
.append(ts, (size_t) ts_len)
.append("\n")
.append(2 + off, ' ')
.append("^ "_comment)
.append("^ "_snippet_border)
.append_quoted(
lnav::roles::symbol(PTIMEC_FORMATS[lpc].pf_fmt))
.append(" matched up to here"_comment);
.append(" matched up to here"_snippet_border);
}
} else {
notes.append("the following custom formats were tried:");
@ -1992,10 +1992,10 @@ external_log_format::build(std::vector<lnav::console::user_message>& errors)
.append(ts, (size_t) ts_len)
.append("\n")
.append(2 + off, ' ')
.append("^ "_comment)
.append("^ "_snippet_border)
.append_quoted(
lnav::roles::symbol(custom_formats[lpc]))
.append(" matched up to here"_comment);
.append(" matched up to here"_snippet_border);
}
}
@ -2082,9 +2082,9 @@ external_log_format::build(std::vector<lnav::console::user_message>& errors)
&& part_pair.first < line_frag.length()) {
notes.append(" ")
.append(part_pair.first, ' ')
.append("^ "_comment)
.append("^ "_snippet_border)
.append(lnav::roles::symbol(part_pair.second))
.append(" matched up to here"_comment)
.append(" matched up to here"_snippet_border)
.append("\n");
}
part_pair.first -= line_frag.length();

@ -32,6 +32,7 @@
#include "readline_highlighters.hh"
#include "base/attr_line.builder.hh"
#include "base/snippet_highlighters.hh"
#include "base/string_util.hh"
#include "config.h"
#include "pcrepp/pcrepp.hh"
@ -48,20 +49,6 @@ static void readline_shlex_highlighter_int(attr_line_t& al,
int x,
line_range sub);
static bool
check_re_prev(const std::string& line, int x)
{
bool retval = false;
if ((x > 0 && line[x - 1] != ')' && line[x - 1] != ']' && line[x - 1] != '*'
&& line[x - 1] != '?' && line[x - 1] != '+')
&& (x < 2 || line[x - 2] != '\\'))
{
retval = true;
}
return retval;
}
static bool
is_bracket(const std::string& str, int index, bool is_lit)
@ -152,173 +139,10 @@ find_matching_bracket(
}
}
static char
safe_read(const std::string& str, std::string::size_type index)
{
if (index < str.length()) {
return str.at(index);
}
return 0;
}
static void
readline_regex_highlighter_int(attr_line_t& al, int x, line_range sub)
{
static const char* brackets[] = {
"[]",
"{}",
"()",
"QE",
nullptr,
};
const auto& line = al.get_string();
attr_line_builder alb(al);
bool backslash_is_quoted = false;
for (size_t lpc = sub.lr_start; lpc < sub.lr_end; lpc++) {
if (line[lpc - 1] != '\\') {
switch (line[lpc]) {
case '^':
case '$':
case '*':
case '+':
case '|':
case '.':
alb.overlay_attr_for_char(
lpc, VC_ROLE.value(role_t::VCR_RE_SPECIAL));
if ((line[lpc] == '*' || line[lpc] == '+')
&& check_re_prev(line, lpc)) {
alb.overlay_attr_for_char(
lpc - 1, VC_ROLE.value(role_t::VCR_RE_REPEAT));
}
break;
case '?': {
struct line_range lr(lpc, lpc + 1);
if (lpc == sub.lr_start || (lpc - sub.lr_start) == 0) {
alb.overlay_attr_for_char(
lpc, VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr_for_char(
lpc, VC_ROLE.value(role_t::VCR_ERROR));
} else if (line[lpc - 1] == '(') {
switch (line[lpc + 1]) {
case ':':
case '!':
case '>':
case '<':
case '#':
lr.lr_end += 1;
break;
}
alb.overlay_attr(lr, VC_ROLE.value(role_t::VCR_OK));
} else {
alb.overlay_attr(lr,
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
if (check_re_prev(line, lpc)) {
alb.overlay_attr_for_char(
lpc - 1, VC_ROLE.value(role_t::VCR_RE_REPEAT));
}
}
break;
}
case '(':
case ')':
case '{':
case '}':
case '[':
case ']':
alb.overlay_attr_for_char(lpc,
VC_ROLE.value(role_t::VCR_OK));
break;
}
}
if (line[lpc - 1] == '\\') {
if (backslash_is_quoted) {
backslash_is_quoted = false;
continue;
}
switch (line[lpc]) {
case '\\':
backslash_is_quoted = true;
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
break;
case 'd':
case 'D':
case 'h':
case 'H':
case 'N':
case 'R':
case 's':
case 'S':
case 'v':
case 'V':
case 'w':
case 'W':
case 'X':
case 'A':
case 'b':
case 'B':
case 'G':
case 'Z':
case 'z':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_SYMBOL));
break;
case ' ':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_ERROR));
break;
case '0':
case 'x':
if (safe_read(line, lpc + 1) == '{') {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
} else if (isdigit(safe_read(line, lpc + 1))
&& isdigit(safe_read(line, lpc + 2)))
{
alb.overlay_attr(line_range(lpc - 1, lpc + 3),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
} else {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_STYLE.value(A_BOLD | A_REVERSE));
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_ERROR));
}
break;
case 'Q':
case 'E':
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_OK));
break;
default:
if (isdigit(line[lpc])) {
alb.overlay_attr(line_range(lpc - 1, lpc + 1),
VC_ROLE.value(role_t::VCR_RE_SPECIAL));
}
break;
}
}
}
for (int lpc = 0; brackets[lpc]; lpc++) {
find_matching_bracket(al, x, sub, brackets[lpc][0], brackets[lpc][1]);
}
}
void
readline_regex_highlighter(attr_line_t& al, int x)
{
readline_regex_highlighter_int(
lnav::snippets::regex_highlighter(
al, x, line_range{1, (int) al.get_string().size()});
}
@ -347,7 +171,7 @@ readline_command_highlighter_int(attr_line_t& al, int x, line_range sub)
VC_ROLE.value(role_t::VCR_KEYWORD));
}
if (RE_PREFIXES.match(pc, pi)) {
readline_regex_highlighter_int(
lnav::snippets::regex_highlighter(
al, x, line_range{(int) ws_index, sub.lr_end});
}
pi.reset(&line[sub.lr_start], 0, sub.length());
@ -571,12 +395,12 @@ readline_lnav_highlighter_int(attr_line_t& al, int x, line_range sub)
case '|':
break;
case '/':
readline_regex_highlighter_int(al,
x,
line_range{
sub.lr_start + 1,
sub.lr_end,
});
lnav::snippets::regex_highlighter(al,
x,
line_range{
sub.lr_start + 1,
sub.lr_end,
});
break;
}
}

@ -48,6 +48,7 @@
#include "config.h"
#include "pcrepp/pcrepp.hh"
#include "readline_context.hh"
#include "readline_highlighters.hh"
#include "sql_help.hh"
#include "sqlite-extension-func.hh"
@ -687,6 +688,7 @@ sql_compile_script(sqlite3* db,
}
sql_content.with_attr_for_all(
VC_ROLE.value(role_t::VCR_QUOTED_CODE));
readline_sqlite_highlighter(sql_content, sql_content.length());
errors.emplace_back(
lnav::console::user_message::error(
"failed to compile SQL statement")
@ -774,6 +776,8 @@ sql_execute_script(sqlite3* db,
errmsg = sqlite3_errmsg(db);
sql_content.with_attr_for_all(
VC_ROLE.value(role_t::VCR_QUOTED_CODE));
readline_sqlite_highlighter(sql_content,
sql_content.length());
errors.emplace_back(
lnav::console::user_message::error(
"failed to execute SQL statement")

@ -219,6 +219,7 @@ struct lnav_theme {
style_config lt_style_quoted_text;
style_config lt_style_footnote_border;
style_config lt_style_footnote_text;
style_config lt_style_snippet_border;
std::map<log_level_t, style_config> lt_level_styles;
std::map<std::string, highlighter_config> lt_highlights;
};

@ -966,6 +966,12 @@ view_colors::init_roles(const lnav_theme& lt,
lt.lt_style_footnote_text,
lt.lt_style_text,
reporter);
this->vc_role_colors[lnav::enums::to_underlying(role_t::VCR_SNIPPET_BORDER)]
= this->to_attrs(color_pair_base,
lt,
lt.lt_style_snippet_border,
lt.lt_style_text,
reporter);
{
style_config stitch_sc;

@ -35,6 +35,7 @@
#include "yajlpp.hh"
#include "base/fs_util.hh"
#include "base/snippet_highlighters.hh"
#include "config.h"
#include "fmt/format.h"
#include "ghc/filesystem.hpp"
@ -1278,17 +1279,22 @@ json_path_handler_base::report_regex_value_error(
{
attr_line_t pcre_error_content{value};
lnav::snippets::regex_highlighter(pcre_error_content,
pcre_error_content.length(),
line_range{
0,
(int) pcre_error_content.length(),
});
pcre_error_content.append("\n")
.append(pcre_error.ce_offset, ' ')
.append(lnav::roles::error("^ "))
.append(lnav::roles::error(pcre_error.ce_msg));
ypc->report_error(
lnav::console::user_message::error(
attr_line_t()
.append_quoted(value)
.append(" is not a valid regular expression for "
"property ")
.append_quoted(
ypc->report_error(lnav::console::user_message::error(
attr_line_t()
.append_quoted(value)
.append(" is not a valid regular expression for "
"property ")
.append_quoted(
lnav::roles::symbol(ypc->get_full_path().to_string())))
.with_reason(pcre_error.ce_msg)
.with_snippet(ypc->get_snippet())

@ -7,198 +7,396 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.err \
$(srcdir)/%reldir%/test_cli.sh_a1a09f890f4604309d0a81bbbec8e50fb7d5e887.out \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.err \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out \
$(srcdir)/%reldir%/test_cmds.sh_017b495b95218b7c083951e2dba331cfec6e90be.out \
$(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err \
$(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.err \
$(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out \
$(srcdir)/%reldir%/test_cmds.sh_0b1e4b1523dfca71927b1fe721c74490c51361d1.out \
$(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err \
$(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.err \
$(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out \
$(srcdir)/%reldir%/test_cmds.sh_0b41fe57743ba0be088037d9ba29bc465e7c9bf9.out \
$(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err \
$(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.err \
$(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out \
$(srcdir)/%reldir%/test_cmds.sh_0f0ab532d8d845f8201af65bf5f6fc994e21a8aa.out \
$(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err \
$(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.err \
$(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out \
$(srcdir)/%reldir%/test_cmds.sh_109a44ac6a8f1be2736c8e9c47aeed187e0581ee.out \
$(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err \
$(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.err \
$(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out \
$(srcdir)/%reldir%/test_cmds.sh_12856706bfb4a8e2686098dd2644a7989d370b02.out \
$(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err \
$(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.err \
$(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out \
$(srcdir)/%reldir%/test_cmds.sh_12b4cb9bd6586f9694100db76734b19a75158eab.out \
$(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err \
$(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.err \
$(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out \
$(srcdir)/%reldir%/test_cmds.sh_145126309709179759926289caf729703ef6e1c6.out \
$(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err \
$(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.err \
$(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out \
$(srcdir)/%reldir%/test_cmds.sh_148007d2626b3c92d00ac31639b6918b1fc4aa60.out \
$(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err \
$(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.err \
$(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out \
$(srcdir)/%reldir%/test_cmds.sh_1cab7d240cf85ff2c3538f5a06af141b01bc83ad.out \
$(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err \
$(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.err \
$(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out \
$(srcdir)/%reldir%/test_cmds.sh_1d92c5bc12f5e7aaa6d84c5ed47f0b9f96e36c6a.out \
$(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err \
$(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.err \
$(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out \
$(srcdir)/%reldir%/test_cmds.sh_1e1c8492b295913ce5afcd104cde0ec4ca1dcdac.out \
$(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err \
$(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.err \
$(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out \
$(srcdir)/%reldir%/test_cmds.sh_1f53f5b16c7c5aa695ed2e6427d822a1b940fcf4.out \
$(srcdir)/%reldir%/test_cmds.sh_1ffb06d63469f0e6dae94af026f77d5b255386c2.err \
$(srcdir)/%reldir%/test_cmds.sh_1ffb06d63469f0e6dae94af026f77d5b255386c2.out \
$(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err \
$(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.err \
$(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out \
$(srcdir)/%reldir%/test_cmds.sh_22577861cb0921a7e7f3d1af6485938f4930ba7b.out \
$(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err \
$(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.err \
$(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out \
$(srcdir)/%reldir%/test_cmds.sh_2339d09953b6937981d8a448000c3fdc2837f8c4.out \
$(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err \
$(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.err \
$(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out \
$(srcdir)/%reldir%/test_cmds.sh_2539ff9c4dbed93df3f0408ccc5fd81df34d1193.out \
$(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err \
$(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.err \
$(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out \
$(srcdir)/%reldir%/test_cmds.sh_29f0c808f4e93c6ef3890e6b793bee274a5b36ca.out \
$(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err \
$(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.err \
$(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out \
$(srcdir)/%reldir%/test_cmds.sh_2a449c0a43e895e85c8b1c9547f32d7b5b4f84f6.out \
$(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err \
$(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.err \
$(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out \
$(srcdir)/%reldir%/test_cmds.sh_2a535de164de4c060d2bff34aa7cc75ac7cac2c2.out \
$(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err \
$(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.err \
$(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out \
$(srcdir)/%reldir%/test_cmds.sh_2cd167954a3be3e130e5f9601b72794a856cef92.out \
$(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err \
$(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.err \
$(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out \
$(srcdir)/%reldir%/test_cmds.sh_2de9ec294e2f533d13e04c70d9525f8b58d47bb2.out \
$(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err \
$(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.err \
$(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out \
$(srcdir)/%reldir%/test_cmds.sh_2e123104cdd2087ac40731a0aa533ba6a87ea744.out \
$(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err \
$(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.err \
$(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out \
$(srcdir)/%reldir%/test_cmds.sh_2ff0fe712c9b0012e42282c5f77b0b83cad37ddf.out \
$(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err \
$(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.err \
$(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out \
$(srcdir)/%reldir%/test_cmds.sh_305b1dfdfe785b945df4220aad6671ae1d364f55.out \
$(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err \
$(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.err \
$(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out \
$(srcdir)/%reldir%/test_cmds.sh_3429080ed14d01c6a887900186f37750df0d5ff0.out \
$(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err \
$(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.err \
$(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out \
$(srcdir)/%reldir%/test_cmds.sh_34a6bcaa2877471b8ea718374101fa9ce3b78235.out \
$(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err \
$(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.err \
$(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out \
$(srcdir)/%reldir%/test_cmds.sh_35b0dd8a030396742bc5acfde7715fb19f312f29.out \
$(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err \
$(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.err \
$(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out \
$(srcdir)/%reldir%/test_cmds.sh_36800217930a6a30e68c4efb20f6959c4f71aeb0.out \
$(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err \
$(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.err \
$(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out \
$(srcdir)/%reldir%/test_cmds.sh_38fa2a95b703d4ce12e82882eca1938264822690.out \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.err \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out \
$(srcdir)/%reldir%/test_cmds.sh_3b20a298e2c059d7f6045cbc0c07ca3db3917695.out \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.err \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out \
$(srcdir)/%reldir%/test_cmds.sh_453054e29aaca4c2662c45c2a1f2f63f3510d8dd.out \
$(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err \
$(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.err \
$(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out \
$(srcdir)/%reldir%/test_cmds.sh_4b2d91b19008d5b775090e3ef87c111f9e603b15.out \
$(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err \
$(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.err \
$(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out \
$(srcdir)/%reldir%/test_cmds.sh_4dbe20c11056a07d2c7efb5ed15903050d628216.out \
$(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err \
$(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.err \
$(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out \
$(srcdir)/%reldir%/test_cmds.sh_4f06183ed231669965965f5042fbbb507fa7deab.out \
$(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err \
$(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.err \
$(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out \
$(srcdir)/%reldir%/test_cmds.sh_512872aebaae73ca4f33fa93acb2f4e3b018f8b4.out \
$(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err \
$(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.err \
$(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out \
$(srcdir)/%reldir%/test_cmds.sh_53a9686102f69b07b034df291f554a00b265ed20.out \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.err \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out \
$(srcdir)/%reldir%/test_cmds.sh_55c2fd15ec2c7d96dbef7b36a42a1b7b42f90dbc.out \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.err \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out \
$(srcdir)/%reldir%/test_cmds.sh_5bfd08c1639701476d7b9348c36afd46fdbe6f2a.out \
$(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err \
$(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.err \
$(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out \
$(srcdir)/%reldir%/test_cmds.sh_624a41e152675575f4b07c19b2cf0e3a028429a2.out \
$(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err \
$(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.err \
$(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out \
$(srcdir)/%reldir%/test_cmds.sh_62d68c0a11757c996f24c8f003e6b4059c3e30b2.out \
$(srcdir)/%reldir%/test_cmds.sh_63e1925e9d7aadcdaa54a35a29711d7ecaad8d27.err \
$(srcdir)/%reldir%/test_cmds.sh_63e1925e9d7aadcdaa54a35a29711d7ecaad8d27.out \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.err \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out \
$(srcdir)/%reldir%/test_cmds.sh_661ec61acdd8f6fa6ec1e3c2cf5f896eef431351.out \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.err \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out \
$(srcdir)/%reldir%/test_cmds.sh_6a6031113aca32fabc5a3da64b7be46f5ce5a312.out \
$(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err \
$(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.err \
$(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out \
$(srcdir)/%reldir%/test_cmds.sh_6e016c0ed61fc652be1a79b864875ffede64f281.out \
$(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err \
$(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.err \
$(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out \
$(srcdir)/%reldir%/test_cmds.sh_7270e37dab4549cfa7c5232451c031e1e04b4aef.out \
$(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err \
$(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.err \
$(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out \
$(srcdir)/%reldir%/test_cmds.sh_73ea99c84fb1d4570e8bcd45c423b4a28fe41e81.out \
$(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err \
$(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.err \
$(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out \
$(srcdir)/%reldir%/test_cmds.sh_7cb644890c4b945ff3f1e15c86a58c85cb5425c0.out \
$(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err \
$(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.err \
$(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out \
$(srcdir)/%reldir%/test_cmds.sh_7e14e7f18219719453838835fa96c3451f78996d.out \
$(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err \
$(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.err \
$(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out \
$(srcdir)/%reldir%/test_cmds.sh_819b3dd21348f7242f3914ad0a8c5b1cdb3f91af.out \
$(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err \
$(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.err \
$(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out \
$(srcdir)/%reldir%/test_cmds.sh_8298805f897346b4bb0f14e53c06b4fa28e309e3.out \
$(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err \
$(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.err \
$(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out \
$(srcdir)/%reldir%/test_cmds.sh_83654557317602d2e00adde1e5cba190d9db0dff.out \
$(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err \
$(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.err \
$(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out \
$(srcdir)/%reldir%/test_cmds.sh_85ae6ac1eb9a8378f7a6c39659f52671218ce64b.out \
$(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err \
$(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.err \
$(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out \
$(srcdir)/%reldir%/test_cmds.sh_85ed177028f226e86b1d164eb1a4e18eaf036c9d.out \
$(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err \
$(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.err \
$(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out \
$(srcdir)/%reldir%/test_cmds.sh_8758082427d6232a15053433942a4b5ad9f2e3ce.out \
$(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err \
$(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.err \
$(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out \
$(srcdir)/%reldir%/test_cmds.sh_876116da8ab46c0c8a212ce230d1b8a13970f78f.out \
$(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err \
$(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.err \
$(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out \
$(srcdir)/%reldir%/test_cmds.sh_8765cbf326648e9014f8cf5f761895010fff443a.out \
$(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err \
$(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.err \
$(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out \
$(srcdir)/%reldir%/test_cmds.sh_8d5b43c693e78804a8fb06989392fa8cccb46b7b.out \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.err \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out \
$(srcdir)/%reldir%/test_cmds.sh_9445861db011dfa2d21a44788047de345ee291e8.out \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.err \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out \
$(srcdir)/%reldir%/test_cmds.sh_95beaabe41d72cf4c6810e79c623da759ac1c71b.out \
$(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err \
$(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.err \
$(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out \
$(srcdir)/%reldir%/test_cmds.sh_968dac54dc80d91a5da2322890c6c26dfa0d8462.out \
$(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err \
$(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.err \
$(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out \
$(srcdir)/%reldir%/test_cmds.sh_a00943ef715598c7554b85de8502454e41bb9e28.out \
$(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err \
$(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.err \
$(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out \
$(srcdir)/%reldir%/test_cmds.sh_a1123427c31c022433d66d05ee5d5e1c8ab415e4.out \
$(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err \
$(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.err \
$(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out \
$(srcdir)/%reldir%/test_cmds.sh_a190bfc279fa046a823864f1484f899d27d22953.out \
$(srcdir)/%reldir%/test_cmds.sh_a2690827f648d15ee64d1bdc8638f0277f175b95.err \
$(srcdir)/%reldir%/test_cmds.sh_a2690827f648d15ee64d1bdc8638f0277f175b95.err \
$(srcdir)/%reldir%/test_cmds.sh_a2690827f648d15ee64d1bdc8638f0277f175b95.out \
$(srcdir)/%reldir%/test_cmds.sh_a2690827f648d15ee64d1bdc8638f0277f175b95.out \
$(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err \
$(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.err \
$(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out \
$(srcdir)/%reldir%/test_cmds.sh_a5742238bad948b1372d32f7a491f03fa4e8b711.out \
$(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err \
$(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.err \
$(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out \
$(srcdir)/%reldir%/test_cmds.sh_a6c431f2871ea96cfdf4e11465b3bca543c7b678.out \
$(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err \
$(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.err \
$(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out \
$(srcdir)/%reldir%/test_cmds.sh_a8006c4169d76baecd99a0699c2fc66a583ad676.out \
$(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err \
$(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.err \
$(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out \
$(srcdir)/%reldir%/test_cmds.sh_ac45fb0f8f9578c3ded0855f694698ec38ce31ad.out \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.err \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out \
$(srcdir)/%reldir%/test_cmds.sh_af0fcbd30b3fd0d13477aa3325ef0302052a4d9f.out \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.err \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out \
$(srcdir)/%reldir%/test_cmds.sh_b5a530d16c982cf769151291f0bfd612ea71183f.out \
$(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err \
$(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.err \
$(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out \
$(srcdir)/%reldir%/test_cmds.sh_b6a3bb78e9d60e5e1f5ce5b18e40d2f1662707ab.out \
$(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err \
$(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.err \
$(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out \
$(srcdir)/%reldir%/test_cmds.sh_b755a8b48c0f602f0270500b0117b76e11db546e.out \
$(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err \
$(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.err \
$(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out \
$(srcdir)/%reldir%/test_cmds.sh_b7fcd26c45c850c3d43ce25b1f610a311eb898c5.out \
$(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err \
$(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.err \
$(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out \
$(srcdir)/%reldir%/test_cmds.sh_b9f8bf53ec2736432eb048d94a391175eb4dc5bf.out \
$(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err \
$(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.err \
$(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out \
$(srcdir)/%reldir%/test_cmds.sh_bc60341827636715c14c562863da9733cbde7e68.out \
$(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err \
$(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.err \
$(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out \
$(srcdir)/%reldir%/test_cmds.sh_be1d9628fc447b6f17121d9457ea1602afe8f3f3.out \
$(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err \
$(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.err \
$(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out \
$(srcdir)/%reldir%/test_cmds.sh_be3b7c5874b5f4d86cc230bd2f9802c98909e148.out \
$(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err \
$(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.err \
$(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out \
$(srcdir)/%reldir%/test_cmds.sh_c01e10f7cae8d36fa79ae03be887cb5477025f6d.out \
$(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err \
$(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.err \
$(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out \
$(srcdir)/%reldir%/test_cmds.sh_c2b4431dd0cc36c6201d263b727b3305e8cda6b1.out \
$(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err \
$(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.err \
$(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out \
$(srcdir)/%reldir%/test_cmds.sh_c4777849c39a6c34dea5b0279cd7400692f1ab5f.out \
$(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err \
$(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.err \
$(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out \
$(srcdir)/%reldir%/test_cmds.sh_c4a15771f7e1487bf73b2e9d1564ad8ecfd76c7e.out \
$(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err \
$(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.err \
$(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out \
$(srcdir)/%reldir%/test_cmds.sh_c72aed622c19d493968e33f20d5dde3838a4258f.out \
$(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err \
$(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.err \
$(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out \
$(srcdir)/%reldir%/test_cmds.sh_c7fabc25374ff47c47931f63b1d697061b816a28.out \
$(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err \
$(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.err \
$(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out \
$(srcdir)/%reldir%/test_cmds.sh_ca66660c973f76a3c2a147c7f5035bcb4e8a8bbc.out \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.err \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out \
$(srcdir)/%reldir%/test_cmds.sh_ccd326da92d1cacda63501cd1a3077381a18e8f2.out \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.err \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out \
$(srcdir)/%reldir%/test_cmds.sh_d3b69abdfb39e4bfa5828c2f9593e2b2b7ed4d5d.out \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.err \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out \
$(srcdir)/%reldir%/test_cmds.sh_d76d77ad95b9f120825417a6a8220c13df9541fc.out \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.err \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out \
$(srcdir)/%reldir%/test_cmds.sh_d8eeef53a58bdeddbc1028d7c525413e3ca1c8df.out \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.err \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out \
$(srcdir)/%reldir%/test_cmds.sh_dbdd62995fdefc8318053af05a32416eccfa79fc.out \
$(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err \
$(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.err \
$(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out \
$(srcdir)/%reldir%/test_cmds.sh_dd41fbbcd71699314af232156d4155fbdf849131.out \
$(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err \
$(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.err \
$(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out \
$(srcdir)/%reldir%/test_cmds.sh_e495cf059477e3f80c3241c6f8d5808b6f1d19c7.out \
$(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err \
$(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.err \
$(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out \
$(srcdir)/%reldir%/test_cmds.sh_e7e8244fac65bc51dbd5af31be476fe3b8776bfc.out \
$(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err \
$(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.err \
$(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out \
$(srcdir)/%reldir%/test_cmds.sh_e911aebcb2defb7471aa620c45a86cad449ad505.out \
$(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err \
$(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.err \
$(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out \
$(srcdir)/%reldir%/test_cmds.sh_eb22c3e94c536a1bfaeae0c40d271b5b4b08f4fc.out \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.err \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out \
$(srcdir)/%reldir%/test_cmds.sh_ec2b28c6ea328e3ea56b13ab8ca3d9ee856a9dda.out \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.err \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out \
$(srcdir)/%reldir%/test_cmds.sh_ed5b73be0b991e0e8d6735e31df5b37c4286321b.out \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.err \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out \
$(srcdir)/%reldir%/test_cmds.sh_f788d5f5932905d09ecbd581040ec5ce76459da5.out \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.err \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out \
$(srcdir)/%reldir%/test_cmds.sh_ff6faebbde8586e04bfadba14a3d2bb4451784ad.out \
$(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.err \
$(srcdir)/%reldir%/test_config.sh_2765ea0d4c037b8c935840604edb0ae796c97a04.out \
@ -310,58 +508,6 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_pretty_print.sh_a6d9042e5e95f2a49194bd80c1eed154813ddf41.out \
$(srcdir)/%reldir%/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.err \
$(srcdir)/%reldir%/test_pretty_print.sh_cd361eeca7e91bfab942b75d6c3422c7a456a111.out \
$(srcdir)/%reldir%/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.err \
$(srcdir)/%reldir%/test_regex101.sh_0fa3663a45aca6a328cb728872af7ed7ee896f1c.out \
$(srcdir)/%reldir%/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.err \
$(srcdir)/%reldir%/test_regex101.sh_182ae9244db314a953af2bee969726e381bc5a32.out \
$(srcdir)/%reldir%/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.err \
$(srcdir)/%reldir%/test_regex101.sh_2158f1f011ba8e1b152396c072790c076fdb8ce8.out \
$(srcdir)/%reldir%/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.err \
$(srcdir)/%reldir%/test_regex101.sh_281af24141680330791db7f7c5fa70833ce08a6b.out \
$(srcdir)/%reldir%/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.err \
$(srcdir)/%reldir%/test_regex101.sh_35703b13990785632cca82123fb3883797959c0b.out \
$(srcdir)/%reldir%/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.err \
$(srcdir)/%reldir%/test_regex101.sh_366730cac50b4a09b7de4b84641791470b1cb9a3.out \
$(srcdir)/%reldir%/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.err \
$(srcdir)/%reldir%/test_regex101.sh_3d18474a3e472fff6e23e0c41337ec9188fee591.out \
$(srcdir)/%reldir%/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.err \
$(srcdir)/%reldir%/test_regex101.sh_442cc58676590a3604d5c2183f5fe0a75c98351a.out \
$(srcdir)/%reldir%/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.err \
$(srcdir)/%reldir%/test_regex101.sh_566fd88d216a44bc1c6e23f2d6f2d0caf99d42f9.out \
$(srcdir)/%reldir%/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.err \
$(srcdir)/%reldir%/test_regex101.sh_5f2f7ecb6ab9cbec4b41385b91bd038906b8a7b2.out \
$(srcdir)/%reldir%/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.err \
$(srcdir)/%reldir%/test_regex101.sh_629bde30483e0a6461076e9058f3a5eb81ae0425.out \
$(srcdir)/%reldir%/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.err \
$(srcdir)/%reldir%/test_regex101.sh_630db454054cf92ec9bd0f4e3e83300047f583ff.out \
$(srcdir)/%reldir%/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.err \
$(srcdir)/%reldir%/test_regex101.sh_771af6f3d29b8350542d5c6e98bdbf4c223cd531.out \
$(srcdir)/%reldir%/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.err \
$(srcdir)/%reldir%/test_regex101.sh_7991a5b617867cf37c9f7baa85ffa425f7d455a2.out \
$(srcdir)/%reldir%/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.err \
$(srcdir)/%reldir%/test_regex101.sh_79ee3f5fe71ccec97b2619d8c1f74ca97ffd2243.out \
$(srcdir)/%reldir%/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.err \
$(srcdir)/%reldir%/test_regex101.sh_7de76c174c58d67bf93e8f01d6d55ebb6a023f10.out \
$(srcdir)/%reldir%/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.err \
$(srcdir)/%reldir%/test_regex101.sh_8a43e6657d4f60e68d31eb8302542ca28e80d077.out \
$(srcdir)/%reldir%/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.err \
$(srcdir)/%reldir%/test_regex101.sh_8e93a3b6b941847c71409a297779fbb0a6666a51.out \
$(srcdir)/%reldir%/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.err \
$(srcdir)/%reldir%/test_regex101.sh_95c56a9d146ec9a7c2196559d316f928b2ae6ae9.out \
$(srcdir)/%reldir%/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.err \
$(srcdir)/%reldir%/test_regex101.sh_9d101ee29c45cdb8c0f117ad736c9a5dd5da5839.out \
$(srcdir)/%reldir%/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.err \
$(srcdir)/%reldir%/test_regex101.sh_c43e07df9b3068696fdc8759c7561135db981b38.out \
$(srcdir)/%reldir%/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.err \
$(srcdir)/%reldir%/test_regex101.sh_cbd859487e4ea011cd6e0f0f114d70158bfd8b43.out \
$(srcdir)/%reldir%/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.err \
$(srcdir)/%reldir%/test_regex101.sh_cf6c0a9f0f04e24ce1fae7a0a434830b14447f83.out \
$(srcdir)/%reldir%/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.err \
$(srcdir)/%reldir%/test_regex101.sh_d84597760285c3964b258726341e018f6cd49954.out \
$(srcdir)/%reldir%/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.err \
$(srcdir)/%reldir%/test_regex101.sh_f23e393dbf23d0d8e276e9b7610c7b74d79980f8.out \
$(srcdir)/%reldir%/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.err \
$(srcdir)/%reldir%/test_regex101.sh_fc41b6ee90cbf038620151f16d164b361acf82dd.out \
$(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.err \
$(srcdir)/%reldir%/test_sessions.sh_0300a1391c33b1c45ddfa90198a6bd0a5404a77f.out \
$(srcdir)/%reldir%/test_sessions.sh_17b85654b929b2a8fc1705a170ced544783292fa.err \
@ -603,6 +749,8 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_36fc9005464f1106f969559e640d9fa36d5fadad.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_3de72fe5c1751dd212a1cd45cf2caa7f3b52bced.out \
$(srcdir)/%reldir%/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.err \
$(srcdir)/%reldir%/test_sql_str_func.sh_4b402274da152135c6c99456b693e1ecabca0256.out \

@ -1 +1 @@
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!

@ -1 +1 @@
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"

@ -1,2 +1,2 @@
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!
2009-07-20 22:59:30,221:ERROR:Goodbye, World!
 2009-07-20 22:59:30,221:ERROR:Goodbye, World!

@ -1,2 +1,2 @@
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

@ -1,4 +1,4 @@
Thu Nov 03 09:20:00 1 normal 2 errors 0 warnings 0 marks
Thu Nov 03 09:45:00 1 normal 0 errors 0 warnings 0 marks
Fri Feb 03 09:20:00 0 normal 1 errors 0 warnings 0 marks
Wed Jan 03 09:20:00 1 normal 0 errors 0 warnings 0 marks
 Thu Nov 03 09:20:00  1 normal 2 errors 0 warnings  0 marks
 Thu Nov 03 09:45:00  1 normal 0 errors 0 warnings 0 marks
 Fri Feb 03 09:20:00  0 normal 1 errors 0 warnings 0 marks
 Wed Jan 03 09:20:00  1 normal 0 errors 0 warnings 0 marks

@ -1 +1 @@
Sat Nov 03 08:00:00 1 normal 0 errors 0 warnings 0 marks
 Sat Nov 03 08:00:00 1 normal 0 errors 0 warnings 0 marks

@ -1,2 +1,2 @@
Sat Nov 03 09:20:00 1 normal 2 errors 0 warnings 1 marks
Sat Nov 03 09:45:00 1 normal 0 errors 0 warnings 0 marks
 Sat Nov 03 09:20:00 1 normal 2 errors  0 warnings  1 marks
 Sat Nov 03 09:45:00 1 normal 0 errors 0 warnings 0 marks

@ -1 +1 @@
Sat Nov 03 00:00:00 2 normal 2 errors 0 warnings 0 marks
 Sat Nov 03 00:00:00 2 normal 2 errors 0 warnings 0 marks

@ -1 +1 @@
Sat Nov 03 08:00:00 2 normal 2 errors 0 warnings 0 marks
 Sat Nov 03 08:00:00 2 normal 2 errors 0 warnings 0 marks

@ -3,7 +3,7 @@
 --> {test_dir}/bad-config/formats/invalid-properties/format.json:24
 |  "pattern": "abc(def" 
 --> /invalid_props_log/search-table/bad_table_regex/pattern
 | abc(def
 | abc(def
 |  ^ missing )
 = help: Property Synopsis
/invalid_props_log/search-table/bad_table_regex/pattern <regex>
@ -14,7 +14,7 @@
 --> {test_dir}/bad-config/formats/invalid-regex/format.json:6
 |  "pattern": "^(?<timestamp>\\d+: (?<body>.*)$"
 --> /bad_regex_log/regex/std/pattern
 | ^(?<timestamp>\d+: (?<body>.*)$
 | ^(?<timestamp>\d+: (?<body>.*)$
 |  ^ missing )
 = help: Property Synopsis
/bad_regex_log/regex/std/pattern <message-regex>
@ -25,7 +25,7 @@
 --> {test_dir}/bad-config/formats/invalid-regex/format.json:10
 |  "error" : "(foo" 
 --> /bad_regex_log/level/error
 | (foo
 | (foo
 |  ^ missing )
 = help: Property Synopsis
/bad_regex_log/level/error <pattern|integer>
@ -36,7 +36,7 @@
 --> {test_dir}/bad-config/formats/invalid-regex/format.json:22
 |  "pattern": "abc(" 
 --> /bad_regex_log/highlights/foobar/pattern
 | abc(
 | abc(
 |  ^ missing )
 = help: Property Synopsis
/bad_regex_log/highlights/foobar/pattern <regex>
@ -111,10 +111,10 @@
✘ error: failed to compile SQL statement
reason: near "TALE": syntax error
 --> {test_dir}/bad-config/formats/invalid-sql/init.sql:4
 | -- comment test 
 | CREATE TALE 
 | -- comment test 
 | CREATE TALE 
✘ error: failed to execute SQL statement
reason: missing )
 --> {test_dir}/bad-config/formats/invalid-sql/init2.sql
 | SELECT regexp_match('abc(', '123') 
 | FROM sqlite_master; 
 | SELECT regexp_match('abc(', '123') 
 | FROM sqlite_master; 

@ -9,7 +9,7 @@
 --> {test_dir}/bad-config-json/formats/invalid-key/format.json:4
 |  "level-pointer": "abc(", 
 --> /invalid_key_log/level-pointer
 | abc(
 | abc(
 |  ^ missing )
 = help: Property Synopsis
/invalid_key_log/level-pointer
@ -20,7 +20,7 @@
 --> {test_dir}/bad-config-json/formats/invalid-key/format.json:5
 |  "file-pattern": "def[ghi", 
 --> /invalid_key_log/file-pattern
 | def[ghi
 | def[ghi
 |  ^ missing terminating ] for character class
 = help: Property Synopsis
/invalid_key_log/file-pattern

@ -1,5 +1,5 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
Hello, World!
Hello, World!
└ #foo
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

@ -1,4 +1,4 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
Goodbye, World!
Goodbye, World!
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

@ -1,4 +1,4 @@
log_line log_comment log_tags
0 Hello, World! ["#foo"]
log_line  log_comment log_tags 
 0 Hello, World! ["#foo"] 
1 <NULL> <NULL>
2 <NULL> <NULL>
 2 <NULL>  <NULL> 

@ -1,5 +1,5 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
Hello, World!
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
Hello, World!
└ #foo
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

@ -1,4 +1,4 @@
192.168.202.254 - - [20/Jul/2009:22:59:26 +0000] "GET /vmw/cgi/tramp HTTP/1.0" 200 134 "-" "gPXE/0.9.7"
Hello, World!
Hello, World!
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkboot.gz HTTP/1.0" 404 46210 "-" "gPXE/0.9.7"
192.168.202.254 - - [20/Jul/2009:22:59:29 +0000] "GET /vmw/vSphere/default/vmkernel.gz HTTP/1.0" 200 78929 "-" "gPXE/0.9.7"

Loading…
Cancel
Save