Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ansifilter for openSUSE:Factory checked in at 2026-08-21 16:56:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ansifilter (Old) and /work/SRC/openSUSE:Factory/.ansifilter.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ansifilter" Fri Aug 21 16:56:30 2026 rev:18 rq:1372685 version:2.23 Changes: -------- --- /work/SRC/openSUSE:Factory/ansifilter/ansifilter.changes 2025-09-22 16:42:15.031892211 +0200 +++ /work/SRC/openSUSE:Factory/.ansifilter.new.1258/ansifilter.changes 2026-08-21 16:58:04.531083160 +0200 @@ -1,0 +2,9 @@ +Thu Aug 20 19:51:44 UTC 2026 - Andreas Stieger <[email protected]> + +- Update to version 2.23: + * fix OSC parsing of Unicode sequences; escape terminal string + output + * fix gcc-17 compilation + * GUI: persist toggle view status in settings + +------------------------------------------------------------------- Old: ---- ansifilter-2.22.tar.bz2 ansifilter-2.22.tar.bz2.asc New: ---- ansifilter-2.23.tar.bz2 ansifilter-2.23.tar.bz2.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ansifilter.spec ++++++ --- /var/tmp/diff_new_pack.hQVwvX/_old 2026-08-21 16:58:05.477116719 +0200 +++ /var/tmp/diff_new_pack.hQVwvX/_new 2026-08-21 16:58:05.481116860 +0200 @@ -3,7 +3,7 @@ # # Copyright (c) 2024 SUSE LLC # Copyright (c) 2013 Pascal Bleser. -# Copyright (c) 2025 Andreas Stieger <[email protected]> +# Copyright (c) 2026 Andreas Stieger <[email protected]> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ Name: ansifilter -Version: 2.22 +Version: 2.23 Release: 0 Summary: ANSI Terminal Escape Code Converter License: GPL-3.0-or-later ++++++ ansifilter-2.22.tar.bz2 -> ansifilter-2.23.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/ChangeLog.adoc new/ansifilter-2.23/ChangeLog.adoc --- old/ansifilter-2.22/ChangeLog.adoc 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/ChangeLog.adoc 2026-08-15 18:57:39.000000000 +0200 @@ -1,5 +1,13 @@ = Ansifilter ChangeLog +=== ansifilter 2.23 + +15.08.2026 + + - fix OSC parsing of Unicode sequences; escape terminal string output (https://gitlab.com/saalen/ansifilter/-/work_items/39) + - fix gcc-17 compilation + - GUI: persist toggle view status in settings + === ansifilter 2.22 04.09.2025 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/bbcodegenerator.cpp new/ansifilter-2.23/src/bbcodegenerator.cpp --- old/ansifilter-2.22/src/bbcodegenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/bbcodegenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ bbcodegenerator.cpp - description ------------------- - copyright : (C) 2011-2024 by Andre Simon + copyright : (C) 2011-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/bbcodegenerator.h new/ansifilter-2.23/src/bbcodegenerator.h --- old/ansifilter-2.22/src/bbcodegenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/bbcodegenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ bbcdegenerator.h - description ------------------- - copyright : (C) 2011-2024 by Andre Simon + copyright : (C) 2011-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/cmdlineoptions.cpp new/ansifilter-2.23/src/cmdlineoptions.cpp --- old/ansifilter-2.22/src/cmdlineoptions.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/cmdlineoptions.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ cmdlineoptions.cpp - description ------------------- begin : Sun Oct 13 2007 - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ @@ -139,7 +139,7 @@ void CmdLineOptions::parseRuntimeOptions( const int argc, const char *argv[], bool readInputFilenames) { Arg_parser parser( argc, argv, options ); if( parser.error().size() ) { // bad option - cerr << "ansifilter: "<< parser.error()<<"\n"; + cerr << "ansifilter: "<< StringTools::sanitizeForTerminal(parser.error())<<"\n"; cerr << "Try 'ansifilter --help' for more information.\n"; exit( 1 ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/cmdlineoptions.h new/ansifilter-2.23/src/cmdlineoptions.h --- old/ansifilter-2.22/src/cmdlineoptions.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/cmdlineoptions.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ cmdlineoptions.h - description ------------------- begin : Sun Oct 13 2007 - copyright : (C) 2007-2023 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/codegenerator.cpp new/ansifilter-2.23/src/codegenerator.cpp --- old/ansifilter-2.22/src/codegenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/codegenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************************************** codegenerator.cpp - description ------------------- - copyright : (C) 2007-2025 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ @@ -217,7 +217,7 @@ styleSheetPath=path; } -void CodeGenerator::setPreformatting ( WrapMode lineWrappingStyle, +void CodeGenerator::setPreformatting ( WrapMode /*lineWrappingStyle*/, unsigned int lineLength) { lineWrapLen = lineLength; @@ -337,7 +337,7 @@ ParseError CodeGenerator::generateFileFromString (const string &sourceStr, const string &outFileName, - const string &title) + const string &/*title*/) { ParseError error=PARSE_OK; @@ -380,7 +380,7 @@ -bool CodeGenerator::printDynamicStyleFile ( const string &outPath ) +bool CodeGenerator::printDynamicStyleFile ( const string &/*outPath*/ ) { return true; } @@ -667,22 +667,6 @@ } else { curX--; } - if (curX<0) curX=0; - } - - if (line[end]=='J'){ - // std::cerr<<"J!!!\n"; - /* - if (codeVector.size()==1 && codeVector[0]=="2"){ - for (int i=0;i<100*100;i++) *termBuffer[i]->c =0; - } - */ - } - - if (line[end]=='K'){ - // std::cerr<<"K!!!\n"; - // for (int i=curX;i<asciiArtWidth;i++) termBuffer[curY*asciiArtWidth + i]->c =0; - } if (line[end]=='s'){ @@ -772,7 +756,7 @@ //FIXME: elementStyle.setBold(cur >= 0x20 && cur <= 0x7a); - if (curX>=0 && curX<asciiArtWidth && curY>=0 && curY<asciiArtHeight){ + if (curX<asciiArtWidth && curY<asciiArtHeight){ termBuffer[curX + curY*asciiArtWidth].c = cur; termBuffer[curX + curY*asciiArtWidth].style = elementStyle; curX++; @@ -884,7 +868,7 @@ //FIXME: elementStyle.setBold(cur >= 0x20 && cur <= 0x7a); - if (curX>=0 && curX<asciiArtWidth && curY>=0 && curY<asciiArtHeight){ + if (curX<asciiArtWidth && curY<asciiArtHeight){ termBuffer[curX + curY*asciiArtWidth].c = cur; termBuffer[curX + curY*asciiArtWidth].style = elementStyle; curX++; @@ -1172,7 +1156,7 @@ break; } } else { - if (curX>=0 && curX<asciiArtWidth && curY>=0 && curY<asciiArtHeight){ + if (curX<asciiArtWidth && curY<asciiArtHeight){ termBuffer[curX + curY*asciiArtWidth].c = line[i]; termBuffer[curX + curY*asciiArtWidth].style = elementStyle; curX++; @@ -1325,7 +1309,14 @@ } else { ++i; } - } else if (!ignCSISeq && (cur==0x90 || cur==0x9d || cur==0x98 || cur==0x9e ||cur==0x9f)) { + } else if (!ignCSISeq && (cur==0x90 || cur==0x9d || cur==0x98 || cur==0x9e ||cur==0x9f) + // these byte values also occur as non-leading bytes of common multi-byte UTF-8 + // characters (e.g. the UTF-8 encoding of the right double quotation mark is + // 0xe2 0x80 0x9d); only treat them as raw C1 control introducers if not preceded + // by a UTF-8 lead/continuation byte, otherwise e.g. an OSC8 hyperlink right after + // a smart quote gets silently swallowed and the quote's UTF-8 sequence corrupted + && !( i>0 && ( ((line[i-1]&0xff)&0xc0)==0x80 + || ((line[i-1]&0xff)>=0xc2 && (line[i-1]&0xff)<=0xf4) ) ) ) { seqEnd=i; //find string end while ( seqEnd<line.length() && (line[seqEnd]&0xff)!=0x9e diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/codegenerator.h new/ansifilter-2.23/src/codegenerator.h --- old/ansifilter-2.22/src/codegenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/codegenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************************************** codegenerator.h - description ------------------- - copyright : (C) 2007-2025 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/elementstyle.cpp new/ansifilter-2.23/src/elementstyle.cpp --- old/ansifilter-2.22/src/elementstyle.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/elementstyle.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************************************** elementstyle.cpp - description ------------------- - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/htmlgenerator.cpp new/ansifilter-2.23/src/htmlgenerator.cpp --- old/ansifilter-2.22/src/htmlgenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/htmlgenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ htmlgenerator.cpp - description ------------------- - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/htmlgenerator.h new/ansifilter-2.23/src/htmlgenerator.h --- old/ansifilter-2.22/src/htmlgenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/htmlgenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ htmlgenerator.h - description ------------------- - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/main.cpp new/ansifilter-2.23/src/main.cpp --- old/ansifilter-2.22/src/main.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/main.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ main.cpp - description ------------------- - copyright : (C) 2007-2025 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] Highlight is a universal source code to HTML converter. Syntax highlighting @@ -31,6 +31,7 @@ #include <memory> #include "main.h" #include "platform_fs.h" +#include "stringtools.h" using std::cout; using std::cerr; @@ -42,7 +43,7 @@ { cout << "\n ansifilter version " << Info::getVersion() - << "\n Copyright (C) 2007-2025 Andre Simon <a dot simon at mailbox.org>" + << "\n Copyright (C) 2007-2026 Andre Simon <a dot simon at mailbox.org>" << "\n\n Argparser class" << "\n Copyright (C) 2006-2008 Antonio Diaz Diaz <ant_diaz at teleline.es>" << "\n\n This software is released under the terms of the GNU General " @@ -145,6 +146,7 @@ generator->setSVGSize ( options.getWidth(), options.getHeight() ); } + int ANSIFilterApp::run( const int argc, const char *argv[] ) { @@ -182,7 +184,7 @@ string mapPath = options.getMapPath(); if (!generator->setColorMap(mapPath)){ - std::cerr <<"could not read map file: " << mapPath << "\n"; + std::cerr <<"could not read map file: " << StringTools::sanitizeForTerminal(mapPath) << "\n"; return EXIT_FAILURE; } @@ -196,7 +198,7 @@ } if (!outFile.is_open()) { - cerr << "could not write output: " << outFilePath << endl; + cerr << "could not write output: " << StringTools::sanitizeForTerminal(outFilePath) << endl; return EXIT_FAILURE; } @@ -224,7 +226,7 @@ } if (!generator->setColorMap(mapPath)){ - std::cerr <<"could not read map file: " << mapPath << "\n"; + std::cerr <<"could not read map file: " << StringTools::sanitizeForTerminal(mapPath) << "\n"; return EXIT_FAILURE; } @@ -242,7 +244,7 @@ if ( inFileList[i].size() && Platform::fileSize(inFileList[i]) > options.getMaxFileSize() ) { - std::cerr <<"file exceeds max size (see --max-size): " << inFileList[i] << "\n"; + std::cerr <<"file exceeds max size (see --max-size): " << StringTools::sanitizeForTerminal(inFileList[i]) << "\n"; return EXIT_FAILURE; } @@ -253,10 +255,10 @@ ansifilter::ParseError error = generator->generateFile(inFileList[i], outFilePath); if (error==ansifilter::BAD_INPUT) { - std::cerr << "could not read input: " << inFileList[i] << "\n"; + std::cerr << "could not read input: " << StringTools::sanitizeForTerminal(inFileList[i]) << "\n"; failure=true; } else if (error==ansifilter::BAD_OUTPUT) { - std::cerr << "could not write output: " << outFilePath << "\n"; + std::cerr << "could not write output: " << StringTools::sanitizeForTerminal(outFilePath) << "\n"; failure=true; } ++i; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/main.h new/ansifilter-2.23/src/main.h --- old/ansifilter-2.22/src/main.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/main.h 2026-08-15 18:57:39.000000000 +0200 @@ -52,7 +52,7 @@ void printVersionInfo(); void printHelp(); void setGeneratorProperties(ansifilter::CodeGenerator* generator, const CmdLineOptions& options, const std::string& title); - + std::string sanitizeForTerminal(const std::string& s); }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/plaintextgenerator.cpp new/ansifilter-2.23/src/plaintextgenerator.cpp --- old/ansifilter-2.22/src/plaintextgenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/plaintextgenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ htmlgenerator.cpp - description ------------------- - copyright : (C) 2007-2023 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/plaintextgenerator.h new/ansifilter-2.23/src/plaintextgenerator.h --- old/ansifilter-2.22/src/plaintextgenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/plaintextgenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ htmlgenerator.h - description ------------------- - copyright : (C) 2007-2023 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/platform_fs.cpp new/ansifilter-2.23/src/platform_fs.cpp --- old/ansifilter-2.22/src/platform_fs.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/platform_fs.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ platform_fs.cpp - description ------------------- begin : Sun Oct 13 2007 - copyright : (C) 2007-2020 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/platform_fs.h new/ansifilter-2.23/src/platform_fs.h --- old/ansifilter-2.22/src/platform_fs.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/platform_fs.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ platform_fs.h - description ------------------- begin : Sun Oct 13 2007 - copyright : (C) 2007-2020 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/qt-gui/mydialog.cpp new/ansifilter-2.23/src/qt-gui/mydialog.cpp --- old/ansifilter-2.22/src/qt-gui/mydialog.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/qt-gui/mydialog.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -118,6 +118,13 @@ settings.beginGroup("window"); resize(settings.value("size", QSize(400, 400)).toSize()); move(settings.value("pos", QPoint(200, 200)).toPoint()); + if (settings.value("options_visible", true).toBool()) { + dlg.groupBox->show(); + dlg.pbToggleView->setText("Hide Options"); + } else { + dlg.groupBox->hide(); + dlg.pbToggleView->setText("Show Options"); + } settings.endGroup(); this->setAcceptDrops(true); @@ -137,7 +144,7 @@ plausibility(); } -void MyDialog::closeEvent(QCloseEvent *event) +void MyDialog::closeEvent(QCloseEvent * /*event*/) { QSettings settings("andre-simon.de", "ansifilter-gui"); settings.beginGroup("format"); @@ -171,6 +178,7 @@ settings.beginGroup("window"); settings.setValue("size", size()); settings.setValue("pos", pos()); + settings.setValue("options_visible", dlg.groupBox->isVisible()); settings.endGroup(); } @@ -184,7 +192,7 @@ } } -void MyDialog::dragLeaveEvent(QDragLeaveEvent* event) +void MyDialog::dragLeaveEvent(QDragLeaveEvent* /*event*/) { dlg.lblDrop->setEnabled(false); } @@ -507,27 +515,27 @@ showFile(); } -void MyDialog::on_sbWidth_valueChanged(int i) +void MyDialog::on_sbWidth_valueChanged(int /*i*/) { showFile(); } -void MyDialog::on_sbHeight_valueChanged(int i) +void MyDialog::on_sbHeight_valueChanged(int /*i*/) { showFile(); } -void MyDialog::on_comboAnsiFormat_currentIndexChanged(int idx) +void MyDialog::on_comboAnsiFormat_currentIndexChanged(int /*idx*/) { showFile(); } -void MyDialog::on_comboFont_currentIndexChanged(int idx) +void MyDialog::on_comboFont_currentIndexChanged(int /*idx*/) { showFile(); } -void MyDialog::on_comboEncoding_currentIndexChanged(int idx) +void MyDialog::on_comboEncoding_currentIndexChanged(int /*idx*/) { showFile(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/rtfgenerator.cpp new/ansifilter-2.23/src/rtfgenerator.cpp --- old/ansifilter-2.22/src/rtfgenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/rtfgenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************************************** rtfcode.cpp - description ------------------- - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/rtfgenerator.h new/ansifilter-2.23/src/rtfgenerator.h --- old/ansifilter-2.22/src/rtfgenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/rtfgenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ rtfcode.h - description ------------------- - copyright : (C) 2007-2024 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/stringtools.cpp new/ansifilter-2.23/src/stringtools.cpp --- old/ansifilter-2.22/src/stringtools.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/stringtools.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -75,4 +75,13 @@ return results; } +string sanitizeForTerminal(std::string_view s) +{ + string out; + out.reserve(s.size()); + for (unsigned char c : s) + out += (c < 0x20 && c != '\t') ? '?' : static_cast<char>(c); + return out; +} + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/stringtools.h new/ansifilter-2.23/src/stringtools.h --- old/ansifilter-2.22/src/stringtools.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/stringtools.h 2026-08-15 18:57:39.000000000 +0200 @@ -65,6 +65,11 @@ return !(iss >> f >> val).fail(); } +/** Replace control characters that could be interpreted as terminal escape sequences. + \param s Input string + \returns String with control characters replaced with '?' */ +string sanitizeForTerminal(std::string_view s); + } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/stylecolour.h new/ansifilter-2.23/src/stylecolour.h --- old/ansifilter-2.22/src/stylecolour.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/stylecolour.h 2026-08-15 18:57:39.000000000 +0200 @@ -28,6 +28,7 @@ #include "enums.h" +#include <sstream> #include <string> #include <string_view> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/svggenerator.cpp new/ansifilter-2.23/src/svggenerator.cpp --- old/ansifilter-2.22/src/svggenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/svggenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ svggenerator.cpp - description ------------------- begin : Mo 01.04.2019 - copyright : (C) 2019-2023 by Andre Simon + copyright : (C) 2019-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/svggenerator.h new/ansifilter-2.23/src/svggenerator.h --- old/ansifilter-2.22/src/svggenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/svggenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ SVGGenerator.h - description ------------------- begin : Mo 23.06.2008 - copyright : (C) 2019-2023 by Andre Simon + copyright : (C) 2019-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/texgenerator.cpp new/ansifilter-2.23/src/texgenerator.cpp --- old/ansifilter-2.22/src/texgenerator.cpp 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/texgenerator.cpp 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ texgenerator.cpp - description ------------------- - copyright : (C) 2008-2023 by Andre Simon + copyright : (C) 2008-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/texgenerator.h new/ansifilter-2.23/src/texgenerator.h --- old/ansifilter-2.22/src/texgenerator.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/texgenerator.h 2026-08-15 18:57:39.000000000 +0200 @@ -2,7 +2,7 @@ texgenerator.h - description ------------------- - copyright : (C) 2008-2023 by Andre Simon + copyright : (C) 2008-2026 by Andre Simon email : [email protected] ***************************************************************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansifilter-2.22/src/version.h new/ansifilter-2.23/src/version.h --- old/ansifilter-2.22/src/version.h 2025-09-10 22:59:42.000000000 +0200 +++ new/ansifilter-2.23/src/version.h 2026-08-15 18:57:39.000000000 +0200 @@ -1,7 +1,7 @@ /*************************************************************************** version.h - description ------------------- - copyright : (C) 2007-2025 by Andre Simon + copyright : (C) 2007-2026 by Andre Simon email : [email protected] ***************************************************************************/ @@ -27,7 +27,7 @@ #include <string> -#define ANSIFILTER_VERSION "2.22" +#define ANSIFILTER_VERSION "2.23" #define ANSIFILTER_URL "http://andre-simon.de/" #define ANSIFILTER_EMAIL "[email protected]"
