From 0be6c8906ea501a3fd2e6728db7ab2486aafef51 Mon Sep 17 00:00:00 2001 From: Tim Stack Date: Sun, 28 Jan 2024 09:36:54 -0800 Subject: [PATCH] [tidy] use anon namespaces and some other stuff --- NEWS.md | 1 + src/curl_looper.cc | 4 + src/data_scanner_re.cc | 462 ++++++++++-------- src/data_scanner_re.re | 30 +- src/environ_vtab.cc | 4 + src/file_vtab.cc | 4 + src/formats/esx_syslog_log.json | 3 + src/fstat_vtab.cc | 4 + src/json-extension-functions.cc | 4 + src/lnav.cc | 4 +- src/regexp_vtab.cc | 4 + src/static_file_vtab.cc | 20 +- src/string-extension-functions.cc | 94 ++-- src/text_format.cc | 31 +- src/text_format.hh | 4 + src/views_vtab.cc | 14 +- test/Makefile.am | 1 + test/expected/expected.am | 2 + ...5283eeb4c10e9c1702fafd13723c8085944f88.err | 0 ...5283eeb4c10e9c1702fafd13723c8085944f88.out | 5 + test/test_json_format.sh | 3 + test/test_sql.sh | 2 +- 22 files changed, 419 insertions(+), 281 deletions(-) create mode 100644 test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.err create mode 100644 test/expected/test_json_format.sh_895283eeb4c10e9c1702fafd13723c8085944f88.out diff --git a/NEWS.md b/NEWS.md index c70fe3bd..903cf1cf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -122,6 +122,7 @@ Features: * Added a `log_msg_values` column to the `all_logs` SQL table that contains a JSON object with the top 5 values for the fields extracted from the log message. +* Added Nextcloud log format from Adam Monsen. Bug Fixes: * Binary data piped into stdin should now be treated the same diff --git a/src/curl_looper.cc b/src/curl_looper.cc index f5710139..db97c40e 100644 --- a/src/curl_looper.cc +++ b/src/curl_looper.cc @@ -108,6 +108,8 @@ curl_url_strerror(CURLUcode error) } # endif +namespace { + struct curl_request_eq { explicit curl_request_eq(const std::string& name) : cre_name(name){}; @@ -125,6 +127,8 @@ struct curl_request_eq { const std::string& cre_name; }; +} // namespace + int curl_request::debug_cb( CURL* handle, curl_infotype type, char* data, size_t size, void* userp) diff --git a/src/data_scanner_re.cc b/src/data_scanner_re.cc index 6c508227..dff728aa 100644 --- a/src/data_scanner_re.cc +++ b/src/data_scanner_re.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 3.1 on Sat Jan 27 09:45:11 2024 */ +/* Generated by re2c 3.1 on Sat Jan 27 21:30:39 2024 */ #line 1 "../../lnav/src/data_scanner_re.re" /** * Copyright (c) 2015, Timothy Stack @@ -827,7 +827,7 @@ yy1: yy2: ++YYCURSOR; yy3: -#line 419 "../../lnav/src/data_scanner_re.re" +#line 443 "../../lnav/src/data_scanner_re.re" { RET(DT_GARBAGE); } #line 833 "../../lnav/src/data_scanner_re.cc" yy4: @@ -838,12 +838,12 @@ yy4: if (yych <= ':') goto yy74; goto yy71; yy5: -#line 416 "../../lnav/src/data_scanner_re.re" +#line 440 "../../lnav/src/data_scanner_re.re" { RET(DT_WHITE); } #line 844 "../../lnav/src/data_scanner_re.cc" yy6: ++YYCURSOR; -#line 412 "../../lnav/src/data_scanner_re.re" +#line 436 "../../lnav/src/data_scanner_re.re" { this->ds_bol = true; RET(DT_LINE); @@ -953,12 +953,12 @@ yy13: yy14: yych = *++YYCURSOR; if (yych == ')') goto yy101; -#line 323 "../../lnav/src/data_scanner_re.re" +#line 347 "../../lnav/src/data_scanner_re.re" { RET(DT_LPAREN); } #line 959 "../../lnav/src/data_scanner_re.cc" yy15: ++YYCURSOR; -#line 324 "../../lnav/src/data_scanner_re.re" +#line 348 "../../lnav/src/data_scanner_re.re" { RET(DT_RPAREN); } #line 964 "../../lnav/src/data_scanner_re.cc" yy16: @@ -989,7 +989,7 @@ yy16: } yy17: ++YYCURSOR; -#line 315 "../../lnav/src/data_scanner_re.re" +#line 339 "../../lnav/src/data_scanner_re.re" { RET(DT_COMMA); } #line 995 "../../lnav/src/data_scanner_re.cc" yy18: @@ -1047,7 +1047,7 @@ yy19: } } yy20: -#line 417 "../../lnav/src/data_scanner_re.re" +#line 441 "../../lnav/src/data_scanner_re.re" { RET(DT_DOT); } #line 1053 "../../lnav/src/data_scanner_re.cc" yy21: @@ -1056,7 +1056,7 @@ yy21: if (yych == 'P') goto yy116; goto yy114; yy22: -#line 236 "../../lnav/src/data_scanner_re.re" +#line 260 "../../lnav/src/data_scanner_re.re" { RET(DT_PATH); } #line 1062 "../../lnav/src/data_scanner_re.cc" yy23: @@ -1139,7 +1139,7 @@ yy23: default: goto yy24; } yy24: -#line 372 "../../lnav/src/data_scanner_re.re" +#line 396 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_NUMBER); auto sf = this->to_string_fragment(cap_all); @@ -1397,12 +1397,12 @@ yy28: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy146; yy29: -#line 313 "../../lnav/src/data_scanner_re.re" +#line 337 "../../lnav/src/data_scanner_re.re" { RET(DT_COLON); } #line 1403 "../../lnav/src/data_scanner_re.cc" yy30: ++YYCURSOR; -#line 316 "../../lnav/src/data_scanner_re.re" +#line 340 "../../lnav/src/data_scanner_re.re" { RET(DT_SEMI); } #line 1408 "../../lnav/src/data_scanner_re.cc" yy31: @@ -1428,17 +1428,17 @@ yy31: } } yy32: -#line 325 "../../lnav/src/data_scanner_re.re" +#line 349 "../../lnav/src/data_scanner_re.re" { RET(DT_LANGLE); } #line 1434 "../../lnav/src/data_scanner_re.cc" yy33: ++YYCURSOR; -#line 314 "../../lnav/src/data_scanner_re.re" +#line 338 "../../lnav/src/data_scanner_re.re" { RET(DT_EQUALS); } #line 1439 "../../lnav/src/data_scanner_re.cc" yy34: ++YYCURSOR; -#line 326 "../../lnav/src/data_scanner_re.re" +#line 350 "../../lnav/src/data_scanner_re.re" { RET(DT_RANGLE); } #line 1444 "../../lnav/src/data_scanner_re.cc" yy35: @@ -1485,7 +1485,7 @@ yy36: } } yy37: -#line 394 "../../lnav/src/data_scanner_re.re" +#line 418 "../../lnav/src/data_scanner_re.re" { RET(DT_WORD); } #line 1491 "../../lnav/src/data_scanner_re.cc" yy38: @@ -1513,7 +1513,7 @@ yy38: } } yy39: -#line 404 "../../lnav/src/data_scanner_re.re" +#line 428 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } @@ -1667,7 +1667,7 @@ yy45: } } yy46: -#line 321 "../../lnav/src/data_scanner_re.re" +#line 345 "../../lnav/src/data_scanner_re.re" { RET(DT_LSQUARE); } #line 1673 "../../lnav/src/data_scanner_re.cc" yy47: @@ -1697,7 +1697,7 @@ yy47: } yy48: ++YYCURSOR; -#line 322 "../../lnav/src/data_scanner_re.re" +#line 346 "../../lnav/src/data_scanner_re.re" { RET(DT_RSQUARE); } #line 1703 "../../lnav/src/data_scanner_re.cc" yy49: @@ -1931,12 +1931,12 @@ yy59: yy60: yych = *++YYCURSOR; if (yych == '}') goto yy101; -#line 319 "../../lnav/src/data_scanner_re.re" +#line 343 "../../lnav/src/data_scanner_re.re" { RET(DT_LCURLY); } #line 1937 "../../lnav/src/data_scanner_re.cc" yy61: ++YYCURSOR; -#line 320 "../../lnav/src/data_scanner_re.re" +#line 344 "../../lnav/src/data_scanner_re.re" { RET(DT_RCURLY); } #line 1942 "../../lnav/src/data_scanner_re.cc" yy62: @@ -2433,7 +2433,7 @@ yy100: yy101: ++YYCURSOR; yy102: -#line 318 "../../lnav/src/data_scanner_re.re" +#line 342 "../../lnav/src/data_scanner_re.re" { RET(DT_EMPTY_CONTAINER); } #line 2439 "../../lnav/src/data_scanner_re.cc" yy103: @@ -2749,7 +2749,7 @@ yy119: } } yy120: -#line 371 "../../lnav/src/data_scanner_re.re" +#line 395 "../../lnav/src/data_scanner_re.re" { RET(DT_PERCENTAGE); } #line 2755 "../../lnav/src/data_scanner_re.cc" yy121: @@ -2859,7 +2859,7 @@ yy124: } } yy125: -#line 370 "../../lnav/src/data_scanner_re.re" +#line 394 "../../lnav/src/data_scanner_re.re" { RET(DT_OCTAL_NUMBER); } #line 2865 "../../lnav/src/data_scanner_re.cc" yy126: @@ -2903,7 +2903,7 @@ yy126: } } yy127: -#line 386 "../../lnav/src/data_scanner_re.re" +#line 410 "../../lnav/src/data_scanner_re.re" { RET(DT_HEX_NUMBER); } #line 2909 "../../lnav/src/data_scanner_re.cc" yy128: @@ -3035,7 +3035,7 @@ yy132: goto yy135; } yy133: -#line 408 "../../lnav/src/data_scanner_re.re" +#line 432 "../../lnav/src/data_scanner_re.re" { RET(DT_ID); } @@ -3703,7 +3703,7 @@ yy155: } yy156: YYCURSOR = yyt3; -#line 392 "../../lnav/src/data_scanner_re.re" +#line 416 "../../lnav/src/data_scanner_re.re" { RET(DT_WORD); } #line 3709 "../../lnav/src/data_scanner_re.cc" yy157: @@ -4296,7 +4296,7 @@ yy184: goto yy73; yy185: ++YYCURSOR; -#line 418 "../../lnav/src/data_scanner_re.re" +#line 442 "../../lnav/src/data_scanner_re.re" { RET(DT_ESCAPED_CHAR); } #line 4302 "../../lnav/src/data_scanner_re.cc" yy186: @@ -4714,7 +4714,7 @@ yy208: goto yy73; yy209: ++YYCURSOR; -#line 309 "../../lnav/src/data_scanner_re.re" +#line 333 "../../lnav/src/data_scanner_re.re" { RET(DT_CSI); } @@ -4804,7 +4804,7 @@ yy215: yyt1 = yyt2; yy216: YYCURSOR = yyt1; -#line 214 "../../lnav/src/data_scanner_re.re" +#line 238 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_QUOTED_STRING); if (tf == text_format_t::TF_RUST) { @@ -4913,7 +4913,7 @@ yy225: } } yy226: -#line 396 "../../lnav/src/data_scanner_re.re" +#line 420 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } @@ -4922,7 +4922,7 @@ yy227: ++YYCURSOR; yy228: YYCURSOR -= 1; -#line 400 "../../lnav/src/data_scanner_re.re" +#line 424 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } @@ -5204,7 +5204,7 @@ yy237: ++YYCURSOR; yy238: YYCURSOR = yyt1; -#line 317 "../../lnav/src/data_scanner_re.re" +#line 341 "../../lnav/src/data_scanner_re.re" { RET(DT_EMDASH); } #line 5210 "../../lnav/src/data_scanner_re.cc" yy239: @@ -5814,7 +5814,7 @@ yy270: default: goto yy271; } yy271: -#line 347 "../../lnav/src/data_scanner_re.re" +#line 371 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_NUMBER); auto sf = this->to_string_fragment(cap_all); @@ -6753,7 +6753,7 @@ yy302: ++YYCURSOR; yy303: YYCURSOR = yyt2; -#line 255 "../../lnav/src/data_scanner_re.re" +#line 279 "../../lnav/src/data_scanner_re.re" { RET(DT_IPV6_ADDRESS); } #line 6759 "../../lnav/src/data_scanner_re.cc" yy304: @@ -7257,7 +7257,7 @@ yy321: yy322: ++YYCURSOR; yy323: -#line 265 "../../lnav/src/data_scanner_re.re" +#line 289 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_OPEN_TAG); } @@ -7328,7 +7328,7 @@ yy327: goto yy73; yy328: ++YYCURSOR; -#line 273 "../../lnav/src/data_scanner_re.re" +#line 297 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_H1); cap_inner.c_end -= 1; @@ -8830,9 +8830,17 @@ yy394: yy395: #line 204 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 8836 "../../lnav/src/data_scanner_re.cc" +#line 8844 "../../lnav/src/data_scanner_re.cc" yy396: yych = *++YYCURSOR; if (yych == 'g') goto yy540; @@ -10952,11 +10960,11 @@ yy460: yy461: ++YYCURSOR; yy462: -#line 257 "../../lnav/src/data_scanner_re.re" +#line 281 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_DECL_TAG); } -#line 10960 "../../lnav/src/data_scanner_re.cc" +#line 10968 "../../lnav/src/data_scanner_re.cc" yy463: yych = *++YYCURSOR; if (yych <= ':') { @@ -11091,11 +11099,11 @@ yy465: yy466: ++YYCURSOR; yy467: -#line 261 "../../lnav/src/data_scanner_re.re" +#line 285 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_EMPTY_TAG); } -#line 11099 "../../lnav/src/data_scanner_re.cc" +#line 11107 "../../lnav/src/data_scanner_re.cc" yy468: yych = *++YYCURSOR; if (yych <= '\r') { @@ -11112,11 +11120,11 @@ yy468: } yy469: ++YYCURSOR; -#line 269 "../../lnav/src/data_scanner_re.re" +#line 293 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_CLOSE_TAG); } -#line 11120 "../../lnav/src/data_scanner_re.cc" +#line 11128 "../../lnav/src/data_scanner_re.cc" yy470: yych = *++YYCURSOR; yy471: @@ -12108,9 +12116,9 @@ yy498: } yy499: YYCURSOR = yyt1; -#line 390 "../../lnav/src/data_scanner_re.re" +#line 414 "../../lnav/src/data_scanner_re.re" { RET(DT_CONSTANT); } -#line 12114 "../../lnav/src/data_scanner_re.cc" +#line 12122 "../../lnav/src/data_scanner_re.cc" yy500: yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); @@ -12216,14 +12224,14 @@ yy500: } yy501: ++YYCURSOR; -#line 280 "../../lnav/src/data_scanner_re.re" +#line 304 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_H1); cap_inner.c_end -= 1; this->ds_bol = true; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 12227 "../../lnav/src/data_scanner_re.cc" +#line 12235 "../../lnav/src/data_scanner_re.cc" yy502: yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); @@ -12576,11 +12584,19 @@ yy517: if (yych != ']') goto yy73; yy518: ++YYCURSOR; -#line 210 "../../lnav/src/data_scanner_re.re" +#line 226 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 12584 "../../lnav/src/data_scanner_re.cc" +#line 12600 "../../lnav/src/data_scanner_re.cc" yy519: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); @@ -12599,9 +12615,9 @@ yy519: } } yy520: -#line 388 "../../lnav/src/data_scanner_re.re" +#line 412 "../../lnav/src/data_scanner_re.re" { RET(DT_EMAIL); } -#line 12605 "../../lnav/src/data_scanner_re.cc" +#line 12621 "../../lnav/src/data_scanner_re.cc" yy521: yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); @@ -13011,11 +13027,11 @@ yy542: } } yy543: -#line 362 "../../lnav/src/data_scanner_re.re" +#line 386 "../../lnav/src/data_scanner_re.re" { RET(DT_VERSION_NUMBER); } -#line 13019 "../../lnav/src/data_scanner_re.cc" +#line 13035 "../../lnav/src/data_scanner_re.cc" yy544: yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); @@ -13218,7 +13234,7 @@ yy554: } } yy555: -#line 239 "../../lnav/src/data_scanner_re.re" +#line 263 "../../lnav/src/data_scanner_re.re" { if ((YYCURSOR.val - (this->ds_input.udata() + this->ds_next_offset)) == 17) { RET(DT_MAC_ADDRESS); @@ -13226,7 +13242,7 @@ yy555: RET(DT_HEX_DUMP); } } -#line 13230 "../../lnav/src/data_scanner_re.cc" +#line 13246 "../../lnav/src/data_scanner_re.cc" yy556: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); @@ -13590,9 +13606,9 @@ yy570: } } yy571: -#line 235 "../../lnav/src/data_scanner_re.re" +#line 259 "../../lnav/src/data_scanner_re.re" { RET(DT_URL); } -#line 13596 "../../lnav/src/data_scanner_re.cc" +#line 13612 "../../lnav/src/data_scanner_re.cc" yy572: yych = *++YYCURSOR; if (yych <= '@') { @@ -16766,9 +16782,9 @@ yy688: ++YYCURSOR; yy689: YYCURSOR = yyt1; -#line 237 "../../lnav/src/data_scanner_re.re" +#line 261 "../../lnav/src/data_scanner_re.re" { RET(DT_TIME); } -#line 16772 "../../lnav/src/data_scanner_re.cc" +#line 16788 "../../lnav/src/data_scanner_re.cc" yy690: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy73; @@ -20345,7 +20361,7 @@ yy850: cap_inner.c_end -= 1; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 20349 "../../lnav/src/data_scanner_re.cc" +#line 20365 "../../lnav/src/data_scanner_re.cc" yy851: yyaccept = 36; yych = *(YYMARKER = ++YYCURSOR); @@ -22643,11 +22659,19 @@ yy909: } } yy910: -#line 207 "../../lnav/src/data_scanner_re.re" +#line 215 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 22651 "../../lnav/src/data_scanner_re.cc" +#line 22675 "../../lnav/src/data_scanner_re.cc" yy911: yych = *++YYCURSOR; if (yybm_bol[0+yych] & 8) { @@ -24470,9 +24494,9 @@ yy1002: yyt1 = yyt2; yy1003: YYCURSOR = yyt1; -#line 238 "../../lnav/src/data_scanner_re.re" +#line 262 "../../lnav/src/data_scanner_re.re" { RET(DT_TIME); } -#line 24476 "../../lnav/src/data_scanner_re.cc" +#line 24500 "../../lnav/src/data_scanner_re.cc" yy1004: yyaccept = 40; yych = *(YYMARKER = ++YYCURSOR); @@ -24523,11 +24547,11 @@ yy1013: ++YYCURSOR; yy1014: YYCURSOR = yyt1; -#line 328 "../../lnav/src/data_scanner_re.re" +#line 352 "../../lnav/src/data_scanner_re.re" { RET(DT_IPV4_ADDRESS); } -#line 24531 "../../lnav/src/data_scanner_re.cc" +#line 24555 "../../lnav/src/data_scanner_re.cc" yy1015: yyaccept = 41; yych = *(YYMARKER = ++YYCURSOR); @@ -24976,11 +25000,11 @@ yy1035: } } yy1036: -#line 252 "../../lnav/src/data_scanner_re.re" +#line 276 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE); } -#line 24984 "../../lnav/src/data_scanner_re.cc" +#line 25008 "../../lnav/src/data_scanner_re.cc" yy1037: yyaccept = 42; yych = *(YYMARKER = ++YYCURSOR); @@ -36265,14 +36289,14 @@ yy1375: } yy1376: ++YYCURSOR; -#line 294 "../../lnav/src/data_scanner_re.re" +#line 318 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_DIFF_FILE_HEADER); cap_inner.c_end -= 1; this->ds_bol = true; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 36276 "../../lnav/src/data_scanner_re.cc" +#line 36300 "../../lnav/src/data_scanner_re.cc" yy1377: yych = *++YYCURSOR; if (yych == 'e') goto yy1425; @@ -37766,11 +37790,11 @@ yy1414: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy1453; yy1415: -#line 249 "../../lnav/src/data_scanner_re.re" +#line 273 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE_TIME); } -#line 37774 "../../lnav/src/data_scanner_re.cc" +#line 37798 "../../lnav/src/data_scanner_re.cc" yy1416: yych = *++YYCURSOR; yy1417: @@ -38860,14 +38884,14 @@ yy1453: goto yy73; yy1454: ++YYCURSOR; -#line 287 "../../lnav/src/data_scanner_re.re" +#line 311 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_H1); cap_inner.c_end = cap_inner.c_begin; this->ds_bol = true; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 38871 "../../lnav/src/data_scanner_re.cc" +#line 38895 "../../lnav/src/data_scanner_re.cc" yy1455: yyaccept = 40; yych = *(YYMARKER = ++YYCURSOR); @@ -38925,11 +38949,11 @@ yy1458: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy1482; yy1459: -#line 246 "../../lnav/src/data_scanner_re.re" +#line 270 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE_TIME); } -#line 38933 "../../lnav/src/data_scanner_re.cc" +#line 38957 "../../lnav/src/data_scanner_re.cc" yy1460: yych = *++YYCURSOR; if (yych <= 'Z') { @@ -41403,7 +41427,7 @@ yy1521: ++YYCURSOR; yy1522: YYCURSOR = yyt1; -#line 334 "../../lnav/src/data_scanner_re.re" +#line 358 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_CREDIT_CARD_NUMBER); if (!this->is_credit_card(this->to_string_fragment(cap_all))) { @@ -41416,7 +41440,7 @@ yy1522: } return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 41420 "../../lnav/src/data_scanner_re.cc" +#line 41444 "../../lnav/src/data_scanner_re.cc" yy1523: yyaccept = 45; yych = *(YYMARKER = ++YYCURSOR); @@ -42394,7 +42418,7 @@ yy1566: yy1567: ++YYCURSOR; hunk_heading = yyt1; -#line 301 "../../lnav/src/data_scanner_re.re" +#line 325 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_DIFF_HUNK_HEADING); cap_inner.c_begin = hunk_heading.val - this->ds_input.udata(); @@ -42402,7 +42426,7 @@ yy1567: this->ds_bol = true; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 42406 "../../lnav/src/data_scanner_re.cc" +#line 42430 "../../lnav/src/data_scanner_re.cc" yy1568: yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); @@ -43217,9 +43241,9 @@ yy1623: } } yy1624: -#line 332 "../../lnav/src/data_scanner_re.re" +#line 356 "../../lnav/src/data_scanner_re.re" { RET(DT_UUID); } -#line 43223 "../../lnav/src/data_scanner_re.cc" +#line 43247 "../../lnav/src/data_scanner_re.cc" yy1625: yyaccept = 46; yych = *(YYMARKER = ++YYCURSOR); @@ -43410,13 +43434,13 @@ yy1627: ++YYCURSOR; #line 172 "../../lnav/src/data_scanner_re.re" { return nonstd::nullopt; } -#line 43414 "../../lnav/src/data_scanner_re.cc" +#line 43438 "../../lnav/src/data_scanner_re.cc" yy1628: ++YYCURSOR; yy1629: -#line 419 "../../lnav/src/data_scanner_re.re" +#line 443 "../../lnav/src/data_scanner_re.re" { RET(DT_GARBAGE); } -#line 43420 "../../lnav/src/data_scanner_re.cc" +#line 43444 "../../lnav/src/data_scanner_re.cc" yy1630: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -43425,17 +43449,17 @@ yy1630: if (yych <= ':') goto yy1698; goto yy1695; yy1631: -#line 416 "../../lnav/src/data_scanner_re.re" +#line 440 "../../lnav/src/data_scanner_re.re" { RET(DT_WHITE); } -#line 43431 "../../lnav/src/data_scanner_re.cc" +#line 43455 "../../lnav/src/data_scanner_re.cc" yy1632: ++YYCURSOR; -#line 412 "../../lnav/src/data_scanner_re.re" +#line 436 "../../lnav/src/data_scanner_re.re" { this->ds_bol = true; RET(DT_LINE); } -#line 43439 "../../lnav/src/data_scanner_re.cc" +#line 43463 "../../lnav/src/data_scanner_re.cc" yy1633: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -43456,7 +43480,7 @@ yy1634: { RET(DT_ZERO_WIDTH_SPACE); } -#line 43460 "../../lnav/src/data_scanner_re.cc" +#line 43484 "../../lnav/src/data_scanner_re.cc" yy1635: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); @@ -43540,14 +43564,14 @@ yy1639: yy1640: yych = *++YYCURSOR; if (yych == ')') goto yy1725; -#line 323 "../../lnav/src/data_scanner_re.re" +#line 347 "../../lnav/src/data_scanner_re.re" { RET(DT_LPAREN); } -#line 43546 "../../lnav/src/data_scanner_re.cc" +#line 43570 "../../lnav/src/data_scanner_re.cc" yy1641: ++YYCURSOR; -#line 324 "../../lnav/src/data_scanner_re.re" +#line 348 "../../lnav/src/data_scanner_re.re" { RET(DT_RPAREN); } -#line 43551 "../../lnav/src/data_scanner_re.cc" +#line 43575 "../../lnav/src/data_scanner_re.cc" yy1642: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); @@ -43576,9 +43600,9 @@ yy1642: } yy1643: ++YYCURSOR; -#line 315 "../../lnav/src/data_scanner_re.re" +#line 339 "../../lnav/src/data_scanner_re.re" { RET(DT_COMMA); } -#line 43582 "../../lnav/src/data_scanner_re.cc" +#line 43606 "../../lnav/src/data_scanner_re.cc" yy1644: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); @@ -43634,18 +43658,18 @@ yy1645: } } yy1646: -#line 417 "../../lnav/src/data_scanner_re.re" +#line 441 "../../lnav/src/data_scanner_re.re" { RET(DT_DOT); } -#line 43640 "../../lnav/src/data_scanner_re.cc" +#line 43664 "../../lnav/src/data_scanner_re.cc" yy1647: yych = *++YYCURSOR; if (yych == '*') goto yy1738; if (yych == 'P') goto yy1739; goto yy1737; yy1648: -#line 236 "../../lnav/src/data_scanner_re.re" +#line 260 "../../lnav/src/data_scanner_re.re" { RET(DT_PATH); } -#line 43649 "../../lnav/src/data_scanner_re.cc" +#line 43673 "../../lnav/src/data_scanner_re.cc" yy1649: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); @@ -43726,7 +43750,7 @@ yy1649: default: goto yy1650; } yy1650: -#line 372 "../../lnav/src/data_scanner_re.re" +#line 396 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_NUMBER); auto sf = this->to_string_fragment(cap_all); @@ -43741,7 +43765,7 @@ yy1650: } return tokenize_result{DT_NUMBER, cap_all, cap_inner, this->ds_input.data()}; } -#line 43745 "../../lnav/src/data_scanner_re.cc" +#line 43769 "../../lnav/src/data_scanner_re.cc" yy1651: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); @@ -43984,14 +44008,14 @@ yy1654: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy1769; yy1655: -#line 313 "../../lnav/src/data_scanner_re.re" +#line 337 "../../lnav/src/data_scanner_re.re" { RET(DT_COLON); } -#line 43990 "../../lnav/src/data_scanner_re.cc" +#line 44014 "../../lnav/src/data_scanner_re.cc" yy1656: ++YYCURSOR; -#line 316 "../../lnav/src/data_scanner_re.re" +#line 340 "../../lnav/src/data_scanner_re.re" { RET(DT_SEMI); } -#line 43995 "../../lnav/src/data_scanner_re.cc" +#line 44019 "../../lnav/src/data_scanner_re.cc" yy1657: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); @@ -44015,19 +44039,19 @@ yy1657: } } yy1658: -#line 325 "../../lnav/src/data_scanner_re.re" +#line 349 "../../lnav/src/data_scanner_re.re" { RET(DT_LANGLE); } -#line 44021 "../../lnav/src/data_scanner_re.cc" +#line 44045 "../../lnav/src/data_scanner_re.cc" yy1659: ++YYCURSOR; -#line 314 "../../lnav/src/data_scanner_re.re" +#line 338 "../../lnav/src/data_scanner_re.re" { RET(DT_EQUALS); } -#line 44026 "../../lnav/src/data_scanner_re.cc" +#line 44050 "../../lnav/src/data_scanner_re.cc" yy1660: ++YYCURSOR; -#line 326 "../../lnav/src/data_scanner_re.re" +#line 350 "../../lnav/src/data_scanner_re.re" { RET(DT_RANGLE); } -#line 44031 "../../lnav/src/data_scanner_re.cc" +#line 44055 "../../lnav/src/data_scanner_re.cc" yy1661: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); @@ -44070,9 +44094,9 @@ yy1662: } } yy1663: -#line 394 "../../lnav/src/data_scanner_re.re" +#line 418 "../../lnav/src/data_scanner_re.re" { RET(DT_WORD); } -#line 44076 "../../lnav/src/data_scanner_re.cc" +#line 44100 "../../lnav/src/data_scanner_re.cc" yy1664: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); @@ -44097,11 +44121,11 @@ yy1664: } } yy1665: -#line 404 "../../lnav/src/data_scanner_re.re" +#line 428 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } -#line 44105 "../../lnav/src/data_scanner_re.cc" +#line 44129 "../../lnav/src/data_scanner_re.cc" yy1666: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); @@ -44223,9 +44247,9 @@ yy1670: yy1671: yych = *++YYCURSOR; if (yych == ']') goto yy1725; -#line 321 "../../lnav/src/data_scanner_re.re" +#line 345 "../../lnav/src/data_scanner_re.re" { RET(DT_LSQUARE); } -#line 44229 "../../lnav/src/data_scanner_re.cc" +#line 44253 "../../lnav/src/data_scanner_re.cc" yy1672: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); @@ -44253,9 +44277,9 @@ yy1672: } yy1673: ++YYCURSOR; -#line 322 "../../lnav/src/data_scanner_re.re" +#line 346 "../../lnav/src/data_scanner_re.re" { RET(DT_RSQUARE); } -#line 44259 "../../lnav/src/data_scanner_re.cc" +#line 44283 "../../lnav/src/data_scanner_re.cc" yy1674: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); @@ -44463,20 +44487,20 @@ yy1683: yy1684: yych = *++YYCURSOR; if (yych == '}') goto yy1725; -#line 319 "../../lnav/src/data_scanner_re.re" +#line 343 "../../lnav/src/data_scanner_re.re" { RET(DT_LCURLY); } -#line 44469 "../../lnav/src/data_scanner_re.cc" +#line 44493 "../../lnav/src/data_scanner_re.cc" yy1685: ++YYCURSOR; -#line 320 "../../lnav/src/data_scanner_re.re" +#line 344 "../../lnav/src/data_scanner_re.re" { RET(DT_RCURLY); } -#line 44474 "../../lnav/src/data_scanner_re.cc" +#line 44498 "../../lnav/src/data_scanner_re.cc" yy1686: ++YYCURSOR; yy1687: #line 173 "../../lnav/src/data_scanner_re.re" { return nonstd::nullopt; } -#line 44480 "../../lnav/src/data_scanner_re.cc" +#line 44504 "../../lnav/src/data_scanner_re.cc" yy1688: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy1687; @@ -44765,7 +44789,7 @@ yy1703: cap_inner.c_end -= 1; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 44769 "../../lnav/src/data_scanner_re.cc" +#line 44793 "../../lnav/src/data_scanner_re.cc" yy1704: yych = *++YYCURSOR; if (yych <= 0xE0) { @@ -44956,9 +44980,9 @@ yy1724: goto yy1697; yy1725: ++YYCURSOR; -#line 318 "../../lnav/src/data_scanner_re.re" +#line 342 "../../lnav/src/data_scanner_re.re" { RET(DT_EMPTY_CONTAINER); } -#line 44962 "../../lnav/src/data_scanner_re.cc" +#line 44986 "../../lnav/src/data_scanner_re.cc" yy1726: yych = *++YYCURSOR; if (yych <= '9') { @@ -45272,9 +45296,9 @@ yy1742: } } yy1743: -#line 371 "../../lnav/src/data_scanner_re.re" +#line 395 "../../lnav/src/data_scanner_re.re" { RET(DT_PERCENTAGE); } -#line 45278 "../../lnav/src/data_scanner_re.cc" +#line 45302 "../../lnav/src/data_scanner_re.cc" yy1744: yych = *++YYCURSOR; if (yych <= '9') { @@ -45382,9 +45406,9 @@ yy1747: } } yy1748: -#line 370 "../../lnav/src/data_scanner_re.re" +#line 394 "../../lnav/src/data_scanner_re.re" { RET(DT_OCTAL_NUMBER); } -#line 45388 "../../lnav/src/data_scanner_re.cc" +#line 45412 "../../lnav/src/data_scanner_re.cc" yy1749: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); @@ -45426,9 +45450,9 @@ yy1749: } } yy1750: -#line 386 "../../lnav/src/data_scanner_re.re" +#line 410 "../../lnav/src/data_scanner_re.re" { RET(DT_HEX_NUMBER); } -#line 45432 "../../lnav/src/data_scanner_re.cc" +#line 45456 "../../lnav/src/data_scanner_re.cc" yy1751: yych = *++YYCURSOR; if (yych <= ':') { @@ -45558,11 +45582,11 @@ yy1755: goto yy1758; } yy1756: -#line 408 "../../lnav/src/data_scanner_re.re" +#line 432 "../../lnav/src/data_scanner_re.re" { RET(DT_ID); } -#line 45566 "../../lnav/src/data_scanner_re.cc" +#line 45590 "../../lnav/src/data_scanner_re.cc" yy1757: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); @@ -46218,9 +46242,9 @@ yy1776: } yy1777: YYCURSOR = yyt3; -#line 392 "../../lnav/src/data_scanner_re.re" +#line 416 "../../lnav/src/data_scanner_re.re" { RET(DT_WORD); } -#line 46224 "../../lnav/src/data_scanner_re.cc" +#line 46248 "../../lnav/src/data_scanner_re.cc" yy1778: yych = *++YYCURSOR; if (yych <= '/') { @@ -46651,9 +46675,9 @@ yy1793: } yy1794: ++YYCURSOR; -#line 418 "../../lnav/src/data_scanner_re.re" +#line 442 "../../lnav/src/data_scanner_re.re" { RET(DT_ESCAPED_CHAR); } -#line 46657 "../../lnav/src/data_scanner_re.cc" +#line 46681 "../../lnav/src/data_scanner_re.cc" yy1795: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy1697; @@ -46935,11 +46959,11 @@ yy1811: goto yy1697; yy1812: ++YYCURSOR; -#line 309 "../../lnav/src/data_scanner_re.re" +#line 333 "../../lnav/src/data_scanner_re.re" { RET(DT_CSI); } -#line 46943 "../../lnav/src/data_scanner_re.cc" +#line 46967 "../../lnav/src/data_scanner_re.cc" yy1813: yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); @@ -47025,7 +47049,7 @@ yy1818: yyt1 = yyt2; yy1819: YYCURSOR = yyt1; -#line 214 "../../lnav/src/data_scanner_re.re" +#line 238 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_QUOTED_STRING); if (tf == text_format_t::TF_RUST) { @@ -47047,7 +47071,7 @@ yy1819: cap_inner.c_end -= 1; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 47051 "../../lnav/src/data_scanner_re.cc" +#line 47075 "../../lnav/src/data_scanner_re.cc" yy1820: yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); @@ -47134,20 +47158,20 @@ yy1828: } } yy1829: -#line 396 "../../lnav/src/data_scanner_re.re" +#line 420 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } -#line 47142 "../../lnav/src/data_scanner_re.cc" +#line 47166 "../../lnav/src/data_scanner_re.cc" yy1830: ++YYCURSOR; yy1831: YYCURSOR -= 1; -#line 400 "../../lnav/src/data_scanner_re.re" +#line 424 "../../lnav/src/data_scanner_re.re" { RET(DT_SYMBOL); } -#line 47151 "../../lnav/src/data_scanner_re.cc" +#line 47175 "../../lnav/src/data_scanner_re.cc" yy1832: yych = *++YYCURSOR; if (yych <= '/') goto yy1713; @@ -47425,9 +47449,9 @@ yy1840: ++YYCURSOR; yy1841: YYCURSOR = yyt1; -#line 317 "../../lnav/src/data_scanner_re.re" +#line 341 "../../lnav/src/data_scanner_re.re" { RET(DT_EMDASH); } -#line 47431 "../../lnav/src/data_scanner_re.cc" +#line 47455 "../../lnav/src/data_scanner_re.cc" yy1842: yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); @@ -48031,7 +48055,7 @@ yy1872: default: goto yy1873; } yy1873: -#line 347 "../../lnav/src/data_scanner_re.re" +#line 371 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_NUMBER); auto sf = this->to_string_fragment(cap_all); @@ -48046,7 +48070,7 @@ yy1873: } return tokenize_result{DT_NUMBER, cap_all, cap_inner, this->ds_input.data()}; } -#line 48050 "../../lnav/src/data_scanner_re.cc" +#line 48074 "../../lnav/src/data_scanner_re.cc" yy1874: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); @@ -48970,9 +48994,9 @@ yy1904: ++YYCURSOR; yy1905: YYCURSOR = yyt2; -#line 255 "../../lnav/src/data_scanner_re.re" +#line 279 "../../lnav/src/data_scanner_re.re" { RET(DT_IPV6_ADDRESS); } -#line 48976 "../../lnav/src/data_scanner_re.cc" +#line 49000 "../../lnav/src/data_scanner_re.cc" yy1906: yych = *++YYCURSOR; if (yych <= 'f') { @@ -49474,11 +49498,11 @@ yy1923: yy1924: ++YYCURSOR; yy1925: -#line 265 "../../lnav/src/data_scanner_re.re" +#line 289 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_OPEN_TAG); } -#line 49482 "../../lnav/src/data_scanner_re.cc" +#line 49506 "../../lnav/src/data_scanner_re.cc" yy1926: yych = *++YYCURSOR; yy1927: @@ -50798,9 +50822,17 @@ yy1985: yy1986: #line 204 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 50804 "../../lnav/src/data_scanner_re.cc" +#line 50836 "../../lnav/src/data_scanner_re.cc" yy1987: yych = *++YYCURSOR; if (yych == 'g') goto yy2118; @@ -52920,11 +52952,11 @@ yy2051: yy2052: ++YYCURSOR; yy2053: -#line 257 "../../lnav/src/data_scanner_re.re" +#line 281 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_DECL_TAG); } -#line 52928 "../../lnav/src/data_scanner_re.cc" +#line 52960 "../../lnav/src/data_scanner_re.cc" yy2054: yych = *++YYCURSOR; if (yych <= ':') { @@ -53059,11 +53091,11 @@ yy2056: yy2057: ++YYCURSOR; yy2058: -#line 261 "../../lnav/src/data_scanner_re.re" +#line 285 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_EMPTY_TAG); } -#line 53067 "../../lnav/src/data_scanner_re.cc" +#line 53099 "../../lnav/src/data_scanner_re.cc" yy2059: yych = *++YYCURSOR; if (yych <= '\r') { @@ -53080,11 +53112,11 @@ yy2059: } yy2060: ++YYCURSOR; -#line 269 "../../lnav/src/data_scanner_re.re" +#line 293 "../../lnav/src/data_scanner_re.re" { RET(DT_XML_CLOSE_TAG); } -#line 53088 "../../lnav/src/data_scanner_re.cc" +#line 53120 "../../lnav/src/data_scanner_re.cc" yy2061: yych = *++YYCURSOR; yy2062: @@ -54011,9 +54043,9 @@ yy2086: } yy2087: YYCURSOR = yyt1; -#line 390 "../../lnav/src/data_scanner_re.re" +#line 414 "../../lnav/src/data_scanner_re.re" { RET(DT_CONSTANT); } -#line 54017 "../../lnav/src/data_scanner_re.cc" +#line 54049 "../../lnav/src/data_scanner_re.cc" yy2088: yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); @@ -54421,11 +54453,19 @@ yy2103: if (yych != ']') goto yy1697; yy2104: ++YYCURSOR; -#line 210 "../../lnav/src/data_scanner_re.re" +#line 226 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 54429 "../../lnav/src/data_scanner_re.cc" +#line 54469 "../../lnav/src/data_scanner_re.cc" yy2105: yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); @@ -54444,9 +54484,9 @@ yy2105: } } yy2106: -#line 388 "../../lnav/src/data_scanner_re.re" +#line 412 "../../lnav/src/data_scanner_re.re" { RET(DT_EMAIL); } -#line 54450 "../../lnav/src/data_scanner_re.cc" +#line 54490 "../../lnav/src/data_scanner_re.cc" yy2107: yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); @@ -54802,11 +54842,11 @@ yy2120: } } yy2121: -#line 362 "../../lnav/src/data_scanner_re.re" +#line 386 "../../lnav/src/data_scanner_re.re" { RET(DT_VERSION_NUMBER); } -#line 54810 "../../lnav/src/data_scanner_re.cc" +#line 54850 "../../lnav/src/data_scanner_re.cc" yy2122: yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); @@ -55009,7 +55049,7 @@ yy2132: } } yy2133: -#line 239 "../../lnav/src/data_scanner_re.re" +#line 263 "../../lnav/src/data_scanner_re.re" { if ((YYCURSOR.val - (this->ds_input.udata() + this->ds_next_offset)) == 17) { RET(DT_MAC_ADDRESS); @@ -55017,7 +55057,7 @@ yy2133: RET(DT_HEX_DUMP); } } -#line 55021 "../../lnav/src/data_scanner_re.cc" +#line 55061 "../../lnav/src/data_scanner_re.cc" yy2134: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); @@ -55381,9 +55421,9 @@ yy2148: } } yy2149: -#line 235 "../../lnav/src/data_scanner_re.re" +#line 259 "../../lnav/src/data_scanner_re.re" { RET(DT_URL); } -#line 55387 "../../lnav/src/data_scanner_re.cc" +#line 55427 "../../lnav/src/data_scanner_re.cc" yy2150: yych = *++YYCURSOR; if (yych <= '@') { @@ -58481,9 +58521,9 @@ yy2261: ++YYCURSOR; yy2262: YYCURSOR = yyt1; -#line 237 "../../lnav/src/data_scanner_re.re" +#line 261 "../../lnav/src/data_scanner_re.re" { RET(DT_TIME); } -#line 58487 "../../lnav/src/data_scanner_re.cc" +#line 58527 "../../lnav/src/data_scanner_re.cc" yy2263: yych = *++YYCURSOR; if (yych <= 0x7F) goto yy1697; @@ -62035,7 +62075,7 @@ yy2419: cap_inner.c_end -= 1; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 62039 "../../lnav/src/data_scanner_re.cc" +#line 62079 "../../lnav/src/data_scanner_re.cc" yy2420: yyaccept = 34; yych = *(YYMARKER = ++YYCURSOR); @@ -64329,11 +64369,19 @@ yy2477: } } yy2478: -#line 207 "../../lnav/src/data_scanner_re.re" +#line 215 "../../lnav/src/data_scanner_re.re" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 64337 "../../lnav/src/data_scanner_re.cc" +#line 64385 "../../lnav/src/data_scanner_re.cc" yy2479: yych = *++YYCURSOR; if (yybm_init[0+yych] & 4) { @@ -66134,9 +66182,9 @@ yy2567: yyt1 = yyt2; yy2568: YYCURSOR = yyt1; -#line 238 "../../lnav/src/data_scanner_re.re" +#line 262 "../../lnav/src/data_scanner_re.re" { RET(DT_TIME); } -#line 66140 "../../lnav/src/data_scanner_re.cc" +#line 66188 "../../lnav/src/data_scanner_re.cc" yy2569: yyaccept = 38; yych = *(YYMARKER = ++YYCURSOR); @@ -66183,11 +66231,11 @@ yy2577: ++YYCURSOR; yy2578: YYCURSOR = yyt1; -#line 328 "../../lnav/src/data_scanner_re.re" +#line 352 "../../lnav/src/data_scanner_re.re" { RET(DT_IPV4_ADDRESS); } -#line 66191 "../../lnav/src/data_scanner_re.cc" +#line 66239 "../../lnav/src/data_scanner_re.cc" yy2579: yyaccept = 39; yych = *(YYMARKER = ++YYCURSOR); @@ -66636,11 +66684,11 @@ yy2599: } } yy2600: -#line 252 "../../lnav/src/data_scanner_re.re" +#line 276 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE); } -#line 66644 "../../lnav/src/data_scanner_re.cc" +#line 66692 "../../lnav/src/data_scanner_re.cc" yy2601: yyaccept = 40; yych = *(YYMARKER = ++YYCURSOR); @@ -79248,11 +79296,11 @@ yy2956: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy2986; yy2957: -#line 249 "../../lnav/src/data_scanner_re.re" +#line 273 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE_TIME); } -#line 79256 "../../lnav/src/data_scanner_re.cc" +#line 79304 "../../lnav/src/data_scanner_re.cc" yy2958: yyaccept = 38; yych = *(YYMARKER = ++YYCURSOR); @@ -80339,11 +80387,11 @@ yy2990: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy3013; yy2991: -#line 246 "../../lnav/src/data_scanner_re.re" +#line 270 "../../lnav/src/data_scanner_re.re" { RET(DT_DATE_TIME); } -#line 80347 "../../lnav/src/data_scanner_re.cc" +#line 80395 "../../lnav/src/data_scanner_re.cc" yy2992: yych = *++YYCURSOR; if (yych <= 'Z') { @@ -82753,7 +82801,7 @@ yy3050: ++YYCURSOR; yy3051: YYCURSOR = yyt1; -#line 334 "../../lnav/src/data_scanner_re.re" +#line 358 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_CREDIT_CARD_NUMBER); if (!this->is_credit_card(this->to_string_fragment(cap_all))) { @@ -82766,7 +82814,7 @@ yy3051: } return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 82770 "../../lnav/src/data_scanner_re.cc" +#line 82818 "../../lnav/src/data_scanner_re.cc" yy3052: yyaccept = 43; yych = *(YYMARKER = ++YYCURSOR); @@ -83732,7 +83780,7 @@ yy3094: yy3095: ++YYCURSOR; hunk_heading = yyt1; -#line 301 "../../lnav/src/data_scanner_re.re" +#line 325 "../../lnav/src/data_scanner_re.re" { CAPTURE(DT_DIFF_HUNK_HEADING); cap_inner.c_begin = hunk_heading.val - this->ds_input.udata(); @@ -83740,7 +83788,7 @@ yy3095: this->ds_bol = true; return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } -#line 83744 "../../lnav/src/data_scanner_re.cc" +#line 83792 "../../lnav/src/data_scanner_re.cc" yy3096: yych = *++YYCURSOR; if (yych <= '/') goto yy1697; @@ -84276,9 +84324,9 @@ yy3133: } } yy3134: -#line 332 "../../lnav/src/data_scanner_re.re" +#line 356 "../../lnav/src/data_scanner_re.re" { RET(DT_UUID); } -#line 84282 "../../lnav/src/data_scanner_re.cc" +#line 84330 "../../lnav/src/data_scanner_re.cc" /* *********************************** */ yyc_units: yych = *YYCURSOR; @@ -84302,15 +84350,15 @@ yy3136: yy3137: #line 173 "../../lnav/src/data_scanner_re.re" { return nonstd::nullopt; } -#line 84306 "../../lnav/src/data_scanner_re.cc" +#line 84354 "../../lnav/src/data_scanner_re.cc" yy3138: ++YYCURSOR; yy3139: -#line 366 "../../lnav/src/data_scanner_re.re" +#line 390 "../../lnav/src/data_scanner_re.re" { RET(DT_UNIT); } -#line 84314 "../../lnav/src/data_scanner_re.cc" +#line 84362 "../../lnav/src/data_scanner_re.cc" yy3140: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -84370,7 +84418,7 @@ yy3145: goto yy3144; } } -#line 421 "../../lnav/src/data_scanner_re.re" +#line 445 "../../lnav/src/data_scanner_re.re" return nonstd::nullopt; diff --git a/src/data_scanner_re.re b/src/data_scanner_re.re index 4e06b4e4..aab38612 100644 --- a/src/data_scanner_re.re +++ b/src/data_scanner_re.re @@ -202,13 +202,37 @@ nonstd::optional data_scanner::tokenize2(text_for return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } "/*" ([^\x00*]|"*"+[^\x00/])* "*"+ "/" { - RET(DT_COMMENT); + CAPTURE(DT_COMMENT); + if (tf == text_format_t::TF_DIFF) { + auto sf = this->to_string_fragment(cap_all); + auto split_res = sf.split_when(string_fragment::tag1{'\n'}); + cap_all.c_end = split_res.first.sf_end; + cap_inner.c_end = split_res.first.sf_end; + this->ds_next_offset = cap_all.c_end; + } + return tokenize_result{token_out, cap_all, cap_inner, this->ds_input.data()}; } "