diff --git a/extra/libreoffice-still/PKGBUILD b/extra/libreoffice-still/PKGBUILD index f5cb83810..e0b99402c 100644 --- a/extra/libreoffice-still/PKGBUILD +++ b/extra/libreoffice-still/PKGBUILD @@ -18,9 +18,9 @@ _google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 pkgbase=libreoffice-still pkgname=('libreoffice-still-sdk' 'libreoffice-still') -_LOver=6.4.7.2 -pkgver=6.4.7 -pkgrel=10 +_LOver=7.0.4.2 +pkgver=7.0.4 +pkgrel=1 arch=('x86_64') license=('LGPL3') url="https://www.libreoffice.org/" @@ -32,10 +32,10 @@ makedepends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python>=3.7' 'libwpd>=0.9.2' 'lib 'desktop-file-utils' 'shared-mime-info' 'gst-plugins-base-libs' 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'ant' 'gperf' 'gtk3' 'qt5-base' 'plasma-framework' 'cppunit' 'beanshell' 'clucene' - 'junit' 'libmythes' 'libwpg' 'java-environment=8' 'postgresql-libs' 'mariadb-libs' 'libgl' + 'junit' 'libmythes' 'libwpg' 'java-environment=11' 'postgresql-libs' 'mariadb-libs' 'libgl' 'bluez-libs' 'gdb' 'doxygen' 'libatomic_ops' 'mdds' 'apr' 'serf' 'ttf-liberation' 'ttf-dejavu' 'ttf-carlito' 'libxinerama' 'libpagemaker' 'glm' - 'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liblangtag' # 'liborcus' + 'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liblangtag' 'liborcus' 'libexttextcat' 'libcmis' 'gobject-introspection' # 'libfbclient' 'libtommath' 'libzmf' 'gpgme' 'xmlsec' 'rxvt-unicode' 'libepubgen' 'libfreehand' 'libqxp' 'libstaroffice' 'boost' 'libnumbertext' @@ -55,18 +55,19 @@ source=(${_mirror}/libreoffice{,-help,-translations}-${_LOver}.tar.xz{,.asc} ${_additional_source_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip ${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip ${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip - ${_additional_source_url}/pdfium-4137.tar.bz2 + ${_additional_source_url}/pdfium-4306.tar.bz2 + ${_additional_source_url}/dtoa-20180411.tgz ${_additional_source_url}/lxml-4.1.1.tgz ${_additional_source_url}/QR-Code-generator-1.4.0.tar.gz - ${_additional_source_url}/liborcus-0.15.3.tar.gz + ${_additional_source_url}/skia-m85-e684c6daef6bfb774a325a069eda1f76ca6ac26c.tar.xz ${_additional_source_url2}/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite ${_additional_source_url2}/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite ${_additional_source_url2}/884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf ${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll make-pyuno-work-with-system-wide-module-install.diff - icu68.patch soffice-template.desktop.in - libreoffice-still.sh libreoffice-still.csh) + libreoffice-still.sh libreoffice-still.csh + liborcus-0.16.diff) noextract=(35c94d2df8893241173de1d16b6034c0-swingExSrc.zip 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip @@ -75,21 +76,22 @@ noextract=(35c94d2df8893241173de1d16b6034c0-swingExSrc.zip 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip - pdfium-4137.tar.bz2 + pdfium-4306.tar.bz2 + dtoa-20180411.tgz lxml-4.1.1.tgz QR-Code-generator-1.4.0.tar.gz - liborcus-0.15.3.tar.gz + skia-m85-e684c6daef6bfb774a325a069eda1f76ca6ac26c.tar.xz 8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite 884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf 185d60944ea767075d27247c3162b3bc-unowinreg.dll ) validpgpkeys=('C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3') # LibreOffice Build Team (CODE SIGNING KEY) -sha256sums=('034dd79a60cfff60c7d353130fe2cc8e6a1aabeab50d89e4570ae95f33296644' +sha256sums=('9fa9d2cc8d02f12b1f302b93056d5c0ff986090a6f309bafa506ba53779f2abd' 'SKIP' - 'a126803900bca3bfd4d3efe2d3204fad828d86b2a52b05fcf7cb618a6cbb10b6' + '0b6353221594937c482eaad078c67139455776bce6ab42df9b22709ed271e9da' 'SKIP' - 'b13088a98be1f6e7e177331db3d723419bfeb11ae16516334f0fbb853ae40ab1' + '544b1a1b4ca795842fb0e4e5eee68f94dd16b10ca4c3c84b1be85467cabc73ec' 'SKIP' '64585ac36a81291a58269ec5347e7e3e2e8596dbacb9221015c208191333c6e1' '1fb458d6aab06932693cc8a9b6e4e70944ee1ff052fa63606e3131df34e21753' @@ -99,20 +101,21 @@ sha256sums=('034dd79a60cfff60c7d353130fe2cc8e6a1aabeab50d89e4570ae95f33296644' 'd30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370' '1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133' '233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd' - '9a2f9bddca935a263f06c81003483473a525ccd0f4e517bc75fceb914d4c54b6' + 'eca406d47ac7e2a84dcc86f93c08f96e591d409589e881477fa75e488e4851d8' + '0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e711b4' '940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e' - 'fcdf9fd69fde07ae4dca2351d84271a9de8093002f733b77c70f52f1630f6e4a' '6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860' - '0dd26f3f2e611c51df9ee02d6dbf08887989eaa417b73f6877cd0d94df795fc2' + 'fcdf9fd69fde07ae4dca2351d84271a9de8093002f733b77c70f52f1630f6e4a' + '3294877fa2b61b220d98a0f7bfc11325429b13edd2cf455444c703ee3a14d760' 'f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770' '984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504' '884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc' 'eafde646a7dbe46d20c291685b0beac2382174d78d66ee990e229a1bf6e6cec6' 'c463654a73ecfbc242ff109726fb4faecdbfb3d91affafe919b24bea65afb563' - 'f650b91b98f71176ae1e4e7969eb3d6ec3e261dcb873703db0f2df578ee4b08c' 'd0be8099cbee3c9dfda694a828149b881c345b204ab68826f317580aafb50879' 'cd1b25ff390e436c6bffa65c6e12382236e3ccbf8d3aae51b1b59bcaed79fd8a' - 'de20f36d45f0fecc2d94176dd3ec7226ab07fa8ffb9b0bc73c200349a9273de1') + 'de20f36d45f0fecc2d94176dd3ec7226ab07fa8ffb9b0bc73c200349a9273de1' + '2611055af15c498b95f7fca0dedba4d18875bd29b358fd1d5ab4135d746ed606') prepare() { @@ -133,7 +136,8 @@ prepare() { # fix not upstreamable pyuno paths - FS#54250 patch -Np1 -i "${srcdir}"/make-pyuno-work-with-system-wide-module-install.diff - patch -Np0 -i ../icu68.patch + # allow to build with recent liborcus/libixion/mdds stack - Debian patch + patch -Np1 -i ../liborcus-0.16.diff #use the CFLAGS but remove the LibO overridden ones for i in $CFLAGS; do @@ -153,7 +157,7 @@ build() { # http://site.icu-project.org/download/61#TOC-Migration-Issues CPPFLAGS+=' -DU_USING_ICU_NAMESPACE=1' - ./autogen.sh --with-build-version="${pkgver}-${pkgrel}" \ + ./autogen.sh --with-extra-buildid="${pkgver}-${pkgrel}" \ --with-vendor="Arch Linux" \ --enable-split-app-modules \ --with-parallelism=${_MAKEFLAGS/-j/} \ @@ -191,7 +195,7 @@ build() { --with-system-libcmis \ --with-system-libmspub \ --with-system-libexttextcat \ - --without-system-orcus \ + --with-system-orcus \ --with-system-liblangtag \ --with-system-libodfgen \ --with-system-libmwaw \ @@ -283,10 +287,10 @@ package_libreoffice-still() { 'libmspub' 'harfbuzz-icu' 'nss' 'clucene' 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'libpagemaker' 'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups' - 'liblangtag' 'libexttextcat' 'libcmis' # 'liborcus' # 'libfbclient' + 'liblangtag' 'libexttextcat' 'libcmis' 'liborcus' # 'libfbclient' 'libtommath' 'libzmf' 'libatomic_ops' 'xmlsec' 'gpgme' 'libnumbertext' 'libfreehand' 'libstaroffice' 'libepubgen' 'libqxp' 'libepoxy' - 'xdg-utils') + 'xdg-utils') optdepends=('java-runtime: adds java support' 'java-environment: required by extension-wiki-publisher and extension-nlpsolver' 'pstoedit: translates PostScript and PDF graphics into other vector formats' diff --git a/extra/libreoffice-still/icu68.patch b/extra/libreoffice-still/icu68.patch deleted file mode 100644 index 59edaffae..000000000 --- a/extra/libreoffice-still/icu68.patch +++ /dev/null @@ -1,31 +0,0 @@ -Regressed by https://github.com/unicode-org/icu/commit/c3fe7e09d844 - -i18npool/source/calendar/calendar_gregorian.cxx:350:40: error: use of undeclared identifier 'TRUE' - body->getTimeZone().getOffset( fR, TRUE, nZoneOffset, nDSTOffset, status ); - ^ -svx/source/dialog/fntctrl.cxx:1017:24: error: use of undeclared identifier 'TRUE' - bTransparent = TRUE; - ^ - ---- i18npool/source/calendar/calendar_gregorian.cxx.orig 2020-09-30 15:54:35 UTC -+++ i18npool/source/calendar/calendar_gregorian.cxx -@@ -347,7 +347,7 @@ Calendar_gregorian::setLocalDateTime( double fTimeInDa - "Calendar_gregorian::setLocalDateTime: " << std::fixed << fM << " rounded to " << fR); - int32_t nZoneOffset, nDSTOffset; - UErrorCode status = U_ZERO_ERROR; -- body->getTimeZone().getOffset( fR, TRUE, nZoneOffset, nDSTOffset, status ); -+ body->getTimeZone().getOffset( fR, true, nZoneOffset, nDSTOffset, status ); - if ( !U_SUCCESS(status) ) throw ERROR; - status = U_ZERO_ERROR; - body->setTime( fR - (nZoneOffset + nDSTOffset), status ); ---- svx/source/dialog/fntctrl.cxx.orig 2020-10-07 12:23:42 UTC -+++ svx/source/dialog/fntctrl.cxx -@@ -1014,7 +1014,7 @@ void SvxFontPrevWindow::SetFromItemSet(const SfxItemSe - rCTLFont.SetFillColor( rColor ); - } - else -- bTransparent = TRUE; -+ bTransparent = true; - - rFont.SetTransparent( bTransparent ); - rCJKFont.SetTransparent( bTransparent ); diff --git a/extra/libreoffice-still/liborcus-0.16.diff b/extra/libreoffice-still/liborcus-0.16.diff new file mode 100644 index 000000000..a544ec7ca --- /dev/null +++ b/extra/libreoffice-still/liborcus-0.16.diff @@ -0,0 +1,1255 @@ +From 109ed8f775dddfede012d56d078abd70b45490c0 Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida +Date: Wed, 9 Sep 2020 21:23:48 -0400 +Subject: Upgrade liborcus to 0.16.0. + +Change-Id: Iae29fb26417dfc161698a81bee84e81545969065 +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102502 +Tested-by: Jenkins +Reviewed-by: Kohei Yoshida +--- + RepositoryExternal.mk | 4 +- + configure.ac | 2 +- + download.lst | 4 +- + ...1-Mark-all-untentionally-unused-variables.patch | 376 +++++++++++++++++++++ + external/liborcus/ExternalPackage_liborcus.mk | 8 +- + external/liborcus/ExternalProject_liborcus.mk | 4 +- + external/liborcus/Library_orcus-parser.mk | 1 + + external/liborcus/Library_orcus.mk | 4 + + external/liborcus/UnpackedTarball_liborcus.mk | 1 + + external/liborcus/libtool.patch.0 | 10 +- + external/liborcus/windows-constants-hack.patch | 2 +- + sc/source/filter/inc/orcusinterface.hxx | 21 +- + sc/source/filter/orcus/interface.cxx | 82 +++-- + sc/source/filter/orcus/xmlcontext.cxx | 7 +- + sc/source/ui/xmlsource/xmlsourcedlg.cxx | 6 +- + 15 files changed, 480 insertions(+), 52 deletions(-) + create mode 100644 external/liborcus/0001-Mark-all-untentionally-unused-variables.patch + +diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk +index d9fa980d7f24..1f0a91de142a 100644 +--- a/RepositoryExternal.mk ++++ b/RepositoryExternal.mk +@@ -3270,7 +3270,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.15 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.16 \ + ) + + $(if $(SYSTEM_BOOST), \ +@@ -3289,7 +3289,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.15 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.16 \ + ) + + endef +diff --git a/configure.ac b/configure.ac +index 8e8d5eb662d9..06398bfa99a7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -10126,7 +10126,7 @@ AC_SUBST(ENABLE_FUZZERS) + dnl =================================================================== + dnl Orcus + dnl =================================================================== +-libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.15 >= 0.15.0]) ++libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0]) + if test "$with_system_orcus" != "yes"; then + if test "$SYSTEM_BOOST" = "TRUE"; then + # =========================================================== +diff --git a/download.lst b/download.lst +index ee4ba8a1c83b..345ddd19537b 100644 +--- a/download.lst ++++ b/download.lst +@@ -206,8 +206,8 @@ export OPENLDAP_SHA256SUM := cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb89 + export OPENLDAP_TARBALL := openldap-2.4.45.tgz + export OPENSSL_SHA256SUM := 14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc + export OPENSSL_TARBALL := openssl-1.0.2t.tar.gz +-export ORCUS_SHA256SUM := cfb2aa60825f2a78589ed030c07f46a1ee16ef8a2d1bf2279192fbc1ae5a5f61 +-export ORCUS_TARBALL := liborcus-0.15.4.tar.bz2 ++export ORCUS_SHA256SUM := 854c6ec167ace59baa2984e175bac7b5b2af91bfde4bb10d2088b87a51ed76ec ++export ORCUS_TARBALL := liborcus-0.16.0.tar.bz2 + export OWNCLOUD_ANDROID_LIB_SHA256SUM := b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb + export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz + export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d +diff --git a/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch +new file mode 100644 +index 000000000000..b0f6a572aff7 +--- /dev/null ++++ b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch +@@ -0,0 +1,376 @@ ++From 6d34c41b661a9e8dddf6d08bf1f3c1fd4f5581da Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida ++Date: Fri, 11 Sep 2020 21:39:09 -0400 ++Subject: [PATCH] Mark all untentionally unused variables. ++ ++--- ++ include/orcus/css_parser.hpp | 70 ++++++++++++++++++++++++------ ++ include/orcus/csv_parser.hpp | 5 ++- ++ include/orcus/json_parser.hpp | 15 +++++-- ++ include/orcus/sax_parser.hpp | 35 ++++++++++++--- ++ include/orcus/sax_token_parser.hpp | 20 +++++++-- ++ include/orcus/yaml_parser.hpp | 10 ++++- ++ 6 files changed, 124 insertions(+), 31 deletions(-) ++ ++diff --git a/include/orcus/css_parser.hpp b/include/orcus/css_parser.hpp ++index cdfae5e0..3e96980b 100644 ++--- a/include/orcus/css_parser.hpp +++++ b/include/orcus/css_parser.hpp ++@@ -31,23 +31,44 @@ namespace orcus { ++ class css_handler ++ { ++ public: ++- void at_rule_name(const char* p, size_t n) {} +++ void at_rule_name(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_type(const char* p, size_t n) {} +++ void simple_selector_type(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_class(const char* p, size_t n) {} +++ void simple_selector_class(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++- void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) {} +++ void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) +++ { +++ (void)pe; +++ } ++ ++- void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) {} +++ void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) +++ { +++ (void)pc; +++ } ++ ++- void simple_selector_id(const char* p, size_t n) {} +++ void simple_selector_id(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ void end_simple_selector() {} ++ ++ void end_selector() {} ++ ++- void combinator(orcus::css::combinator_t combinator) {} +++ void combinator(orcus::css::combinator_t combinator) +++ { +++ (void)combinator; +++ } ++ ++ /** ++ * Called at each property name. ++@@ -55,7 +76,10 @@ public: ++ * @param p pointer to the char-array containing the property name string. ++ * @param n length of the property name string. ++ */ ++- void property_name(const char* p, size_t n) {} +++ void property_name(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called at each ordinary property value string. ++@@ -63,7 +87,10 @@ public: ++ * @param p pointer to the char-array containing the value string. ++ * @param n length of the value string. ++ */ ++- void value(const char* p, size_t n) {} +++ void value(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called at each RGB color value of a property. ++@@ -72,7 +99,10 @@ public: ++ * @param green value of green (0-255) ++ * @param blue value of blue (0-255) ++ */ ++- void rgb(uint8_t red, uint8_t green, uint8_t blue) {} +++ void rgb(uint8_t red, uint8_t green, uint8_t blue) +++ { +++ (void)red; (void)green; (void)blue; +++ } ++ ++ /** ++ * Called at each RGB color value of a property with alpha transparency ++@@ -83,7 +113,10 @@ public: ++ * @param blue value of blue (0-255) ++ * @param alpha alpha transparency value ++ */ ++- void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) {} +++ void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) +++ { +++ (void)red; (void)green; (void)blue; (void)alpha; +++ } ++ ++ /** ++ * Called at each HSL color value of a property. ++@@ -92,7 +125,10 @@ public: ++ * @param sat saturation ++ * @param light lightness ++ */ ++- void hsl(uint8_t hue, uint8_t sat, uint8_t light) {} +++ void hsl(uint8_t hue, uint8_t sat, uint8_t light) +++ { +++ (void)hue; (void)sat; (void)light; +++ } ++ ++ /** ++ * Called at each HSL color value of a property with alpha transparency ++@@ -103,7 +139,10 @@ public: ++ * @param light lightness ++ * @param alpha alpha value ++ */ ++- void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) {} +++ void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) +++ { +++ (void)hue; (void)sat; (void)light; (void)alpha; +++ } ++ ++ /** ++ * Called at each URL value of a property. ++@@ -111,7 +150,10 @@ public: ++ * @param p pointer to the char-array containing the URL value string. ++ * @param n length of the URL value string. ++ */ ++- void url(const char* p, size_t n) {} +++ void url(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called when the parsing begins. ++diff --git a/include/orcus/csv_parser.hpp b/include/orcus/csv_parser.hpp ++index a873b0f2..27b4f924 100644 ++--- a/include/orcus/csv_parser.hpp +++++ b/include/orcus/csv_parser.hpp ++@@ -47,7 +47,10 @@ public: ++ * the text content is guaranteed to be valid so long as ++ * the original CSV stream content is valid. ++ */ ++- void cell(const char* p, size_t n, bool transient) {} +++ void cell(const char* p, size_t n, bool transient) +++ { +++ (void)p; (void)n; (void)transient; +++ } ++ }; ++ ++ template ++diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp ++index 51a3d7cc..ef22b3a8 100644 ++--- a/include/orcus/json_parser.hpp +++++ b/include/orcus/json_parser.hpp ++@@ -54,7 +54,10 @@ public: ++ * pointer points to somewhere in the JSON stream being ++ * parsed. ++ */ ++- void object_key(const char* p, size_t len, bool transient) {} +++ void object_key(const char* p, size_t len, bool transient) +++ { +++ (void)p; (void)len; (void)transient; +++ } ++ ++ /** ++ * Called when the closing curly brace of an object is encountered. ++@@ -87,14 +90,20 @@ public: ++ * pointer points to somewhere in the JSON stream being ++ * parsed. ++ */ ++- void string(const char* p, size_t len, bool transient) {} +++ void string(const char* p, size_t len, bool transient) +++ { +++ (void)p; (void)len; (void)transient; +++ } ++ ++ /** ++ * Called when a numeric value is encountered. ++ * ++ * @param val numeric value. ++ */ ++- void number(double val) {} +++ void number(double val) +++ { +++ (void)val; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp ++index 73c17d06..3b21bfdf 100644 ++--- a/include/orcus/sax_parser.hpp +++++ b/include/orcus/sax_parser.hpp ++@@ -30,7 +30,10 @@ public: ++ * ++ * @param param struct containing doctype declaration data. ++ */ ++- void doctype(const orcus::sax::doctype_declaration& param) {} +++ void doctype(const orcus::sax::doctype_declaration& param) +++ { +++ (void)param; +++ } ++ ++ /** ++ * Called when <?... is encountered, where the '...' may be an ++@@ -39,28 +42,40 @@ public: ++ * ++ * @param decl name of the identifier. ++ */ ++- void start_declaration(const orcus::pstring& decl) {} +++ void start_declaration(const orcus::pstring& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called when the closing tag (>) of a <?... ?> is encountered. ++ * ++ * @param decl name of the identifier. ++ */ ++- void end_declaration(const orcus::pstring& decl) {} +++ void end_declaration(const orcus::pstring& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called at the start of each element. ++ * ++ * @param elem information of the element being parsed. ++ */ ++- void start_element(const orcus::sax::parser_element& elem) {} +++ void start_element(const orcus::sax::parser_element& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called at the end of each element. ++ * ++ * @param elem information of the element being parsed. ++ */ ++- void end_element(const orcus::sax::parser_element& elem) {} +++ void end_element(const orcus::sax::parser_element& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called when a segment of a text content is parsed. Each text content ++@@ -76,7 +91,10 @@ public: ++ * a non-text value or be interned within the scope of ++ * the callback. ++ */ ++- void characters(const orcus::pstring& val, bool transient) {} +++ void characters(const orcus::pstring& val, bool transient) +++ { +++ (void)val; (void)transient; +++ } ++ ++ /** ++ * Called upon parsing of an attribute of an element. Note that when ++@@ -86,7 +104,10 @@ public: ++ * ++ * @param attr struct containing attribute information. ++ */ ++- void attribute(const orcus::sax::parser_attribute& attr) {} +++ void attribute(const orcus::sax::parser_attribute& attr) +++ { +++ (void)attr; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/sax_token_parser.hpp b/include/orcus/sax_token_parser.hpp ++index 1452bc27..6b1b1de4 100644 ++--- a/include/orcus/sax_token_parser.hpp +++++ b/include/orcus/sax_token_parser.hpp ++@@ -71,7 +71,10 @@ public: ++ * ++ * @param decl struct containing the attributes of the XML declaration. ++ */ ++- void declaration(const orcus::xml_declaration_t& decl) {} +++ void declaration(const orcus::xml_declaration_t& decl) +++ { +++ (void)decl; +++ } ++ ++ /** ++ * Called at the start of each element. ++@@ -79,7 +82,10 @@ public: ++ * @param elem struct containing the element's information as well as all ++ * the attributes that belong to the element. ++ */ ++- void start_element(const orcus::xml_token_element_t& elem) {} +++ void start_element(const orcus::xml_token_element_t& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called at the end of each element. ++@@ -87,7 +93,10 @@ public: ++ * @param elem struct containing the element's information as well as all ++ * the attributes that belong to the element. ++ */ ++- void end_element(const orcus::xml_token_element_t& elem) {} +++ void end_element(const orcus::xml_token_element_t& elem) +++ { +++ (void)elem; +++ } ++ ++ /** ++ * Called when a segment of a text content is parsed. Each text content ++@@ -103,7 +112,10 @@ public: ++ * a non-text value or be interned within the scope of ++ * the callback. ++ */ ++- void characters(const orcus::pstring& val, bool transient) {} +++ void characters(const orcus::pstring& val, bool transient) +++ { +++ (void)val; (void)transient; +++ } ++ }; ++ ++ /** ++diff --git a/include/orcus/yaml_parser.hpp b/include/orcus/yaml_parser.hpp ++index 797ebbec..8d16fbc7 100644 ++--- a/include/orcus/yaml_parser.hpp +++++ b/include/orcus/yaml_parser.hpp ++@@ -72,14 +72,20 @@ public: ++ * @param p pointer to the first character of the string value. ++ * @param len length of the string value. ++ */ ++- void string(const char* p, size_t n) {} +++ void string(const char* p, size_t n) +++ { +++ (void)p; (void)n; +++ } ++ ++ /** ++ * Called when a numeric value is encountered. ++ * ++ * @param val numeric value. ++ */ ++- void number(double val) {} +++ void number(double val) +++ { +++ (void)val; +++ } ++ ++ /** ++ * Called when a boolean 'true' keyword is encountered. ++-- ++2.25.1 ++ +diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk +index 21dd1bfb1ce5..747691809d2e 100644 +--- a/external/liborcus/ExternalPackage_liborcus.mk ++++ b/external/liborcus/ExternalPackage_liborcus.mk +@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus)) + $(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus)) + + ifeq ($(OS),MACOSX) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.0.dylib,src/liborcus/.libs/liborcus-0.15.0.dylib)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.0.dylib,src/parser/.libs/liborcus-parser-0.15.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.0.dylib,src/liborcus/.libs/liborcus-0.16.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.0.dylib,src/parser/.libs/liborcus-parser-0.16.0.dylib)) + else ifeq ($(DISABLE_DYNLOADING),) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.15.so.0,src/liborcus/.libs/liborcus-0.15.so.0.0.0)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.15.so.0,src/parser/.libs/liborcus-parser-0.15.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.so.0,src/liborcus/.libs/liborcus-0.16.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.so.0,src/parser/.libs/liborcus-parser-0.16.so.0.0.0)) + endif + + # vim: set noet sw=4 ts=4: +diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk +index 136fa538397e..c2a8cdcbe4a3 100644 +--- a/external/liborcus/ExternalProject_liborcus.mk ++++ b/external/liborcus/ExternalProject_liborcus.mk +@@ -123,8 +123,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) : + $(MAKE) \ + $(if $(filter MACOSX,$(OS)),\ + && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ +- $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.15.0.dylib \ +- $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.15.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.16.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.16.0.dylib \ + ) \ + ) + $(call gb_Trace_EndRange,liborcus,EXTERNAL) +diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk +index d3cbddbb8cec..4e46591b98fe 100644 +--- a/external/liborcus/Library_orcus-parser.mk ++++ b/external/liborcus/Library_orcus-parser.mk +@@ -63,6 +63,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\ + UnpackedTarball/liborcus/src/parser/tokens \ + UnpackedTarball/liborcus/src/parser/types \ + UnpackedTarball/liborcus/src/parser/xml_namespace \ ++ UnpackedTarball/liborcus/src/parser/xml_writer \ + UnpackedTarball/liborcus/src/parser/yaml_parser_base \ + UnpackedTarball/liborcus/src/parser/zip_archive \ + UnpackedTarball/liborcus/src/parser/zip_archive_stream \ +diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk +index ea99e7509fbf..0a0ca582882a 100644 +--- a/external/liborcus/Library_orcus.mk ++++ b/external/liborcus/Library_orcus.mk +@@ -85,6 +85,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/odf_tokens \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_context \ + UnpackedTarball/liborcus/src/liborcus/ods_content_xml_handler \ ++ UnpackedTarball/liborcus/src/liborcus/ods_dde_links_context \ + UnpackedTarball/liborcus/src/liborcus/ods_session_data \ + UnpackedTarball/liborcus/src/liborcus/ooxml_content_types \ + UnpackedTarball/liborcus/src/liborcus/ooxml_global \ +@@ -103,6 +104,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/orcus_xls_xml \ + UnpackedTarball/liborcus/src/liborcus/orcus_xlsx \ + UnpackedTarball/liborcus/src/liborcus/orcus_xml \ ++ UnpackedTarball/liborcus/src/liborcus/orcus_xml_impl \ + UnpackedTarball/liborcus/src/liborcus/orcus_xml_map_def \ + UnpackedTarball/liborcus/src/liborcus/session_context \ + UnpackedTarball/liborcus/src/liborcus/spreadsheet_iface_util \ +@@ -134,7 +136,9 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/xml_simple_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \ ++ UnpackedTarball/liborcus/src/liborcus/xml_structure_mapper \ + UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \ ++ UnpackedTarball/liborcus/src/liborcus/xpath_parser \ + UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \ + )) + +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index e5e33b0b1249..4736dbccab4b 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -20,6 +20,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/gcc9.patch.0 \ + external/liborcus/libtool.patch.0 \ + external/liborcus/fix-pch.patch.0 \ ++ external/liborcus/0001-Mark-all-untentionally-unused-variables.patch \ + )) + + ifeq ($(OS),WNT) +diff --git a/external/liborcus/libtool.patch.0 b/external/liborcus/libtool.patch.0 +index aa6ffa908ec3..663dbd8099d7 100644 +--- a/external/liborcus/libtool.patch.0 ++++ b/external/liborcus/libtool.patch.0 +@@ -1,11 +1,11 @@ +---- ltmain.sh.sav 2018-09-14 23:47:13.000000000 +0200 +-+++ ltmain.sh 2019-05-05 23:11:30.406904472 +0200 +-@@ -7278,7 +7278,7 @@ func_mode_link () ++--- ltmain.sh.orig 2020-09-09 21:20:23.069433984 -0400 +++++ ltmain.sh 2020-09-09 21:27:13.168073996 -0400 ++@@ -7373,7 +7373,7 @@ + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ +-- -specs=*|-fsanitize=*) +-+ -specs=*|-fsanitize=*|-fuse-ld=*) ++- -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) +++ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" +diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch +index 876bc1688a31..51aabfa1fb47 100644 +--- a/external/liborcus/windows-constants-hack.patch ++++ b/external/liborcus/windows-constants-hack.patch +@@ -8,7 +8,7 @@ index ae571f5..539ce18 100644 + + -#include "constants.inl" + +#define ORCUS_MAJOR_VERSION 0 +-+#define ORCUS_MINOR_VERSION 11 +++#define ORCUS_MINOR_VERSION 16 + +#define ORCUS_MICRO_VERSION 0 + + namespace orcus { +diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx +index b298c711d234..00aea6764957 100644 +--- a/sc/source/filter/inc/orcusinterface.hxx ++++ b/sc/source/filter/inc/orcusinterface.hxx +@@ -62,6 +62,11 @@ public: + { + return mnTextEncoding; + } ++ ++ ScDocumentImport& getDoc() const ++ { ++ return mrDoc; ++ } + }; + + class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_resolver +@@ -71,20 +76,28 @@ class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_re + public: + ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ); + +- orcus::spreadsheet::address_t resolve_address(const char* p, size_t n) override; +- orcus::spreadsheet::range_t resolve_range(const char* p, size_t n) override; ++ orcus::spreadsheet::src_address_t resolve_address(const char* p, size_t n) override; ++ orcus::spreadsheet::src_range_t resolve_range(const char* p, size_t n) override; + }; + + class ScOrcusNamedExpression : public orcus::spreadsheet::iface::import_named_expression + { + ScDocumentImport& mrDoc; + const ScOrcusGlobalSettings& mrGlobalSettings; +- SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named expressions. ++ ScAddress maBasePos; ++ OUString maName; ++ OUString maExpr; ++ const SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named expressions. + + public: + ScOrcusNamedExpression( ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab = -1 ); + +- virtual void define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override; ++ void reset(); ++ ++ virtual void set_base_position(const orcus::spreadsheet::src_address_t& pos) override; ++ virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override; ++ virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) override; ++ virtual void commit() override; + }; + + class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_strings +diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx +index 220f7ce057f9..aa96eb21d405 100644 +--- a/sc/source/filter/orcus/interface.cxx ++++ b/sc/source/filter/orcus/interface.cxx +@@ -46,6 +46,7 @@ + #include + + #include ++#include + + using namespace com::sun::star; + +@@ -158,51 +159,54 @@ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula + ScOrcusRefResolver::ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ) : + mrGlobalSettings(rGS) {} + +-os::address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) ++os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) + { + OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); + + ScAddress aAddr; +- aAddr.Parse(aStr, nullptr, ++ aAddr.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(), + formula::FormulaGrammar::extractRefConvention( + mrGlobalSettings.getCalcGrammar())); + +- os::address_t ret; +- ret.column = 0; +- ret.row = 0; +- +- if (aAddr.IsValid()) ++ if (!aAddr.IsValid()) + { +- ret.column = aAddr.Col(); +- ret.row = aAddr.Row(); ++ std::ostringstream os; ++ os << "'" << std::string(p, n) << "' is not a valid address expression."; ++ throw orcus::invalid_arg_error(os.str()); + } + ++ os::src_address_t ret; ++ ret.sheet = aAddr.Tab(); ++ ret.column = aAddr.Col(); ++ ret.row = aAddr.Row(); ++ + return ret; + } + +-os::range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) ++os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) + { + OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); + + ScRange aRange; +- aRange.Parse(aStr, nullptr, ++ aRange.Parse(aStr, &mrGlobalSettings.getDoc().getDoc(), + formula::FormulaGrammar::extractRefConvention( + mrGlobalSettings.getCalcGrammar())); + +- os::range_t ret; +- ret.first.column = 0; +- ret.first.row = 0; +- ret.last.column = 0; +- ret.last.row = 0; +- +- if (aRange.IsValid()) ++ if (!aRange.IsValid()) + { +- ret.first.column = aRange.aStart.Col(); +- ret.first.row = aRange.aStart.Row(); +- ret.last.column = aRange.aEnd.Col(); +- ret.last.row = aRange.aEnd.Row(); ++ std::ostringstream os; ++ os << "'" << std::string(p, n) << "' is not a valid range expression."; ++ throw orcus::invalid_arg_error(os.str()); + } + ++ os::src_range_t ret; ++ ret.first.sheet = aRange.aStart.Tab(); ++ ret.first.column = aRange.aStart.Col(); ++ ret.first.row = aRange.aStart.Row(); ++ ret.last.sheet = aRange.aEnd.Tab(); ++ ret.last.column = aRange.aEnd.Col(); ++ ret.last.row = aRange.aEnd.Row(); ++ + return ret; + } + +@@ -210,20 +214,46 @@ ScOrcusNamedExpression::ScOrcusNamedExpression( + ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) : + mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {} + +-void ScOrcusNamedExpression::define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) ++void ScOrcusNamedExpression::reset() ++{ ++ maBasePos.SetTab(0); ++ maBasePos.SetCol(0); ++ maBasePos.SetRow(0); ++ maName.clear(); ++ maExpr.clear(); ++} ++ ++void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_address_t& pos) ++{ ++ maBasePos.SetTab(pos.sheet); ++ maBasePos.SetCol(pos.column); ++ maBasePos.SetRow(pos.row); ++} ++ ++void ScOrcusNamedExpression::set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) ++{ ++ maName = OUString(p_name, n_name, mrGlobalSettings.getTextEncoding()); ++ maExpr = OUString(p_exp, n_exp, mrGlobalSettings.getTextEncoding()); ++} ++ ++void ScOrcusNamedExpression::set_named_range(const char* /*p_name*/, size_t /*n_name*/, const char* /*p_range*/, size_t /*n_range*/) + { +- OUString aName(p_name, n_name, mrGlobalSettings.getTextEncoding()); +- OUString aExpr(p_exp, n_exp, mrGlobalSettings.getTextEncoding()); ++ throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet."); ++} + ++void ScOrcusNamedExpression::commit() ++{ + ScRangeName* pNames = mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : mrDoc.getDoc().GetRangeName(); + if (!pNames) + return; + + ScRangeData* pRange = new ScRangeData( +- &mrDoc.getDoc(), aName, aExpr, ScAddress(), ScRangeData::Type::Name, ++ &mrDoc.getDoc(), maName, maExpr, maBasePos, ScRangeData::Type::Name, + mrGlobalSettings.getCalcGrammar()); + + pNames->insert(pRange, false); ++ ++ reset(); // make sure to reset the state for the next run. + } + + ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, Type eType) +diff --git a/sc/source/filter/orcus/xmlcontext.cxx b/sc/source/filter/orcus/xmlcontext.cxx +index f886dd555a66..1f3ee58220a0 100644 +--- a/sc/source/filter/orcus/xmlcontext.cxx ++++ b/sc/source/filter/orcus/xmlcontext.cxx +@@ -89,10 +89,9 @@ void populateTree( + rTreeCtrl.set_image(*xEntry, rParam.maImgElementRepeat, -1); + } + +- orcus::xml_structure_tree::entity_names_type aNames; ++ orcus::xml_structure_tree::entity_names_type aNames = rWalker.get_attributes(); + + // Insert attributes. +- rWalker.get_attributes(aNames); + for (const orcus::xml_structure_tree::entity_name& rAttrName : aNames) + { + OUString sAttr(toString(rAttrName, rWalker)); +@@ -106,7 +105,7 @@ void populateTree( + rTreeCtrl.set_image(*xAttr, rParam.maImgAttribute, -1); + } + +- rWalker.get_children(aNames); ++ aNames = rWalker.get_children(); + + // Non-leaf if it has child elements, leaf otherwise. + rEntryData.mbLeafNode = aNames.empty(); +@@ -266,7 +265,7 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam) + std::for_each(rLink.maFieldPaths.begin(), rLink.maFieldPaths.end(), + [&filter](const OString& rFieldPath) + { +- filter.append_field_link(rFieldPath.getStr()); ++ filter.append_field_link(rFieldPath.getStr(), orcus::pstring()); + } + ); + +diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx +index 1eb2e4b06077..167ecae315ae 100644 +--- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx ++++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx +@@ -49,8 +49,12 @@ OUString getXPath( + if (pData) + rNamespaces.push_back(pData->mnNamespaceID); + ++ // element separator is '/' whereas attribute separator is '/@' in xpath. + aBuf.insert(0, rTree.get_text(*xEntry, 0)); +- aBuf.insert(0, isAttribute(rTree, *xEntry) ? '@' : '/'); ++ if (isAttribute(rTree, *xEntry)) ++ aBuf.insert(0, "/@"); ++ else ++ aBuf.insert(0, '/'); + } + while (rTree.iter_parent(*xEntry)); + +-- +cgit v1.2.1 + +From 1821dde6601193cc0ddf87fc020de708544d9700 Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida +Date: Mon, 28 Sep 2020 16:19:54 -0400 +Subject: Update liborcus to 0.16.1. + +Change-Id: I27e87278545c1d41381b1ab8a49f6f6a07681bfb +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103590 +Tested-by: Jenkins +Reviewed-by: Kohei Yoshida +--- + download.lst | 4 +- + ...1-Mark-all-untentionally-unused-variables.patch | 376 --------------------- + external/liborcus/UnpackedTarball_liborcus.mk | 1 - + 3 files changed, 2 insertions(+), 379 deletions(-) + delete mode 100644 external/liborcus/0001-Mark-all-untentionally-unused-variables.patch + +diff --git a/download.lst b/download.lst +index a4782bb2b9ef..48af3c5e9198 100644 +--- a/download.lst ++++ b/download.lst +@@ -206,8 +206,8 @@ export OPENLDAP_SHA256SUM := cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb89 + export OPENLDAP_TARBALL := openldap-2.4.45.tgz + export OPENSSL_SHA256SUM := 14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc + export OPENSSL_TARBALL := openssl-1.0.2t.tar.gz +-export ORCUS_SHA256SUM := 854c6ec167ace59baa2984e175bac7b5b2af91bfde4bb10d2088b87a51ed76ec +-export ORCUS_TARBALL := liborcus-0.16.0.tar.bz2 ++export ORCUS_SHA256SUM := c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4 ++export ORCUS_TARBALL := liborcus-0.16.1.tar.bz2 + export OWNCLOUD_ANDROID_LIB_SHA256SUM := b18b3e3ef7fae6a79b62f2bb43cc47a5346b6330f6a383dc4be34439aca5e9fb + export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz + export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d +diff --git a/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch b/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch +deleted file mode 100644 +index b0f6a572aff7..000000000000 +--- a/external/liborcus/0001-Mark-all-untentionally-unused-variables.patch ++++ /dev/null +@@ -1,376 +0,0 @@ +-From 6d34c41b661a9e8dddf6d08bf1f3c1fd4f5581da Mon Sep 17 00:00:00 2001 +-From: Kohei Yoshida +-Date: Fri, 11 Sep 2020 21:39:09 -0400 +-Subject: [PATCH] Mark all untentionally unused variables. +- +---- +- include/orcus/css_parser.hpp | 70 ++++++++++++++++++++++++------ +- include/orcus/csv_parser.hpp | 5 ++- +- include/orcus/json_parser.hpp | 15 +++++-- +- include/orcus/sax_parser.hpp | 35 ++++++++++++--- +- include/orcus/sax_token_parser.hpp | 20 +++++++-- +- include/orcus/yaml_parser.hpp | 10 ++++- +- 6 files changed, 124 insertions(+), 31 deletions(-) +- +-diff --git a/include/orcus/css_parser.hpp b/include/orcus/css_parser.hpp +-index cdfae5e0..3e96980b 100644 +---- a/include/orcus/css_parser.hpp +-+++ b/include/orcus/css_parser.hpp +-@@ -31,23 +31,44 @@ namespace orcus { +- class css_handler +- { +- public: +-- void at_rule_name(const char* p, size_t n) {} +-+ void at_rule_name(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +-- void simple_selector_type(const char* p, size_t n) {} +-+ void simple_selector_type(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +-- void simple_selector_class(const char* p, size_t n) {} +-+ void simple_selector_class(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +-- void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) {} +-+ void simple_selector_pseudo_element(orcus::css::pseudo_element_t pe) +-+ { +-+ (void)pe; +-+ } +- +-- void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) {} +-+ void simple_selector_pseudo_class(orcus::css::pseudo_class_t pc) +-+ { +-+ (void)pc; +-+ } +- +-- void simple_selector_id(const char* p, size_t n) {} +-+ void simple_selector_id(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +- void end_simple_selector() {} +- +- void end_selector() {} +- +-- void combinator(orcus::css::combinator_t combinator) {} +-+ void combinator(orcus::css::combinator_t combinator) +-+ { +-+ (void)combinator; +-+ } +- +- /** +- * Called at each property name. +-@@ -55,7 +76,10 @@ public: +- * @param p pointer to the char-array containing the property name string. +- * @param n length of the property name string. +- */ +-- void property_name(const char* p, size_t n) {} +-+ void property_name(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +- /** +- * Called at each ordinary property value string. +-@@ -63,7 +87,10 @@ public: +- * @param p pointer to the char-array containing the value string. +- * @param n length of the value string. +- */ +-- void value(const char* p, size_t n) {} +-+ void value(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +- /** +- * Called at each RGB color value of a property. +-@@ -72,7 +99,10 @@ public: +- * @param green value of green (0-255) +- * @param blue value of blue (0-255) +- */ +-- void rgb(uint8_t red, uint8_t green, uint8_t blue) {} +-+ void rgb(uint8_t red, uint8_t green, uint8_t blue) +-+ { +-+ (void)red; (void)green; (void)blue; +-+ } +- +- /** +- * Called at each RGB color value of a property with alpha transparency +-@@ -83,7 +113,10 @@ public: +- * @param blue value of blue (0-255) +- * @param alpha alpha transparency value +- */ +-- void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) {} +-+ void rgba(uint8_t red, uint8_t green, uint8_t blue, double alpha) +-+ { +-+ (void)red; (void)green; (void)blue; (void)alpha; +-+ } +- +- /** +- * Called at each HSL color value of a property. +-@@ -92,7 +125,10 @@ public: +- * @param sat saturation +- * @param light lightness +- */ +-- void hsl(uint8_t hue, uint8_t sat, uint8_t light) {} +-+ void hsl(uint8_t hue, uint8_t sat, uint8_t light) +-+ { +-+ (void)hue; (void)sat; (void)light; +-+ } +- +- /** +- * Called at each HSL color value of a property with alpha transparency +-@@ -103,7 +139,10 @@ public: +- * @param light lightness +- * @param alpha alpha value +- */ +-- void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) {} +-+ void hsla(uint8_t hue, uint8_t sat, uint8_t light, double alpha) +-+ { +-+ (void)hue; (void)sat; (void)light; (void)alpha; +-+ } +- +- /** +- * Called at each URL value of a property. +-@@ -111,7 +150,10 @@ public: +- * @param p pointer to the char-array containing the URL value string. +- * @param n length of the URL value string. +- */ +-- void url(const char* p, size_t n) {} +-+ void url(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +- /** +- * Called when the parsing begins. +-diff --git a/include/orcus/csv_parser.hpp b/include/orcus/csv_parser.hpp +-index a873b0f2..27b4f924 100644 +---- a/include/orcus/csv_parser.hpp +-+++ b/include/orcus/csv_parser.hpp +-@@ -47,7 +47,10 @@ public: +- * the text content is guaranteed to be valid so long as +- * the original CSV stream content is valid. +- */ +-- void cell(const char* p, size_t n, bool transient) {} +-+ void cell(const char* p, size_t n, bool transient) +-+ { +-+ (void)p; (void)n; (void)transient; +-+ } +- }; +- +- template +-diff --git a/include/orcus/json_parser.hpp b/include/orcus/json_parser.hpp +-index 51a3d7cc..ef22b3a8 100644 +---- a/include/orcus/json_parser.hpp +-+++ b/include/orcus/json_parser.hpp +-@@ -54,7 +54,10 @@ public: +- * pointer points to somewhere in the JSON stream being +- * parsed. +- */ +-- void object_key(const char* p, size_t len, bool transient) {} +-+ void object_key(const char* p, size_t len, bool transient) +-+ { +-+ (void)p; (void)len; (void)transient; +-+ } +- +- /** +- * Called when the closing curly brace of an object is encountered. +-@@ -87,14 +90,20 @@ public: +- * pointer points to somewhere in the JSON stream being +- * parsed. +- */ +-- void string(const char* p, size_t len, bool transient) {} +-+ void string(const char* p, size_t len, bool transient) +-+ { +-+ (void)p; (void)len; (void)transient; +-+ } +- +- /** +- * Called when a numeric value is encountered. +- * +- * @param val numeric value. +- */ +-- void number(double val) {} +-+ void number(double val) +-+ { +-+ (void)val; +-+ } +- }; +- +- /** +-diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp +-index 73c17d06..3b21bfdf 100644 +---- a/include/orcus/sax_parser.hpp +-+++ b/include/orcus/sax_parser.hpp +-@@ -30,7 +30,10 @@ public: +- * +- * @param param struct containing doctype declaration data. +- */ +-- void doctype(const orcus::sax::doctype_declaration& param) {} +-+ void doctype(const orcus::sax::doctype_declaration& param) +-+ { +-+ (void)param; +-+ } +- +- /** +- * Called when <?... is encountered, where the '...' may be an +-@@ -39,28 +42,40 @@ public: +- * +- * @param decl name of the identifier. +- */ +-- void start_declaration(const orcus::pstring& decl) {} +-+ void start_declaration(const orcus::pstring& decl) +-+ { +-+ (void)decl; +-+ } +- +- /** +- * Called when the closing tag (>) of a <?... ?> is encountered. +- * +- * @param decl name of the identifier. +- */ +-- void end_declaration(const orcus::pstring& decl) {} +-+ void end_declaration(const orcus::pstring& decl) +-+ { +-+ (void)decl; +-+ } +- +- /** +- * Called at the start of each element. +- * +- * @param elem information of the element being parsed. +- */ +-- void start_element(const orcus::sax::parser_element& elem) {} +-+ void start_element(const orcus::sax::parser_element& elem) +-+ { +-+ (void)elem; +-+ } +- +- /** +- * Called at the end of each element. +- * +- * @param elem information of the element being parsed. +- */ +-- void end_element(const orcus::sax::parser_element& elem) {} +-+ void end_element(const orcus::sax::parser_element& elem) +-+ { +-+ (void)elem; +-+ } +- +- /** +- * Called when a segment of a text content is parsed. Each text content +-@@ -76,7 +91,10 @@ public: +- * a non-text value or be interned within the scope of +- * the callback. +- */ +-- void characters(const orcus::pstring& val, bool transient) {} +-+ void characters(const orcus::pstring& val, bool transient) +-+ { +-+ (void)val; (void)transient; +-+ } +- +- /** +- * Called upon parsing of an attribute of an element. Note that when +-@@ -86,7 +104,10 @@ public: +- * +- * @param attr struct containing attribute information. +- */ +-- void attribute(const orcus::sax::parser_attribute& attr) {} +-+ void attribute(const orcus::sax::parser_attribute& attr) +-+ { +-+ (void)attr; +-+ } +- }; +- +- /** +-diff --git a/include/orcus/sax_token_parser.hpp b/include/orcus/sax_token_parser.hpp +-index 1452bc27..6b1b1de4 100644 +---- a/include/orcus/sax_token_parser.hpp +-+++ b/include/orcus/sax_token_parser.hpp +-@@ -71,7 +71,10 @@ public: +- * +- * @param decl struct containing the attributes of the XML declaration. +- */ +-- void declaration(const orcus::xml_declaration_t& decl) {} +-+ void declaration(const orcus::xml_declaration_t& decl) +-+ { +-+ (void)decl; +-+ } +- +- /** +- * Called at the start of each element. +-@@ -79,7 +82,10 @@ public: +- * @param elem struct containing the element's information as well as all +- * the attributes that belong to the element. +- */ +-- void start_element(const orcus::xml_token_element_t& elem) {} +-+ void start_element(const orcus::xml_token_element_t& elem) +-+ { +-+ (void)elem; +-+ } +- +- /** +- * Called at the end of each element. +-@@ -87,7 +93,10 @@ public: +- * @param elem struct containing the element's information as well as all +- * the attributes that belong to the element. +- */ +-- void end_element(const orcus::xml_token_element_t& elem) {} +-+ void end_element(const orcus::xml_token_element_t& elem) +-+ { +-+ (void)elem; +-+ } +- +- /** +- * Called when a segment of a text content is parsed. Each text content +-@@ -103,7 +112,10 @@ public: +- * a non-text value or be interned within the scope of +- * the callback. +- */ +-- void characters(const orcus::pstring& val, bool transient) {} +-+ void characters(const orcus::pstring& val, bool transient) +-+ { +-+ (void)val; (void)transient; +-+ } +- }; +- +- /** +-diff --git a/include/orcus/yaml_parser.hpp b/include/orcus/yaml_parser.hpp +-index 797ebbec..8d16fbc7 100644 +---- a/include/orcus/yaml_parser.hpp +-+++ b/include/orcus/yaml_parser.hpp +-@@ -72,14 +72,20 @@ public: +- * @param p pointer to the first character of the string value. +- * @param len length of the string value. +- */ +-- void string(const char* p, size_t n) {} +-+ void string(const char* p, size_t n) +-+ { +-+ (void)p; (void)n; +-+ } +- +- /** +- * Called when a numeric value is encountered. +- * +- * @param val numeric value. +- */ +-- void number(double val) {} +-+ void number(double val) +-+ { +-+ (void)val; +-+ } +- +- /** +- * Called when a boolean 'true' keyword is encountered. +--- +-2.25.1 +- +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index 4736dbccab4b..e5e33b0b1249 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -20,7 +20,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/gcc9.patch.0 \ + external/liborcus/libtool.patch.0 \ + external/liborcus/fix-pch.patch.0 \ +- external/liborcus/0001-Mark-all-untentionally-unused-variables.patch \ + )) + + ifeq ($(OS),WNT) +-- +cgit v1.2.1 +