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 \