external/libmwaw/0001-const-up-some-arrays.patch.1 | 1065 +++++++++++++++++++++
 external/libmwaw/UnpackedTarball_libmwaw.mk        |    8 
 2 files changed, 1073 insertions(+)

New commits:
commit acf3380343e0180f8b8390c817e0d1ffa07679fd
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Jul 19 00:40:31 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Tue Jul 22 20:52:51 2025 +0200

    const up libmwaw
    
    Change-Id: Id6165b64ae29b02128154d5279e9b309b0bbb733
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188174
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins

diff --git a/external/libmwaw/0001-const-up-some-arrays.patch.1 
b/external/libmwaw/0001-const-up-some-arrays.patch.1
new file mode 100644
index 000000000000..446f3748d4a0
--- /dev/null
+++ b/external/libmwaw/0001-const-up-some-arrays.patch.1
@@ -0,0 +1,1065 @@
+From eb67ddd122b2222db975ede465bb0983029f9219 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolan.mcnam...@collabora.com>
+Date: Tue, 22 Jul 2025 14:39:58 +0100
+Subject: [PATCH] const up some arrays
+
+---
+ src/lib/BeagleWksText.cxx          |  2 +-
+ src/lib/Canvas5Parser.cxx          |  2 +-
+ src/lib/CanvasParser.cxx           |  2 +-
+ src/lib/ClarisDrawParser.cxx       |  2 +-
+ src/lib/ClarisDrawText.cxx         |  4 ++--
+ src/lib/ClarisWksDbaseContent.cxx  | 10 +++++-----
+ src/lib/ClarisWksDocument.cxx      |  2 +-
+ src/lib/ClarisWksStyleManager.cxx  |  2 +-
+ src/lib/ClarisWksText.cxx          |  4 ++--
+ src/lib/DocMkrParser.cxx           |  4 ++--
+ src/lib/DocMkrText.cxx             |  4 ++--
+ src/lib/EDocParser.cxx             |  2 +-
+ src/lib/FullWrtGraph.cxx           |  2 +-
+ src/lib/GreatWksDBParser.cxx       |  6 +++---
+ src/lib/GreatWksDocument.cxx       |  2 +-
+ src/lib/GreatWksGraph.cxx          |  2 +-
+ src/lib/GreatWksParser.cxx         |  6 +++---
+ src/lib/GreatWksSSParser.cxx       |  8 ++++----
+ src/lib/HanMacWrdJGraph.cxx        |  2 +-
+ src/lib/HanMacWrdJParser.cxx       |  2 +-
+ src/lib/HanMacWrdKGraph.cxx        |  2 +-
+ src/lib/MWAWCell.cxx               |  2 +-
+ src/lib/MWAWGraphicStyle.cxx       |  2 +-
+ src/lib/MWAWInputStream.cxx        |  2 +-
+ src/lib/MWAWOLEParser.cxx          |  2 +-
+ src/lib/MWAWParagraph.cxx          |  2 +-
+ src/lib/MWAWPictMac.cxx            |  4 ++--
+ src/lib/MWAWSection.cxx            |  2 +-
+ src/lib/MacDocParser.cxx           |  2 +-
+ src/lib/MacDrawProParser.cxx       |  2 +-
+ src/lib/MacWrtProStructures.cxx    |  2 +-
+ src/lib/MarinerWrtText.cxx         |  2 +-
+ src/lib/MoreParser.cxx             |  4 ++--
+ src/lib/MsWksDBParser.cxx          |  6 +++---
+ src/lib/MsWksDocument.cxx          |  6 +++---
+ src/lib/MsWksSSParser.cxx          |  4 ++--
+ src/lib/MultiplanParser.cxx        |  2 +-
+ src/lib/NisusWrtParser.cxx         | 12 ++++++------
+ src/lib/PixelPaintParser.cxx       |  2 +-
+ src/lib/RagTime5ClusterManager.cxx |  4 ++--
+ src/lib/RagTime5Formula.cxx        |  2 +-
+ src/lib/RagTime5Spreadsheet.cxx    |  2 +-
+ src/lib/RagTime5StyleManager.cxx   |  6 +++---
+ src/lib/RagTimeParser.cxx          |  6 +++---
+ src/lib/RagTimeSpreadsheet.cxx     |  8 ++++----
+ src/lib/RagTimeStruct.hxx          |  2 +-
+ src/lib/ReadySetGoGraph.cxx        |  8 ++++----
+ src/lib/WingzGraph.cxx             |  2 +-
+ src/lib/WingzParser.cxx            |  4 ++--
+ src/lib/WriteNowText.cxx           |  2 +-
+ src/lib/libmwaw_internal.cxx       |  4 ++--
+ src/tools/zip/xattr.cpp            |  2 +-
+ 52 files changed, 92 insertions(+), 92 deletions(-)
+
+diff --git a/src/lib/BeagleWksText.cxx b/src/lib/BeagleWksText.cxx
+index 3736e263..d6fc56f3 100644
+--- a/src/lib/BeagleWksText.cxx
++++ b/src/lib/BeagleWksText.cxx
+@@ -228,7 +228,7 @@ struct Section final : public MWAWSection {
+     for (int i=0; i<4; ++i) {
+       if (sec.m_limitPos[i+1]<=sec.m_limitPos[i]+2)
+         continue;
+-      static char const *wh[] = {"header[fP]", "footer[fP]", "header", 
"footer"};
++      static char const* const wh[] = {"header[fP]", "footer[fP]", "header", 
"footer"};
+       o << wh[i] << "=" << std::hex << sec.m_limitPos[i]
+         << "->" << sec.m_limitPos[i+1] << std::hex << ",";
+     }
+diff --git a/src/lib/Canvas5Parser.cxx b/src/lib/Canvas5Parser.cxx
+index 7dee085e..b1b7004d 100644
+--- a/src/lib/Canvas5Parser.cxx
++++ b/src/lib/Canvas5Parser.cxx
+@@ -387,7 +387,7 @@ bool Canvas5Parser::createZones()
+ 
+     for (int w=0; w<2; ++w) {
+       // also some icons: ICN#, icl8, ics#, ics8
+-      static char const *wh[]= {"pnot" /*0*/, "PICT" /* value in pnot */};
++      static char const* const wh[]= {"pnot" /*0*/, "PICT" /* value in pnot 
*/};
+       auto it = entryMap.lower_bound(wh[w]);
+       while (it != entryMap.end() && it->first==wh[w]) {
+         auto const &entry=it++->second;
+diff --git a/src/lib/CanvasParser.cxx b/src/lib/CanvasParser.cxx
+index fba45e94..0ca7ae39 100644
+--- a/src/lib/CanvasParser.cxx
++++ b/src/lib/CanvasParser.cxx
+@@ -664,7 +664,7 @@ bool CanvasParser::createZones()
+     auto const &entryMap = rsrcParser->getEntriesMap();
+ 
+     for (int w=0; w<5; ++w) {
+-      static char const *wh[]= {"HeAd" /*11164*/, "Jinf" /* 10568 */, "WIND" 
/* 10568 */, "LPol" /* 2,4,... */, "USER" /*0*/};
++      static char const* const wh[]= {"HeAd" /*11164*/, "Jinf" /* 10568 */, 
"WIND" /* 10568 */, "LPol" /* 2,4,... */, "USER" /*0*/};
+       auto it = entryMap.lower_bound(wh[w]);
+       while (it != entryMap.end() && it->first==wh[w]) {
+         auto const &entry=it++->second;
+diff --git a/src/lib/ClarisDrawParser.cxx b/src/lib/ClarisDrawParser.cxx
+index b5cbc4d1..87c4ff19 100644
+--- a/src/lib/ClarisDrawParser.cxx
++++ b/src/lib/ClarisDrawParser.cxx
+@@ -546,7 +546,7 @@ bool ClarisDrawParser::readDocHeader()
+     num[i]=static_cast<int>(input->readULong(2));
+     if (!num[i])
+       continue;
+-    static char const *wh[]= {"color", "unkn1", "gradient"};
++    static char const* const wh[]= {"color", "unkn1", "gradient"};
+     f << "num[" << wh[i] << "]=" << num[i] << ",";
+   }
+   m_styleManager->setDefaultNumbers(num[0], num[2]);
+diff --git a/src/lib/ClarisDrawText.cxx b/src/lib/ClarisDrawText.cxx
+index 6bc532c3..7b6184c9 100644
+--- a/src/lib/ClarisDrawText.cxx
++++ b/src/lib/ClarisDrawText.cxx
+@@ -126,7 +126,7 @@ struct Paragraph final : public MWAWParagraph {
+   {
+     o << static_cast<MWAWParagraph const &>(ind) << ",";
+     if (ind.m_labelType > 0 && ind.m_labelType < 12) {
+-      static char const *labelNames[] = {
++      static char const* const labelNames[] = {
+         "none", "diamond", "bullet", "checkbox", "hardvard", "leader", 
"legal",
+         "upperalpha", "alpha", "numeric", "upperroman", "roman"
+       };
+@@ -261,7 +261,7 @@ struct ParagraphPLC {
+ 
+     auto listType=int((info.m_flags>>3)&0xF);
+     if (listType>0 && listType < 12) {
+-      static char const *labelNames[] = {
++      static char const* const labelNames[] = {
+         "none", "diamond", "bullet", "checkbox", "hardvard", "leader", 
"legal",
+         "upperalpha", "alpha", "numeric", "upperroman", "roman"
+       };
+diff --git a/src/lib/ClarisWksDbaseContent.cxx 
b/src/lib/ClarisWksDbaseContent.cxx
+index cf86f351..84f58178 100644
+--- a/src/lib/ClarisWksDbaseContent.cxx
++++ b/src/lib/ClarisWksDbaseContent.cxx
+@@ -461,7 +461,7 @@ bool ClarisWksDbaseContent::readRecordSSV1(MWAWVec2i const 
&id, long pos, Claris
+   case 7:
+   case 8:
+   case 9: {
+-    static char const *wh[]= {"%m/%d/%y", "%B %d, %y", "%B %d, %Y", "%a, %b 
%d %y", "%A, %B %d %Y" };
++    static char const* const wh[]= {"%m/%d/%y", "%B %d, %y", "%B %d, %Y", 
"%a, %b %d %y", "%A, %B %d %Y" };
+     format.m_format=MWAWCell::F_DATE;
+     format.m_DTFormat=wh[fileFormat-5];
+     break;
+@@ -470,7 +470,7 @@ bool ClarisWksDbaseContent::readRecordSSV1(MWAWVec2i const 
&id, long pos, Claris
+   case 11:
+   case 12:
+   case 13: {
+-    static char const *wh[]= {"%I:%M %p", "%I:%M:%S %p", "%H:%M", "%H:%M:%S" 
};
++    static char const* const wh[]= {"%I:%M %p", "%I:%M:%S %p", "%H:%M", 
"%H:%M:%S" };
+     format.m_format=MWAWCell::F_TIME;
+     format.m_DTFormat=wh[fileFormat-10];
+     break;
+@@ -781,7 +781,7 @@ bool ClarisWksDbaseContent::readRecordSS(MWAWVec2i const 
&id, long pos, ClarisWk
+   case 7:
+   case 8:
+   case 9: {
+-    static char const *wh[]= {"%m/%d/%y", "%B %d, %y", "%B %d, %Y", "%a, %b 
%d %y", "%A, %B %d %Y" };
++    static char const* const wh[]= {"%m/%d/%y", "%B %d, %y", "%B %d, %Y", 
"%a, %b %d %y", "%A, %B %d %Y" };
+     format.m_format=MWAWCell::F_DATE;
+     format.m_DTFormat=wh[fileFormat-5];
+     break;
+@@ -793,7 +793,7 @@ bool ClarisWksDbaseContent::readRecordSS(MWAWVec2i const 
&id, long pos, ClarisWk
+   case 13:
+   case 14:
+   case 15: {
+-    static char const *wh[]= {"%H:%M", "%H:%M:%S", "%I:%M %p", "%I:%M:%S %p" 
};
++    static char const* const wh[]= {"%H:%M", "%H:%M:%S", "%I:%M %p", 
"%I:%M:%S %p" };
+     format.m_format=MWAWCell::F_TIME;
+     format.m_DTFormat=wh[fileFormat-12];
+     break;
+@@ -1389,7 +1389,7 @@ bool ClarisWksDbaseContent::readFormula(MWAWVec2i const 
&cPos, long endPos, std:
+     arity=static_cast<int>(input->readULong(1));
+     std::string name("");
+     if (val<0x70) {
+-      static char const *wh[] = {
++      static char const* const wh[] = {
+         "Abs", "Acos", "Alert", "And", "Code", "Asin", "Atan", "Atan2",
+         "Average", "Choose", "Char", "Concatenate", "Cos", "Count", "Date", 
"DateToText",
+ 
+diff --git a/src/lib/ClarisWksDocument.cxx b/src/lib/ClarisWksDocument.cxx
+index 42a99ca3..f9d5de3c 100644
+--- a/src/lib/ClarisWksDocument.cxx
++++ b/src/lib/ClarisWksDocument.cxx
+@@ -1225,7 +1225,7 @@ bool ClarisWksDocument::readDocHeader()
+   val = static_cast<int>(input->readULong(1));
+   if (type != val) {
+     if (val >= 0 && val < 7) {
+-      static char const *wh[]= { "draw", "text", "spreadsheet", "database", 
"paint", "presentation", "table" };
++      static char const* const wh[]= { "draw", "text", "spreadsheet", 
"database", "paint", "presentation", "table" };
+       f << "type[display]=" << wh[val] << ",";
+     }
+     else {
+diff --git a/src/lib/ClarisWksStyleManager.cxx 
b/src/lib/ClarisWksStyleManager.cxx
+index 25e860ae..71cd8a78 100644
+--- a/src/lib/ClarisWksStyleManager.cxx
++++ b/src/lib/ClarisWksStyleManager.cxx
+@@ -2806,7 +2806,7 @@ std::ostream &operator<<(std::ostream &o, 
ClarisWksStyleManager::CellFormat cons
+ {
+   o << static_cast<MWAWCell::Format const &>(form) << ",";
+   if (form.m_fileFormat >= 0 && form.m_fileFormat < 16) {
+-    static char const *wh[16] = {
++    static char const* const wh[16] = {
+       "general", "currency", "percent", "scientific", "fixed",
+       "date[m/d/y]", "date[d B y]", "date[B d Y]", "date[a, b d Y]", "date[A, 
B d Y]",
+       "form10", "form11",
+diff --git a/src/lib/ClarisWksText.cxx b/src/lib/ClarisWksText.cxx
+index f8ea8865..539b2a63 100644
+--- a/src/lib/ClarisWksText.cxx
++++ b/src/lib/ClarisWksText.cxx
+@@ -130,7 +130,7 @@ struct Paragraph final : public MWAWParagraph {
+   {
+     o << static_cast<MWAWParagraph const &>(ind) << ",";
+     if (ind.m_labelType > 0 && ind.m_labelType < 12) {
+-      static char const *labelNames[] = {
++      static char const* const labelNames[] = {
+         "none", "diamond", "bullet", "checkbox", "hardvard", "leader", 
"legal",
+         "upperalpha", "alpha", "numeric", "upperroman", "roman"
+       };
+@@ -260,7 +260,7 @@ struct ParagraphPLC {
+ 
+     auto listType=int((info.m_flags>>3)&0xF);
+     if (listType>0 && listType < 12) {
+-      static char const *labelNames[] = {
++      static char const* const labelNames[] = {
+         "none", "diamond", "bullet", "checkbox", "hardvard", "leader", 
"legal",
+         "upperalpha", "alpha", "numeric", "upperroman", "roman"
+       };
+diff --git a/src/lib/DocMkrParser.cxx b/src/lib/DocMkrParser.cxx
+index bf676852..7ea33e17 100644
+--- a/src/lib/DocMkrParser.cxx
++++ b/src/lib/DocMkrParser.cxx
+@@ -113,7 +113,7 @@ std::ostream &operator<<(std::ostream &o, PictInfo const 
&info)
+     break;
+   }
+   if (info.m_action >= 0 && info.m_action <= 16) {
+-    static char const *wh[]= {
++    static char const* const wh[]= {
+       "", "goTo", "aboutDialog", "print", "quit", "launch", "sound", "QMOV",
+       "note", "export[asText]", "last[chapter]", "TOC[show]", "find", 
"appleEvent",
+       "next[chapter]", "prev[chapter]", "script"
+@@ -389,7 +389,7 @@ bool DocMkrParser::createZones()
+ #ifdef DEBUG_WITH_FILES
+   // get rid of the default application resource
+   libmwaw::DebugFile &ascFile = rsrcAscii();
+-  static char const *appliRsrc[]= {
++  static char const* const appliRsrc[]= {
+     // default, Dialog (3000: DLOG,DITL,DLGX,dctb","ictb","STR ")
+     "ALRT","BNDL","CNTL","CURS","CDEF", "DLOG","DLGX","DITL","FREF","ICON", 
"ICN#","MENU","SIZE",
+     "crsr","dctb","icl4","icl8","ics4", "ics8","ics#","ictb","snd ",
+diff --git a/src/lib/DocMkrText.cxx b/src/lib/DocMkrText.cxx
+index 0b6e7dc0..abe5af2e 100644
+--- a/src/lib/DocMkrText.cxx
++++ b/src/lib/DocMkrText.cxx
+@@ -99,8 +99,8 @@ struct Footer {
+   //! operator<<
+   friend std::ostream &operator<<(std::ostream &o, Footer const &f)
+   {
+-    static char const *where[]= {"TL", "TC", "TR", "BL", "BC", "BR" };
+-    static char const *what[]= { "nothing", "unkn1", "unkn2", "time", "date",
++    static char const* const where[]= {"TL", "TC", "TR", "BL", "BC", "BR" };
++    static char const* const what[]= { "nothing", "unkn1", "unkn2", "time", 
"date",
+                                  "page", "fileName", "chapName", "userText"
+                                };
+     if (f.m_chapterResetPage)
+diff --git a/src/lib/EDocParser.cxx b/src/lib/EDocParser.cxx
+index 318a48cd..147de249 100644
+--- a/src/lib/EDocParser.cxx
++++ b/src/lib/EDocParser.cxx
+@@ -267,7 +267,7 @@ bool EDocParser::createZones()
+ #ifdef DEBUG_WITH_FILES
+   // get rid of the default application resource
+   libmwaw::DebugFile &ascFile = rsrcAscii();
+-  static char const *appliRsrc[]= {
++  static char const* const appliRsrc[]= {
+     // default, Dialog (3000: DLOG,DITL,DLGX,dctb","ictb","STR ")
+     "ALRT","BNDL","CNTL","CURS","CDEF", "DLOG","DLGX","DITL","FREF","ICON",
+     "ICN#","MENU","SIZE","WIND",
+diff --git a/src/lib/FullWrtGraph.cxx b/src/lib/FullWrtGraph.cxx
+index 845554af..bf4c28cc 100644
+--- a/src/lib/FullWrtGraph.cxx
++++ b/src/lib/FullWrtGraph.cxx
+@@ -320,7 +320,7 @@ std::shared_ptr<FullWrtStruct::ZoneHeader> 
FullWrtGraph::readSideBar(FullWrtStru
+     if (ok) continue;
+     MWAW_DEBUG_MSG(("FullWrtGraph::readSideBar: pb reading the zone %d
", i));
+     f.str("");
+-    static char const *wh[]= {"position","format","unknown"};
++    static char const* const wh[]= {"position","format","unknown"};
+     f << "SideBar[" << wh[i] << ":###";
+     asciiFile.addPos(pos);
+     asciiFile.addNote(f.str().c_str());
+diff --git a/src/lib/GreatWksDBParser.cxx b/src/lib/GreatWksDBParser.cxx
+index 72c28078..19b653ad 100644
+--- a/src/lib/GreatWksDBParser.cxx
++++ b/src/lib/GreatWksDBParser.cxx
+@@ -791,7 +791,7 @@ bool GreatWksDBParser::readHeader()
+       ascii().addNote(f.str().c_str());
+       return false;
+     }
+-    static char const *wh[]= {"Free", "RecLink", "Block2"};
++    static char const* const wh[]= {"Free", "RecLink", "Block2"};
+     block.m_name=wh[i];
+     m_state->m_blocks.push_back(block);
+     f << block << ",";
+@@ -1194,7 +1194,7 @@ bool GreatWksDBParser::checkSmallZone(MWAWEntry &entry)
+      its length will be underestimate */
+   entry.setLength(6+long(input->readULong(4)));
+   if (id>=0 && id<15) {
+-    static char const *names[]= {
++    static char const* const names[]= {
+       "Zone0A", "Field", "FrmLink", "Zone3A", "Zone4A", "ListFrmula", 
"ListSummary", "Zone7A",
+       "Zone8A", "Form", "FldLink", "Zone11A", "Zone12A", "FldAuxi", "Zone14A"
+     };
+@@ -1610,7 +1610,7 @@ bool GreatWksDBParser::readFields(MWAWEntry const &entry)
+       if (val!=0x10a) f << "fl=" << std::hex << val << std::dec << ",";
+       field.m_summaryType=static_cast<int>(input->readULong(2));
+       if (field.m_summaryType > 0 && field.m_summaryType < 6) {
+-        static char const *wh[] = { "", "average", "count", "total", 
"minimum", "maximum" };
++        static char const* const wh[] = { "", "average", "count", "total", 
"minimum", "maximum" };
+         f << wh[field.m_summaryType] << ",";
+       }
+       else
+diff --git a/src/lib/GreatWksDocument.cxx b/src/lib/GreatWksDocument.cxx
+index 06a0fdb8..e3b5c7fc 100644
+--- a/src/lib/GreatWksDocument.cxx
++++ b/src/lib/GreatWksDocument.cxx
+@@ -703,7 +703,7 @@ bool GreatWksDocument::readFormula(MWAWVec2i const &cPos, 
long endPos, std::vect
+       arity= static_cast<int>(input->readULong(1));
+       instr.m_type=MWAWCellContent::FormulaInstruction::F_Function;
+ 
+-      static char const *s_functions[] = {
++      static char const* const s_functions[] = {
+         "", "Abs", "Exp", "Fact", "Int", "Ln", "Log", "Log10",
+         "Mod", "Pi", "Product", "Rand", "Round", "Sign", "Sqrt", "Trunc",
+ 
+diff --git a/src/lib/GreatWksGraph.cxx b/src/lib/GreatWksGraph.cxx
+index b670c5ae..8dc2e50b 100644
+--- a/src/lib/GreatWksGraph.cxx
++++ b/src/lib/GreatWksGraph.cxx
+@@ -1212,7 +1212,7 @@ bool GreatWksGraph::readPageFrames()
+     f << "page=" << pageZone.m_page << ",";
+     endPos=pos+6+long(input->readULong(4));
+   }
+-  static char const *wh[]= {"head", "gstyle", "root", "unknown"};
++  static char const* const wh[]= {"head", "gstyle", "root", "unknown"};
+   long zoneSz[4]= {0,0,0,0};
+   for (int i=0; i < nZones; ++i) {
+     zoneSz[i] = long(input->readULong(4));
+diff --git a/src/lib/GreatWksParser.cxx b/src/lib/GreatWksParser.cxx
+index 8ed0fec4..57fd42ad 100644
+--- a/src/lib/GreatWksParser.cxx
++++ b/src/lib/GreatWksParser.cxx
+@@ -384,7 +384,7 @@ bool GreatWksParser::readDocInfo()
+   f << "Entries(DocInfo):";
+   int val;
+   for (int i=0; i < 4; ++i) {
+-    static char const *wh[]= {"fl0", "fl1", "smartquote","hidepict"};
++    static char const* const wh[]= {"fl0", "fl1", "smartquote","hidepict"};
+     val =static_cast<int>(input->readLong(1));
+     if (!val) continue;
+     if (val==1) f << wh[i] << ",";
+@@ -408,7 +408,7 @@ bool GreatWksParser::readDocInfo()
+   for (int i=0; i < 4; ++i) {
+     val=static_cast<int>(input->readLong(1));
+     if (!val) continue;
+-    static char const *wh[]= {"titlePage", "left/rightPage", 
"header","footer"};
++    static char const* const wh[]= {"titlePage", "left/rightPage", 
"header","footer"};
+     if (val!=1) {
+       f << "#" << wh[i] << "=" << val << ",";
+       continue;
+@@ -437,7 +437,7 @@ bool GreatWksParser::readDocInfo()
+     pos = input->tell();
+     f.str("");
+     if (i<4) {
+-      static char const *wh[]= {"margins", "header/footer", "1", "pageDim" };
++      static char const* const wh[]= {"margins", "header/footer", "1", 
"pageDim" };
+       f << "DocInfo[" << wh[i] << "]:";
+     }
+     else
+diff --git a/src/lib/GreatWksSSParser.cxx b/src/lib/GreatWksSSParser.cxx
+index 158a8a45..972252f4 100644
+--- a/src/lib/GreatWksSSParser.cxx
++++ b/src/lib/GreatWksSSParser.cxx
+@@ -429,7 +429,7 @@ bool GreatWksSSParser::readSpreadsheet()
+         f << "Entries(Zone10):";
+     }
+     else if (type>=0 && type < 0x1a) {
+-      static char const *wh[0x1a] = {
++      static char const* const wh[0x1a] = {
+         "_", "FontNames", "Style", "Column", "Column", "Row", "Zone6", "Row",
+         "Column", "Zone9", "Zonea", "Zoneb", "Row", "Screen", "DocOptions", 
"Selection",
+         "DocInfo", "CalcMode", "Zone12", "Zone13", "Zone14", "GridOptions", 
"DocInfo", "Header",
+@@ -579,7 +579,7 @@ bool GreatWksSSParser::readSpreadsheet()
+         val=static_cast<int>(input->readULong(1));
+         if (!val) continue;
+         // checkme: same value in v2 ?
+-        static char const *what[]= {"grid[display]", "headerRC[display]", 
"zero[doc]", "formula[doc]", "grid[print]", "headerRC[print]", "header[print]", 
"footer[print]", "protected" };
++        static char const* const what[]= {"grid[display]", 
"headerRC[display]", "zero[doc]", "formula[doc]", "grid[print]", 
"headerRC[print]", "header[print]", "footer[print]", "protected" };
+         if (val==1) {
+           if (i==6)
+             m_state->m_headerPrint=true;
+@@ -936,7 +936,7 @@ bool 
GreatWksSSParser::readCell(GreatWksSSParserInternal::Cell &cell)
+   case 16:
+   case 17:
+   case 18: {
+-    static char const *wh[] = {
++    static char const* const wh[] = {
+       "%m/%d/%y", "%b %d, %Y", "%b %Y", "%b %d", "%B %d, %Y", "%B %Y", "%B 
%d", "%a, %b %d, %Y", "%A, %B %d, %Y"
+     };
+     format.m_format=MWAWCell::F_DATE;
+@@ -948,7 +948,7 @@ bool 
GreatWksSSParser::readCell(GreatWksSSParserInternal::Cell &cell)
+   case 21:
+   case 22:
+   case 23: {
+-    static char const *wh[] = {
++    static char const* const wh[] = {
+       "%H:%M", "%H:%M:%S", "%I:%M %p", "%I:%M:%S %p"
+     };
+     format.m_format=MWAWCell::F_TIME;
+diff --git a/src/lib/HanMacWrdJGraph.cxx b/src/lib/HanMacWrdJGraph.cxx
+index 8905ff66..78014e4b 100644
+--- a/src/lib/HanMacWrdJGraph.cxx
++++ b/src/lib/HanMacWrdJGraph.cxx
+@@ -1951,7 +1951,7 @@ bool 
HanMacWrdJGraph::readTableFormatsList(HanMacWrdJGraphInternal::Table &table
+ 
+     int color, pattern;
+     format.m_borders.resize(4);
+-    static char const *what[] = {"T", "L", "B", "R"};
++    static char const* const what[] = {"T", "L", "B", "R"};
+     static size_t const which[] = { libmwaw::Top, libmwaw::Left, 
libmwaw::Bottom, libmwaw::Right };
+     for (int b=0; b < 4; b++) {
+       f2.str("");
+diff --git a/src/lib/HanMacWrdJParser.cxx b/src/lib/HanMacWrdJParser.cxx
+index 157c6c93..e2c70acd 100644
+--- a/src/lib/HanMacWrdJParser.cxx
++++ b/src/lib/HanMacWrdJParser.cxx
+@@ -438,7 +438,7 @@ bool HanMacWrdJParser::checkEntry(MWAWEntry &entry)
+   entry.setLength(length);
+ 
+   if (type>=0 && type <= 15) {
+-    static char const *what[] = {
++    static char const* const what[] = {
+       "FontDef", "Ruler", "Style", "FrameDef", "TZoneList",
+       "TextZone", "Picture", "Table", "GraphData", "GroupData",
+       "ZoneA", "ZoneB", "Section", "FtnDef", "ZoneE", "FontsName"
+diff --git a/src/lib/HanMacWrdKGraph.cxx b/src/lib/HanMacWrdKGraph.cxx
+index ae92a52f..4948ded9 100644
+--- a/src/lib/HanMacWrdKGraph.cxx
++++ b/src/lib/HanMacWrdKGraph.cxx
+@@ -1919,7 +1919,7 @@ std::shared_ptr<HanMacWrdKGraphInternal::Table> 
HanMacWrdKGraph::readTable(std::
+     val = input->readLong(2);
+     if (val) f << "f2=" << val << ",";
+ 
+-    static char const *what[] = {"T", "L", "B", "R"};
++    static char const* const what[] = {"T", "L", "B", "R"};
+     static int const which[] = { libmwaw::TopBit, libmwaw::LeftBit, 
libmwaw::BottomBit, libmwaw::RightBit };
+     for (int b = 0; b < 4; ++b) { // find _,4000,_,_,1,_, and 1,_,_,_,1,_,
+       f2.str("");
+diff --git a/src/lib/MWAWCell.cxx b/src/lib/MWAWCell.cxx
+index 2fe054b2..1c490ab8 100644
+--- a/src/lib/MWAWCell.cxx
++++ b/src/lib/MWAWCell.cxx
+@@ -458,7 +458,7 @@ std::ostream &operator<<(std::ostream &o, MWAWCell const 
&cell)
+       continue;
+     o << "bord";
+     if (i < 6) {
+-      static char const *wh[] = { "L", "R", "T", "B", "MiddleH", "MiddleV" };
++      static char const* const wh[] = { "L", "R", "T", "B", "MiddleH", 
"MiddleV" };
+       o << wh[i];
+     }
+     else o << "[#wh=" << i << "]";
+diff --git a/src/lib/MWAWGraphicStyle.cxx b/src/lib/MWAWGraphicStyle.cxx
+index 5ba36268..1c2f83eb 100644
+--- a/src/lib/MWAWGraphicStyle.cxx
++++ b/src/lib/MWAWGraphicStyle.cxx
+@@ -648,7 +648,7 @@ std::ostream &operator<<(std::ostream &o, MWAWGraphicStyle 
const &st)
+         continue;
+       o << "bord";
+       if (i < 4) {
+-        static char const *wh[] = { "L", "R", "T", "B"};
++        static char const* const wh[] = { "L", "R", "T", "B"};
+         o << wh[i];
+       }
+       else o << "[#wh=" << i << "]";
+diff --git a/src/lib/MWAWInputStream.cxx b/src/lib/MWAWInputStream.cxx
+index dda89e19..eec2c8cd 100644
+--- a/src/lib/MWAWInputStream.cxx
++++ b/src/lib/MWAWInputStream.cxx
+@@ -744,7 +744,7 @@ bool MWAWInputStream::unMacMIME(MWAWInputStream *inp,
+       return false;
+     }
+ #ifdef DEBUG
+-    static const char *what[] = {
++    static const char* const what[] = {
+       "", "Data", "Rsrc", "FileName", "Comment", "IconBW", "IconColor", "",
+       "FileDates", "FinderInfo", "MacInfo", "ProDosInfo",
+       "MSDosInfo", "AFPName", "AFPInfo", "AFPDirId"
+diff --git a/src/lib/MWAWOLEParser.cxx b/src/lib/MWAWOLEParser.cxx
+index 4894d74f..1c2460a0 100644
+--- a/src/lib/MWAWOLEParser.cxx
++++ b/src/lib/MWAWOLEParser.cxx
+@@ -897,7 +897,7 @@ bool 
MWAWOLEParser::readSummaryInformation(MWAWInputStreamPtr input, std::string
+       else if (sect==0 && type==0x1e && !isDoc && ((it->second>=2 && 
it->second<=6) || it->second==8)) {
+         librevenge::RVNGString text;
+         if (readSummaryPropertyString(input, sEndPos, type, text, f) && 
!text.empty()) {
+-          static char const *attribNames[] = {
++          static char const* const attribNames[] = {
+             "", "", "dc:title", "dc:subject", "meta:initial-creator",
+             "meta:keywords", "dc:description"/*comment*/, "", "dc:creator"
+           };
+diff --git a/src/lib/MWAWParagraph.cxx b/src/lib/MWAWParagraph.cxx
+index 243f1e2b..6676830c 100644
+--- a/src/lib/MWAWParagraph.cxx
++++ b/src/lib/MWAWParagraph.cxx
+@@ -521,7 +521,7 @@ std::ostream &operator<<(std::ostream &o, MWAWParagraph 
const &pp)
+       continue;
+     o << "bord";
+     if (i < 6) {
+-      static char const *wh[] = { "L", "R", "T", "B", "MiddleH", "MiddleV" };
++      static char const* const wh[] = { "L", "R", "T", "B", "MiddleH", 
"MiddleV" };
+       o << wh[i];
+     }
+     else o << "[#wh=" << i << "]";
+diff --git a/src/lib/MWAWPictMac.cxx b/src/lib/MWAWPictMac.cxx
+index 56130ae5..31f119f0 100644
+--- a/src/lib/MWAWPictMac.cxx
++++ b/src/lib/MWAWPictMac.cxx
+@@ -293,7 +293,7 @@ struct Bitmap {
+     if (f.m_region.get()) o << ", " << *f.m_region;
+ 
+     if (f.m_mode >= 0 && f.m_mode < 16) {
+-      static char const *mode0[] = { // 0-15
++      static char const* const mode0[] = { // 0-15
+         "srcCopy", "srcOr", "srcXOr", "srcBic",
+         "notSrcCopy", "notSrcOr", "notSrcXOr", "notSrcBic",
+         "patCopy", "patOr", "patXOr", "patBic",
+@@ -302,7 +302,7 @@ struct Bitmap {
+       o << ", " << mode0[f.m_mode] << ", [...]";
+     }
+     else if (f.m_mode >= 32 && f.m_mode < 40) {
+-      static char const *mode1[] = { // 32-39
++      static char const* const mode1[] = { // 32-39
+         "blend", "addPin", "addOver", "subPin",
+         "transparent", "addMax", "subOver", "addMin"
+       };
+diff --git a/src/lib/MWAWSection.cxx b/src/lib/MWAWSection.cxx
+index c6003d83..24ebf6fd 100644
+--- a/src/lib/MWAWSection.cxx
++++ b/src/lib/MWAWSection.cxx
+@@ -44,7 +44,7 @@
+ std::ostream &operator<<(std::ostream &o, MWAWSection::Column const &col)
+ {
+   if (col.m_width > 0) o << "w=" << col.m_width << ",";
+-  static char const *wh[4]= {"L", "R", "T", "B"};
++  static char const* const wh[4]= {"L", "R", "T", "B"};
+   for (int i = 0; i < 4; i++) {
+     if (col.m_margins[i]>0)
+       o << "col" << wh[i] << "=" << col.m_margins[i] << ",";
+diff --git a/src/lib/MacDocParser.cxx b/src/lib/MacDocParser.cxx
+index 56554160..08be7101 100644
+--- a/src/lib/MacDocParser.cxx
++++ b/src/lib/MacDocParser.cxx
+@@ -303,7 +303,7 @@ bool MacDocParser::createZones()
+ 
+   // get rid of the default application resource
+   libmwaw::DebugFile &ascFile = rsrcAscii();
+-  static char const *appliRsrc[]= {
++  static char const* const appliRsrc[]= {
+     "ALRT","BNDL","CNTL","CURS","CDEF", "CODE","DLOG","DLGX","DITL","FREF",
+     "ICON","ICN#","MENU","MBAR","MDEF", "SIZE","TMPL","WIND",
+     "acur","cicn","crsr","dctb","icl4", "icl8","ics4","ics8","ics#","ictb",
+diff --git a/src/lib/MacDrawProParser.cxx b/src/lib/MacDrawProParser.cxx
+index 37d55b1f..64c626c8 100644
+--- a/src/lib/MacDrawProParser.cxx
++++ b/src/lib/MacDrawProParser.cxx
+@@ -1388,7 +1388,7 @@ int MacDrawProParser::readObject()
+   }
+   // reads the pattern
+   int patId[2]= {0,0};
+-  static char const *wh[]= {"line", "surf"};
++  static char const* const wh[]= {"line", "surf"};
+   for (int i=0; i<2; ++i) {
+     val=static_cast<int>(input->readULong(2));
+     if (vers>0) {
+diff --git a/src/lib/MacWrtProStructures.cxx b/src/lib/MacWrtProStructures.cxx
+index 2bbed648..9da5b53b 100644
+--- a/src/lib/MacWrtProStructures.cxx
++++ b/src/lib/MacWrtProStructures.cxx
+@@ -195,7 +195,7 @@ struct Graphic {
+     }
+     if (bl.m_id >= 0) o << "id=" << bl.m_id << ",";
+     o << "box=" << bl.m_box << ",";
+-    static char const *wh[] = { "L", "R", "T", "B" };
++    static char const* const wh[] = { "L", "R", "T", "B" };
+     if (bl.hasSameBorders()) {
+       if (bl.m_borderWList[0] > 0)
+         o << "bord[width]=" << bl.m_borderWList[0] << ",";
+diff --git a/src/lib/MarinerWrtText.cxx b/src/lib/MarinerWrtText.cxx
+index 12b64195..d47024f8 100644
+--- a/src/lib/MarinerWrtText.cxx
++++ b/src/lib/MarinerWrtText.cxx
+@@ -300,7 +300,7 @@ std::ostream &operator<<(std::ostream &o, 
Paragraph::BorderFill const &fill)
+     if (fill.m_patternId) o << "patId=" << fill.m_patternId << ",";
+     o << "],";
+   }
+-  static char const *wh[] = {"bordL", "bordT", "bordR", "bordB" };
++  static char const* const wh[] = {"bordL", "bordT", "bordR", "bordB" };
+   if (!fill.m_borderColor.isBlack() && fill.hasBorders())
+     o << "borderColor=" << fill.m_borderColor << ",";
+   for (int i = 0; i < 4; i++) {
+diff --git a/src/lib/MoreParser.cxx b/src/lib/MoreParser.cxx
+index 64e25d38..76cfdf57 100644
+--- a/src/lib/MoreParser.cxx
++++ b/src/lib/MoreParser.cxx
+@@ -405,7 +405,7 @@ bool MoreParser::readZonesList()
+     MWAWEntry entry;
+     entry.setBegin(long(input->readULong(4)));
+     entry.setLength(long(input->readULong(4)));
+-    static char const *names[]= {
++    static char const* const names[]= {
+       "PrintInfo", "DocInfo", "Unknown2", "Topic",
+       "Comment", "Slide", "Outline", "FreePos", "SpeakerNote"
+     };
+@@ -423,7 +423,7 @@ bool MoreParser::readZonesList()
+   if (unkn) f << "unkn=" << unkn << ",";
+   /* checkme: another list begins here, but I am not sure of its length :-~ */
+   for (int i=0; i < 5; i++) {
+-    static char const *names[]=
++    static char const* const names[]=
+     { "Unknown9", "Fonts", "UnknownB","UnknownC", "UnknownD" };
+     MWAWEntry entry;
+     entry.setBegin(long(input->readULong(4)));
+diff --git a/src/lib/MsWksDBParser.cxx b/src/lib/MsWksDBParser.cxx
+index 4d07b085..5a635272 100644
+--- a/src/lib/MsWksDBParser.cxx
++++ b/src/lib/MsWksDBParser.cxx
+@@ -1617,7 +1617,7 @@ bool MsWksDBParser::readFieldTypes()
+       format.m_format=MWAWCell::F_DATE;
+       content.m_contentType=MWAWCellContent::C_NUMBER;
+       if (subformat>=0 && subformat < 5) { // checkme
+-        static char const *wh[]= {"%m/%d/%y", "%b %d, %Y", "%b, %d", "%b, 
%Y", "%a, %d %b, %Y" };
++        static char const* const wh[]= {"%m/%d/%y", "%b %d, %Y", "%b, %d", 
"%b, %Y", "%a, %d %b, %Y" };
+         format.m_DTFormat=wh[subformat];
+         subformat=0;
+       }
+@@ -1626,7 +1626,7 @@ bool MsWksDBParser::readFieldTypes()
+       format.m_format=MWAWCell::F_TIME;
+       content.m_contentType=MWAWCellContent::C_NUMBER;
+       if (subformat >= 0 && subformat < 4) { // checkme
+-        static char const *wh[]= {"%I:%M:%S %p", "%I:%M %p", "%H:%M:%S", 
"%H:%M"};
++        static char const* const wh[]= {"%I:%M:%S %p", "%I:%M %p", 
"%H:%M:%S", "%H:%M"};
+         format.m_DTFormat=wh[subformat];
+         subformat=0;
+       }
+@@ -1813,7 +1813,7 @@ bool MsWksDBParser::readFieldTypesV2()
+         break;
+       case 6: {
+         format.m_format=MWAWCell::F_DATE;
+-        static char const *wh[]= {"%B %d, %Y", "%b %d, %Y", "%A, %d %B, %Y", 
"%a, %d %b, %Y" };
++        static char const* const wh[]= {"%B %d, %Y", "%b %d, %Y", "%A, %d %B, 
%Y", "%a, %d %b, %Y" };
+         format.m_DTFormat=wh[((what>>5)&3)];
+         what &= 0x9F;
+         break;
+diff --git a/src/lib/MsWksDocument.cxx b/src/lib/MsWksDocument.cxx
+index 99b76f93..4c0ac464 100644
+--- a/src/lib/MsWksDocument.cxx
++++ b/src/lib/MsWksDocument.cxx
+@@ -1273,7 +1273,7 @@ bool MsWksDocument::readFormula(long endPos, 
MWAWCellContent &content, std::stri
+     case 0x2:
+     case 0x4:
+     case 0x6: {
+-      static char const *wh[]= {"+","-","*","/"};
++      static char const* const wh[]= {"+","-","*","/"};
+       instr.m_type=MWAWCellContent::FormulaInstruction::F_Operator;
+       instr.m_content=wh[code/2];
+       break;
+@@ -1299,7 +1299,7 @@ bool MsWksDocument::readFormula(long endPos, 
MWAWCellContent &content, std::stri
+     }
+     case 0x0c: { // function
+       auto v = static_cast<int>(input->readULong(1));
+-      static char const *(listFunc) [0x41] = {
++      static char const* const listFunc [0x41] = {
+         "Abs", "Sum", "Na", "Error", "ACos", "And", "ASin", "ATan",
+         "ATan2", "Average", "Choose", "Cos", "Count", "Exp", "False", "FV",
+         "HLookup", "If", "Index", "Int", "IRR", "IsBlank", "IsError", "IsNa",
+@@ -1343,7 +1343,7 @@ bool MsWksDocument::readFormula(long endPos, 
MWAWCellContent &content, std::stri
+       break;
+     default:
+       if ((code%2)==0 && code>=0x10 && code<=0x22) {
+-        static char const *wh[]= {"(", ")", ";", "end", "<", ">", "=", "<=", 
">=", "<>" };
++        static char const* const wh[]= {"(", ")", ";", "end", "<", ">", "=", 
"<=", ">=", "<>" };
+         instr.m_type=MWAWCellContent::FormulaInstruction::F_Operator;
+         instr.m_content=wh[(code-0x10)/2];
+         break;
+diff --git a/src/lib/MsWksSSParser.cxx b/src/lib/MsWksSSParser.cxx
+index 79bed425..faa4cef5 100644
+--- a/src/lib/MsWksSSParser.cxx
++++ b/src/lib/MsWksSSParser.cxx
+@@ -1025,7 +1025,7 @@ bool MsWksSSParser::readCell(int sz, MWAWVec2i const 
&cellPos, MsWksSSParserInte
+       break;
+     case MWAWCell::F_TIME:
+       if (subformat >= 0 && subformat < 4) {
+-        static char const *wh[]= {"%I:%M:%S %p", "%I:%M %p", "%H:%M:%S", 
"%H:%M"};
++        static char const* const wh[]= {"%I:%M:%S %p", "%I:%M %p", 
"%H:%M:%S", "%H:%M"};
+         format.m_DTFormat=wh[subformat];
+       }
+       else
+@@ -1038,7 +1038,7 @@ bool MsWksSSParser::readCell(int sz, MWAWVec2i const 
&cellPos, MsWksSSParserInte
+       case 6:
+       case 7:
+       case 8: {
+-        static char const *wh[]= {"%m/%d/%y", "%b %d, %Y", "%b, %d", "%b, 
%Y", "%a, %d %b, %Y" };
++        static char const* const wh[]= {"%m/%d/%y", "%b %d, %Y", "%b, %d", 
"%b, %Y", "%a, %d %b, %Y" };
+         format.m_DTFormat=wh[subformat-4];
+         break;
+       }
+diff --git a/src/lib/MultiplanParser.cxx b/src/lib/MultiplanParser.cxx
+index a445722d..a11dc6f8 100644
+--- a/src/lib/MultiplanParser.cxx
++++ b/src/lib/MultiplanParser.cxx
+@@ -1042,7 +1042,7 @@ static Functions const s_listOperators[] = {
+   { "", -2}, { "", -2}, { "", -2}, { "", -2},
+ };
+ 
+-static char const *s_listFunctions[]= {
++static char const* const s_listFunctions[]= {
+   // 0
+   "Count", "If", "IsNA", "IsError",
+   "Sum", "Average", "Min", "Max",
+diff --git a/src/lib/NisusWrtParser.cxx b/src/lib/NisusWrtParser.cxx
+index e7ec48bb..078b3500 100644
+--- a/src/lib/NisusWrtParser.cxx
++++ b/src/lib/NisusWrtParser.cxx
+@@ -227,15 +227,15 @@ std::ostream &operator<<(std::ostream &o, Variable const 
&num)
+   if (num.m_startNumber != 1) o << "start=" << num.m_startNumber << ",";
+   if (num.m_increment != 1) o << "increment=" << num.m_increment << ",";
+   if (num.m_prefix.length()) {
+-    static char const *wh0[] = { "unkn0", "prefix", "name", "comments" };
++    static char const* const wh0[] = { "unkn0", "prefix", "name", "comments" 
};
+     o << wh0[num.m_containerType] << "=\"" << num.m_prefix << "\",";
+   }
+   if (num.m_suffix.length()) {
+-    static char const *wh2[] = { "unkn2", "suffix", "suffix", "unkn2" };
++    static char const* const wh2[] = { "unkn2", "suffix", "suffix", "unkn2" };
+     o << wh2[num.m_containerType] << "=\"" << num.m_suffix << "\",";
+   }
+   if (num.m_sample.length()) {
+-    static char const *wh1[] = { "unkn1", "sample", "sample", "author?" };
++    static char const* const wh1[] = { "unkn1", "sample", "sample", "author?" 
};
+     o << wh1[num.m_containerType] << "=\"" << num.m_sample << "\",";
+   }
+   if (num.m_dateFormat) {
+@@ -1052,9 +1052,9 @@ bool 
NisusWrtParser::readVariable(NisusWrtStruct::RecursifData const &data)
+         std::string text("");
+         for (int i = 0; i < mSz; i++)
+           text+= char(input->readULong(1));
+-        static char const *wh0[] = { "unkn0", "prefix", "name", "comments" };
+-        static char const *wh1[] = { "unkn1", "sample", "sample", "author?" };
+-        static char const *wh2[] = { "unkn2", "suffix", "suffix", "unkn2" };
++        static char const* const wh0[] = { "unkn0", "prefix", "name", 
"comments" };
++        static char const* const wh1[] = { "unkn1", "sample", "sample", 
"author?" };
++        static char const* const wh2[] = { "unkn2", "suffix", "suffix", 
"unkn2" };
+         switch (id) {
+         case 2:
+           num.m_prefix = text;
+diff --git a/src/lib/PixelPaintParser.cxx b/src/lib/PixelPaintParser.cxx
+index 1bb976d2..5a9837fe 100644
+--- a/src/lib/PixelPaintParser.cxx
++++ b/src/lib/PixelPaintParser.cxx
+@@ -325,7 +325,7 @@ bool PixelPaintParser::readFileHeaderV1(bool onlyCheck)
+   for (int i=0; i<6; ++i) {
+     val=static_cast<int>(input->readULong(1));
+     if (!val) continue;
+-    static char const *wh[]= {"setForAllTools", 
"noFullScreen[zoom]","fl2","autoscroll[fatbits]","center[createObject]","remap[color]"};
++    static char const* const wh[]= {"setForAllTools", 
"noFullScreen[zoom]","fl2","autoscroll[fatbits]","center[createObject]","remap[color]"};
+     f << wh[i];
+     if (val!=1)
+       f << "=" << val;
+diff --git a/src/lib/RagTime5ClusterManager.cxx 
b/src/lib/RagTime5ClusterManager.cxx
+index ca22ef57..f53f47f3 100644
+--- a/src/lib/RagTime5ClusterManager.cxx
++++ b/src/lib/RagTime5ClusterManager.cxx
+@@ -1427,7 +1427,7 @@ protected:
+       for (size_t i=0; i<4; ++i) {
+         if (listIds[i]==0) continue;
+         m_cluster->m_styleClusterIds[i]=listIds[i];
+-        static char const *wh[]= { "graph", "units", "units2", "text" };
++        static char const* const wh[]= { "graph", "units", "units2", "text" };
+         f << wh[i] << "Style=data" << listIds[i] << "A,";
+       }
+     }
+@@ -1447,7 +1447,7 @@ protected:
+       for (size_t i=0; i<3; ++i) {
+         if (listIds[i]==0) continue;
+         m_cluster->m_styleClusterIds[i+4]=listIds[i];
+-        static char const *wh[]= { "format", "#unk", "graphColor" };
++        static char const* const wh[]= { "format", "#unk", "graphColor" };
+         f << wh[i] << "Style=data" << listIds[i] << "A,";
+       }
+     }
+diff --git a/src/lib/RagTime5Formula.cxx b/src/lib/RagTime5Formula.cxx
+index 04a59c82..86ff7111 100644
+--- a/src/lib/RagTime5Formula.cxx
++++ b/src/lib/RagTime5Formula.cxx
+@@ -527,7 +527,7 @@ static Functions const s_listFunctions[] = {
+ 
+ static size_t const s_numFunctions=MWAW_N_ELEMENTS(s_listFunctions);
+ 
+-static char const *s_listFunctions2[] = {
++static char const* const s_listFunctions2[] = {
+   "^", "*", "/", nullptr, "+", "-", "&", "&", /*concat+space*/ // 80-9c
+   "=", "!=", ">", "<", ">=", "<=", "AND", "OR", // a0-bc
+   "NOT" // c0
+diff --git a/src/lib/RagTime5Spreadsheet.cxx b/src/lib/RagTime5Spreadsheet.cxx
+index 7895ce14..65be8b84 100644
+--- a/src/lib/RagTime5Spreadsheet.cxx
++++ b/src/lib/RagTime5Spreadsheet.cxx
+@@ -216,7 +216,7 @@ struct CellContent {
+       o << "[";
+       for (int i=0; i<8; ++i) {
+         if (cell.m_id[i]<0) continue;
+-        static char const *wh[]= {"V", "U", "G", "T", "bv", "BV", "bh", "BH"};
++        static char const* const wh[]= {"V", "U", "G", "T", "bv", "BV", "bh", 
"BH"};
+         o << wh[i] << cell.m_id[i] << ",";
+       }
+       o << "]";
+diff --git a/src/lib/RagTime5StyleManager.cxx 
b/src/lib/RagTime5StyleManager.cxx
+index cc671d80..2cfe6c27 100644
+--- a/src/lib/RagTime5StyleManager.cxx
++++ b/src/lib/RagTime5StyleManager.cxx
+@@ -2031,7 +2031,7 @@ bool 
RagTime5StyleManager::TextStyle::read(RagTime5StructManager::Field const &f
+           if (wh==2)
+             m_fontName=child.m_string;
+           else {
+-            static char const *what[]= {"[full]" /* unsure */, "[##UNDEF]", 
"", "[style]" /* regular, ...*/, "[from]", "[full2]"};
++            static char const* const what[]= {"[full]" /* unsure */, 
"[##UNDEF]", "", "[style]" /* regular, ...*/, "[from]", "[full2]"};
+             s << "font" << what[wh] << "=\"" << child.m_string.cstr() << 
"\",";
+           }
+           continue;
+@@ -2372,7 +2372,7 @@ std::ostream &operator<<(std::ostream &o, 
RagTime5StyleManager::TextStyle const
+   }
+   for (int i=0; i<3; ++i) {
+     if (style.m_margins[i]<0) continue;
+-    static char const *wh[]= {"left", "right", "first"};
++    static char const* const wh[]= {"left", "right", "first"};
+     o << "margins[" << wh[i] << "]=" << style.m_margins[i] << ",";
+   }
+   for (int i=0; i<3; ++i) {
+@@ -2457,7 +2457,7 @@ std::ostream &operator<<(std::ostream &o, 
RagTime5StyleManager::TextStyle const
+ 
+   for (int i=0; i<4; ++i) {
+     if (style.m_letterSpacings[i]<=0&&style.m_letterSpacings[i]>=0) continue;
+-    static char const *wh[]= {"", "[optimal]", "[min]", "[max]"};
++    static char const* const wh[]= {"", "[optimal]", "[min]", "[max]"};
+     o << "letterSpacing" << wh[i] << "=" << style.m_letterSpacings[i] << ",";
+   }
+   if (style.m_widthStreching>=0)
+diff --git a/src/lib/RagTimeParser.cxx b/src/lib/RagTimeParser.cxx
+index 7c5b7c5d..35aa64f9 100644
+--- a/src/lib/RagTimeParser.cxx
++++ b/src/lib/RagTimeParser.cxx
+@@ -260,7 +260,7 @@ std::ostream &operator<<(std::ostream &o, Zone const &z)
+   o << "ids=[";
+   for (int i=0; i<5; ++i) {
+     if (!z.m_linkZones[i]) continue;
+-    static char const *wh[]= {"parent", "prev", "next", "child", "linked"};
++    static char const* const wh[]= {"parent", "prev", "next", "child", 
"linked"};
+     o <<  wh[i] << "=Z" << z.m_linkZones[i] << ",";
+   }
+   o << "],";
+@@ -668,7 +668,7 @@ bool RagTimeParser::createZones()
+        BuGr : structure with many data of size 0x1a
+        Unamed: sometimes structured
+      */
+-    static char const *what[]= {
++    static char const* const what[]= {
+       "rsrcgray", "rsrccolr", "rsrcres_",
+       "rsrcBuSl", "rsrcBuGr", "rsrcUnamed"
+     };
+@@ -970,7 +970,7 @@ bool RagTimeParser::readDataZoneHeader(int id, long endPos)
+     bool const isLine=zone.m_type==RagTimeParserInternal::Zone::Line;
+     int const numColorsInFile=isLine ? 1 : 2;
+     for (int i=0; i<numColorsInFile; ++i) {
+-      static char const *wh[]= {"line", "surf"};
++      static char const* const wh[]= {"line", "surf"};
+       int col;
+       if (vers<2) {
+         percentValues[i]=static_cast<int>(input->readLong(1));
+diff --git a/src/lib/RagTimeSpreadsheet.cxx b/src/lib/RagTimeSpreadsheet.cxx
+index 1fee0e66..e7810fb3 100644
+--- a/src/lib/RagTimeSpreadsheet.cxx
++++ b/src/lib/RagTimeSpreadsheet.cxx
+@@ -2413,7 +2413,7 @@ bool 
RagTimeSpreadsheet::readSpreadsheetExtraV2(MWAWEntry &entry, RagTimeSpreads
+   for (int i=0; i<2; ++i) {
+     pos=input->tell();
+     f.str("");
+-    static char const *what[]= {"SpreadsheetRow", "SpreadsheetCol"};
++    static char const* const what[]= {"SpreadsheetRow", "SpreadsheetCol"};
+     f << "Entries(" << what[i] << "):";
+     auto n=static_cast<int>(input->readULong(2));
+     f << "N=" << n << ",";
+@@ -3026,7 +3026,7 @@ bool RagTimeSpreadsheet::readFormula(MWAWVec2i const 
&cellPos, std::vector<MWAWC
+       val=static_cast<int>(input->readULong(1));
+       std::string funct("");
+       if (val>=0 && val<0x60) {
+-        static char const *s_functions[] = {
++        static char const* const s_functions[] = {
+           // 0
+           "Abs(", "Sign(", "Rand()", "Sqrt(", "Sum(", "SumSq(", "Max(", 
"Min(",
+           "Average(", "StDev(", "Pi()", "Sin(", "ASin(", "Cos(", "ACos(", 
"Tan(",
+@@ -3089,7 +3089,7 @@ bool RagTimeSpreadsheet::readFormula(MWAWVec2i const 
&cellPos, std::vector<MWAWC
+         if (!ok) f << "cell[list]=[" << error << "],";
+         break;
+       }
+-      static char const *s_operators[] = {
++      static char const* const s_operators[] = {
+         // 0
+         "", "", "", "", "", "", "", "",
+         "", "", "", "", "(", ")", ";", "",
+@@ -3255,7 +3255,7 @@ bool RagTimeSpreadsheet::readFormulaV2(MWAWVec2i const 
&cellPos, std::vector<MWA
+         if (!ok) f << "cell=[" << error << "],";
+         break;
+       }
+-      static char const *s_functions[] = {
++      static char const* const s_functions[] = {
+         // 0
+         "", "", "", "", "", "", "", "",
+         "", "", "", "", "(", ")", ";", "",
+diff --git a/src/lib/RagTimeStruct.hxx b/src/lib/RagTimeStruct.hxx
+index 18fb1a82..40a44962 100644
+--- a/src/lib/RagTimeStruct.hxx
++++ b/src/lib/RagTimeStruct.hxx
+@@ -74,7 +74,7 @@ struct ResourceList {
+   /** returns a string corresponding to a type */
+   static std::string getName(Type type)
+   {
+-    static char const *wh[] = { "BuSl", "BuGr", "SpBo", "SpCe", "SpDE", 
"SpTe", "SpVa", "gray", "colr", "res_", "#Undef"};
++    static char const* const wh[] = { "BuSl", "BuGr", "SpBo", "SpCe", "SpDE", 
"SpTe", "SpVa", "gray", "colr", "res_", "#Undef"};
+     return wh[int(type)];
+   }
+   /** operator<< */
+diff --git a/src/lib/ReadySetGoGraph.cxx b/src/lib/ReadySetGoGraph.cxx
+index 7f965bca..352ee48d 100644
+--- a/src/lib/ReadySetGoGraph.cxx
++++ b/src/lib/ReadySetGoGraph.cxx
+@@ -663,7 +663,7 @@ bool ReadySetGoGraph::readShapeV1()
+   }
+   int type=int(input->readULong(2));
+ 
+-  static char const *wh[]= {"EndZone", "Text", nullptr, "Frame", "Solid", 
"Picture"};
++  static char const* const wh[]= {"EndZone", "Text", nullptr, "Frame", 
"Solid", "Picture"};
+   if (type<0 || type==2 || type>5) {
+     MWAW_DEBUG_MSG(("ReadySetGoGraph::readShapeV1: unknown type
"));
+     return false;
+@@ -1086,7 +1086,7 @@ bool 
ReadySetGoGraph::readShapeV3(ReadySetGoGraphInternal::Layout &layout, bool
+     ReadySetGoGraphInternal::Shape::T_Line,
+     ReadySetGoGraphInternal::Shape::T_Line
+   };
+-  static char const *what[]= { "Rectangle", "RectOval", "Oval", "Picture", 
"Text", "Line" /* hv*/, "Line" /* not axis aligned*/};
++  static char const* const what[]= { "Rectangle", "RectOval", "Oval", 
"Picture", "Text", "Line" /* hv*/, "Line" /* not axis aligned*/};
+   f << "Entries(" << what[type] << "):";
+   ReadySetGoGraphInternal::Shape shape(shapeTypes[type]);
+   f << "IDS=["; // next, prev
+@@ -1515,7 +1515,7 @@ bool 
ReadySetGoGraph::readShapeV6(ReadySetGoGraphInternal::Layout &layout, bool
+     ReadySetGoGraphInternal::Shape::T_Line,
+     ReadySetGoGraphInternal::Shape::T_Polygon,
+   };
+-  static char const *what[]= { "Rectangle", "RectOval", "Oval", "Picture", 
"Text", "Line" /* hv*/, "Line" /* not axis aligned*/, "Polygon" };
++  static char const* const what[]= { "Rectangle", "RectOval", "Oval", 
"Picture", "Text", "Line" /* hv*/, "Line" /* not axis aligned*/, "Polygon" };
+   f << "Entries(" << what[type] << "):";
+   ReadySetGoGraphInternal::Shape shape(shapeTypes[type]);
+   f << "IDS=["; // next, prev
+@@ -2109,7 +2109,7 @@ bool 
ReadySetGoGraph::readShapeDSV2(ReadySetGoGraphInternal::Layout &layout, boo
+     ReadySetGoGraphInternal::Shape::T_Polygon,
+   };
+   // checkme can type=1 and type=6 exists
+-  static char const *what[]= { "Rectangle", "RectOval", "Oval", "Picture", 
"Text", "Line" /* hv*/, "Line" /* not axis aligned*/, "Polygon" };
++  static char const* const what[]= { "Rectangle", "RectOval", "Oval", 
"Picture", "Text", "Line" /* hv*/, "Line" /* not axis aligned*/, "Polygon" };
+   f << "Entries(" << what[type] << "):";
+   ReadySetGoGraphInternal::Shape shape(shapeTypes[type]);
+   f << "IDS=["; // next, prev
+diff --git a/src/lib/WingzGraph.cxx b/src/lib/WingzGraph.cxx
+index 44b0acfd..c7835f48 100644
+--- a/src/lib/WingzGraph.cxx
++++ b/src/lib/WingzGraph.cxx
+@@ -449,7 +449,7 @@ bool WingzGraph::readGraphic()
+       MWAW_DEBUG_MSG(("WingzGraph::readGraphic: find bad size for shape
"));
+       return false;
+     }
+-    static char const *what[]= {"line", "arc", "circle", "rectangle", "poly" 
};
++    static char const* const what[]= {"line", "arc", "circle", "rectangle", 
"poly" };
+     f << what[type-5] << ",";
+     switch (type) {
+     case 5: {
+diff --git a/src/lib/WingzParser.cxx b/src/lib/WingzParser.cxx
+index 18d215ff..681307cc 100644
+--- a/src/lib/WingzParser.cxx
++++ b/src/lib/WingzParser.cxx
+@@ -602,7 +602,7 @@ bool WingzParser::readSpreadsheet()
+     }
+     std::string name("");
+     if (type<=0x10) {
+-      static char const *wh[]= {
++      static char const* const wh[]= {
+         "", "SheetSize", "SheetSize", "", "", "", "", "CellName",
+         "Formula", "Style", "SheetErr", "Sheet2Err", "", "SheetMcro", 
"Graphic", "",
+         "PrintInfo"
+@@ -1514,7 +1514,7 @@ bool WingzParser::readFormula()
+       instr.m_doubleValue=value;
+       if (wh>=0x2a&&wh<=0x2d) { // mixed operator + number
+         
stack.push_back(std::vector<MWAWCellContent::FormulaInstruction>(1,instr));
+-        static char const *what[]= {"+","-","*","/"};
++        static char const* const what[]= {"+","-","*","/"};
+ 
+         instr=MWAWCellContent::FormulaInstruction();
+         instr.m_type=MWAWCellContent::FormulaInstruction::F_Function;
+diff --git a/src/lib/WriteNowText.cxx b/src/lib/WriteNowText.cxx
+index dae61448..d2c701a6 100644
+--- a/src/lib/WriteNowText.cxx
++++ b/src/lib/WriteNowText.cxx
+@@ -285,7 +285,7 @@ struct TableData {
+     if (!table.m_color.isWhite())
+       o << "color=" << table.m_color << ",";
+     for (int i = 0; i < 4; i++) {
+-      static char const *wh[4]= {"T", "R", "B", "L"};
++      static char const* const wh[4]= {"T", "R", "B", "L"};
+       if (table.m_flags[i]&0xFF00)
+         o << "#bFlags" << wh[i] << "[high]=" << (table.m_flags[i]>>8) << ",";
+       // flags&0x80 : duplicated?
+diff --git a/src/lib/libmwaw_internal.cxx b/src/lib/libmwaw_internal.cxx
+index a9d89ed2..939f25d9 100644
+--- a/src/lib/libmwaw_internal.cxx
++++ b/src/lib/libmwaw_internal.cxx
+@@ -148,10 +148,10 @@ std::string numberingValueToString(NumberingType type, 
int value)
+     return s;
+   case LOWERCASE_ROMAN:
+   case UPPERCASE_ROMAN: {
+-    static char const *romanS[] = {"M", "CM", "D", "CD", "C", "XC", "L",
++    static char const* const romanS[] = {"M", "CM", "D", "CD", "C", "XC", "L",
+                                    "XL", "X", "IX", "V", "IV", "I"
+                                   };
+-    static char const *romans[] = {"m", "cm", "d", "cd", "c", "xc", "l",
++    static char const* const romans[] = {"m", "cm", "d", "cd", "c", "xc", "l",
+                                    "xl", "x", "ix", "v", "iv", "i"
+                                   };
+     static int const romanV[] = {1000, 900, 500, 400,  100, 90, 50,
+diff --git a/src/tools/zip/xattr.cpp b/src/tools/zip/xattr.cpp
+index 4cf85bca..05eb2c55 100644
+--- a/src/tools/zip/xattr.cpp
++++ b/src/tools/zip/xattr.cpp
+@@ -87,7 +87,7 @@ std::shared_ptr<InputStream> XAttr::getStream() const
+ #    define MWAW_EXTENDED_FS
+ #  endif
+   ssize_t sz[2];
+-  static char const *attr[2] = { "com.apple.FinderInfo", 
"com.apple.ResourceFork" };
++  static char const* const attr[2] = { "com.apple.FinderInfo", 
"com.apple.ResourceFork" };
+   int find=0;
+   for (int i = 0; i < 2; i++) {
+     sz[i]=getxattr(m_fName.c_str(), attr[i], 0, 0 MWAW_EXTENDED_FS);
+-- 
+2.49.0
+
diff --git a/external/libmwaw/UnpackedTarball_libmwaw.mk 
b/external/libmwaw/UnpackedTarball_libmwaw.mk
index 935cbc1eb1c3..7f13a5d80ff2 100644
--- a/external/libmwaw/UnpackedTarball_libmwaw.mk
+++ b/external/libmwaw/UnpackedTarball_libmwaw.mk
@@ -23,6 +23,14 @@ $(eval $(call gb_UnpackedTarball_add_patches,libmwaw, \
 endif
 endif
 
+# external/libmwaw/0001-const-up-some-arrays.patch.1
+# upstreaming effort as:
+# https://sourceforge.net/p/libmwaw/libmwaw/merge-requests/4/
+
+$(eval $(call gb_UnpackedTarball_add_patches,libmwaw, \
+    external/libmwaw/0001-const-up-some-arrays.patch.1 \
+))
+
 ifeq ($(SYSTEM_REVENGE),)
 $(eval $(call gb_UnpackedTarball_add_patches,libmwaw, \
     external/libmwaw/rpath.patch \

Reply via email to