logo

etc_portage

Unnamed repository; edit this file 'description' to name the repository.
commit: c9bdf97b36685eeda879b4c0ae033c5fd7c99e16
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sat, 30 May 2020 13:28:01 +0200

Initial Commit

Diffstat:

A.gitignore17+++++++++++++++++
AREADME.md7+++++++
Abashrc14++++++++++++++
Aenv/as-nasm2++
Aenv/cxx111+
Aenv/debug2++
Aenv/fno_common4++++
Aenv/gcc18++++++++++++++++++
Aenv/gcc-42++
Aenv/gcc-ar2++
Aenv/gcc-as2++
Aenv/gcc-clags2++
Aenv/gnu17+++++++++++++++++
Aenv/gnu-ld1+
Aenv/latomic2++
Aenv/libcxx2++
Aenv/libstdcxx2++
Aenv/libtool2++
Aenv/log_disable_03+++
Aenv/no-execstack2++
Aenv/noclean2++
Aenv/notmpfs.conf2++
Apackage.env/as-nasm1+
Apackage.env/debug1+
Apackage.env/fno_common1+
Apackage.env/gcc87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apackage.env/gcc-ar4++++
Apackage.env/gcc-as2++
Apackage.env/gcc-clags1+
Apackage.env/gcc-haskell7+++++++
Apackage.env/gcc-stdc11-bugs1+
Apackage.env/gcc-tmp2++
Apackage.env/gnu-ld1+
Apackage.env/latomic2++
Apackage.env/libtool2++
Apackage.env/log_disable_01+
Apackage.env/no-execstack1+
Apackage.env/noclean2++
Apackage.env/notmpfs.conf14++++++++++++++
Apatches/app-admin/pass-otp-1.1.0/pass-otp-69-otp-insert_require_only_one_issuer_or_account.patch51+++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0001.patch62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0002.patch22++++++++++++++++++++++
Apatches/app-editors/vis-0.4/619.patch65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/app-editors/vis-0.4/vis-0.4-symbols.patch17+++++++++++++++++
Apatches/app-editors/vis-0.4/vis-0.4_ebuild_lexer.patch107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/app-editors/vis-0.5/vis-0.4-symbols.patch13+++++++++++++
Apatches/app-editors/vis-0.5/vis-0.4_ebuild_lexer.patch107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/app-editors/vis-0.5/vis-0.5-match_quotes.patch22++++++++++++++++++++++
Apatches/app-editors/vis-test-0.5-respect_cc_cflags.patch22++++++++++++++++++++++
Apatches/app-emulation/playonlinux-4.2.12/fix-Makefile-CC.patch22++++++++++++++++++++++
Apatches/app-i18n/uim-1.8.8/uim-1.8.8-xim__main.cpp_fix_cxx11_syntax.patch13+++++++++++++
Apatches/app-text/enchant/enchant-1.6.1-Add-tag=CC.patch9+++++++++
Apatches/app-text/mandoc/tbl_term.c_1.70_1.73.patch218+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/dev-dotnet/msbuild-roslyn-csc-15.3/99-CopyRefAssemblyFix.patch14++++++++++++++
Apatches/dev-embedded/avrdude/avrdude-6.3_no-datetime.patch11+++++++++++
Apatches/dev-haskell/cpphs-1.20.8/xkbcommon_fix.patch14++++++++++++++
Apatches/dev-lang/nss/nss-3.33-no-datetime.patch14++++++++++++++
Apatches/dev-lang/python-2.7/python-2.7.12-no-compiler-version.patch25+++++++++++++++++++++++++
Apatches/dev-lang/python-2.7/python-2.7.12-no-datetime.patch28++++++++++++++++++++++++++++
Apatches/dev-lang/python-3.4/python-2.7.12-no-compiler-version.patch25+++++++++++++++++++++++++
Apatches/dev-lang/python-3.4/python-2.7.12-no-datetime.patch28++++++++++++++++++++++++++++
Apatches/dev-lang/python-3.5/python-2.7.12-no-compiler-version.patch25+++++++++++++++++++++++++
Apatches/dev-lang/python-3.5/python-2.7.12-no-datetime.patch28++++++++++++++++++++++++++++
Apatches/dev-lang/python-3.6/python-2.7.12-no-compiler-version.patch25+++++++++++++++++++++++++
Apatches/dev-lang/python-3.6/python-2.7.12-no-datetime.patch28++++++++++++++++++++++++++++
Apatches/dev-libs/elfutils-0.170/elfutils-0.170-r1_configure_clang_gnu99.patch16++++++++++++++++
Apatches/dev-libs/libgit2-0.26.8/openssl_stream.h_libressl_2.7.patch13+++++++++++++
Apatches/dev-util/bam/bam-0.4.0-no-datetime.patch26++++++++++++++++++++++++++
Apatches/dev-util/itstool-2.0.5/index.html?h=contrib%2Ffix_crash_pipe48++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/dev-util/itstool-2.0.5/itstool-2.0.5-fix_crash_pipe.patch162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/dev-util/itstool-2.0.5/wget-log11+++++++++++
Apatches/dev-util/itstool-2.0.6/index.html?h=contrib%2Ffix_crash_pipe48++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/dev-util/itstool-2.0.6/itstool-2.0.5-fix_crash_pipe.patch162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/dev-util/itstool-2.0.6/wget-log11+++++++++++
Apatches/dev-util/samurai/samurai-0.6-Add-fake-l-flag-for-compatibility.patch26++++++++++++++++++++++++++
Apatches/dev-util/scons-2.5.1/scons-2.5.1_reuse_PATH_env.patch13+++++++++++++
Apatches/games-arcade/syobon/WASD controls DxLibs.h.patch17+++++++++++++++++
Apatches/gnustep-base/libobjc2/libobjc2-1.8.1-fix_redefinition_of_i.patch30++++++++++++++++++++++++++++++
Apatches/mail-mta/opensmtpd/opensmtpd-6.0.2p1-uid_0_certificate.patch38++++++++++++++++++++++++++++++++++++++
Apatches/media-gfx/inkscape.old/inkscape-0.91-no-date.patch26++++++++++++++++++++++++++
Apatches/media-libs/shaderc/shaderc-2018.0_remove_Werror.patch13+++++++++++++
Apatches/media-sound/audacity/enchant-1.6.1-Add-tag=CC.patch9+++++++++
Apatches/net-analyzer/nettop/nettop-0.2.3-no-datetime.patch13+++++++++++++
Apatches/net-analyzer/nmap-7.70/nmap-7.70_nmap_error_h-time_h.patch13+++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch411+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch29+++++++++++++++++++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch28++++++++++++++++++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/patch-webkit-2.22.6/0006-lanodan-TODO-New.patch87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/serf-1.3.9/serf-1.3.9-openssl_malloc_init.patch13+++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch478+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch25+++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0006-lanodan-TODO-New.patch84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0007-Revert-Remove-support-for-PING-in-HTML-anchors-priva.patch480+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.22.6/0008-WebCore-html-ImageDocument.cpp-Enhance-Image-Viewer.patch69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.24.0/fix_textcodec_snprintf.patch12++++++++++++
Apatches/net-libs/webkit-gtk-2.24.1/0001-TextCodec.cpp-Fix-snprintf.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.24.2/webkit-gtk-2.24.3-fix-glib-crash-js-object.patch191+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0002-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch25+++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0009-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0011-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch38++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0013-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.2/0014-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0001-Fixes-for-musl.patch165+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch25+++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0013-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch38++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0014-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.26.3/0015-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0002-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0003-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch25+++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0004-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0005-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch26++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0006-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch38++++++++++++++++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0007-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk-2.28.0/0008-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch24++++++++++++++++++++++++
Apatches/net-libs/webkit-gtk/webkit-gtk-2.28.1-bubblewrap_launcher-allow-sndio.patch37+++++++++++++++++++++++++++++++++++++
Apatches/net-vpn/tor-0.3.2.9/tor-0.3.2.9-fix redefinition of unsigned u.patch18++++++++++++++++++
Apatches/sys-boot/grub/grub-2.02_tenshi.patch15+++++++++++++++
Apatches/sys-libs/glibc-2.27/glibc-c-utf8-locale.patch286+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/sys-libs/glibc/glibc-2.27-meme-sigsegv-message.patch13+++++++++++++
Apatches/sys-libs/glibc/stfu-rms-on-abort.patch21+++++++++++++++++++++
Apatches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch16++++++++++++++++
Apatches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch14++++++++++++++
Apatches/sys-libs/libomp-9.0.0/FreeBSD_bug32279.patch11+++++++++++
Apatches/sys-libs/musl/musl-1.1.20-meme-sigsegv-message.patch13+++++++++++++
Apatches/www-apps/stagit-0.82++
Apatches/www-apps/stagit-0.9/0001-fix-compile-libgit2-0.28-changed-giterr_last-to-git_.patch60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0002-change-order-of-commits-in-log-from-most-recent-to-o.patch81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0003-Makefile-add-DOCPREFIX-for-installing-docs-in-ports.patch76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0004-bump-version-to-0.9.1.patch25+++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0005-fix-issues-in-example-scripts.patch43+++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0006-pedantic-snprintf-improvement.patch60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0007-escape-HTML-in-paths.patch48++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0008-stagit.c-Use-config.h.patch35+++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0009-Use-common-path-for-assets-style.css-logo.png.patch44++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0010-stagit.c-Define-img-alt.patch25+++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0011-stagit-index.c-Let-HTTP-server-provide-default-index.patch26++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0012-HTML5-faviconurl-Wall.patch98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0013-stagit.c-Remove-b-or-replace-to-strong.patch109+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0014-stagit-.c-Custom-footer.patch43+++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0015-style.css-Replace-with-my-own.patch162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0016-stagit-index.c-HTML5-it-Remove-Owner.patch87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0017-stagit.c-fixup-HTML5.patch33+++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0018-stagit.c-Remove-decorative-td-td.patch25+++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0019-stagit-index-.c-Add-a-bunch-of-classes-for-styling.patch69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0020-style.css-Fix-overflows.patch45+++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0021-stagit.c-Move-atom-link-next-to-Log-for-better-disco.patch35+++++++++++++++++++++++++++++++++++
Apatches/www-apps/stagit-0.9/0022-stagit.c-link-footer-to-git-send-email.io.patch25+++++++++++++++++++++++++
Apatches/www-client/firefox/firefox-solarized-view-source.diff70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-servers/nginx-1.14/00 no bgwhite.patch11+++++++++++
Apatches/www-servers/nginx-1.14/01 ISO 8601.patch24++++++++++++++++++++++++
Apatches/www-servers/nginx-1.14/02 custom autoindex.patch185+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-servers/nginx-1.14/03 autoindex styling.patch16++++++++++++++++
Apatches/www-servers/nginx/01 ISO 8601.patch26++++++++++++++++++++++++++
Apatches/www-servers/nginx/02 custom autoindex.patch184+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/www-servers/nginx/03 autoindex styling.patch16++++++++++++++++
Apatches/x11-libs/cairo-1.14.12/cairo-1.14.6-macos.patch103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-libs/gtk+-3.24.1/gtk+-3.24.1_purple.patch913+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-libs/libXfont2-2.0.4/libXfont2-2.0.4_define_have_libbsd.patch26++++++++++++++++++++++++++
Apatches/x11-libs/libXft/1.patch738+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-libs/pango-1.42.4-r1/pango-CVE-2019-1010238.patch34++++++++++++++++++++++++++++++++++
Apatches/x11-misc/redshift/redshift-1.12_no_objc.patch91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-misc/tabbed-0.6/tabbed-0.6-xft.diff233+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-misc/xkeyboard-config/xkeyboard-config-2.26_custom-US-layout.patch41+++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.1/0001-apply-01b-my-config.diff.patch34++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.1/0002-Fix-keyboard-input-on-terminal.patch770+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.1/0003-apply-st-gruvbox-both-0.8.1.diff.patch216+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.2/0001-better-Input-Method-Editor-IME-support.patch152+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.2/0002-fix-use-after-free-in-font-caching-algorithm.patch62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.2/0003-apply-01b-my-config.diff.patch34++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.2/0004-Fix-keyboard-input-on-terminal.louli770+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apatches/x11-terms/st-0.8.2/0005-apply-st-gruvbox-both-0.8.1.diff.patch214+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apostsync.d/100-sync_system_flags8++++++++
Apostsync.d/9998-eix8++++++++
Apostsync.d/9999-eix-remote2++
Arepo.postsync.d/000-sync_gentoo_cache34++++++++++++++++++++++++++++++++++
Arepo.postsync.d/000-sync_gentoo_dtd17+++++++++++++++++
Arepo.postsync.d/000-sync_gentoo_glsa17+++++++++++++++++
Arepo.postsync.d/000-sync_gentoo_news17+++++++++++++++++
Arepo.postsync.d/000-sync_gentoo_projects_xml12++++++++++++
Arepo.postsync.d/000-sync_overlay_cache29+++++++++++++++++++++++++++++
Arepo.postsync.d/example51+++++++++++++++++++++++++++++++++++++++++++++++++++
Arepos.conf/crossdev5+++++
Arepos.conf/eselect-repo.conf~136+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Arepos.conf/gentoo.conf13+++++++++++++
Asavedconfig/gui-wm/inaban-999921+++++++++++++++++++++
Asavedconfig/sys-apps/busybox-1.31.1-r21188+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asavedconfig/sys-firmware/ipxe-1.0.0_p201907283+++
Asavedconfig/sys-kernel/linux-firmware-202003162052+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asavedconfig/sys-kernel/linux-firmware-202004212058+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asavedconfig/x11-misc/dmenu-4.823+++++++++++++++++++++++
Asavedconfig/x11-misc/slock-1.412++++++++++++
Asavedconfig/x11-misc/tabbed-0.648++++++++++++++++++++++++++++++++++++++++++++++++
Asavedconfig/x11-terms/st-0.8.2480+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asavedconfig/x11-wm/dwm-6.1-r1113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asmart-live-rebuild.conf3+++
207 files changed, 18091 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,17 @@ +# Ignore crossdev-generated files +cross-* +/categories + +/system-use-flags.txt +/repos.conf/eselect-repo.conf + +# Ignore overlay-synchronised settings +/make.conf +/sets +/package.use +/package.accept_keywords +/package.license +/package.mask +/package.unmask +/profile +/make.profile diff --git a/README.md b/README.md @@ -0,0 +1,7 @@ +## /etc/portage + +This is the parts of my ``/etc/portage`` files that I wish to render public. + +A large part of what’s in `patches` is `git format-patch` on my own branch(es) +of theses softwares, it’s included in here for simplicity but might get added +to a `.gitignore` at some point. diff --git a/bashrc b/bashrc @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ "${EBUILD_PHASE}" == "postinst" ] || [ "${EBUILD_PHASE}" == "postrm" ]; then + echo ":: Calling makewhatis" + makewhatis -Q -T utf8 ${MANPATH//:/ } +fi + +#if [ "${EBUILD_PHASE}" == "prepare" ]; then +# if grep -q -- '-bin$' <<<"${PN}"; then +# echo ":: *-bin package, not deblobbing" +# else +# go-deblob -e 'test*' -e '*/test*' -d "${WORKDIR}" +# fi +#fi diff --git a/env/as-nasm b/env/as-nasm @@ -0,0 +1 @@ +AS="nasm"+ \ No newline at end of file diff --git a/env/cxx11 b/env/cxx11 @@ -0,0 +1 @@ +CXXFLAGS="${CXXFLAGS} -std=cxx11" diff --git a/env/debug b/env/debug @@ -0,0 +1,2 @@ +CFLAGS="-O1 -pipe -ggdb" +CXXFLAGS="${CFLAGS}" diff --git a/env/fno_common b/env/fno_common @@ -0,0 +1,4 @@ +# https://wiki.gentoo.org/wiki/Gcc_10_porting_notes/fno_common#Reproducing_the_build_failure_with_older_gcc_versions +# https://bugs.gentoo.org/show_bug.cgi?id=705764 +CFLAGS="${CFLAGS} -fno-common" +CXXFLAGS="${CXXFLAGS} -fno-common" diff --git a/env/gcc b/env/gcc @@ -0,0 +1,18 @@ +AS="as" +AR="gcc-ar" +CC="gcc" +CCC="g++" +CFLAGS="${COMMON_FLAGS}" +LDFLAGS="" +CPP="gcc -E" +CXX="g++" +CXXFLAGS="${COMMON_FLAGS}" +LD="ld" +NM="gcc-nm" +OBJCOPY="objcopy" +OBJDUMP="objdump" +OBJSIZE="size" +RANLIB="gcc-ranlib" +READELF="readelf" +READOBJ="readobj" +STRIP="strip" diff --git a/env/gcc-4 b/env/gcc-4 @@ -0,0 +1,2 @@ +CC=gcc-4.8.5 +CXX=g++-4.8.5 diff --git a/env/gcc-ar b/env/gcc-ar @@ -0,0 +1 @@ +AR="gcc-ar"+ \ No newline at end of file diff --git a/env/gcc-as b/env/gcc-as @@ -0,0 +1 @@ +AS="as"+ \ No newline at end of file diff --git a/env/gcc-clags b/env/gcc-clags @@ -0,0 +1,2 @@ +CFLAGS="-O2 -pipe -march=native -mtune=native" +CXXFLAGS="${CFLAGS}" diff --git a/env/gnu b/env/gnu @@ -0,0 +1,17 @@ +AR="gcc-ar" +AS="as" +CC="gcc" +CCC="g++" +CFLAGS="${COMMON_FLAGS}" +CPP="cpp" +CXX="g++" +CXXFLAGS="${COMMON_FLAGS}" +LD="ld.bfd" +NM="gcc-nm" +OBJCOPY="objcopy" +OBJDUMP="objdump" +OBJSIZE="size" +RANLIB="gcc-ranlib" +READELF="readelf" +READOBJ="readobj" +STRIP="strip" diff --git a/env/gnu-ld b/env/gnu-ld @@ -0,0 +1 @@ +LD="ld" diff --git a/env/latomic b/env/latomic @@ -0,0 +1 @@ +LDFLAGS="${LDFLAGS} -latomic"+ \ No newline at end of file diff --git a/env/libcxx b/env/libcxx @@ -0,0 +1,2 @@ +CXX="clang++ -stdlib=libc++" +OBJCXX="clang++ -stdlib=libc++" diff --git a/env/libstdcxx b/env/libstdcxx @@ -0,0 +1,2 @@ +CXX="clang++ -stdlib=libstdc++" +OBJCXX="clang++ -stdlib=libstdc++" diff --git a/env/libtool b/env/libtool @@ -0,0 +1 @@ +LIBTOOL="libtool"+ \ No newline at end of file diff --git a/env/log_disable_0 b/env/log_disable_0 @@ -0,0 +1,3 @@ +# https://trac.webkit.org/wiki/WebKitGTK/Debugging#Loggingsupport +export CFLAGS="${CFLAGS} -DLOG_DISABLED=0" +export CXXFLAGS="${CXXFLAGS} -DLOG_DISABLED=0" diff --git a/env/no-execstack b/env/no-execstack @@ -0,0 +1 @@ +LDFLAGS="${LDFLAGS} -Wl,-z,noexecstack"+ \ No newline at end of file diff --git a/env/noclean b/env/noclean @@ -0,0 +1 @@ +FEATURES="noclean"+ \ No newline at end of file diff --git a/env/notmpfs.conf b/env/notmpfs.conf @@ -0,0 +1,2 @@ +PORTAGE_TMPDIR="/var/tmp/notmpfs" + diff --git a/package.env/as-nasm b/package.env/as-nasm @@ -0,0 +1 @@ +media-libs/x264 as-nasm diff --git a/package.env/debug b/package.env/debug @@ -0,0 +1 @@ +=net-misc/openssh-7.7_p1-r9::gentoo debug diff --git a/package.env/fno_common b/package.env/fno_common @@ -0,0 +1 @@ +app-editors/vis gcc fno_common diff --git a/package.env/gcc b/package.env/gcc @@ -0,0 +1,87 @@ +=app-arch/arj-3.10.22-r7::gentoo gcc +=app-editors/vim-1.14::lanodanOverlay gcc +=app-emulation/wine-staging-2.19-r7::bobwya gcc +=app-emulation/wine-staging-4.3_p1::bobwya gcc +~app-office/abiword-3.0.2::gentoo gcc +=app-office/libreoffice-6.2.4.2::gentoo gcc +=app-text/openjade-1.3.2-r8 gcc +=app-text/texlive-core-2017-r4::gentoo gcc +=dev-cpp/clucene-2.3.3.4-r6::gentoo gcc +=dev-cpp/tbb-2017.20161128::gentoo gcc +=dev-lang/ocaml-4.04.2-r1::gentoo gcc +=dev-libs/openssl-0.9.8z_p8-r1::gentoo gcc +=dev-libs/softhsm-2.5.0::gentoo gcc +=dev-util/vulkan-headers-1.1.92.0 gcc # See related issues/PR https://bugs.llvm.org/show_bug.cgi?id=37136 Fails on 6.0.1 +=games-arcade/stepmania-5.1.0_beta2::lanodanOverlay gcc +=games-engines/devilutionx-9999::poly-c gcc +=games-fps/gzdoom-4.1.1::guru gcc +=games-puzzle/pingus-0.7.6-r2::gentoo gcc +=games-puzzle/pipewalker-0.9.4-r1::gentoo gcc +=games-sports/vdrift-20120722::gentoo gcc +=games-sports/vdrift-2014.10.20::lanodanOverlay gcc +=media-libs/allegro-4.4.2-r2::gentoo gcc +=media-libs/id3lib-3.8.3-r8:0/0::gentoo gcc +=media-libs/openal-1.19.1:0/0::gentoo gcc +=media-libs/shaderc-2018.0::gentoo gcc +=media-libs/vulkan-loader-1.1.114::gentoo gcc +=media-libs/vulkan-loader-1.1.92.1::gentoo gcc # See related issues/PR https://bugs.llvm.org/show_bug.cgi?id=37136 Fails on 6.0.1 +=media-video/mkvtoolnix-29.0.0::gentoo gcc +=net-irc/unrealircd-4.2.0::lanodanOverlay gcc +=net-vpn/i2pd-2.20.0::gentoo gcc +=net-wireless/crda-3.18-r1:0/0::gentoo gcc +=sys-apps/apparmor-2.13.2::gentoo gcc +=sys-firmware/ipxe-1.0.0_p20190728:0/0::gentoo gcc +=sys-firmware/seabios-1.12.0::gentoo gcc +cross-*/* gcc +net-firewall/nftables gcc +net-libs/libnftnl gcc +sys-devel/gcc gcc +sys-libs/glibc gcc +~dev-libs/elfutils-0.176 gcc +~dev-libs/elfutils-0.177::gentoo gcc +=media-libs/ftgl-2.1.3_rc5::gentoo gcc +~sys-boot/syslinux-6.04_pre1 gcc +=dev-scheme/racket-7.3::gentoo gcc +=app-emulation/dxvk-1.6::tastytea gcc +=media-plugins/caps-plugins-0.9.24::gentoo gcc + +## Perl :( +dev-lang/perl gcc +dev-perl/* gcc + +## Haskell +dev-haskell/*::gentoo gcc +dev-lang/ghc::gentoo gcc +# grep -rl 'haskell-cabal' *-* | cut -d/ -f1-2 | sort -u | grep -v dev-haskell | sed 's;$; gcc;' +app-admin/haskell-updater gcc +app-emacs/ghc-mod gcc +app-forensics/quickfuzz gcc +app-portage/fquery gcc +app-portage/hackport gcc +app-text/pandoc gcc +dev-games/goatee gcc +dev-lang/epic gcc +dev-lang/helium gcc +dev-lang/whitespace gcc +dev-util/bnfc gcc +dev-util/bustle gcc +dev-util/shellcheck gcc +dev-util/shelltestrunner gcc +dev-vcs/darcs gcc +dev-vcs/git-annex gcc +games-board/goatee-gtk gcc +games-roguelike/mazesofmonad gcc +net-mail/list-remote-forwards gcc +net-mail/mailbox-count gcc +net-misc/haeredes gcc +net-misc/hath gcc +sci-mathematics/agda gcc +sci-mathematics/agda-lib-ffi gcc +sci-mathematics/agda-stdlib gcc +www-apps/gitit gcc +x11-misc/xmobar gcc +x11-wm/xmonad gcc +x11-wm/xmonad-contrib gcc +=app-misc/g810-led-0.3.6::gentoo gcc +=media-gfx/potrace-1.15::gentoo gcc +=dev-libs/botan-2.14.0::gentoo gcc diff --git a/package.env/gcc-ar b/package.env/gcc-ar @@ -0,0 +1,4 @@ +=sys-libs/timezone-data-2017c::gentoo gcc-ar +app-text/pandoc gcc-ar +=net-libs/libnet-1.0.2a-r5::gentoo gcc-ar +dev-haskell/* gcc-ar diff --git a/package.env/gcc-as b/package.env/gcc-as @@ -0,0 +1,2 @@ +~app-emulation/qemu-3.1.0 gcc-as +~app-emulation/qemu-4.0.0 gcc-as diff --git a/package.env/gcc-clags b/package.env/gcc-clags @@ -0,0 +1 @@ +sys-devel/gcc gcc-clags diff --git a/package.env/gcc-haskell b/package.env/gcc-haskell @@ -0,0 +1,7 @@ +dev-haskell/* gcc +x11-misc/xmobar gcc +x11-drivers/nvidia-drivers gcc +x11-wm/xmonad* gcc +app-text/pandoc gcc +dev-util/shellcheck gcc +gui-wm/waymonad gcc diff --git a/package.env/gcc-stdc11-bugs b/package.env/gcc-stdc11-bugs @@ -0,0 +1 @@ +=app-text/stardict-3.0.6-r3 gcc diff --git a/package.env/gcc-tmp b/package.env/gcc-tmp @@ -0,0 +1,2 @@ +sys-devel/clang:6 gcc +sys-devel/llvm:6 gcc diff --git a/package.env/gnu-ld b/package.env/gnu-ld @@ -0,0 +1 @@ +=sys-firmware/seabios-1.12.0::gentoo gnu-ld diff --git a/package.env/latomic b/package.env/latomic @@ -0,0 +1,2 @@ +=media-libs/mesa-17.2.8::gentoo latomic +=media-libs/mesa-17.3.9::gentoo latomic diff --git a/package.env/libtool b/package.env/libtool @@ -0,0 +1,2 @@ +=sys-devel/gcc-7.2.0::gentoo libtool +=sys-devel/gcc-6.4.0::gentoo libtool diff --git a/package.env/log_disable_0 b/package.env/log_disable_0 @@ -0,0 +1 @@ +net-libs/webkit-gtk log_disable_0 diff --git a/package.env/no-execstack b/package.env/no-execstack @@ -0,0 +1 @@ +=dev-libs/nspr-4.16::gentoo no-execstack diff --git a/package.env/noclean b/package.env/noclean @@ -0,0 +1 @@ +net-libs/webkit-gtk noclean+ \ No newline at end of file diff --git a/package.env/notmpfs.conf b/package.env/notmpfs.conf @@ -0,0 +1,14 @@ +app-office/libreoffice notmpfs.conf +mail-client/thunderbird notmpfs.conf +sys-devel/gcc notmpfs.conf +www-client/chromium notmpfs.conf +www-client/iridium-browser notmpfs.conf +www-client/firefox notmpfs.conf +dev-lang/ghc notmpfs.conf +dev-lang/mono notmpfs.conf +sys-kernel/gentoo-sources notmpfs.conf +sys-libs/compiler-rt-sanitizers notmpfs.conf +sys-devel/llvm notmpfs.conf +dev-qt/qtwebengine notmpfs.conf +sys-netbsd/netbsd-src notmpfs.conf +=net-libs/webkit-gtk-2.24.1::lanodanOverlay notmpfs.conf diff --git a/patches/app-admin/pass-otp-1.1.0/pass-otp-69-otp-insert_require_only_one_issuer_or_account.patch b/patches/app-admin/pass-otp-1.1.0/pass-otp-69-otp-insert_require_only_one_issuer_or_account.patch @@ -0,0 +1,51 @@ +From 1ea820305d131a69eeac0e08ebce4b971c10e8f1 Mon Sep 17 00:00:00 2001 +From: Benjamin Denhartog <ben@denhartog.io> +Date: Thu, 15 Mar 2018 14:03:50 -0700 +Subject: [PATCH] otp-insert: require only one of `--issuer` or `--account` + +closes #68 +--- + otp.bash | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/otp.bash b/otp.bash +index 33aca78..25ac459 100755 +--- a/otp.bash ++++ b/otp.bash +@@ -105,9 +105,10 @@ otp_read_uri() { + } + + otp_read_secret() { +- local uri prompt="$1" echo="$2" issuer accountname +- issuer="$(urlencode "$3")" +- accountname="$(urlencode "$4")" ++ local uri prompt="$1" echo="$2" issuer accountname separator ++ [ ! "$3" = false ] && issuer="$(urlencode "$3")" ++ [ ! "$4" = false ] && accountname="$(urlencode "$4")" ++ [ -n "$issuer" ] && [ -n "$accountname" ] && separator=":" + + if [[ -t 0 ]]; then + if [[ $echo -eq 0 ]]; then +@@ -123,7 +124,8 @@ otp_read_secret() { + read -r secret + fi + +- uri="otpauth://totp/$issuer:$accountname?secret=$secret&issuer=$issuer" ++ uri="otpauth://totp/${issuer}${separator}${accountname}?secret=${secret}" ++ [ -n "$issuer" ] && uri="${uri}&issuer=${issuer}" + otp_parse_uri "$uri" + } + +@@ -216,7 +218,11 @@ cmd_otp_insert() { + fi + + if [[ $from_secret -eq 1 ]]; then +- ([[ -z "$issuer" ]] || [[ -z "$account" ]]) && die "Missing issuer or account" ++ [ -z "$issuer" ] && issuer=false ++ [ -z "$account" ] && account=false ++ ++ [ "$issuer" = false ] && [ "$account" = false ] && die "Missing one of either '--issuer' or '--account'" ++ + otp_read_secret "$prompt" $echo "$issuer" "$account" + else + otp_read_uri "$prompt" $echo diff --git a/patches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0001.patch b/patches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0001.patch @@ -0,0 +1,62 @@ +From 5cf1cb3ba07eba8d32b4bb961ba80401ea8248e7 Mon Sep 17 00:00:00 2001 +From: Daniel Scharrer <daniel@constexpr.org> +Date: Sat, 8 Sep 2018 03:24:54 +0200 +Subject: [PATCH] Add preliminary Inno Setup 5.6.2 support + +--- + CHANGELOG | 1 + + src/setup/header.cpp | 13 +++++++++++-- + src/setup/header.hpp | 2 ++ + 3 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/src/setup/header.cpp b/src/setup/header.cpp +index 1484181..844b2e9 100644 +--- a/src/setup/header.cpp ++++ b/src/setup/header.cpp +@@ -236,6 +236,13 @@ void header::load(std::istream & is, const version & version) { + } else { + setup_mutex.clear(); + } ++ if(version >= INNO_VERSION(5, 6, 1)) { ++ is >> util::encoded_string(changes_environment, version.codepage()); ++ is >> util::encoded_string(changes_associations, version.codepage()); ++ } else { ++ changes_environment.clear(); ++ changes_associations.clear(); ++ } + if(version >= INNO_VERSION(5, 2, 5)) { + is >> util::ansi_string(license_text); + is >> util::ansi_string(info_before); +@@ -498,7 +505,9 @@ void header::load(std::istream & is, const version & version) { + if(version < INNO_VERSION(1, 3, 21)) { + flagreader.add(OverwriteUninstRegEntries); + } +- flagreader.add(ChangesAssociations); ++ if(version < INNO_VERSION(5, 6, 1)) { ++ flagreader.add(ChangesAssociations); ++ } + } + if(version >= INNO_VERSION(1, 3, 21)) { + if(version < INNO_VERSION(5, 3, 8)) { +@@ -562,7 +571,7 @@ void header::load(std::istream & is, const version & version) { + if(version >= INNO_VERSION(4, 2, 2)) { + flagreader.add(EncryptionUsed); + } +- if(version >= INNO_VERSION(5, 0, 4)) { ++ if(version >= INNO_VERSION(5, 0, 4) && version < INNO_VERSION(5, 6, 1)) { + flagreader.add(ChangesEnvironment); + } + if(version >= INNO_VERSION(5, 1, 7) && !version.unicode) { +diff --git a/src/setup/header.hpp b/src/setup/header.hpp +index a21dba0..8975e2f 100644 +--- a/src/setup/header.hpp ++++ b/src/setup/header.hpp +@@ -154,6 +154,8 @@ struct header { + std::string uninstallable; + std::string close_applications_filter; + std::string setup_mutex; ++ std::string changes_environment; ++ std::string changes_associations; + std::string license_text; + std::string info_before; + std::string info_after; diff --git a/patches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0002.patch b/patches/app-arch/innoextract-1.7/innoextract-1.7_inno_5.6.2_0002.patch @@ -0,0 +1,22 @@ +From 38ae68f393b2f3ed1862ec7f24b1d99bbbaacb19 Mon Sep 17 00:00:00 2001 +From: Daniel Scharrer <daniel@constexpr.org> +Date: Fri, 1 Mar 2019 04:20:25 +0100 +Subject: [PATCH] Fix support for Inno Setup 5.6.2 dev snapshot used by GOG + +Fixes: issue #74 +--- + src/setup/header.cpp | 2 +- + src/setup/version.cpp | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/setup/version.cpp b/src/setup/version.cpp +index 69ff234..08d720f 100644 +--- a/src/setup/version.cpp ++++ b/src/setup/version.cpp +@@ -154,6 +154,8 @@ const known_version versions[] = { + { "Inno Setup Setup Data (5.5.7) (U)", INNO_VERSION_EXT(5, 5, 7, 0), true }, + { "Inno Setup Setup Data (5.6.0)", INNO_VERSION_EXT(5, 6, 0, 0), false }, + { "Inno Setup Setup Data (5.6.0) (u)", INNO_VERSION_EXT(5, 6, 0, 0), true }, ++ { "Inno Setup Setup Data (5.6.2)", INNO_VERSION_EXT(5, 6, 2, 0), false }, // Unreleased, used by GOG ++ { "Inno Setup Setup Data (5.6.2) (u)", INNO_VERSION_EXT(5, 6, 2, 0), true }, // Unreleased, used by GOG + }; diff --git a/patches/app-editors/vis-0.4/619.patch b/patches/app-editors/vis-0.4/619.patch @@ -0,0 +1,65 @@ +From b24be0909923f9f237accc98986128032d98b9db Mon Sep 17 00:00:00 2001 +From: Chris Rawnsley <chris@puny.agency> +Date: Sun, 1 Oct 2017 20:32:12 +0100 +Subject: [PATCH] themes: add zenburn and make it the default 256 theme + +--- + lua/themes/default-256.lua | 2 +- + lua/themes/zenburn.lua | 39 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 1 deletion(-) + create mode 100644 lua/themes/zenburn.lua + +diff --git a/lua/themes/default-256.lua b/lua/themes/default-256.lua +index 8479b1b5..e12776c0 120000 +--- a/lua/themes/default-256.lua ++++ b/lua/themes/default-256.lua +@@ -1 +1 @@ +-solarized.lua +\ No newline at end of file ++zenburn.lua +\ No newline at end of file +diff --git a/lua/themes/zenburn.lua b/lua/themes/zenburn.lua +new file mode 100644 +index 00000000..f60e900f +--- /dev/null ++++ b/lua/themes/zenburn.lua +@@ -0,0 +1,39 @@ ++-- A poor imitation of the original Vim colourscheme which can be ++-- found at https://github.com/jnurmine/Zenburn ++ ++local lexers = vis.lexers ++ ++lexers.STYLE_DEFAULT = 'fore:#d7d7d7,back:#3a3a3a' ++lexers.STYLE_NOTHING = '' ++lexers.STYLE_CLASS = '' ++lexers.STYLE_COMMENT = 'fore:#87af87' ++lexers.STYLE_CONSTANT = 'fore:#d7afaf,bold' ++lexers.STYLE_DEFINITION = 'fore:#ffd7af,bold' ++lexers.STYLE_ERROR = 'fore:#87d7af,back:#303030,bold' ++lexers.STYLE_FUNCTION = 'fore:#d7d7af' ++lexers.STYLE_KEYWORD = 'fore:#afaf87,bold' ++lexers.STYLE_LABEL = 'fore:#d7d7af' ++lexers.STYLE_NUMBER = 'fore:#87d7d7' ++lexers.STYLE_OPERATOR = 'fore:#ffffd7' ++lexers.STYLE_REGEX = '' ++lexers.STYLE_STRING = 'fore:#d78787' ++lexers.STYLE_PREPROCESSOR = 'fore:#ffd7af,bold' ++lexers.STYLE_TAG = 'fore:#d7afaf,bold' ++lexers.STYLE_TYPE = 'fore:#d7d7af,bold' ++lexers.STYLE_VARIABLE = '' ++lexers.STYLE_WHITESPACE = '' ++lexers.STYLE_EMBEDDED = '' ++lexers.STYLE_IDENTIFIER = '' ++ ++lexers.STYLE_LINENUMBER = 'fore:#585858' ++lexers.STYLE_LINENUMBER_CURSOR = 'fore:#666666' ++lexers.STYLE_CURSOR = 'back:#585858' ++lexers.STYLE_CURSOR_PRIMARY = 'fore:#1c1c1c,back:#87afaf,bold' ++lexers.STYLE_CURSOR_LINE = 'back:#444444' ++lexers.STYLE_COLOR_COLUMN = 'back:#444444' ++lexers.STYLE_SELECTION = 'back:#5f875f' ++lexers.STYLE_STATUS = 'back:#262626,fore:#87af87' ++lexers.STYLE_STATUS_FOCUSED = 'back:#303030,fore:#afaf87,bold' ++lexers.STYLE_SEPARATOR = '' ++lexers.STYLE_INFO = '' ++lexers.STYLE_EOF = 'fore:#585858' diff --git a/patches/app-editors/vis-0.4/vis-0.4-symbols.patch b/patches/app-editors/vis-0.4/vis-0.4-symbols.patch @@ -0,0 +1,17 @@ +diff --git a/view.c b/view.c +index fafabc5..c82384f 100644 +--- a/view.c ++++ b/view.c +@@ -90,10 +90,10 @@ static const SyntaxSymbol symbols_none[] = { + }; + + static const SyntaxSymbol symbols_default[] = { +- [SYNTAX_SYMBOL_SPACE] = { "·" /* Middle Dot U+00B7 */ }, ++ [SYNTAX_SYMBOL_SPACE] = { "␣" /* Open Box U+2423 */ }, + [SYNTAX_SYMBOL_TAB] = { "›" /* Single Right-Pointing Angle Quotation Mark U+203A */ }, + [SYNTAX_SYMBOL_TAB_FILL] = { " " }, +- [SYNTAX_SYMBOL_EOL] = { "↵" /* Downwards Arrow with Corner Leftwards U+21B5 */ }, ++ [SYNTAX_SYMBOL_EOL] = { "⏎" /* RETURN SYMBOL U+23CE */ }, + [SYNTAX_SYMBOL_EOF] = { "~" }, + }; + diff --git a/patches/app-editors/vis-0.4/vis-0.4_ebuild_lexer.patch b/patches/app-editors/vis-0.4/vis-0.4_ebuild_lexer.patch @@ -0,0 +1,107 @@ +diff --git a/lua/lexers/ebuild.lua b/lua/lexers/ebuild.lua +new file mode 100644 +index 0000000..9ecb7d8 +--- /dev/null ++++ b/lua/lexers/ebuild.lua +@@ -0,0 +1,87 @@ ++-- Copyright 2006-2017 Mitchell mitchell.att.foicica.com. See LICENSE. ++-- Shell LPeg lexer. ++ ++local l = require('lexer') ++local token, word_match = l.token, l.word_match ++local P, R, S = lpeg.P, lpeg.R, lpeg.S ++ ++local M = {_NAME = 'ebuild'} ++ ++-- Whitespace. ++local ws = token(l.WHITESPACE, l.space^1) ++ ++-- Comments. ++local comment = token(l.COMMENT, '#' * l.nonnewline^0) ++ ++-- Strings. ++local sq_str = l.delimited_range("'", false, true) ++local dq_str = l.delimited_range('"') ++local ex_str = l.delimited_range('`') ++local heredoc = '<<' * P(function(input, index) ++ local s, e, _, delimiter = ++ input:find('%-?(["\']?)([%a_][%w_]*)%1[\n\r\f;]+', index) ++ if s == index and delimiter then ++ local _, e = input:find('[\n\r\f]+'..delimiter, e) ++ return e and e + 1 or #input + 1 ++ end ++end) ++local string = token(l.STRING, sq_str + dq_str + ex_str + heredoc) ++ ++-- Numbers. ++local number = token(l.NUMBER, l.float + l.integer) ++ ++-- Keywords. ++local keyword = token(l.KEYWORD, word_match({ ++ -- Bash keywords ++ 'if', 'then', 'elif', 'else', 'fi', 'case', 'in', 'esac', 'while', 'for', ++ 'do', 'done', 'continue', 'local', 'return', 'select', ++ -- Ebuild keywords ++ 'use', 'has_version', 'best_version', 'use_width', 'use_enable', ++ 'keepdir', 'econf', 'die', 'einstall', 'einfo', 'ewarn', 'eerror', 'diropts', ++ 'dobin', 'docinto', 'dodoc', 'doexe', 'doheader', 'doinfo', 'doins', ++ 'dolib', 'dolib.a', 'dolib.so', 'doman', 'dosbin', 'dosym', 'emake', 'exeinto', ++ 'exeopts', 'fowners', 'fperms', 'insinto', 'insopts', 'into', 'libopts', 'newbin', ++ 'newexe', 'newheader', 'newins', 'newman', 'newsbin', 'has', 'unpack', 'into', ++ 'doinitd', 'doconfd', 'doenvd', 'domo', 'dodir', 'ebegin', 'eend', ++ 'newconfd', 'newdoc', 'newenvd', 'newinitd', 'newlib.a', 'newlib.so', ++ 'hasv', 'usev', 'usex', 'elog', 'eapply', 'eapply_user', ++ 'einstalldocs', 'in_iuse', 'get_libdir', ++ 'addread', 'addwrite', 'adddeny', 'addpredict', ++ -- Operators. ++ '-a', '-b', '-c', '-d', '-e', '-f', '-g', '-h', '-k', '-p', '-r', '-s', '-t', ++ '-u', '-w', '-x', '-O', '-G', '-L', '-S', '-N', '-nt', '-ot', '-ef', '-o', ++ '-z', '-n', '-eq', '-ne', '-lt', '-le', '-gt', '-ge' ++}, '-')) ++ ++-- Identifiers. ++local identifier = token(l.IDENTIFIER, l.word) ++ ++-- Variables. ++local variable = token(l.VARIABLE, ++ '$' * (S('!#?*@$') + l.digit^1 + l.word + ++ l.delimited_range('{}', true, true, true))) ++ ++-- Operators. ++local operator = token(l.OPERATOR, S('=!<>+-/*^&|~.,:;?()[]{}')) ++ ++M._rules = { ++ {'whitespace', ws}, ++ {'keyword', keyword}, ++ {'identifier', identifier}, ++ {'string', string}, ++ {'comment', comment}, ++ {'number', number}, ++ {'variable', variable}, ++ {'operator', operator}, ++} ++ ++M._foldsymbols = { ++ _patterns = {'[a-z]+', '[{}]', '#'}, ++ [l.KEYWORD] = { ++ ['if'] = 1, fi = -1, case = 1, esac = -1, ['do'] = 1, done = -1 ++ }, ++ [l.OPERATOR] = {['{'] = 1, ['}'] = -1}, ++ [l.COMMENT] = {['#'] = l.fold_line_comments('#')} ++} ++ ++return M +diff --git a/lua/plugins/filetype.lua b/lua/plugins/filetype.lua +index 52eef25..539513f 100644 +--- a/lua/plugins/filetype.lua ++++ b/lua/plugins/filetype.lua +@@ -107,6 +107,9 @@ vis.ftdetect.filetypes = { + dsv = { + ext = { "group", "gshadow", "passwd", "shadow" }, + }, ++ ebuild = { ++ ext = { "%.ebuild$" }, ++ }, + eiffel = { + ext = { "%.e$", "%.eif$" }, + }, diff --git a/patches/app-editors/vis-0.5/vis-0.4-symbols.patch b/patches/app-editors/vis-0.5/vis-0.4-symbols.patch @@ -0,0 +1,13 @@ +diff --git a/view.c b/view.c +index fafabc5..c82384f 100644 +--- a/view.c ++++ b/view.c +@@ -90,6 +90,6 @@ static const SyntaxSymbol symbols_none[] = { + }; + + static const SyntaxSymbol symbols_default[] = { +- [SYNTAX_SYMBOL_SPACE] = { "·" /* Middle Dot U+00B7 */ }, ++ [SYNTAX_SYMBOL_SPACE] = { "␣" /* Open Box U+2423 */ }, + [SYNTAX_SYMBOL_TAB] = { "›" /* Single Right-Pointing Angle Quotation Mark U+203A */ }, + [SYNTAX_SYMBOL_TAB_FILL] = { " " }, + diff --git a/patches/app-editors/vis-0.5/vis-0.4_ebuild_lexer.patch b/patches/app-editors/vis-0.5/vis-0.4_ebuild_lexer.patch @@ -0,0 +1,107 @@ +diff --git a/lua/lexers/ebuild.lua b/lua/lexers/ebuild.lua +new file mode 100644 +index 0000000..9ecb7d8 +--- /dev/null ++++ b/lua/lexers/ebuild.lua +@@ -0,0 +1,87 @@ ++-- Copyright 2006-2017 Mitchell mitchell.att.foicica.com. See LICENSE. ++-- Shell LPeg lexer. ++ ++local l = require('lexer') ++local token, word_match = l.token, l.word_match ++local P, R, S = lpeg.P, lpeg.R, lpeg.S ++ ++local M = {_NAME = 'ebuild'} ++ ++-- Whitespace. ++local ws = token(l.WHITESPACE, l.space^1) ++ ++-- Comments. ++local comment = token(l.COMMENT, '#' * l.nonnewline^0) ++ ++-- Strings. ++local sq_str = l.delimited_range("'", false, true) ++local dq_str = l.delimited_range('"') ++local ex_str = l.delimited_range('`') ++local heredoc = '<<' * P(function(input, index) ++ local s, e, _, delimiter = ++ input:find('%-?(["\']?)([%a_][%w_]*)%1[\n\r\f;]+', index) ++ if s == index and delimiter then ++ local _, e = input:find('[\n\r\f]+'..delimiter, e) ++ return e and e + 1 or #input + 1 ++ end ++end) ++local string = token(l.STRING, sq_str + dq_str + ex_str + heredoc) ++ ++-- Numbers. ++local number = token(l.NUMBER, l.float + l.integer) ++ ++-- Keywords. ++local keyword = token(l.KEYWORD, word_match({ ++ -- Bash keywords ++ 'if', 'then', 'elif', 'else', 'fi', 'case', 'in', 'esac', 'while', 'for', ++ 'do', 'done', 'continue', 'local', 'return', 'select', ++ -- Ebuild keywords ++ 'use', 'has_version', 'best_version', 'use_width', 'use_enable', ++ 'keepdir', 'econf', 'die', 'einstall', 'einfo', 'ewarn', 'eerror', 'diropts', ++ 'dobin', 'docinto', 'dodoc', 'doexe', 'doheader', 'doinfo', 'doins', ++ 'dolib', 'dolib.a', 'dolib.so', 'doman', 'dosbin', 'dosym', 'emake', 'exeinto', ++ 'exeopts', 'fowners', 'fperms', 'insinto', 'insopts', 'into', 'libopts', 'newbin', ++ 'newexe', 'newheader', 'newins', 'newman', 'newsbin', 'has', 'unpack', 'into', ++ 'doinitd', 'doconfd', 'doenvd', 'domo', 'dodir', 'ebegin', 'eend', ++ 'newconfd', 'newdoc', 'newenvd', 'newinitd', 'newlib.a', 'newlib.so', ++ 'hasv', 'usev', 'usex', 'elog', 'eapply', 'eapply_user', ++ 'einstalldocs', 'in_iuse', 'get_libdir', ++ 'addread', 'addwrite', 'adddeny', 'addpredict', ++ -- Operators. ++ '-a', '-b', '-c', '-d', '-e', '-f', '-g', '-h', '-k', '-p', '-r', '-s', '-t', ++ '-u', '-w', '-x', '-O', '-G', '-L', '-S', '-N', '-nt', '-ot', '-ef', '-o', ++ '-z', '-n', '-eq', '-ne', '-lt', '-le', '-gt', '-ge' ++}, '-')) ++ ++-- Identifiers. ++local identifier = token(l.IDENTIFIER, l.word) ++ ++-- Variables. ++local variable = token(l.VARIABLE, ++ '$' * (S('!#?*@$') + l.digit^1 + l.word + ++ l.delimited_range('{}', true, true, true))) ++ ++-- Operators. ++local operator = token(l.OPERATOR, S('=!<>+-/*^&|~.,:;?()[]{}')) ++ ++M._rules = { ++ {'whitespace', ws}, ++ {'keyword', keyword}, ++ {'identifier', identifier}, ++ {'string', string}, ++ {'comment', comment}, ++ {'number', number}, ++ {'variable', variable}, ++ {'operator', operator}, ++} ++ ++M._foldsymbols = { ++ _patterns = {'[a-z]+', '[{}]', '#'}, ++ [l.KEYWORD] = { ++ ['if'] = 1, fi = -1, case = 1, esac = -1, ['do'] = 1, done = -1 ++ }, ++ [l.OPERATOR] = {['{'] = 1, ['}'] = -1}, ++ [l.COMMENT] = {['#'] = l.fold_line_comments('#')} ++} ++ ++return M +diff --git a/lua/plugins/filetype.lua b/lua/plugins/filetype.lua +index 52eef25..539513f 100644 +--- a/lua/plugins/filetype.lua ++++ b/lua/plugins/filetype.lua +@@ -107,6 +107,9 @@ vis.ftdetect.filetypes = { + dsv = { + ext = { "group", "gshadow", "passwd", "shadow" }, + }, ++ ebuild = { ++ ext = { "%.ebuild$" }, ++ }, + eiffel = { + ext = { "%.e$", "%.eif$" }, + }, diff --git a/patches/app-editors/vis-0.5/vis-0.5-match_quotes.patch b/patches/app-editors/vis-0.5/vis-0.5-match_quotes.patch @@ -0,0 +1,22 @@ +diff --git a/vis-motions.c.old b/vis-motions.c +index b72f280..781ee1f 100644 +--- a/vis-motions.c.old ++++ b/vis-motions.c +@@ -181,7 +181,7 @@ static size_t window_nop(Vis *vis, Win *win, size_t pos) { + } + + static size_t bracket_match(Text *txt, size_t pos) { +- size_t hit = text_bracket_match_symbol(txt, pos, "(){}[]<>"); ++ size_t hit = text_bracket_match_symbol(txt, pos, "(){}[]<>'\""); + if (hit != pos) + return hit; + char current; +@@ -196,6 +196,8 @@ static size_t bracket_match(Text *txt, size_t pos) { + case ']': + case '<': + case '>': ++ case '\'': ++ case '"': + return it.pos; + } + text_iterator_byte_next(&it, NULL); diff --git a/patches/app-editors/vis-test-0.5-respect_cc_cflags.patch b/patches/app-editors/vis-test-0.5-respect_cc_cflags.patch @@ -0,0 +1,22 @@ +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 10 May 2020 23:00:36 +0200 +Subject: [PATCH] core/Makefile: Respect $CC and $CFLAGS +X-Adapted-From: https://github.com/martanne/vis-test/pull/22 + +Related: https://bugs.gentoo.org/722014 +--- + test/core/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/core/Makefile b/test/core/Makefile +--- a/test/core/Makefile ++++ b/test/core/Makefile +@@ -12,7 +12,7 @@ test: $(ALL) + + config.h: + @echo Generating ccan configuration header +- @${CC} ccan-config.c -o ccan-config && ./ccan-config > config.h ++ @${CC} ccan-config.c -o ccan-config && ./ccan-config "${CC}" ${CFLAGS} > config.h + + text-test: config.h text-test.c ../../text.c ../../text-util.c ../../text-motions.c ../../text-objects.c ../../text-regex.c + @echo Compiling $@ binary diff --git a/patches/app-emulation/playonlinux-4.2.12/fix-Makefile-CC.patch b/patches/app-emulation/playonlinux-4.2.12/fix-Makefile-CC.patch @@ -0,0 +1,22 @@ +diff --git a/Makefile b/tmp/Makefile +index fadd473..57000e4 100644 +--- a/Makefile ++++ b/tmp/Makefile +@@ -21,7 +21,7 @@ + # + + CFLAGS ?= -O2 +-CC = gcc $(CFLAGS) ++CC ?= gcc + PYTHON = python2 -m py_compile + GZIP = gzip + +@@ -44,7 +44,7 @@ clean: + $(RM) ./ChangeLog + + build: +- $(CC) ./src/check_direct_rendering.c -o ./bin/playonlinux-check_dd -lGL -lX11 ++ $(CC) $(CFLAGS) ./src/check_direct_rendering.c -o ./bin/playonlinux-check_dd -lGL -lX11 + $(PYTHON) ./python/*.py + $(PYTHON) ./python/lib/*.py + echo -e '#!/bin/bash\nGDK_BACKEND=x11 ${sharedir}/playonlinux/playonlinux "$$@"\nexit 0' > ./bin/playonlinux diff --git a/patches/app-i18n/uim-1.8.8/uim-1.8.8-xim__main.cpp_fix_cxx11_syntax.patch b/patches/app-i18n/uim-1.8.8/uim-1.8.8-xim__main.cpp_fix_cxx11_syntax.patch @@ -0,0 +1,13 @@ +diff --git a/./xim/main.cpp.old b/./xim/main.cpp +index a0b0bec..c5818ca 100644 +--- a/./xim/main.cpp.old ++++ b/./xim/main.cpp +@@ -65,7 +65,7 @@ int g_option_mask; + int scr_width, scr_height; + int host_byte_order; + +-#define VERSION_NAME "uim-xim under the way! Version "PACKAGE_VERSION"\n" ++#define VERSION_NAME "uim-xim under the way! Version " PACKAGE_VERSION "\n" + const char *version_name=VERSION_NAME; + const char *usage= + "--help , --version :Show usage or version\n" diff --git a/patches/app-text/enchant/enchant-1.6.1-Add-tag=CC.patch b/patches/app-text/enchant/enchant-1.6.1-Add-tag=CC.patch @@ -0,0 +1,9 @@ +diff -u enchant-1.6.1.orig/configure enchant-1.6.1/configure +--- enchant-1.6.1.orig/configure 2017-12-17 16:56:55.527440216 -0600 ++++ enchant-1.6.1/configure 2017-12-17 16:56:28.533441941 -0600 +@@ -11038,7 +11038,7 @@ + LIBTOOL_DEPS=$ltmain + + # Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++LIBTOOL='$(SHELL) $(top_builddir)/libtool --tag=CC' diff --git a/patches/app-text/mandoc/tbl_term.c_1.70_1.73.patch b/patches/app-text/mandoc/tbl_term.c_1.70_1.73.patch @@ -0,0 +1,218 @@ +=================================================================== +RCS file: /cvs/mandoc/tbl_term.c,v +retrieving revision 1.68 +retrieving revision 1.73 +diff -u -p -r1.68 -r1.73 +--- mandoc/tbl_term.c 2019/02/09 21:02:47 1.68 ++++ mandoc/tbl_term.c 2020/01/11 16:26:08 1.73 +@@ -1,7 +1,7 @@ +-/* $Id: tbl_term.c,v 1.68 2019/02/09 21:02:47 schwarze Exp $ */ ++/* $Id: tbl_term.c,v 1.73 2020/01/11 16:26:08 schwarze Exp $ */ + /* + * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv> +- * Copyright (c) 2011-2019 Ingo Schwarze <schwarze@openbsd.org> ++ * Copyright (c) 2011-2020 Ingo Schwarze <schwarze@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -46,7 +46,8 @@ static void tbl_fill_border(struct termp *, int, size_ + static void tbl_fill_char(struct termp *, char, size_t); + static void tbl_fill_string(struct termp *, const char *, size_t); + static void tbl_hrule(struct termp *, const struct tbl_span *, +- const struct tbl_span *, int); ++ const struct tbl_span *, const struct tbl_span *, ++ int); + static void tbl_literal(struct termp *, const struct tbl_dat *, + const struct roffcol *); + static void tbl_number(struct termp *, const struct tbl_opts *, +@@ -163,7 +164,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + const struct tbl_cell *cp, *cpn, *cpp, *cps; + const struct tbl_dat *dp; + static size_t offset; +- size_t save_offset; ++ size_t save_offset; + size_t coloff, tsz; + int hspans, ic, more; + int dvert, fc, horiz, lhori, rhori, uvert; +@@ -222,9 +223,9 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + + if (tp->enc == TERMENC_ASCII && + sp->opts->opts & TBL_OPT_DBOX) +- tbl_hrule(tp, NULL, sp, TBL_OPT_DBOX); ++ tbl_hrule(tp, NULL, sp, sp, TBL_OPT_DBOX); + if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) +- tbl_hrule(tp, NULL, sp, TBL_OPT_BOX); ++ tbl_hrule(tp, NULL, sp, sp, TBL_OPT_BOX); + } + + /* Set up the columns. */ +@@ -266,11 +267,11 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + hspans--; + continue; + } +- if (dp == NULL) +- continue; +- hspans = dp->hspans; +- if (ic || sp->layout->first->pos != TBL_CELL_SPAN) ++ if (dp != NULL && ++ (ic || sp->layout->first->pos != TBL_CELL_SPAN)) { ++ hspans = dp->hspans; + dp = dp->next; ++ } + } + + /* Set up a column for a right vertical frame. */ +@@ -301,11 +302,11 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + tp->tcol++; + tp->col = 0; + tbl_data(tp, sp->opts, cp, dp, tp->tbl.cols + ic); +- if (dp == NULL) +- continue; +- hspans = dp->hspans; +- if (cp->pos != TBL_CELL_SPAN) ++ if (dp != NULL && ++ (ic || sp->layout->first->pos != TBL_CELL_SPAN)) { ++ hspans = dp->hspans; + dp = dp->next; ++ } + } + break; + } +@@ -342,7 +343,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + + more = 0; + if (horiz) +- tbl_hrule(tp, sp->prev, sp, 0); ++ tbl_hrule(tp, sp->prev, sp, sp->next, 0); + else { + cp = sp->layout->first; + cpn = sp->next == NULL ? NULL : +@@ -424,11 +425,10 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + cp = cp->next; + continue; + } +- if (dp != NULL) { ++ if (dp != NULL && (ic || ++ sp->layout->first->pos != TBL_CELL_SPAN)) { + hspans = dp->hspans; +- if (ic || sp->layout->first->pos +- != TBL_CELL_SPAN) +- dp = dp->next; ++ dp = dp->next; + } + + /* +@@ -557,12 +557,12 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + tp->tcol->rmargin = tp->maxrmargin; + if (sp->next == NULL) { + if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) { +- tbl_hrule(tp, sp, NULL, TBL_OPT_BOX); ++ tbl_hrule(tp, sp, sp, NULL, TBL_OPT_BOX); + tp->skipvsp = 1; + } + if (tp->enc == TERMENC_ASCII && + sp->opts->opts & TBL_OPT_DBOX) { +- tbl_hrule(tp, sp, NULL, TBL_OPT_DBOX); ++ tbl_hrule(tp, sp, sp, NULL, TBL_OPT_DBOX); + tp->skipvsp = 2; + } + assert(tp->tbl.cols); +@@ -571,7 +571,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + } else if (horiz == 0 && sp->opts->opts & TBL_OPT_ALLBOX && + (sp->next == NULL || sp->next->pos == TBL_SPAN_DATA || + sp->next->next != NULL)) +- tbl_hrule(tp, sp, sp->next, TBL_OPT_ALLBOX); ++ tbl_hrule(tp, sp, sp, sp->next, TBL_OPT_ALLBOX); + + tp->tcol->offset = save_offset; + tp->flags &= ~TERMP_NONOSPACE; +@@ -579,9 +579,10 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) + + static void + tbl_hrule(struct termp *tp, const struct tbl_span *spp, +- const struct tbl_span *spn, int flags) ++ const struct tbl_span *sp, const struct tbl_span *spn, int flags) + { + const struct tbl_cell *cpp; /* Layout cell above this line. */ ++ const struct tbl_cell *cp; /* Layout cell in this line. */ + const struct tbl_cell *cpn; /* Layout cell below this line. */ + const struct tbl_dat *dpn; /* Data cell below this line. */ + const struct roffcol *col; /* Contains width and spacing. */ +@@ -592,6 +593,7 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + int uw, dw; /* Vertical line widths. */ + + cpp = spp == NULL ? NULL : spp->layout->first; ++ cp = sp == NULL ? NULL : sp->layout->first; + cpn = spn == NULL ? NULL : spn->layout->first; + dpn = NULL; + if (spn != NULL) { +@@ -600,11 +602,11 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + else if (spn->next != NULL) + dpn = spn->next->first; + } +- opts = spn == NULL ? spp->opts->opts : spn->opts->opts; ++ opts = sp->opts->opts; + bw = opts & TBL_OPT_DBOX ? (tp->enc == TERMENC_UTF8 ? 2 : 1) : + opts & (TBL_OPT_BOX | TBL_OPT_ALLBOX) ? 1 : 0; + hw = flags == TBL_OPT_DBOX || flags == TBL_OPT_BOX ? bw : +- spn->pos == TBL_SPAN_DHORIZ ? 2 : 1; ++ sp->pos == TBL_SPAN_DHORIZ ? 2 : 1; + + /* Print the left end of the line. */ + +@@ -619,14 +621,19 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + (spp == NULL || cpn == NULL || + cpn->pos != TBL_CELL_DOWN ? BRIGHT * hw : 0), 1); + ++ col = tp->tbl.cols; + for (;;) { +- col = tp->tbl.cols + (cpn == NULL ? cpp->col : cpn->col); ++ if (cp == NULL) ++ col++; ++ else ++ col = tp->tbl.cols + cp->col; + + /* Print the horizontal line inside this column. */ + + lw = cpp == NULL || cpn == NULL || + (cpn->pos != TBL_CELL_DOWN && +- (dpn == NULL || strcmp(dpn->string, "\\^") != 0)) ++ (dpn == NULL || dpn->string == NULL || ++ strcmp(dpn->string, "\\^") != 0)) + ? hw : 0; + tbl_direct_border(tp, BHORIZ * lw, + col->width + col->spacing / 2); +@@ -645,7 +652,10 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + uw = 1; + } + cpp = cpp->next; +- } ++ } else if (spp != NULL && opts & TBL_OPT_ALLBOX) ++ uw = 1; ++ if (cp != NULL) ++ cp = cp->next; + if (cpn != NULL) { + if (flags != TBL_OPT_DBOX) { + dw = cpn->vert; +@@ -655,8 +665,9 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + cpn = cpn->next; + while (dpn != NULL && dpn->layout != cpn) + dpn = dpn->next; +- } +- if (cpp == NULL && cpn == NULL) ++ } else if (spn != NULL && opts & TBL_OPT_ALLBOX) ++ dw = 1; ++ if (col + 1 == tp->tbl.cols + sp->opts->cols) + break; + + /* Vertical lines do not cross spanned cells. */ +@@ -670,7 +681,8 @@ tbl_hrule(struct termp *tp, const struct tbl_span *spp + + rw = cpp == NULL || cpn == NULL || + (cpn->pos != TBL_CELL_DOWN && +- (dpn == NULL || strcmp(dpn->string, "\\^") != 0)) ++ (dpn == NULL || dpn->string == NULL || ++ strcmp(dpn->string, "\\^") != 0)) + ? hw : 0; + + /* The line crossing at the end of this column. */ diff --git a/patches/dev-dotnet/msbuild-roslyn-csc-15.3/99-CopyRefAssemblyFix.patch b/patches/dev-dotnet/msbuild-roslyn-csc-15.3/99-CopyRefAssemblyFix.patch @@ -0,0 +1,14 @@ +https://github.com/gentoo/dotnet/issues/426#issuecomment-499454972 + +diff -Naur roslyn-ec1cde8b77c7bca654888681037f55aa0e62dd19/src/Compilers/Core/MSBuildTask/CopyRefAssembly.cs roslyn-ec1cde8b77c7bca654888681037f55aa0e62dd19/src/Compilers/Core/MSBuildTask/CopyRefAssembly-fixed.cs +--- roslyn-ec1cde8b77c7bca654888681037f55aa0e62dd19/src/Compilers/Core/MSBuildTask/CopyRefAssembly.cs 2019-06-06 20:47:03.452887696 +1000 ++++ roslyn-ec1cde8b77c7bca654888681037f55aa0e62dd19/src/Compilers/Core/MSBuildTask/CopyRefAssembly-fixed.cs 2019-06-06 20:54:10.449546085 +1000 +@@ -40,7 +40,7 @@ + + if (File.Exists(DestinationPath)) + { +- Guid source; ++ Guid source=Guid.Empty; + try + { + source = ExtractMvid(SourcePath); diff --git a/patches/dev-embedded/avrdude/avrdude-6.3_no-datetime.patch b/patches/dev-embedded/avrdude/avrdude-6.3_no-datetime.patch @@ -0,0 +1,11 @@ +--- a/main.c 2017-11-09 13:40:44.251913289 +0000 ++++ b/main.c 2017-11-09 13:41:40.659228746 +0000 +@@ -682,7 +682,7 @@ + avrdude_message(MSG_NOTICE, "\n%s: Version %s, compiled on %s at %s\n" + "%sCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/\n" + "%sCopyright (c) 2007-2014 Joerg Wunsch\n\n", +- progname, version, __DATE__, __TIME__, progbuf, progbuf); ++ progname, version, "Jan 13 1984", "12:30:30", progbuf, progbuf); + avrdude_message(MSG_NOTICE, "%sSystem wide configuration file is \"%s\"\n", + progbuf, sys_config); + diff --git a/patches/dev-haskell/cpphs-1.20.8/xkbcommon_fix.patch b/patches/dev-haskell/cpphs-1.20.8/xkbcommon_fix.patch @@ -0,0 +1,14 @@ +https://github.com/malcolmwallace/cpphs/issues/16 + +diff -rN -u old-cpphs/Language/Preprocessor/Cpphs/Tokenise.hs new-cpphs/Language/Preprocessor/Cpphs/Tokenise.hs +--- old-cpphs/Language/Preprocessor/Cpphs/Tokenise.hs 2018-05-08 16:57:53.934565562 +0200 ++++ new-cpphs/Language/Preprocessor/Cpphs/Tokenise.hs 2018-05-08 16:57:53.934565562 +0200 +@@ -204,6 +204,8 @@ + lexcpp LineComment w l ls (_:xs) = lexcpp LineComment (' ':w) l ls xs + lexcpp (NestComment _) w l ls ('*':'/':xs) + = lexcpp Any [] (w*/*l) ls xs ++ lexcpp (NestComment _) w l ls xs@('\n':_) ++ = lexcpp Any [] (w*/*l) ls xs + lexcpp (NestComment n) w l ls (x:xs) = lexcpp (NestComment n) (white x:w) l + ls xs + lexcpp mode w l ((p,l'):ls) [] = cpp mode next w l p ls ('\n':l') diff --git a/patches/dev-lang/nss/nss-3.33-no-datetime.patch b/patches/dev-lang/nss/nss-3.33-no-datetime.patch @@ -0,0 +1,14 @@ +diff --git a/./lib/ckfw/pem/ckpemver.c.old b/./lib/ckfw/pem/ckpemver.c +index 76ab5df..8600945 100644 +--- a/lib/ckfw/pem/ckpemver.c.old ++++ b/lib/ckfw/pem/ckpemver.c +@@ -53,7 +53,7 @@ + */ + const char __nss_ckpem_rcsid[] = "$Header: NSS Access to Flat Files in PEM format" + NSS_CKPEM_LIBRARY_VERSION _DEBUG_STRING +- " " __DATE__ " " __TIME__ " $"; ++ " Jan 13 1984 12:30:30 $"; + const char __nss_ckcapi_sccsid[] = "@(#)NSS Access to Flag Files in PEM format " + NSS_CKPEM_LIBRARY_VERSION _DEBUG_STRING +- " " __DATE__ " " __TIME__; ++ " Jan 13 1984 12:30:30"; diff --git a/patches/dev-lang/python-2.7/python-2.7.12-no-compiler-version.patch b/patches/dev-lang/python-2.7/python-2.7.12-no-compiler-version.patch @@ -0,0 +1,25 @@ +diff --git a/./Python/getcompiler.c.old b/./Python/getcompiler.c +index 0f441de..df1e7d2 100644 +--- a/./Python/getcompiler.c.old ++++ b/./Python/getcompiler.c +@@ -5,18 +5,10 @@ + + #ifndef COMPILER + +-#ifdef __GNUC__ +-#define COMPILER "\n[GCC " __VERSION__ "]" +-#endif +- +-#endif /* !COMPILER */ +- +-#ifndef COMPILER +- + #ifdef __cplusplus +-#define COMPILER "[C++]" ++#define COMPILER "[C++ 1.2.3]" + #else +-#define COMPILER "[C]" ++#define COMPILER "[CC 1.2.3]" + #endif + + #endif /* !COMPILER */ diff --git a/patches/dev-lang/python-2.7/python-2.7.12-no-datetime.patch b/patches/dev-lang/python-2.7/python-2.7.12-no-datetime.patch @@ -0,0 +1,28 @@ +diff --git a/Modules/getbuildinfo.c.old b/Modules/getbuildinfo.c +index 7069b6e..11d0674 100644 +--- a/Modules/getbuildinfo.c.old ++++ b/Modules/getbuildinfo.c +@@ -4,21 +4,8 @@ + #include <stdio.h> + #endif + +-#ifndef DATE +-#ifdef __DATE__ +-#define DATE __DATE__ +-#else +-#define DATE "xx/xx/xx" ++#define DATE "Jan 13 1984" +-#endif +-#endif +- +-#ifndef TIME +-#ifdef __TIME__ +-#define TIME __TIME__ +-#else +-#define TIME "xx:xx:xx" ++#define TIME "12:30:30" +-#endif +-#endif + + /* on unix, SVNVERSION is passed on the command line. + * on Windows, the string is interpolated using diff --git a/patches/dev-lang/python-3.4/python-2.7.12-no-compiler-version.patch b/patches/dev-lang/python-3.4/python-2.7.12-no-compiler-version.patch @@ -0,0 +1,25 @@ +diff --git a/./Python/getcompiler.c.old b/./Python/getcompiler.c +index 0f441de..df1e7d2 100644 +--- a/./Python/getcompiler.c.old ++++ b/./Python/getcompiler.c +@@ -5,18 +5,10 @@ + + #ifndef COMPILER + +-#ifdef __GNUC__ +-#define COMPILER "\n[GCC " __VERSION__ "]" +-#endif +- +-#endif /* !COMPILER */ +- +-#ifndef COMPILER +- + #ifdef __cplusplus +-#define COMPILER "[C++]" ++#define COMPILER "[C++ 1.2.3]" + #else +-#define COMPILER "[C]" ++#define COMPILER "[CC 1.2.3]" + #endif + + #endif /* !COMPILER */ diff --git a/patches/dev-lang/python-3.4/python-2.7.12-no-datetime.patch b/patches/dev-lang/python-3.4/python-2.7.12-no-datetime.patch @@ -0,0 +1,28 @@ +diff --git a/Modules/getbuildinfo.c.old b/Modules/getbuildinfo.c +index 7069b6e..11d0674 100644 +--- a/Modules/getbuildinfo.c.old ++++ b/Modules/getbuildinfo.c +@@ -4,21 +4,8 @@ + #include <stdio.h> + #endif + +-#ifndef DATE +-#ifdef __DATE__ +-#define DATE __DATE__ +-#else +-#define DATE "xx/xx/xx" ++#define DATE "Jan 13 1984" +-#endif +-#endif +- +-#ifndef TIME +-#ifdef __TIME__ +-#define TIME __TIME__ +-#else +-#define TIME "xx:xx:xx" ++#define TIME "12:30:30" +-#endif +-#endif + + /* on unix, SVNVERSION is passed on the command line. + * on Windows, the string is interpolated using diff --git a/patches/dev-lang/python-3.5/python-2.7.12-no-compiler-version.patch b/patches/dev-lang/python-3.5/python-2.7.12-no-compiler-version.patch @@ -0,0 +1,25 @@ +diff --git a/./Python/getcompiler.c.old b/./Python/getcompiler.c +index 0f441de..df1e7d2 100644 +--- a/./Python/getcompiler.c.old ++++ b/./Python/getcompiler.c +@@ -5,18 +5,10 @@ + + #ifndef COMPILER + +-#ifdef __GNUC__ +-#define COMPILER "\n[GCC " __VERSION__ "]" +-#endif +- +-#endif /* !COMPILER */ +- +-#ifndef COMPILER +- + #ifdef __cplusplus +-#define COMPILER "[C++]" ++#define COMPILER "[C++ 1.2.3]" + #else +-#define COMPILER "[C]" ++#define COMPILER "[CC 1.2.3]" + #endif + + #endif /* !COMPILER */ diff --git a/patches/dev-lang/python-3.5/python-2.7.12-no-datetime.patch b/patches/dev-lang/python-3.5/python-2.7.12-no-datetime.patch @@ -0,0 +1,28 @@ +diff --git a/Modules/getbuildinfo.c.old b/Modules/getbuildinfo.c +index 7069b6e..11d0674 100644 +--- a/Modules/getbuildinfo.c.old ++++ b/Modules/getbuildinfo.c +@@ -4,21 +4,8 @@ + #include <stdio.h> + #endif + +-#ifndef DATE +-#ifdef __DATE__ +-#define DATE __DATE__ +-#else +-#define DATE "xx/xx/xx" ++#define DATE "Jan 13 1984" +-#endif +-#endif +- +-#ifndef TIME +-#ifdef __TIME__ +-#define TIME __TIME__ +-#else +-#define TIME "xx:xx:xx" ++#define TIME "12:30:30" +-#endif +-#endif + + /* on unix, SVNVERSION is passed on the command line. + * on Windows, the string is interpolated using diff --git a/patches/dev-lang/python-3.6/python-2.7.12-no-compiler-version.patch b/patches/dev-lang/python-3.6/python-2.7.12-no-compiler-version.patch @@ -0,0 +1,25 @@ +diff --git a/./Python/getcompiler.c.old b/./Python/getcompiler.c +index 0f441de..df1e7d2 100644 +--- a/./Python/getcompiler.c.old ++++ b/./Python/getcompiler.c +@@ -5,18 +5,10 @@ + + #ifndef COMPILER + +-#ifdef __GNUC__ +-#define COMPILER "\n[GCC " __VERSION__ "]" +-#endif +- +-#endif /* !COMPILER */ +- +-#ifndef COMPILER +- + #ifdef __cplusplus +-#define COMPILER "[C++]" ++#define COMPILER "[C++ 1.2.3]" + #else +-#define COMPILER "[C]" ++#define COMPILER "[CC 1.2.3]" + #endif + + #endif /* !COMPILER */ diff --git a/patches/dev-lang/python-3.6/python-2.7.12-no-datetime.patch b/patches/dev-lang/python-3.6/python-2.7.12-no-datetime.patch @@ -0,0 +1,28 @@ +diff --git a/Modules/getbuildinfo.c.old b/Modules/getbuildinfo.c +index 7069b6e..11d0674 100644 +--- a/Modules/getbuildinfo.c.old ++++ b/Modules/getbuildinfo.c +@@ -4,21 +4,8 @@ + #include <stdio.h> + #endif + +-#ifndef DATE +-#ifdef __DATE__ +-#define DATE __DATE__ +-#else +-#define DATE "xx/xx/xx" ++#define DATE "Jan 13 1984" +-#endif +-#endif +- +-#ifndef TIME +-#ifdef __TIME__ +-#define TIME __TIME__ +-#else +-#define TIME "xx:xx:xx" ++#define TIME "12:30:30" +-#endif +-#endif + + /* on unix, SVNVERSION is passed on the command line. + * on Windows, the string is interpolated using diff --git a/patches/dev-libs/elfutils-0.170/elfutils-0.170-r1_configure_clang_gnu99.patch b/patches/dev-libs/elfutils-0.170/elfutils-0.170-r1_configure_clang_gnu99.patch @@ -0,0 +1,16 @@ +diff --git a/configure.old b/configure +index 14340f5..980495a 100755 +--- a/configure.old ++++ b/configure +@@ -4960,11 +4960,6 @@ double bar (double a, double b) + double square (double z) { return z * z; } + return square (a) + square (b); + } +- +-void baz (int n) +-{ +- struct S { int x[n]; }; +-} + _ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c99=yes diff --git a/patches/dev-libs/libgit2-0.26.8/openssl_stream.h_libressl_2.7.patch b/patches/dev-libs/libgit2-0.26.8/openssl_stream.h_libressl_2.7.patch @@ -0,0 +1,13 @@ +diff --git a/src/openssl_stream.h b/src/openssl_stream.h +index f5e59da..6391176 100644 +--- a/src/openssl_stream.h ++++ b/src/openssl_stream.h +@@ -27,7 +27,7 @@ extern int git_openssl_stream_new(git_stream **out, const char *host, const char + + + +-# if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++# if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER < 0x2070500fL + + GIT_INLINE(BIO_METHOD*) BIO_meth_new(int type, const char *name) + { diff --git a/patches/dev-util/bam/bam-0.4.0-no-datetime.patch b/patches/dev-util/bam/bam-0.4.0-no-datetime.patch @@ -0,0 +1,26 @@ +diff --git a/src/main.c.old b/src/main.c +index 0b1786c..c8462d1 100644 +--- a/src/main.c.old ++++ b/src/main.c +@@ -759,7 +759,7 @@ static void print_help() + printf(" %-20s %s\n", options[j].sw, options[j].desc); + } + printf("\n"); +- printf("bam version " BAM_VERSION_STRING_COMPLETE ". built "__DATE__" "__TIME__" using " LUA_VERSION "\n"); ++ printf("bam version " BAM_VERSION_STRING_COMPLETE ". using " LUA_VERSION "\n"); + printf("by Magnus Auvinen (magnus.auvinen@gmail.com)\n"); + printf("\n"); + +diff --git a/src/cache.c.old b/src/cache.c +index c83df36..d9e1463 100644 +--- a/src/cache.c.old ++++ b/src/cache.c +@@ -25,7 +25,7 @@ static char bamheader[8] = { + static void cache_setup_header() + { + /* save a hashed version of the date and time in the header */ +- unsigned hash = string_hash(__DATE__ __TIME__); ++ unsigned hash = string_hash("Jan 13 1984 12:30:30"); + bamheader[5] = hash&0xff; + bamheader[6] = (hash>>8)&0xff; + bamheader[7] = (hash>>16)&0xff; diff --git a/patches/dev-util/itstool-2.0.5/index.html?h=contrib%2Ffix_crash_pipe b/patches/dev-util/itstool-2.0.5/index.html?h=contrib%2Ffix_crash_pipe @@ -0,0 +1,48 @@ +From 7e737993e1320b0a7ea82618cb8031e93d8b2e80 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:27:25 +0100 +Subject: Fix an encoding crash when redirected to a pipe + +ITS Tool crashes when output is redirected to a pipe. This comes from +Python not knowing the preferred encoding for stdout, and using ASCII by +default, therefore failing to encode anything outside of it. + +This patch makes ITS Tool write to an UTF-8 encoding wrapper around +stdout. +--- + itstool.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index 5b0051f..592dc77 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -48,6 +48,7 @@ if PY3: + """Return a string that can be safely print()ed""" + # Since print works on both bytes and unicode, just return the argument + return s ++ uout = sys.stdout + else: + string_types = basestring, + ustr = ustr_type = unicode +@@ -60,6 +61,8 @@ else: + # print may not work on unicode if the output encoding cannot be + # detected, so just encode with UTF-8 + return unicode.encode(s, 'utf-8') ++ import codecs ++ uout = codecs.getwriter('utf-8')(sys.stdout) + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1565,7 +1568,7 @@ if __name__ == '__main__': + if opts.test is None: + doc.generate_messages() + if opts.output is None or opts.output == '-': +- out = sys.stdout ++ out = uout + else: + try: + out = io.open(opts.output, 'wt', encoding='utf-8') +-- +cgit v1.1 + diff --git a/patches/dev-util/itstool-2.0.5/itstool-2.0.5-fix_crash_pipe.patch b/patches/dev-util/itstool-2.0.5/itstool-2.0.5-fix_crash_pipe.patch @@ -0,0 +1,162 @@ +https://git.ortolo.eu/pkg-itstool.git/patch/?h=contrib/fix_crash_pipe&id=7e737993e1320b0a7ea82618cb8031e93d8b2e80&id2=39000db89b4d376af34fd4499743ac0fa5d7cd90 + +From 95fd7ad4a7575639f17439832fcd406d94402322 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Fri, 7 Dec 2018 14:22:09 +0100 +Subject: Fix a unicode decode issue + +Since the support of Python 3, ITS Tool crashes with some documentation, +namely Gnumeric's. + +This comes from the reporting of a merge error (which happens to come +from invalid XML markup in a translation, which is an issue but should +not lead to a crash). The error is reported by writing a +percent-formatted unicode message, with one percent-parameter being the +original msgstr, which is a unicode string too. The msgstr was +needlessly encoded to bytes with utf-8, and then automatically decoded +back to unicode by Python, using the default ascii code, which fails and +raises an unexpected exception if it contains anything out of ASCII. + +This fixes the issue by removing the needless encode('utf-8'). +--- + itstool.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/itstool.in b/itstool.in +index b3c0033..ac7d7d2 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -1062,7 +1062,7 @@ class Document (object): + else: + sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr)) + self._xml_err = '' + return node + def scan_node(node): +@@ -1089,7 +1089,7 @@ class Document (object): + else: + sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr)) + self._xml_err = '' + ctxt.doc().freeDoc() + return node +-- +cgit v1.1 + + +From 7eb912264997067993ed0c2b4e74790bab57abe8 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:22:27 +0100 +Subject: Fix a further similar crash + +--- + itstool.in | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/itstool.in b/itstool.in +index ac7d7d2..5b0051f 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -44,9 +44,22 @@ if PY3: + else: + return str(s) + ustr_type = str ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ # Since print works on both bytes and unicode, just return the argument ++ return s + else: + string_types = basestring, + ustr = ustr_type = unicode ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ if isinstance(s, str): ++ # Since print works on str, just return the argument ++ return s ++ else: ++ # print may not work on unicode if the output encoding cannot be ++ # detected, so just encode with UTF-8 ++ return unicode.encode(s, 'utf-8') + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1060,9 +1073,9 @@ class Document (object): + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr)) ++ msgstr))) + self._xml_err = '' + return node + def scan_node(node): +@@ -1087,9 +1100,9 @@ class Document (object): + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr)) ++ msgstr))) + self._xml_err = '' + ctxt.doc().freeDoc() + return node +-- +cgit v1.1 + + +From 7e737993e1320b0a7ea82618cb8031e93d8b2e80 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:27:25 +0100 +Subject: Fix an encoding crash when redirected to a pipe + +ITS Tool crashes when output is redirected to a pipe. This comes from +Python not knowing the preferred encoding for stdout, and using ASCII by +default, therefore failing to encode anything outside of it. + +This patch makes ITS Tool write to an UTF-8 encoding wrapper around +stdout. +--- + itstool.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index 5b0051f..592dc77 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -48,6 +48,7 @@ if PY3: + """Return a string that can be safely print()ed""" + # Since print works on both bytes and unicode, just return the argument + return s ++ uout = sys.stdout + else: + string_types = basestring, + ustr = ustr_type = unicode +@@ -60,6 +61,8 @@ else: + # print may not work on unicode if the output encoding cannot be + # detected, so just encode with UTF-8 + return unicode.encode(s, 'utf-8') ++ import codecs ++ uout = codecs.getwriter('utf-8')(sys.stdout) + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1565,7 +1568,7 @@ if __name__ == '__main__': + if opts.test is None: + doc.generate_messages() + if opts.output is None or opts.output == '-': +- out = sys.stdout ++ out = uout + else: + try: + out = io.open(opts.output, 'wt', encoding='utf-8') +-- +cgit v1.1 + diff --git a/patches/dev-util/itstool-2.0.5/wget-log b/patches/dev-util/itstool-2.0.5/wget-log @@ -0,0 +1,11 @@ +--2019-12-24 13:18:56-- https://git.ortolo.eu/pkg-itstool.git/patch/?h=contrib/fix_crash_pipe +Resolving git.ortolo.eu (git.ortolo.eu)... 2001:910:139a:ffff::1, 80.67.179.154 +Connecting to git.ortolo.eu (git.ortolo.eu)|2001:910:139a:ffff::1|:443... connected. +HTTP request sent, awaiting response... 200 OK +Length: unspecified [text/plain] +Saving to: ‘index.html?h=contrib%2Ffix_crash_pipe’ + + index.html?h=c [<=> ] 0 --.-KB/s index.html?h=contrib%2Ffix_c [ <=> ] 1.62K --.-KB/s in 0s + +2019-12-24 13:18:57 (53.9 MB/s) - ‘index.html?h=contrib%2Ffix_crash_pipe’ saved [1656] + diff --git a/patches/dev-util/itstool-2.0.6/index.html?h=contrib%2Ffix_crash_pipe b/patches/dev-util/itstool-2.0.6/index.html?h=contrib%2Ffix_crash_pipe @@ -0,0 +1,48 @@ +From 7e737993e1320b0a7ea82618cb8031e93d8b2e80 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:27:25 +0100 +Subject: Fix an encoding crash when redirected to a pipe + +ITS Tool crashes when output is redirected to a pipe. This comes from +Python not knowing the preferred encoding for stdout, and using ASCII by +default, therefore failing to encode anything outside of it. + +This patch makes ITS Tool write to an UTF-8 encoding wrapper around +stdout. +--- + itstool.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index 5b0051f..592dc77 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -48,6 +48,7 @@ if PY3: + """Return a string that can be safely print()ed""" + # Since print works on both bytes and unicode, just return the argument + return s ++ uout = sys.stdout + else: + string_types = basestring, + ustr = ustr_type = unicode +@@ -60,6 +61,8 @@ else: + # print may not work on unicode if the output encoding cannot be + # detected, so just encode with UTF-8 + return unicode.encode(s, 'utf-8') ++ import codecs ++ uout = codecs.getwriter('utf-8')(sys.stdout) + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1565,7 +1568,7 @@ if __name__ == '__main__': + if opts.test is None: + doc.generate_messages() + if opts.output is None or opts.output == '-': +- out = sys.stdout ++ out = uout + else: + try: + out = io.open(opts.output, 'wt', encoding='utf-8') +-- +cgit v1.1 + diff --git a/patches/dev-util/itstool-2.0.6/itstool-2.0.5-fix_crash_pipe.patch b/patches/dev-util/itstool-2.0.6/itstool-2.0.5-fix_crash_pipe.patch @@ -0,0 +1,162 @@ +https://git.ortolo.eu/pkg-itstool.git/patch/?h=contrib/fix_crash_pipe&id=7e737993e1320b0a7ea82618cb8031e93d8b2e80&id2=39000db89b4d376af34fd4499743ac0fa5d7cd90 + +From 95fd7ad4a7575639f17439832fcd406d94402322 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Fri, 7 Dec 2018 14:22:09 +0100 +Subject: Fix a unicode decode issue + +Since the support of Python 3, ITS Tool crashes with some documentation, +namely Gnumeric's. + +This comes from the reporting of a merge error (which happens to come +from invalid XML markup in a translation, which is an issue but should +not lead to a crash). The error is reported by writing a +percent-formatted unicode message, with one percent-parameter being the +original msgstr, which is a unicode string too. The msgstr was +needlessly encoded to bytes with utf-8, and then automatically decoded +back to unicode by Python, using the default ascii code, which fails and +raises an unexpected exception if it contains anything out of ASCII. + +This fixes the issue by removing the needless encode('utf-8'). +--- + itstool.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/itstool.in b/itstool.in +index b3c0033..ac7d7d2 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -1062,7 +1062,7 @@ class Document (object): + else: + sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr)) + self._xml_err = '' + return node + def scan_node(node): +@@ -1089,7 +1089,7 @@ class Document (object): + else: + sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr.encode('utf-8'))) ++ msgstr)) + self._xml_err = '' + ctxt.doc().freeDoc() + return node +-- +cgit v1.1 + + +From 7eb912264997067993ed0c2b4e74790bab57abe8 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:22:27 +0100 +Subject: Fix a further similar crash + +--- + itstool.in | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/itstool.in b/itstool.in +index ac7d7d2..5b0051f 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -44,9 +44,22 @@ if PY3: + else: + return str(s) + ustr_type = str ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ # Since print works on both bytes and unicode, just return the argument ++ return s + else: + string_types = basestring, + ustr = ustr_type = unicode ++ def pr_str(s): ++ """Return a string that can be safely print()ed""" ++ if isinstance(s, str): ++ # Since print works on str, just return the argument ++ return s ++ else: ++ # print may not work on unicode if the output encoding cannot be ++ # detected, so just encode with UTF-8 ++ return unicode.encode(s, 'utf-8') + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1060,9 +1073,9 @@ class Document (object): + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr)) ++ msgstr))) + self._xml_err = '' + return node + def scan_node(node): +@@ -1087,9 +1100,9 @@ class Document (object): + if strict: + raise + else: +- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( ++ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % ( + (lang + ' ') if lang is not None else '', +- msgstr)) ++ msgstr))) + self._xml_err = '' + ctxt.doc().freeDoc() + return node +-- +cgit v1.1 + + +From 7e737993e1320b0a7ea82618cb8031e93d8b2e80 Mon Sep 17 00:00:00 2001 +From: Tanguy Ortolo <tanguy+debian@ortolo.eu> +Date: Sun, 10 Mar 2019 15:27:25 +0100 +Subject: Fix an encoding crash when redirected to a pipe + +ITS Tool crashes when output is redirected to a pipe. This comes from +Python not knowing the preferred encoding for stdout, and using ASCII by +default, therefore failing to encode anything outside of it. + +This patch makes ITS Tool write to an UTF-8 encoding wrapper around +stdout. +--- + itstool.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index 5b0051f..592dc77 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -48,6 +48,7 @@ if PY3: + """Return a string that can be safely print()ed""" + # Since print works on both bytes and unicode, just return the argument + return s ++ uout = sys.stdout + else: + string_types = basestring, + ustr = ustr_type = unicode +@@ -60,6 +61,8 @@ else: + # print may not work on unicode if the output encoding cannot be + # detected, so just encode with UTF-8 + return unicode.encode(s, 'utf-8') ++ import codecs ++ uout = codecs.getwriter('utf-8')(sys.stdout) + + NS_ITS = 'http://www.w3.org/2005/11/its' + NS_ITST = 'http://itstool.org/extensions/' +@@ -1565,7 +1568,7 @@ if __name__ == '__main__': + if opts.test is None: + doc.generate_messages() + if opts.output is None or opts.output == '-': +- out = sys.stdout ++ out = uout + else: + try: + out = io.open(opts.output, 'wt', encoding='utf-8') +-- +cgit v1.1 + diff --git a/patches/dev-util/itstool-2.0.6/wget-log b/patches/dev-util/itstool-2.0.6/wget-log @@ -0,0 +1,11 @@ +--2019-12-24 13:18:56-- https://git.ortolo.eu/pkg-itstool.git/patch/?h=contrib/fix_crash_pipe +Resolving git.ortolo.eu (git.ortolo.eu)... 2001:910:139a:ffff::1, 80.67.179.154 +Connecting to git.ortolo.eu (git.ortolo.eu)|2001:910:139a:ffff::1|:443... connected. +HTTP request sent, awaiting response... 200 OK +Length: unspecified [text/plain] +Saving to: ‘index.html?h=contrib%2Ffix_crash_pipe’ + + index.html?h=c [<=> ] 0 --.-KB/s index.html?h=contrib%2Ffix_c [ <=> ] 1.62K --.-KB/s in 0s + +2019-12-24 13:18:57 (53.9 MB/s) - ‘index.html?h=contrib%2Ffix_crash_pipe’ saved [1656] + diff --git a/patches/dev-util/samurai/samurai-0.6-Add-fake-l-flag-for-compatibility.patch b/patches/dev-util/samurai/samurai-0.6-Add-fake-l-flag-for-compatibility.patch @@ -0,0 +1,26 @@ +From 71ed7717c707c9117088bebb7cc4e70a561bdfe5 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 8 Mar 2019 10:33:52 +0100 +Subject: [PATCH] samu.c: Add fake -l flag for compatibility + +--- + samu.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/samu.c b/samu.c +index 2eb6ce1..4f9ad8b 100644 +--- a/samu.c ++++ b/samu.c +@@ -133,6 +133,9 @@ main(int argc, char *argv[]) + case 'w': + warnflag(EARGF(usage())); + break; ++ case 'l': ++ // ignore for now ? ++ break; + default: + usage(); + } ARGEND +-- +2.19.2 + diff --git a/patches/dev-util/scons-2.5.1/scons-2.5.1_reuse_PATH_env.patch b/patches/dev-util/scons-2.5.1/scons-2.5.1_reuse_PATH_env.patch @@ -0,0 +1,13 @@ +diff --git a/engine/SCons/Platform/posix.py.old b/engine/SCons/Platform/posix.py +index c2d3e50..fa233d2 100644 +--- a/engine/SCons/Platform/posix.py.old ++++ b/engine/SCons/Platform/posix.py +@@ -89,7 +89,7 @@ def generate(env): + + if 'ENV' not in env: + env['ENV'] = {} +- env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin' ++ env['ENV']['PATH'] = os.environ['PATH'] + env['OBJPREFIX'] = '' + env['OBJSUFFIX'] = '.o' + env['SHOBJPREFIX'] = '$OBJPREFIX' diff --git a/patches/games-arcade/syobon/WASD controls DxLibs.h.patch b/patches/games-arcade/syobon/WASD controls DxLibs.h.patch @@ -0,0 +1,17 @@ +--- DxLib.h 2017-09-28 13:33:46.073097546 +0200 ++++ DxLib.h 2017-09-28 13:52:42.984297422 +0200 +@@ -67,10 +67,10 @@ + + //Key Aliases + #define KEY_INPUT_ESCAPE SDLK_ESCAPE +-#define KEY_INPUT_LEFT SDLK_LEFT +-#define KEY_INPUT_RIGHT SDLK_RIGHT +-#define KEY_INPUT_DOWN SDLK_DOWN +-#define KEY_INPUT_UP SDLK_UP ++#define KEY_INPUT_LEFT SDLK_a ++#define KEY_INPUT_RIGHT SDLK_d ++#define KEY_INPUT_DOWN SDLK_s ++#define KEY_INPUT_UP SDLK_w + #define KEY_INPUT_F1 SDLK_F1 + #define KEY_INPUT_O SDLK_o + #define KEY_INPUT_K SDLK_k diff --git a/patches/gnustep-base/libobjc2/libobjc2-1.8.1-fix_redefinition_of_i.patch b/patches/gnustep-base/libobjc2/libobjc2-1.8.1-fix_redefinition_of_i.patch @@ -0,0 +1,30 @@ +diff --git a/loader.c b/loader.c +index 70ab229..a69d864 100644 +--- a/loader.c ++++ b/loader.c +@@ -109,13 +109,14 @@ void __objc_exec_class(struct objc_module_abi_8 *module) + + unsigned short defs = 0; + // Load the classes from this module +- for (unsigned short i=0 ; i<symbols->class_count ; i++) ++ unsigned short i; ++ for (i=0 ; i<symbols->class_count ; i++) + { + objc_load_class(symbols->definitions[defs++]); + } + unsigned int category_start = defs; + // Load the categories from this module +- for (unsigned short i=0 ; i<symbols->category_count; i++) ++ for (i=0 ; i<symbols->category_count; i++) + { + objc_try_load_category(symbols->definitions[defs++]); + } +@@ -131,7 +132,7 @@ void __objc_exec_class(struct objc_module_abi_8 *module) + objc_init_buffered_statics(); + // Fix up the class links for loaded classes. + objc_resolve_class_links(); +- for (unsigned short i=0 ; i<symbols->category_count; i++) ++ for (i=0 ; i<symbols->category_count; i++) + { + struct objc_category *cat = (struct objc_category*) + symbols->definitions[category_start++]; diff --git a/patches/mail-mta/opensmtpd/opensmtpd-6.0.2p1-uid_0_certificate.patch b/patches/mail-mta/opensmtpd/opensmtpd-6.0.2p1-uid_0_certificate.patch @@ -0,0 +1,38 @@ +diff --git a/smtpd/ssl.c.old b/smtpd/ssl.c +index 7dcd2ce..4e9d708 100644 +--- a/smtpd/ssl.c.old ++++ b/smtpd/ssl.c +@@ -113,11 +113,11 @@ ssl_load_file(const char *name, off_t *len, mode_t perm) + return (NULL); + if (fstat(fd, &st) != 0) + goto fail; +- if (st.st_uid != 0) { +- log_warnx("warn: %s: not owned by uid 0", name); +- errno = EACCES; +- goto fail; +- } ++ //if (st.st_uid != 0) { ++ // log_warnx("warn: %s: not owned by uid 0", name); ++ // errno = EACCES; ++ // goto fail; ++ //} + if (st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO) & ~perm) { + strmode(perm, mode); + log_warnx("warn: %s: insecure permissions: must be at most %s", +@@ -201,11 +201,11 @@ ssl_load_key(const char *name, off_t *len, char *pass, mode_t perm, const char * + + if (fstat(fileno(fp), &st) != 0) + goto fail; +- if (st.st_uid != 0) { +- log_warnx("warn: %s: not owned by uid 0", name); +- errno = EACCES; +- goto fail; +- } ++ //if (st.st_uid != 0) { ++ // log_warnx("warn: %s: not owned by uid 0", name); ++ // errno = EACCES; ++ // goto fail; ++ //} + if (st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO) & ~perm) { + strmode(perm, mode); + log_warnx("warn: %s: insecure permissions: must be at most %s", diff --git a/patches/media-gfx/inkscape.old/inkscape-0.91-no-date.patch b/patches/media-gfx/inkscape.old/inkscape-0.91-no-date.patch @@ -0,0 +1,26 @@ +diff --git a/src/main.cpp.old b/src/main.cpp +index 517ba05..fc8c4ad 100644 +--- a/src/main.cpp.old ++++ b/src/main.cpp +@@ -2178,7 +2178,7 @@ sp_process_args(poptContext ctx) + break; + } + case SP_ARG_VERSION: { +- printf("Inkscape %s (%s)\n", Inkscape::version_string, __DATE__); ++ printf("Inkscape %s\n", Inkscape::version_string); + exit(0); + break; + } +diff --git a/./src/extension/internal/emf-print.cpp.old b/./src/extension/internal/emf-print.cpp +index f7b6626..da047f6 100644 +--- a/./src/extension/internal/emf-print.cpp.old ++++ b/./src/extension/internal/emf-print.cpp +@@ -205,7 +205,7 @@ unsigned int PrintEmf::begin(Inkscape::Extension::Print *mod, SPDocument *doc) + } else { + p = ansi_uri; + } +- snprintf(buff, sizeof(buff) - 1, "Inkscape %s (%s)\1%s\1", Inkscape::version_string, __DATE__, p); ++ snprintf(buff, sizeof(buff) - 1, "Inkscape %s\1%s\1", Inkscape::version_string, p); + uint16_t *Description = U_Utf8ToUtf16le(buff, 0, NULL); + int cbDesc = 2 + wchar16len(Description); // also count the final terminator + (void) U_Utf16leEdit(Description, '\1', '\0'); // swap the temporary \1 characters for nulls diff --git a/patches/media-libs/shaderc/shaderc-2018.0_remove_Werror.patch b/patches/media-libs/shaderc/shaderc-2018.0_remove_Werror.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/utils.cmake.old b/cmake/utils.cmake +index ed3c733..965c546 100644 +--- a/cmake/utils.cmake.old ++++ b/cmake/utils.cmake +@@ -9,7 +9,7 @@ endfunction(shaderc_use_gmock) + + function(shaderc_default_c_compile_options TARGET) + if (NOT "${MSVC}") +- target_compile_options(${TARGET} PRIVATE -Wall -Werror -fvisibility=hidden) ++ target_compile_options(${TARGET} PRIVATE -Wall -fvisibility=hidden) + if (NOT "${MINGW}") + target_compile_options(${TARGET} PRIVATE -fPIC) + endif() diff --git a/patches/media-sound/audacity/enchant-1.6.1-Add-tag=CC.patch b/patches/media-sound/audacity/enchant-1.6.1-Add-tag=CC.patch @@ -0,0 +1,9 @@ +diff -u enchant-1.6.1.orig/configure enchant-1.6.1/configure +--- enchant-1.6.1.orig/configure 2017-12-17 16:56:55.527440216 -0600 ++++ enchant-1.6.1/configure 2017-12-17 16:56:28.533441941 -0600 +@@ -11038,7 +11038,7 @@ + LIBTOOL_DEPS=$ltmain + + # Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++LIBTOOL='$(SHELL) $(top_builddir)/libtool --tag=CC' diff --git a/patches/net-analyzer/nettop/nettop-0.2.3-no-datetime.patch b/patches/net-analyzer/nettop/nettop-0.2.3-no-datetime.patch @@ -0,0 +1,13 @@ +diff --git a/nettop.c.old b/nettop.c +index ffcb507..be2f37b 100644 +--- a/nettop.c.old ++++ b/nettop.c +@@ -839,7 +839,7 @@ show_help() + SLsmg_gotorc(y++, 0); + SLsmg_printf("Written by Scott Parish, copyright 2001, BSD"); + SLsmg_gotorc(y++, 0); +- SLsmg_printf("Compiled at %s, %s", __TIME__, __DATE__); ++ SLsmg_printf("Compiled at %s, %s", "12:30:30", "Jan 13 1984"); + y += 2; + SLsmg_gotorc(y++, 0); + diff --git a/patches/net-analyzer/nmap-7.70/nmap-7.70_nmap_error_h-time_h.patch b/patches/net-analyzer/nmap-7.70/nmap-7.70_nmap_error_h-time_h.patch @@ -0,0 +1,13 @@ +diff --git a/nmap_error.h.old b/nmap_error.h +index f6df970..c47dcce 100644 +--- a/nmap_error.h.old ++++ b/nmap_error.h +@@ -132,6 +132,8 @@ + #ifndef NMAP_ERROR_H + #define NMAP_ERROR_H + ++#include <time.h> ++ + #ifdef WIN32 + #include "mswin32\winclude.h" + #endif diff --git a/patches/net-libs/patch-webkit-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/patch-webkit-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,56 @@ +From 9c4baaec2f310d43011ec3835e0fbaf585ed583c Mon Sep 17 00:00:00 2001 +Message-Id: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 1/6] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index 7aecedb8d8..01890f02e6 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -674,26 +674,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -705,9 +685,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.20.1 + diff --git a/patches/net-libs/patch-webkit-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch b/patches/net-libs/patch-webkit-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch @@ -0,0 +1,411 @@ +From baf0c7c97905fe9226ea097535a07c9a15d8fb18 Mon Sep 17 00:00:00 2001 +Message-Id: <baf0c7c97905fe9226ea097535a07c9a15d8fb18.1550728895.git.contact@hacktivis.me> +In-Reply-To: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +References: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 18:14:21 +0100 +Subject: [PATCH 2/6] Remove support for PING in HTML anchors [privacy] + +--- + Source/WebCore/Sources.txt | 1 - + Source/WebCore/html/HTMLAnchorElement.cpp | 16 -- + .../html/parser/XSSAuditorDelegate.cpp | 4 - + Source/WebCore/loader/DocumentLoader.cpp | 6 - + Source/WebCore/loader/PingLoader.cpp | 218 ------------------ + .../loader/cache/CachedResourceLoader.cpp | 3 - + .../page/csp/ContentSecurityPolicy.cpp | 5 - + Source/WebKit/WebProcess/WebPage/WebPage.cpp | 3 - + 8 files changed, 256 deletions(-) + delete mode 100644 Source/WebCore/loader/PingLoader.cpp + +diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt +index 704e50c773..bbee4a0695 100644 +--- a/Source/WebCore/Sources.txt ++++ b/Source/WebCore/Sources.txt +@@ -1276,7 +1276,6 @@ loader/NavigationAction.cpp + loader/NavigationScheduler.cpp + loader/NetscapePlugInStreamLoader.cpp + loader/ServerTimingParser.cpp +-loader/PingLoader.cpp + loader/PolicyChecker.cpp + loader/ProgressTracker.cpp + loader/ResourceCryptographicDigest.cpp +diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp +index 0155fc70a1..e53302748d 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.cpp ++++ b/Source/WebCore/html/HTMLAnchorElement.cpp +@@ -39,7 +39,6 @@ + #include "HTMLPictureElement.h" + #include "KeyboardEvent.h" + #include "MouseEvent.h" +-#include "PingLoader.h" + #include "PlatformMouseEvent.h" + #include "RenderImage.h" + #include "ResourceRequest.h" +@@ -364,19 +363,6 @@ bool HTMLAnchorElement::isLiveLink() const + return isLink() && treatLinkAsLiveForEventType(m_wasShiftKeyDownOnMouseDown ? MouseEventWithShiftKey : MouseEventWithoutShiftKey); + } + +-void HTMLAnchorElement::sendPings(const URL& destinationURL) +-{ +- if (!document().frame()) +- return; +- +- if (!hasAttributeWithoutSynchronization(pingAttr) || !document().settings().hyperlinkAuditingEnabled()) +- return; +- +- SpaceSplitString pingURLs(attributeWithoutSynchronization(pingAttr), false); +- for (unsigned i = 0; i < pingURLs.size(); i++) +- PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL); +-} +- + #if USE(SYSTEM_PREVIEW) + bool HTMLAnchorElement::isSystemPreviewLink() const + { +@@ -442,8 +428,6 @@ void HTMLAnchorElement::handleClick(Event& event) + ShouldSendReferrer shouldSendReferrer = hasRel(Relation::NoReferrer) ? NeverSendReferrer : MaybeSendReferrer; + auto newFrameOpenerPolicy = hasRel(Relation::NoOpener) ? std::make_optional(NewFrameOpenerPolicy::Suppress) : std::nullopt; + frame->loader().urlSelected(completedURL, target(), &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo); +- +- sendPings(completedURL); + } + + HTMLAnchorElement::EventType HTMLAnchorElement::eventType(Event& event) +diff --git a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +index 80b4213669..e8c69162aa 100644 +--- a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp ++++ b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +@@ -35,7 +35,6 @@ + #include "FrameLoaderClient.h" + #include "HTMLParserIdioms.h" + #include "NavigationScheduler.h" +-#include "PingLoader.h" + #include <wtf/JSONValues.h> + #include <wtf/text/StringBuilder.h> + #include <wtf/text/CString.h> +@@ -104,9 +103,6 @@ void XSSAuditorDelegate::didBlockScript(const XSSInfo& xssInfo) + m_didSendNotifications = true; + + frameLoader.client().didDetectXSS(m_document.url(), xssInfo.m_didBlockEntirePage); +- +- if (!m_reportURL.isEmpty()) +- PingLoader::sendViolationReport(*m_document.frame(), m_reportURL, generateViolationReport(xssInfo), ViolationReportType::XSSAuditor); + } + + if (xssInfo.m_didBlockEntirePage) +diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp +index 9b5aecc05f..ee80d8c118 100644 +--- a/Source/WebCore/loader/DocumentLoader.cpp ++++ b/Source/WebCore/loader/DocumentLoader.cpp +@@ -65,7 +65,6 @@ + #include "MemoryCache.h" + #include "NetworkLoadMetrics.h" + #include "Page.h" +-#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "PolicyChecker.h" + #include "ProgressTracker.h" +@@ -2055,11 +2054,6 @@ void DocumentLoader::addConsoleMessage(MessageSource messageSource, MessageLevel + static_cast<ScriptExecutionContext*>(m_frame->document())->addConsoleMessage(messageSource, messageLevel, message, requestIdentifier); + } + +-void DocumentLoader::sendCSPViolationReport(URL&& reportURL, Ref<FormData>&& report) +-{ +- PingLoader::sendViolationReport(*m_frame, WTFMove(reportURL), WTFMove(report), ViolationReportType::ContentSecurityPolicy); +-} +- + void DocumentLoader::enqueueSecurityPolicyViolationEvent(SecurityPolicyViolationEvent::Init&& eventInit) + { + m_frame->document()->enqueueSecurityPolicyViolationEvent(WTFMove(eventInit)); +diff --git a/Source/WebCore/loader/PingLoader.cpp b/Source/WebCore/loader/PingLoader.cpp +deleted file mode 100644 +index 134e5560e6..0000000000 +--- a/Source/WebCore/loader/PingLoader.cpp ++++ /dev/null +@@ -1,218 +0,0 @@ +-/* +- * Copyright (C) 2010 Google Inc. All rights reserved. +- * Copyright (C) 2015 Roopesh Chander (roop@roopc.net) +- * Copyright (C) 2015-2017 Apple Inc. All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions are +- * met: +- * +- * * Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * * Redistributions in binary form must reproduce the above +- * copyright notice, this list of conditions and the following disclaimer +- * in the documentation and/or other materials provided with the +- * distribution. +- * * Neither the name of Google Inc. nor the names of its +- * contributors may be used to endorse or promote products derived from +- * this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +- * +- */ +- +-#include "config.h" +-#include "PingLoader.h" +- +-#include "ContentSecurityPolicy.h" +-#include "Document.h" +-#include "Frame.h" +-#include "FrameLoader.h" +-#include "FrameLoaderClient.h" +-#include "InspectorInstrumentation.h" +-#include "LoaderStrategy.h" +-#include "NetworkLoadMetrics.h" +-#include "Page.h" +-#include "PlatformStrategies.h" +-#include "ProgressTracker.h" +-#include "ResourceHandle.h" +-#include "ResourceLoadInfo.h" +-#include "ResourceRequest.h" +-#include "ResourceResponse.h" +-#include "SecurityOrigin.h" +-#include "SecurityPolicy.h" +-#include "UserContentController.h" +-#include <wtf/text/CString.h> +- +-namespace WebCore { +- +-#if !ENABLE(CONTENT_EXTENSIONS) +- +-// Returns true if we should block the load. +-static inline bool processContentExtensionRulesForLoad(const Frame&, ResourceRequest&, ResourceType) +-{ +- return false; +-} +- +-#else +- +-// Returns true if we should block the load. +-static bool processContentExtensionRulesForLoad(const Frame& frame, ResourceRequest& request, ResourceType resourceType) +-{ +- auto* documentLoader = frame.loader().documentLoader(); +- if (!documentLoader) +- return false; +- auto* page = frame.page(); +- if (!page) +- return false; +- auto status = page->userContentProvider().processContentExtensionRulesForLoad(request.url(), resourceType, *documentLoader); +- applyBlockedStatusToRequest(status, page, request); +- return status.blockedLoad; +-} +- +-#endif +- +-void PingLoader::loadImage(Frame& frame, const URL& url) +-{ +- ASSERT(frame.document()); +- auto& document = *frame.document(); +- +- if (!document.securityOrigin().canDisplay(url)) { +- FrameLoader::reportLocalLoadFailed(&frame, url); +- return; +- } +- +- ResourceRequest request(url); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Image)) +- return; +- +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), request.url(), frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); +-} +- +-// http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing +-void PingLoader::sendPing(Frame& frame, const URL& pingURL, const URL& destinationURL) +-{ +- ASSERT(frame.document()); +- +- if (!pingURL.protocolIsInHTTPFamily()) +- return; +- +- ResourceRequest request(pingURL); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) +- return; +- +- auto& document = *frame.document(); +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPMethod("POST"); +- request.setHTTPContentType("text/ping"); +- request.setHTTPBody(FormData::create("PING")); +- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- auto& sourceOrigin = document.securityOrigin(); +- FrameLoader::addHTTPOriginIfNeeded(request, sourceOrigin.toString()); +- request.setHTTPHeaderField(HTTPHeaderName::PingTo, destinationURL); +- if (!SecurityPolicy::shouldHideReferrer(pingURL, frame.loader().outgoingReferrer())) { +- request.setHTTPHeaderField(HTTPHeaderName::PingFrom, document.url()); +- if (!sourceOrigin.isSameSchemeHostPort(SecurityOrigin::create(pingURL).get())) { +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), pingURL, frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- } +- } +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); +-} +- +-void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, Ref<FormData>&& report, ViolationReportType reportType) +-{ +- ASSERT(frame.document()); +- +- ResourceRequest request(reportURL); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) +- return; +- +- auto& document = *frame.document(); +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPMethod("POST"_s); +- request.setHTTPBody(WTFMove(report)); +- switch (reportType) { +- case ViolationReportType::ContentSecurityPolicy: +- request.setHTTPContentType("application/csp-report"_s); +- break; +- case ViolationReportType::XSSAuditor: +- request.setHTTPContentType("application/json"_s); +- break; +- } +- +- bool removeCookies = true; +- if (document.securityOrigin().isSameSchemeHostPort(SecurityOrigin::create(reportURL).get())) +- removeCookies = false; +- if (removeCookies) +- request.setAllowCookies(false); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), reportURL, frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::No); +-} +- +-void PingLoader::startPingLoad(Frame& frame, ResourceRequest& request, HTTPHeaderMap&& originalRequestHeaders, ShouldFollowRedirects shouldFollowRedirects) +-{ +- unsigned long identifier = frame.page()->progress().createUniqueIdentifier(); +- // FIXME: Why activeDocumentLoader? I would have expected documentLoader(). +- // It seems like the PingLoader should be associated with the current +- // Document in the Frame, but the activeDocumentLoader will be associated +- // with the provisional DocumentLoader if there is a provisional +- // DocumentLoader. +- bool shouldUseCredentialStorage = frame.loader().client().shouldUseCredentialStorage(frame.loader().activeDocumentLoader(), identifier); +- FetchOptions options; +- options.credentials = shouldUseCredentialStorage ? FetchOptions::Credentials::Include : FetchOptions::Credentials::Omit; +- options.redirect = shouldFollowRedirects == ShouldFollowRedirects::Yes ? FetchOptions::Redirect::Follow : FetchOptions::Redirect::Error; +- +- // FIXME: Move ping loads to normal subresource loading to get normal inspector request instrumentation hooks. +- InspectorInstrumentation::willSendRequestOfType(&frame, identifier, frame.loader().activeDocumentLoader(), request, InspectorInstrumentation::LoadType::Ping); +- +- platformStrategies()->loaderStrategy()->startPingLoad(frame, request, WTFMove(originalRequestHeaders), options, [protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) { +- if (!response.isNull()) +- InspectorInstrumentation::didReceiveResourceResponse(protectedFrame, identifier, protectedFrame->loader().activeDocumentLoader(), response, nullptr); +- if (error.isNull()) { +- NetworkLoadMetrics emptyMetrics; +- InspectorInstrumentation::didFinishLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, emptyMetrics, nullptr); +- } else +- InspectorInstrumentation::didFailLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, error); +- }); +-} +- +-} +diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +index 9d3d108113..614cfee9b5 100644 +--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp ++++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +@@ -57,7 +57,6 @@ + #include "Logging.h" + #include "MemoryCache.h" + #include "Page.h" +-#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "RenderElement.h" + #include "ResourceLoadInfo.h" +@@ -202,8 +201,6 @@ ResourceErrorOr<CachedResourceHandle<CachedImage>> CachedResourceLoader::request + if (Document* document = frame->document()) + request.upgradeInsecureRequestIfNeeded(*document); + URL requestURL = request.resourceRequest().url(); +- if (requestURL.isValid() && canRequest(CachedResource::Type::ImageResource, requestURL, request, ForPreload::No)) +- PingLoader::loadImage(*frame, requestURL); + return CachedResourceHandle<CachedImage> { }; + } + } +diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +index 9b966fa02b..f1b1b51da1 100644 +--- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp ++++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +@@ -45,7 +45,6 @@ + #include "JSExecState.h" + #include "JSWindowProxy.h" + #include "ParsingUtilities.h" +-#include "PingLoader.h" + #include "ResourceRequest.h" + #include "RuntimeEnabledFeatures.h" + #include "SchemeRegistry.h" +@@ -759,10 +758,6 @@ void ContentSecurityPolicy::reportViolation(const String& effectiveViolatedDirec + if (m_client) { + for (const auto& url : reportURIs) + m_client->sendCSPViolationReport(URL { m_protectedURL, url }, report.copyRef()); +- } else { +- auto& document = downcast<Document>(*m_scriptExecutionContext); +- for (const auto& url : reportURIs) +- PingLoader::sendViolationReport(*document.frame(), URL { m_protectedURL, url }, report.copyRef(), ViolationReportType::ContentSecurityPolicy); + } + } + +diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +index 5aa26e75b2..bae31537b3 100644 +--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp ++++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +@@ -181,7 +181,6 @@ + #include <WebCore/NotImplemented.h> + #include <WebCore/Page.h> + #include <WebCore/PageConfiguration.h> +-#include <WebCore/PingLoader.h> + #include <WebCore/PlatformKeyboardEvent.h> + #include <WebCore/PluginDocument.h> + #include <WebCore/PrintContext.h> +@@ -3358,8 +3357,6 @@ void WebPage::sendCSPViolationReport(uint64_t frameID, const WebCore::URL& repor + auto report = reportData.takeData(); + if (!report) + return; +- if (auto* frame = WebProcess::singleton().webFrame(frameID)) +- PingLoader::sendViolationReport(*frame->coreFrame(), reportURL, report.releaseNonNull(), ViolationReportType::ContentSecurityPolicy); + } + + void WebPage::enqueueSecurityPolicyViolationEvent(uint64_t frameID, SecurityPolicyViolationEvent::Init&& eventInit) +-- +2.20.1 + diff --git a/patches/net-libs/patch-webkit-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/patch-webkit-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,29 @@ +From 486a527f1391aeb2cd0fa40f7f1a1e180cd90abf Mon Sep 17 00:00:00 2001 +Message-Id: <486a527f1391aeb2cd0fa40f7f1a1e180cd90abf.1550728895.git.contact@hacktivis.me> +In-Reply-To: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +References: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 3/6] CMakeLists.txt: Explain which variable is used to define + a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ae5c7b7613..39f398f8dd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -47,7 +47,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.20.1 + diff --git a/patches/net-libs/patch-webkit-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/patch-webkit-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,28 @@ +From d3be03eeea129d19ef204cf5365ead5bc71e3f7a Mon Sep 17 00:00:00 2001 +Message-Id: <d3be03eeea129d19ef204cf5365ead5bc71e3f7a.1550728895.git.contact@hacktivis.me> +In-Reply-To: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +References: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 4/6] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index a87177d0d7..098e371983 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -72,6 +72,7 @@ endif () + # Public options specific to the GTK+ port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.20.1 + diff --git a/patches/net-libs/patch-webkit-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch b/patches/net-libs/patch-webkit-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch @@ -0,0 +1,75 @@ +From fff385e3380f086faa50f9b2d1d0863822214f9e Mon Sep 17 00:00:00 2001 +Message-Id: <fff385e3380f086faa50f9b2d1d0863822214f9e.1550728895.git.contact@hacktivis.me> +In-Reply-To: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +References: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 02:33:31 +0100 +Subject: [PATCH 5/6] Source/WebCore/page/RuntimeEnabledFeatures.h: + hard-disable some features + +--- + Source/WebCore/page/RuntimeEnabledFeatures.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h +index 0e645b341d..be81cfd188 100644 +--- a/Source/WebCore/page/RuntimeEnabledFeatures.h ++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h +@@ -47,13 +47,13 @@ public: + bool displayContentsEnabled() const { return m_isDisplayContentsEnabled; } + + void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; } +- bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; } ++ bool linkPreloadEnabled() const { return false; } + + void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; } +- bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; } ++ bool linkPrefetchEnabled() const { return false; } + + void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; } +- bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; } ++ bool mediaPreloadingEnabled() const { return false; } + + void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; } + bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; } +@@ -67,19 +67,19 @@ public: + bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; } + + void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; } +- bool inputEventsEnabled() const { return m_inputEventsEnabled; } ++ bool inputEventsEnabled() const { return false; } + + void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; } + bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; } + + void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; } +- bool customElementsEnabled() const { return m_areCustomElementsEnabled; } ++ bool customElementsEnabled() const { return false; } + + void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; } + bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; } + + void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; } +- bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; } ++ bool directoryUploadEnabled() const { return false; } + + void setDataTransferItemsEnabled(bool areEnabled) { m_areDataTransferItemsEnabled = areEnabled; } + bool dataTransferItemsEnabled() const { return m_areDataTransferItemsEnabled; } +@@ -217,12 +217,12 @@ public: + + #if ENABLE(ENCRYPTED_MEDIA) + void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; } +- bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; } ++ bool encryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(LEGACY_ENCRYPTED_MEDIA) + void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; } +- bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; } ++ bool legacyEncryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(SERVICE_WORKER) +-- +2.20.1 + diff --git a/patches/net-libs/patch-webkit-2.22.6/0006-lanodan-TODO-New.patch b/patches/net-libs/patch-webkit-2.22.6/0006-lanodan-TODO-New.patch @@ -0,0 +1,87 @@ +From 389d26ae38d2770daa9b4b07281a58f84200f6b2 Mon Sep 17 00:00:00 2001 +Message-Id: <389d26ae38d2770daa9b4b07281a58f84200f6b2.1550728895.git.contact@hacktivis.me> +In-Reply-To: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +References: <9c4baaec2f310d43011ec3835e0fbaf585ed583c.1550728895.git.contact@hacktivis.me> +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 11:11:22 +0100 +Subject: [PATCH 6/6] lanodan-TODO: New + +--- + lanodan-TODO | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + create mode 100644 lanodan-TODO + +diff --git a/lanodan-TODO b/lanodan-TODO +new file mode 100644 +index 0000000000..d8acc42c6d +--- /dev/null ++++ b/lanodan-TODO +@@ -0,0 +1,65 @@ ++## Javascript ++- [x] Console Styling (%c) ++- [ ] GeoLocation ++- [ ] AudioAPI ++- [ ] Gamepad (runtime, off by default): https://www.w3.org/TR/gamepad/ ++- [ ] Service Workers (runtime, off by default) ++- [ ] IndexedDB (runtime, off by default) ++- [ ] Object Storage (runtime, off by default) ++- [ ] canvas (runtime, off by default) ++- [ ] WebGL (runtime, off by default) ++- [ ] Sensors ++ - [x] Battery (WebKit: Not Considering) ++ - [ ] microphone (runtime, off by default) ++ - [ ] video(webcam, screen, …) (runtime, off by default) ++ - … ++- [x] Web Bluetooth (WebKit: Not Considering) ++- [x] Web MIDI (WebKit: Not Considering) ++- [x] Web USB (WebKit: Not Considering) ++- [ ] Input Events ++ - [ ] Pointer Events ++ - [ ] Scroll Events ++ - [ ] Focus Events ++ - … ++- [ ] Timings ++ - Navigation Timing ++ - Resource Timing ++ - Performance Timeline: https://w3c.github.io/performance-timeline/ ++ - High Resolution Time ++ - … ++- [ ] Viewport size ++- [ ] Elements size ++- [ ] multimedia player stats (FPS, caching, …) ++- [ ] Payment Request: https://www.w3.org/TR/payment-request/ ++- [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/ ++ ++## Headers ++- [ ] referer ++- [ ] user-agent (spoof Intel Apple one?) ++- [ ] Cookies (runtime, off by default) ++ ++## HTML ++- [ ] noscript ++- [x] Link ping ++- [x] Link prefetch ++- [x] Link preloading ++- [x] Media preloading ++- [x] custom elements ++- [ ] DNS prefetch ++- [ ] srcset (images) ++ ++## CSS ++- [ ] Engine-specific extensions ++- [ ] WebFont (runtime, off by default) ++ ++## TLS ++- [ ] Disable known-bad ciphers ++- [ ] TOFU? ++- [ ] DANE ++ ++## Codebase ++- [ ] Remove Third-Party directory ++ ++ ++- https://webkit.org/status/ ++- https://github.com/WICG +-- +2.20.1 + diff --git a/patches/net-libs/serf-1.3.9/serf-1.3.9-openssl_malloc_init.patch b/patches/net-libs/serf-1.3.9/serf-1.3.9-openssl_malloc_init.patch @@ -0,0 +1,13 @@ +diff --git a/./buckets/ssl_buckets.c b/./buckets/ssl_buckets.c.new +index b01e535..c64295d 100644 +--- a/./buckets/ssl_buckets.c ++++ b/./buckets/ssl_buckets.c.new +@@ -1156,7 +1156,7 @@ static void init_ssl_libraries(void) + } + #endif + +-#ifdef USE_OPENSSL_1_1_API ++#ifdef USE_OPENSSL_1_1_API && !defined(LIBRESSL_VERSION_NUMBER) + OPENSSL_malloc_init(); + #else + CRYPTO_malloc_init(); diff --git a/patches/net-libs/webkit-gtk-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkit-gtk-2.22.6/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,55 @@ +From 686141ae059a54da7148642b136e3f1f1f1a4d64 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 1/8] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index 7aecedb8d8..01890f02e6 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -674,26 +674,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -705,9 +685,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch b/patches/net-libs/webkit-gtk-2.22.6/0002-Remove-support-for-PING-in-HTML-anchors-privacy.patch @@ -0,0 +1,478 @@ +From 84921f7b5e96acf31472acd7752ca77158b4c657 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 18:14:21 +0100 +Subject: [PATCH 2/8] Remove support for PING in HTML anchors [privacy] + +--- + Source/WebCore/Sources.txt | 1 - + Source/WebCore/html/HTMLAnchorElement.cpp | 16 -- + .../html/parser/XSSAuditorDelegate.cpp | 4 - + Source/WebCore/loader/DocumentLoader.cpp | 6 - + Source/WebCore/loader/PingLoader.cpp | 218 ------------------ + Source/WebCore/loader/PingLoader.h | 62 ----- + .../loader/cache/CachedResourceLoader.cpp | 3 - + .../page/csp/ContentSecurityPolicy.cpp | 5 - + Source/WebKit/WebProcess/WebPage/WebPage.cpp | 3 - + 9 files changed, 318 deletions(-) + delete mode 100644 Source/WebCore/loader/PingLoader.cpp + delete mode 100644 Source/WebCore/loader/PingLoader.h + +diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt +index 704e50c773..bbee4a0695 100644 +--- a/Source/WebCore/Sources.txt ++++ b/Source/WebCore/Sources.txt +@@ -1276,7 +1276,6 @@ loader/NavigationAction.cpp + loader/NavigationScheduler.cpp + loader/NetscapePlugInStreamLoader.cpp + loader/ServerTimingParser.cpp +-loader/PingLoader.cpp + loader/PolicyChecker.cpp + loader/ProgressTracker.cpp + loader/ResourceCryptographicDigest.cpp +diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp +index 0155fc70a1..e53302748d 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.cpp ++++ b/Source/WebCore/html/HTMLAnchorElement.cpp +@@ -39,7 +39,6 @@ + #include "HTMLPictureElement.h" + #include "KeyboardEvent.h" + #include "MouseEvent.h" +-#include "PingLoader.h" + #include "PlatformMouseEvent.h" + #include "RenderImage.h" + #include "ResourceRequest.h" +@@ -364,19 +363,6 @@ bool HTMLAnchorElement::isLiveLink() const + return isLink() && treatLinkAsLiveForEventType(m_wasShiftKeyDownOnMouseDown ? MouseEventWithShiftKey : MouseEventWithoutShiftKey); + } + +-void HTMLAnchorElement::sendPings(const URL& destinationURL) +-{ +- if (!document().frame()) +- return; +- +- if (!hasAttributeWithoutSynchronization(pingAttr) || !document().settings().hyperlinkAuditingEnabled()) +- return; +- +- SpaceSplitString pingURLs(attributeWithoutSynchronization(pingAttr), false); +- for (unsigned i = 0; i < pingURLs.size(); i++) +- PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL); +-} +- + #if USE(SYSTEM_PREVIEW) + bool HTMLAnchorElement::isSystemPreviewLink() const + { +@@ -442,8 +428,6 @@ void HTMLAnchorElement::handleClick(Event& event) + ShouldSendReferrer shouldSendReferrer = hasRel(Relation::NoReferrer) ? NeverSendReferrer : MaybeSendReferrer; + auto newFrameOpenerPolicy = hasRel(Relation::NoOpener) ? std::make_optional(NewFrameOpenerPolicy::Suppress) : std::nullopt; + frame->loader().urlSelected(completedURL, target(), &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo); +- +- sendPings(completedURL); + } + + HTMLAnchorElement::EventType HTMLAnchorElement::eventType(Event& event) +diff --git a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +index 80b4213669..e8c69162aa 100644 +--- a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp ++++ b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +@@ -35,7 +35,6 @@ + #include "FrameLoaderClient.h" + #include "HTMLParserIdioms.h" + #include "NavigationScheduler.h" +-#include "PingLoader.h" + #include <wtf/JSONValues.h> + #include <wtf/text/StringBuilder.h> + #include <wtf/text/CString.h> +@@ -104,9 +103,6 @@ void XSSAuditorDelegate::didBlockScript(const XSSInfo& xssInfo) + m_didSendNotifications = true; + + frameLoader.client().didDetectXSS(m_document.url(), xssInfo.m_didBlockEntirePage); +- +- if (!m_reportURL.isEmpty()) +- PingLoader::sendViolationReport(*m_document.frame(), m_reportURL, generateViolationReport(xssInfo), ViolationReportType::XSSAuditor); + } + + if (xssInfo.m_didBlockEntirePage) +diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp +index b9fc289660..37cf9602b2 100644 +--- a/Source/WebCore/loader/DocumentLoader.cpp ++++ b/Source/WebCore/loader/DocumentLoader.cpp +@@ -65,7 +65,6 @@ + #include "MemoryCache.h" + #include "NetworkLoadMetrics.h" + #include "Page.h" +-#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "PolicyChecker.h" + #include "ProgressTracker.h" +@@ -2058,11 +2057,6 @@ void DocumentLoader::addConsoleMessage(MessageSource messageSource, MessageLevel + static_cast<ScriptExecutionContext*>(m_frame->document())->addConsoleMessage(messageSource, messageLevel, message, requestIdentifier); + } + +-void DocumentLoader::sendCSPViolationReport(URL&& reportURL, Ref<FormData>&& report) +-{ +- PingLoader::sendViolationReport(*m_frame, WTFMove(reportURL), WTFMove(report), ViolationReportType::ContentSecurityPolicy); +-} +- + void DocumentLoader::enqueueSecurityPolicyViolationEvent(SecurityPolicyViolationEvent::Init&& eventInit) + { + m_frame->document()->enqueueSecurityPolicyViolationEvent(WTFMove(eventInit)); +diff --git a/Source/WebCore/loader/PingLoader.cpp b/Source/WebCore/loader/PingLoader.cpp +deleted file mode 100644 +index 134e5560e6..0000000000 +--- a/Source/WebCore/loader/PingLoader.cpp ++++ /dev/null +@@ -1,218 +0,0 @@ +-/* +- * Copyright (C) 2010 Google Inc. All rights reserved. +- * Copyright (C) 2015 Roopesh Chander (roop@roopc.net) +- * Copyright (C) 2015-2017 Apple Inc. All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions are +- * met: +- * +- * * Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * * Redistributions in binary form must reproduce the above +- * copyright notice, this list of conditions and the following disclaimer +- * in the documentation and/or other materials provided with the +- * distribution. +- * * Neither the name of Google Inc. nor the names of its +- * contributors may be used to endorse or promote products derived from +- * this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +- * +- */ +- +-#include "config.h" +-#include "PingLoader.h" +- +-#include "ContentSecurityPolicy.h" +-#include "Document.h" +-#include "Frame.h" +-#include "FrameLoader.h" +-#include "FrameLoaderClient.h" +-#include "InspectorInstrumentation.h" +-#include "LoaderStrategy.h" +-#include "NetworkLoadMetrics.h" +-#include "Page.h" +-#include "PlatformStrategies.h" +-#include "ProgressTracker.h" +-#include "ResourceHandle.h" +-#include "ResourceLoadInfo.h" +-#include "ResourceRequest.h" +-#include "ResourceResponse.h" +-#include "SecurityOrigin.h" +-#include "SecurityPolicy.h" +-#include "UserContentController.h" +-#include <wtf/text/CString.h> +- +-namespace WebCore { +- +-#if !ENABLE(CONTENT_EXTENSIONS) +- +-// Returns true if we should block the load. +-static inline bool processContentExtensionRulesForLoad(const Frame&, ResourceRequest&, ResourceType) +-{ +- return false; +-} +- +-#else +- +-// Returns true if we should block the load. +-static bool processContentExtensionRulesForLoad(const Frame& frame, ResourceRequest& request, ResourceType resourceType) +-{ +- auto* documentLoader = frame.loader().documentLoader(); +- if (!documentLoader) +- return false; +- auto* page = frame.page(); +- if (!page) +- return false; +- auto status = page->userContentProvider().processContentExtensionRulesForLoad(request.url(), resourceType, *documentLoader); +- applyBlockedStatusToRequest(status, page, request); +- return status.blockedLoad; +-} +- +-#endif +- +-void PingLoader::loadImage(Frame& frame, const URL& url) +-{ +- ASSERT(frame.document()); +- auto& document = *frame.document(); +- +- if (!document.securityOrigin().canDisplay(url)) { +- FrameLoader::reportLocalLoadFailed(&frame, url); +- return; +- } +- +- ResourceRequest request(url); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Image)) +- return; +- +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), request.url(), frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); +-} +- +-// http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing +-void PingLoader::sendPing(Frame& frame, const URL& pingURL, const URL& destinationURL) +-{ +- ASSERT(frame.document()); +- +- if (!pingURL.protocolIsInHTTPFamily()) +- return; +- +- ResourceRequest request(pingURL); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) +- return; +- +- auto& document = *frame.document(); +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPMethod("POST"); +- request.setHTTPContentType("text/ping"); +- request.setHTTPBody(FormData::create("PING")); +- request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- auto& sourceOrigin = document.securityOrigin(); +- FrameLoader::addHTTPOriginIfNeeded(request, sourceOrigin.toString()); +- request.setHTTPHeaderField(HTTPHeaderName::PingTo, destinationURL); +- if (!SecurityPolicy::shouldHideReferrer(pingURL, frame.loader().outgoingReferrer())) { +- request.setHTTPHeaderField(HTTPHeaderName::PingFrom, document.url()); +- if (!sourceOrigin.isSameSchemeHostPort(SecurityOrigin::create(pingURL).get())) { +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), pingURL, frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- } +- } +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); +-} +- +-void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, Ref<FormData>&& report, ViolationReportType reportType) +-{ +- ASSERT(frame.document()); +- +- ResourceRequest request(reportURL); +- if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) +- return; +- +- auto& document = *frame.document(); +- document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); +- +- request.setHTTPMethod("POST"_s); +- request.setHTTPBody(WTFMove(report)); +- switch (reportType) { +- case ViolationReportType::ContentSecurityPolicy: +- request.setHTTPContentType("application/csp-report"_s); +- break; +- case ViolationReportType::XSSAuditor: +- request.setHTTPContentType("application/json"_s); +- break; +- } +- +- bool removeCookies = true; +- if (document.securityOrigin().isSameSchemeHostPort(SecurityOrigin::create(reportURL).get())) +- removeCookies = false; +- if (removeCookies) +- request.setAllowCookies(false); +- +- HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); +- +- frame.loader().addExtraFieldsToSubresourceRequest(request); +- +- String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), reportURL, frame.loader().outgoingReferrer()); +- if (!referrer.isEmpty()) +- request.setHTTPReferrer(referrer); +- +- startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::No); +-} +- +-void PingLoader::startPingLoad(Frame& frame, ResourceRequest& request, HTTPHeaderMap&& originalRequestHeaders, ShouldFollowRedirects shouldFollowRedirects) +-{ +- unsigned long identifier = frame.page()->progress().createUniqueIdentifier(); +- // FIXME: Why activeDocumentLoader? I would have expected documentLoader(). +- // It seems like the PingLoader should be associated with the current +- // Document in the Frame, but the activeDocumentLoader will be associated +- // with the provisional DocumentLoader if there is a provisional +- // DocumentLoader. +- bool shouldUseCredentialStorage = frame.loader().client().shouldUseCredentialStorage(frame.loader().activeDocumentLoader(), identifier); +- FetchOptions options; +- options.credentials = shouldUseCredentialStorage ? FetchOptions::Credentials::Include : FetchOptions::Credentials::Omit; +- options.redirect = shouldFollowRedirects == ShouldFollowRedirects::Yes ? FetchOptions::Redirect::Follow : FetchOptions::Redirect::Error; +- +- // FIXME: Move ping loads to normal subresource loading to get normal inspector request instrumentation hooks. +- InspectorInstrumentation::willSendRequestOfType(&frame, identifier, frame.loader().activeDocumentLoader(), request, InspectorInstrumentation::LoadType::Ping); +- +- platformStrategies()->loaderStrategy()->startPingLoad(frame, request, WTFMove(originalRequestHeaders), options, [protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) { +- if (!response.isNull()) +- InspectorInstrumentation::didReceiveResourceResponse(protectedFrame, identifier, protectedFrame->loader().activeDocumentLoader(), response, nullptr); +- if (error.isNull()) { +- NetworkLoadMetrics emptyMetrics; +- InspectorInstrumentation::didFinishLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, emptyMetrics, nullptr); +- } else +- InspectorInstrumentation::didFailLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, error); +- }); +-} +- +-} +diff --git a/Source/WebCore/loader/PingLoader.h b/Source/WebCore/loader/PingLoader.h +deleted file mode 100644 +index 15489dcf04..0000000000 +--- a/Source/WebCore/loader/PingLoader.h ++++ /dev/null +@@ -1,62 +0,0 @@ +-/* +- * Copyright (C) 2010 Google Inc. All rights reserved. +- * Copyright (C) 2017 Apple Inc. All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions are +- * met: +- * +- * * Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * * Redistributions in binary form must reproduce the above +- * copyright notice, this list of conditions and the following disclaimer +- * in the documentation and/or other materials provided with the +- * distribution. +- * * Neither the name of Google Inc. nor the names of its +- * contributors may be used to endorse or promote products derived from +- * this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +- * +- */ +- +-#pragma once +- +-#include <wtf/Forward.h> +-#include <wtf/Ref.h> +- +-namespace WebCore { +- +-class FormData; +-class Frame; +-class HTTPHeaderMap; +-class URL; +-class ResourceRequest; +- +-enum class ViolationReportType { +- ContentSecurityPolicy, +- XSSAuditor, +-}; +- +-class PingLoader { +-public: +- static void loadImage(Frame&, const URL&); +- static void sendPing(Frame&, const URL& pingURL, const URL& destinationURL); +- WEBCORE_EXPORT static void sendViolationReport(Frame&, const URL& reportURL, Ref<FormData>&& report, ViolationReportType); +- +-private: +- enum class ShouldFollowRedirects { No, Yes }; +- static void startPingLoad(Frame&, ResourceRequest&, HTTPHeaderMap&& originalRequestHeaders, ShouldFollowRedirects); +-}; +- +-} // namespace WebCore +diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +index 9d3d108113..614cfee9b5 100644 +--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp ++++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +@@ -57,7 +57,6 @@ + #include "Logging.h" + #include "MemoryCache.h" + #include "Page.h" +-#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "RenderElement.h" + #include "ResourceLoadInfo.h" +@@ -202,8 +201,6 @@ ResourceErrorOr<CachedResourceHandle<CachedImage>> CachedResourceLoader::request + if (Document* document = frame->document()) + request.upgradeInsecureRequestIfNeeded(*document); + URL requestURL = request.resourceRequest().url(); +- if (requestURL.isValid() && canRequest(CachedResource::Type::ImageResource, requestURL, request, ForPreload::No)) +- PingLoader::loadImage(*frame, requestURL); + return CachedResourceHandle<CachedImage> { }; + } + } +diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +index 9b966fa02b..f1b1b51da1 100644 +--- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp ++++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +@@ -45,7 +45,6 @@ + #include "JSExecState.h" + #include "JSWindowProxy.h" + #include "ParsingUtilities.h" +-#include "PingLoader.h" + #include "ResourceRequest.h" + #include "RuntimeEnabledFeatures.h" + #include "SchemeRegistry.h" +@@ -759,10 +758,6 @@ void ContentSecurityPolicy::reportViolation(const String& effectiveViolatedDirec + if (m_client) { + for (const auto& url : reportURIs) + m_client->sendCSPViolationReport(URL { m_protectedURL, url }, report.copyRef()); +- } else { +- auto& document = downcast<Document>(*m_scriptExecutionContext); +- for (const auto& url : reportURIs) +- PingLoader::sendViolationReport(*document.frame(), URL { m_protectedURL, url }, report.copyRef(), ViolationReportType::ContentSecurityPolicy); + } + } + +diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +index 5de12b10cc..e161de3599 100644 +--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp ++++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +@@ -181,7 +181,6 @@ + #include <WebCore/NotImplemented.h> + #include <WebCore/Page.h> + #include <WebCore/PageConfiguration.h> +-#include <WebCore/PingLoader.h> + #include <WebCore/PlatformKeyboardEvent.h> + #include <WebCore/PluginDocument.h> + #include <WebCore/PrintContext.h> +@@ -3359,8 +3358,6 @@ void WebPage::sendCSPViolationReport(uint64_t frameID, const WebCore::URL& repor + auto report = reportData.takeData(); + if (!report) + return; +- if (auto* frame = WebProcess::singleton().webFrame(frameID)) +- PingLoader::sendViolationReport(*frame->coreFrame(), reportURL, report.releaseNonNull(), ViolationReportType::ContentSecurityPolicy); + } + + void WebPage::enqueueSecurityPolicyViolationEvent(uint64_t frameID, SecurityPolicyViolationEvent::Init&& eventInit) +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkit-gtk-2.22.6/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,26 @@ +From 97043aced63189c0f9bcf78a3f590a766fb154fc Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 3/8] CMakeLists.txt: Explain which variable is used to define + a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ae5c7b7613..39f398f8dd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -47,7 +47,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkit-gtk-2.22.6/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,25 @@ +From 025f12353ba233463e4f17e1729901d399974166 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 4/8] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index 984a7d25ef..2bb73a078c 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -72,6 +72,7 @@ endif () + # Public options specific to the GTK+ port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch b/patches/net-libs/webkit-gtk-2.22.6/0005-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch @@ -0,0 +1,72 @@ +From 177a67dd37c335e9ffd75219bbd7c533fe3ffe63 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 02:33:31 +0100 +Subject: [PATCH 5/8] Source/WebCore/page/RuntimeEnabledFeatures.h: + hard-disable some features + +--- + Source/WebCore/page/RuntimeEnabledFeatures.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h +index 0e645b341d..be81cfd188 100644 +--- a/Source/WebCore/page/RuntimeEnabledFeatures.h ++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h +@@ -47,13 +47,13 @@ public: + bool displayContentsEnabled() const { return m_isDisplayContentsEnabled; } + + void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; } +- bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; } ++ bool linkPreloadEnabled() const { return false; } + + void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; } +- bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; } ++ bool linkPrefetchEnabled() const { return false; } + + void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; } +- bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; } ++ bool mediaPreloadingEnabled() const { return false; } + + void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; } + bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; } +@@ -67,19 +67,19 @@ public: + bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; } + + void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; } +- bool inputEventsEnabled() const { return m_inputEventsEnabled; } ++ bool inputEventsEnabled() const { return false; } + + void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; } + bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; } + + void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; } +- bool customElementsEnabled() const { return m_areCustomElementsEnabled; } ++ bool customElementsEnabled() const { return false; } + + void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; } + bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; } + + void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; } +- bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; } ++ bool directoryUploadEnabled() const { return false; } + + void setDataTransferItemsEnabled(bool areEnabled) { m_areDataTransferItemsEnabled = areEnabled; } + bool dataTransferItemsEnabled() const { return m_areDataTransferItemsEnabled; } +@@ -217,12 +217,12 @@ public: + + #if ENABLE(ENCRYPTED_MEDIA) + void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; } +- bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; } ++ bool encryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(LEGACY_ENCRYPTED_MEDIA) + void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; } +- bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; } ++ bool legacyEncryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(SERVICE_WORKER) +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0006-lanodan-TODO-New.patch b/patches/net-libs/webkit-gtk-2.22.6/0006-lanodan-TODO-New.patch @@ -0,0 +1,84 @@ +From 695ec156313a298b564406ee6fadb3bcbb6a2bd1 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 11:11:22 +0100 +Subject: [PATCH 6/8] lanodan-TODO: New + +--- + lanodan-TODO | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + create mode 100644 lanodan-TODO + +diff --git a/lanodan-TODO b/lanodan-TODO +new file mode 100644 +index 0000000000..d8acc42c6d +--- /dev/null ++++ b/lanodan-TODO +@@ -0,0 +1,65 @@ ++## Javascript ++- [x] Console Styling (%c) ++- [ ] GeoLocation ++- [ ] AudioAPI ++- [ ] Gamepad (runtime, off by default): https://www.w3.org/TR/gamepad/ ++- [ ] Service Workers (runtime, off by default) ++- [ ] IndexedDB (runtime, off by default) ++- [ ] Object Storage (runtime, off by default) ++- [ ] canvas (runtime, off by default) ++- [ ] WebGL (runtime, off by default) ++- [ ] Sensors ++ - [x] Battery (WebKit: Not Considering) ++ - [ ] microphone (runtime, off by default) ++ - [ ] video(webcam, screen, …) (runtime, off by default) ++ - … ++- [x] Web Bluetooth (WebKit: Not Considering) ++- [x] Web MIDI (WebKit: Not Considering) ++- [x] Web USB (WebKit: Not Considering) ++- [ ] Input Events ++ - [ ] Pointer Events ++ - [ ] Scroll Events ++ - [ ] Focus Events ++ - … ++- [ ] Timings ++ - Navigation Timing ++ - Resource Timing ++ - Performance Timeline: https://w3c.github.io/performance-timeline/ ++ - High Resolution Time ++ - … ++- [ ] Viewport size ++- [ ] Elements size ++- [ ] multimedia player stats (FPS, caching, …) ++- [ ] Payment Request: https://www.w3.org/TR/payment-request/ ++- [ ] Encoding Standard (explore): https://encoding.spec.whatwg.org/ ++ ++## Headers ++- [ ] referer ++- [ ] user-agent (spoof Intel Apple one?) ++- [ ] Cookies (runtime, off by default) ++ ++## HTML ++- [ ] noscript ++- [x] Link ping ++- [x] Link prefetch ++- [x] Link preloading ++- [x] Media preloading ++- [x] custom elements ++- [ ] DNS prefetch ++- [ ] srcset (images) ++ ++## CSS ++- [ ] Engine-specific extensions ++- [ ] WebFont (runtime, off by default) ++ ++## TLS ++- [ ] Disable known-bad ciphers ++- [ ] TOFU? ++- [ ] DANE ++ ++## Codebase ++- [ ] Remove Third-Party directory ++ ++ ++- https://webkit.org/status/ ++- https://github.com/WICG +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0007-Revert-Remove-support-for-PING-in-HTML-anchors-priva.patch b/patches/net-libs/webkit-gtk-2.22.6/0007-Revert-Remove-support-for-PING-in-HTML-anchors-priva.patch @@ -0,0 +1,480 @@ +From aa8f18d92cc4b753e1cdfe345b5bb0894bcdc2dc Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Wed, 13 Mar 2019 11:04:41 +0100 +Subject: [PATCH 7/8] Revert "Remove support for PING in HTML anchors + [privacy]" + +This reverts commit 84921f7b5e96acf31472acd7752ca77158b4c657. +--- + Source/WebCore/Sources.txt | 1 + + Source/WebCore/html/HTMLAnchorElement.cpp | 16 ++ + .../html/parser/XSSAuditorDelegate.cpp | 4 + + Source/WebCore/loader/DocumentLoader.cpp | 6 + + Source/WebCore/loader/PingLoader.cpp | 218 ++++++++++++++++++ + Source/WebCore/loader/PingLoader.h | 62 +++++ + .../loader/cache/CachedResourceLoader.cpp | 3 + + .../page/csp/ContentSecurityPolicy.cpp | 5 + + Source/WebKit/WebProcess/WebPage/WebPage.cpp | 3 + + 9 files changed, 318 insertions(+) + create mode 100644 Source/WebCore/loader/PingLoader.cpp + create mode 100644 Source/WebCore/loader/PingLoader.h + +diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt +index bbee4a0695..704e50c773 100644 +--- a/Source/WebCore/Sources.txt ++++ b/Source/WebCore/Sources.txt +@@ -1276,6 +1276,7 @@ loader/NavigationAction.cpp + loader/NavigationScheduler.cpp + loader/NetscapePlugInStreamLoader.cpp + loader/ServerTimingParser.cpp ++loader/PingLoader.cpp + loader/PolicyChecker.cpp + loader/ProgressTracker.cpp + loader/ResourceCryptographicDigest.cpp +diff --git a/Source/WebCore/html/HTMLAnchorElement.cpp b/Source/WebCore/html/HTMLAnchorElement.cpp +index e53302748d..0155fc70a1 100644 +--- a/Source/WebCore/html/HTMLAnchorElement.cpp ++++ b/Source/WebCore/html/HTMLAnchorElement.cpp +@@ -39,6 +39,7 @@ + #include "HTMLPictureElement.h" + #include "KeyboardEvent.h" + #include "MouseEvent.h" ++#include "PingLoader.h" + #include "PlatformMouseEvent.h" + #include "RenderImage.h" + #include "ResourceRequest.h" +@@ -363,6 +364,19 @@ bool HTMLAnchorElement::isLiveLink() const + return isLink() && treatLinkAsLiveForEventType(m_wasShiftKeyDownOnMouseDown ? MouseEventWithShiftKey : MouseEventWithoutShiftKey); + } + ++void HTMLAnchorElement::sendPings(const URL& destinationURL) ++{ ++ if (!document().frame()) ++ return; ++ ++ if (!hasAttributeWithoutSynchronization(pingAttr) || !document().settings().hyperlinkAuditingEnabled()) ++ return; ++ ++ SpaceSplitString pingURLs(attributeWithoutSynchronization(pingAttr), false); ++ for (unsigned i = 0; i < pingURLs.size(); i++) ++ PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL); ++} ++ + #if USE(SYSTEM_PREVIEW) + bool HTMLAnchorElement::isSystemPreviewLink() const + { +@@ -428,6 +442,8 @@ void HTMLAnchorElement::handleClick(Event& event) + ShouldSendReferrer shouldSendReferrer = hasRel(Relation::NoReferrer) ? NeverSendReferrer : MaybeSendReferrer; + auto newFrameOpenerPolicy = hasRel(Relation::NoOpener) ? std::make_optional(NewFrameOpenerPolicy::Suppress) : std::nullopt; + frame->loader().urlSelected(completedURL, target(), &event, LockHistory::No, LockBackForwardList::No, shouldSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate(), newFrameOpenerPolicy, downloadAttribute, systemPreviewInfo); ++ ++ sendPings(completedURL); + } + + HTMLAnchorElement::EventType HTMLAnchorElement::eventType(Event& event) +diff --git a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +index e8c69162aa..80b4213669 100644 +--- a/Source/WebCore/html/parser/XSSAuditorDelegate.cpp ++++ b/Source/WebCore/html/parser/XSSAuditorDelegate.cpp +@@ -35,6 +35,7 @@ + #include "FrameLoaderClient.h" + #include "HTMLParserIdioms.h" + #include "NavigationScheduler.h" ++#include "PingLoader.h" + #include <wtf/JSONValues.h> + #include <wtf/text/StringBuilder.h> + #include <wtf/text/CString.h> +@@ -103,6 +104,9 @@ void XSSAuditorDelegate::didBlockScript(const XSSInfo& xssInfo) + m_didSendNotifications = true; + + frameLoader.client().didDetectXSS(m_document.url(), xssInfo.m_didBlockEntirePage); ++ ++ if (!m_reportURL.isEmpty()) ++ PingLoader::sendViolationReport(*m_document.frame(), m_reportURL, generateViolationReport(xssInfo), ViolationReportType::XSSAuditor); + } + + if (xssInfo.m_didBlockEntirePage) +diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp +index 37cf9602b2..b9fc289660 100644 +--- a/Source/WebCore/loader/DocumentLoader.cpp ++++ b/Source/WebCore/loader/DocumentLoader.cpp +@@ -65,6 +65,7 @@ + #include "MemoryCache.h" + #include "NetworkLoadMetrics.h" + #include "Page.h" ++#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "PolicyChecker.h" + #include "ProgressTracker.h" +@@ -2057,6 +2058,11 @@ void DocumentLoader::addConsoleMessage(MessageSource messageSource, MessageLevel + static_cast<ScriptExecutionContext*>(m_frame->document())->addConsoleMessage(messageSource, messageLevel, message, requestIdentifier); + } + ++void DocumentLoader::sendCSPViolationReport(URL&& reportURL, Ref<FormData>&& report) ++{ ++ PingLoader::sendViolationReport(*m_frame, WTFMove(reportURL), WTFMove(report), ViolationReportType::ContentSecurityPolicy); ++} ++ + void DocumentLoader::enqueueSecurityPolicyViolationEvent(SecurityPolicyViolationEvent::Init&& eventInit) + { + m_frame->document()->enqueueSecurityPolicyViolationEvent(WTFMove(eventInit)); +diff --git a/Source/WebCore/loader/PingLoader.cpp b/Source/WebCore/loader/PingLoader.cpp +new file mode 100644 +index 0000000000..134e5560e6 +--- /dev/null ++++ b/Source/WebCore/loader/PingLoader.cpp +@@ -0,0 +1,218 @@ ++/* ++ * Copyright (C) 2010 Google Inc. All rights reserved. ++ * Copyright (C) 2015 Roopesh Chander (roop@roopc.net) ++ * Copyright (C) 2015-2017 Apple Inc. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following disclaimer ++ * in the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Google Inc. nor the names of its ++ * contributors may be used to endorse or promote products derived from ++ * this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ */ ++ ++#include "config.h" ++#include "PingLoader.h" ++ ++#include "ContentSecurityPolicy.h" ++#include "Document.h" ++#include "Frame.h" ++#include "FrameLoader.h" ++#include "FrameLoaderClient.h" ++#include "InspectorInstrumentation.h" ++#include "LoaderStrategy.h" ++#include "NetworkLoadMetrics.h" ++#include "Page.h" ++#include "PlatformStrategies.h" ++#include "ProgressTracker.h" ++#include "ResourceHandle.h" ++#include "ResourceLoadInfo.h" ++#include "ResourceRequest.h" ++#include "ResourceResponse.h" ++#include "SecurityOrigin.h" ++#include "SecurityPolicy.h" ++#include "UserContentController.h" ++#include <wtf/text/CString.h> ++ ++namespace WebCore { ++ ++#if !ENABLE(CONTENT_EXTENSIONS) ++ ++// Returns true if we should block the load. ++static inline bool processContentExtensionRulesForLoad(const Frame&, ResourceRequest&, ResourceType) ++{ ++ return false; ++} ++ ++#else ++ ++// Returns true if we should block the load. ++static bool processContentExtensionRulesForLoad(const Frame& frame, ResourceRequest& request, ResourceType resourceType) ++{ ++ auto* documentLoader = frame.loader().documentLoader(); ++ if (!documentLoader) ++ return false; ++ auto* page = frame.page(); ++ if (!page) ++ return false; ++ auto status = page->userContentProvider().processContentExtensionRulesForLoad(request.url(), resourceType, *documentLoader); ++ applyBlockedStatusToRequest(status, page, request); ++ return status.blockedLoad; ++} ++ ++#endif ++ ++void PingLoader::loadImage(Frame& frame, const URL& url) ++{ ++ ASSERT(frame.document()); ++ auto& document = *frame.document(); ++ ++ if (!document.securityOrigin().canDisplay(url)) { ++ FrameLoader::reportLocalLoadFailed(&frame, url); ++ return; ++ } ++ ++ ResourceRequest request(url); ++ if (processContentExtensionRulesForLoad(frame, request, ResourceType::Image)) ++ return; ++ ++ document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); ++ ++ request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); ++ ++ HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); ++ ++ String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), request.url(), frame.loader().outgoingReferrer()); ++ if (!referrer.isEmpty()) ++ request.setHTTPReferrer(referrer); ++ frame.loader().addExtraFieldsToSubresourceRequest(request); ++ ++ startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); ++} ++ ++// http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#hyperlink-auditing ++void PingLoader::sendPing(Frame& frame, const URL& pingURL, const URL& destinationURL) ++{ ++ ASSERT(frame.document()); ++ ++ if (!pingURL.protocolIsInHTTPFamily()) ++ return; ++ ++ ResourceRequest request(pingURL); ++ if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) ++ return; ++ ++ auto& document = *frame.document(); ++ document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); ++ ++ request.setHTTPMethod("POST"); ++ request.setHTTPContentType("text/ping"); ++ request.setHTTPBody(FormData::create("PING")); ++ request.setHTTPHeaderField(HTTPHeaderName::CacheControl, "max-age=0"); ++ ++ HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); ++ ++ frame.loader().addExtraFieldsToSubresourceRequest(request); ++ ++ auto& sourceOrigin = document.securityOrigin(); ++ FrameLoader::addHTTPOriginIfNeeded(request, sourceOrigin.toString()); ++ request.setHTTPHeaderField(HTTPHeaderName::PingTo, destinationURL); ++ if (!SecurityPolicy::shouldHideReferrer(pingURL, frame.loader().outgoingReferrer())) { ++ request.setHTTPHeaderField(HTTPHeaderName::PingFrom, document.url()); ++ if (!sourceOrigin.isSameSchemeHostPort(SecurityOrigin::create(pingURL).get())) { ++ String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), pingURL, frame.loader().outgoingReferrer()); ++ if (!referrer.isEmpty()) ++ request.setHTTPReferrer(referrer); ++ } ++ } ++ ++ startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::Yes); ++} ++ ++void PingLoader::sendViolationReport(Frame& frame, const URL& reportURL, Ref<FormData>&& report, ViolationReportType reportType) ++{ ++ ASSERT(frame.document()); ++ ++ ResourceRequest request(reportURL); ++ if (processContentExtensionRulesForLoad(frame, request, ResourceType::Raw)) ++ return; ++ ++ auto& document = *frame.document(); ++ document.contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(request, ContentSecurityPolicy::InsecureRequestType::Load); ++ ++ request.setHTTPMethod("POST"_s); ++ request.setHTTPBody(WTFMove(report)); ++ switch (reportType) { ++ case ViolationReportType::ContentSecurityPolicy: ++ request.setHTTPContentType("application/csp-report"_s); ++ break; ++ case ViolationReportType::XSSAuditor: ++ request.setHTTPContentType("application/json"_s); ++ break; ++ } ++ ++ bool removeCookies = true; ++ if (document.securityOrigin().isSameSchemeHostPort(SecurityOrigin::create(reportURL).get())) ++ removeCookies = false; ++ if (removeCookies) ++ request.setAllowCookies(false); ++ ++ HTTPHeaderMap originalRequestHeader = request.httpHeaderFields(); ++ ++ frame.loader().addExtraFieldsToSubresourceRequest(request); ++ ++ String referrer = SecurityPolicy::generateReferrerHeader(document.referrerPolicy(), reportURL, frame.loader().outgoingReferrer()); ++ if (!referrer.isEmpty()) ++ request.setHTTPReferrer(referrer); ++ ++ startPingLoad(frame, request, WTFMove(originalRequestHeader), ShouldFollowRedirects::No); ++} ++ ++void PingLoader::startPingLoad(Frame& frame, ResourceRequest& request, HTTPHeaderMap&& originalRequestHeaders, ShouldFollowRedirects shouldFollowRedirects) ++{ ++ unsigned long identifier = frame.page()->progress().createUniqueIdentifier(); ++ // FIXME: Why activeDocumentLoader? I would have expected documentLoader(). ++ // It seems like the PingLoader should be associated with the current ++ // Document in the Frame, but the activeDocumentLoader will be associated ++ // with the provisional DocumentLoader if there is a provisional ++ // DocumentLoader. ++ bool shouldUseCredentialStorage = frame.loader().client().shouldUseCredentialStorage(frame.loader().activeDocumentLoader(), identifier); ++ FetchOptions options; ++ options.credentials = shouldUseCredentialStorage ? FetchOptions::Credentials::Include : FetchOptions::Credentials::Omit; ++ options.redirect = shouldFollowRedirects == ShouldFollowRedirects::Yes ? FetchOptions::Redirect::Follow : FetchOptions::Redirect::Error; ++ ++ // FIXME: Move ping loads to normal subresource loading to get normal inspector request instrumentation hooks. ++ InspectorInstrumentation::willSendRequestOfType(&frame, identifier, frame.loader().activeDocumentLoader(), request, InspectorInstrumentation::LoadType::Ping); ++ ++ platformStrategies()->loaderStrategy()->startPingLoad(frame, request, WTFMove(originalRequestHeaders), options, [protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) { ++ if (!response.isNull()) ++ InspectorInstrumentation::didReceiveResourceResponse(protectedFrame, identifier, protectedFrame->loader().activeDocumentLoader(), response, nullptr); ++ if (error.isNull()) { ++ NetworkLoadMetrics emptyMetrics; ++ InspectorInstrumentation::didFinishLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, emptyMetrics, nullptr); ++ } else ++ InspectorInstrumentation::didFailLoading(protectedFrame.ptr(), protectedFrame->loader().activeDocumentLoader(), identifier, error); ++ }); ++} ++ ++} +diff --git a/Source/WebCore/loader/PingLoader.h b/Source/WebCore/loader/PingLoader.h +new file mode 100644 +index 0000000000..15489dcf04 +--- /dev/null ++++ b/Source/WebCore/loader/PingLoader.h +@@ -0,0 +1,62 @@ ++/* ++ * Copyright (C) 2010 Google Inc. All rights reserved. ++ * Copyright (C) 2017 Apple Inc. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following disclaimer ++ * in the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of Google Inc. nor the names of its ++ * contributors may be used to endorse or promote products derived from ++ * this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ */ ++ ++#pragma once ++ ++#include <wtf/Forward.h> ++#include <wtf/Ref.h> ++ ++namespace WebCore { ++ ++class FormData; ++class Frame; ++class HTTPHeaderMap; ++class URL; ++class ResourceRequest; ++ ++enum class ViolationReportType { ++ ContentSecurityPolicy, ++ XSSAuditor, ++}; ++ ++class PingLoader { ++public: ++ static void loadImage(Frame&, const URL&); ++ static void sendPing(Frame&, const URL& pingURL, const URL& destinationURL); ++ WEBCORE_EXPORT static void sendViolationReport(Frame&, const URL& reportURL, Ref<FormData>&& report, ViolationReportType); ++ ++private: ++ enum class ShouldFollowRedirects { No, Yes }; ++ static void startPingLoad(Frame&, ResourceRequest&, HTTPHeaderMap&& originalRequestHeaders, ShouldFollowRedirects); ++}; ++ ++} // namespace WebCore +diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +index 614cfee9b5..9d3d108113 100644 +--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp ++++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp +@@ -57,6 +57,7 @@ + #include "Logging.h" + #include "MemoryCache.h" + #include "Page.h" ++#include "PingLoader.h" + #include "PlatformStrategies.h" + #include "RenderElement.h" + #include "ResourceLoadInfo.h" +@@ -201,6 +202,8 @@ ResourceErrorOr<CachedResourceHandle<CachedImage>> CachedResourceLoader::request + if (Document* document = frame->document()) + request.upgradeInsecureRequestIfNeeded(*document); + URL requestURL = request.resourceRequest().url(); ++ if (requestURL.isValid() && canRequest(CachedResource::Type::ImageResource, requestURL, request, ForPreload::No)) ++ PingLoader::loadImage(*frame, requestURL); + return CachedResourceHandle<CachedImage> { }; + } + } +diff --git a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +index f1b1b51da1..9b966fa02b 100644 +--- a/Source/WebCore/page/csp/ContentSecurityPolicy.cpp ++++ b/Source/WebCore/page/csp/ContentSecurityPolicy.cpp +@@ -45,6 +45,7 @@ + #include "JSExecState.h" + #include "JSWindowProxy.h" + #include "ParsingUtilities.h" ++#include "PingLoader.h" + #include "ResourceRequest.h" + #include "RuntimeEnabledFeatures.h" + #include "SchemeRegistry.h" +@@ -758,6 +759,10 @@ void ContentSecurityPolicy::reportViolation(const String& effectiveViolatedDirec + if (m_client) { + for (const auto& url : reportURIs) + m_client->sendCSPViolationReport(URL { m_protectedURL, url }, report.copyRef()); ++ } else { ++ auto& document = downcast<Document>(*m_scriptExecutionContext); ++ for (const auto& url : reportURIs) ++ PingLoader::sendViolationReport(*document.frame(), URL { m_protectedURL, url }, report.copyRef(), ViolationReportType::ContentSecurityPolicy); + } + } + +diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +index e161de3599..5de12b10cc 100644 +--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp ++++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp +@@ -181,6 +181,7 @@ + #include <WebCore/NotImplemented.h> + #include <WebCore/Page.h> + #include <WebCore/PageConfiguration.h> ++#include <WebCore/PingLoader.h> + #include <WebCore/PlatformKeyboardEvent.h> + #include <WebCore/PluginDocument.h> + #include <WebCore/PrintContext.h> +@@ -3358,6 +3359,8 @@ void WebPage::sendCSPViolationReport(uint64_t frameID, const WebCore::URL& repor + auto report = reportData.takeData(); + if (!report) + return; ++ if (auto* frame = WebProcess::singleton().webFrame(frameID)) ++ PingLoader::sendViolationReport(*frame->coreFrame(), reportURL, report.releaseNonNull(), ViolationReportType::ContentSecurityPolicy); + } + + void WebPage::enqueueSecurityPolicyViolationEvent(uint64_t frameID, SecurityPolicyViolationEvent::Init&& eventInit) +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.22.6/0008-WebCore-html-ImageDocument.cpp-Enhance-Image-Viewer.patch b/patches/net-libs/webkit-gtk-2.22.6/0008-WebCore-html-ImageDocument.cpp-Enhance-Image-Viewer.patch @@ -0,0 +1,69 @@ +From 577a193afca81b7c367e84737efd39901f0cb136 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Wed, 13 Mar 2019 07:55:17 +0100 +Subject: [PATCH 8/8] WebCore/html/ImageDocument.cpp: Enhance Image Viewer + +The following chances allows to center the image when viewed and avoids +setting the now useless width/height attributes. +--- + Source/WebCore/html/ImageDocument.cpp | 24 ++++++++++-------------- + 1 file changed, 10 insertions(+), 14 deletions(-) + +diff --git a/Source/WebCore/html/ImageDocument.cpp b/Source/WebCore/html/ImageDocument.cpp +index 0518ff867d..cd2a0c67aa 100644 +--- a/Source/WebCore/html/ImageDocument.cpp ++++ b/Source/WebCore/html/ImageDocument.cpp +@@ -226,16 +226,17 @@ void ImageDocument::createDocumentStructure() + rootElement->appendChild(head); + + auto body = HTMLBodyElement::create(*this); +- body->setAttribute(styleAttr, "margin: 0px"); ++ body->setAttribute(styleAttr, "margin: 0; display: flex;"); + if (MIMETypeRegistry::isPDFMIMEType(document().loader()->responseMIMEType())) + body->setInlineStyleProperty(CSSPropertyBackgroundColor, "white"); + rootElement->appendChild(body); + + auto imageElement = ImageDocumentElement::create(*this); +- if (m_shouldShrinkImage) +- imageElement->setAttribute(styleAttr, "-webkit-user-select:none; display:block; margin:auto;"); +- else +- imageElement->setAttribute(styleAttr, "-webkit-user-select:none;"); ++ //imageElement->setAttribute(styleAttr, "-webkit-user-select:none; display:block; margin:auto; object-fit:contain;"); ++ imageElement->setInlineStyleProperty(CSSPropertyWebkitUserSelect, "none"); ++ imageElement->setInlineStyleProperty(CSSPropertyDisplay, "block"); ++ imageElement->setInlineStyleProperty(CSSPropertyMargin, "auto"); ++ imageElement->setInlineStyleProperty(CSSPropertyObjectFit, "contain"); + imageElement->setLoadManually(true); + imageElement->setSrc(url().string()); + imageElement->cachedImage()->setResponse(loader()->response()); +@@ -307,13 +308,9 @@ void ImageDocument::resizeImageToFit() + if (!m_imageElement) + return; + +- LayoutSize imageSize = this->imageSize(); +- +- float scale = this->scale(); +- m_imageElement->setWidth(static_cast<int>(imageSize.width() * scale)); +- m_imageElement->setHeight(static_cast<int>(imageSize.height() * scale)); +- + m_imageElement->setInlineStyleProperty(CSSPropertyCursor, CSSValueZoomIn); ++ m_imageElement->setInlineStyleProperty(CSSPropertyMaxWidth, "100%"); ++ m_imageElement->setInlineStyleProperty(CSSPropertyMaxHeight, "100%"); + } + + void ImageDocument::restoreImageSize() +@@ -321,9 +318,8 @@ void ImageDocument::restoreImageSize() + if (!m_imageElement || !m_imageSizeIsKnown) + return; + +- LayoutSize imageSize = this->imageSize(); +- m_imageElement->setWidth(imageSize.width().toUnsigned()); +- m_imageElement->setHeight(imageSize.height().toUnsigned()); ++ m_imageElement->removeInlineStyleProperty(CSSPropertyMaxWidth); ++ m_imageElement->removeInlineStyleProperty(CSSPropertyMaxHeight); + + if (imageFitsInWindow()) + m_imageElement->removeInlineStyleProperty(CSSPropertyCursor); +-- +2.19.2 + diff --git a/patches/net-libs/webkit-gtk-2.24.0/fix_textcodec_snprintf.patch b/patches/net-libs/webkit-gtk-2.24.0/fix_textcodec_snprintf.patch @@ -0,0 +1,12 @@ +diff --git a/var/tmp/portage/net-libs/webkit-gtk-2.24.0/work/webkitgtk-2.24.0/Source/WebCore/platform/text/TextCodec.cpp.old b/var/tmp/portage/net-libs/webkit-gtk-2.24.0/work/webkitgtk-2.24.0/Source/WebCore/platform/text/TextCodec.cpp +index 86b89cf..4be00ce 100644 +--- a/Source/WebCore/platform/text/TextCodec.cpp ++++ b/Source/WebCore/platform/text/TextCodec.cpp +@@ -28,6 +28,7 @@ + #include "TextCodec.h" + + #include <array> ++#include <stdio.h> + + namespace WebCore { + diff --git a/patches/net-libs/webkit-gtk-2.24.1/0001-TextCodec.cpp-Fix-snprintf.patch b/patches/net-libs/webkit-gtk-2.24.1/0001-TextCodec.cpp-Fix-snprintf.patch @@ -0,0 +1,24 @@ +From 968941cb7388aca44881a5b88ee9c52fd9d1c0b3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 04:08:33 +0200 +Subject: [PATCH] TextCodec.cpp: Fix snprintf + +--- + Source/WebCore/platform/text/TextCodec.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/text/TextCodec.cpp b/Source/WebCore/platform/text/TextCodec.cpp +index 86b89cfc4..4be00cee1 100644 +--- a/Source/WebCore/platform/text/TextCodec.cpp ++++ b/Source/WebCore/platform/text/TextCodec.cpp +@@ -28,6 +28,7 @@ + #include "TextCodec.h" + + #include <array> ++#include <stdio.h> + + namespace WebCore { + +-- +2.21.0 + diff --git a/patches/net-libs/webkit-gtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch b/patches/net-libs/webkit-gtk-2.24.2/0001-TextCodec.cpp-Fix-snprintf.patch @@ -0,0 +1,24 @@ +From 968941cb7388aca44881a5b88ee9c52fd9d1c0b3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 5 Apr 2019 04:08:33 +0200 +Subject: [PATCH] TextCodec.cpp: Fix snprintf + +--- + Source/WebCore/platform/text/TextCodec.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/text/TextCodec.cpp b/Source/WebCore/platform/text/TextCodec.cpp +index 86b89cfc4..4be00cee1 100644 +--- a/Source/WebCore/platform/text/TextCodec.cpp ++++ b/Source/WebCore/platform/text/TextCodec.cpp +@@ -28,6 +28,7 @@ + #include "TextCodec.h" + + #include <array> ++#include <stdio.h> + + namespace WebCore { + +-- +2.21.0 + diff --git a/patches/net-libs/webkit-gtk-2.24.2/webkit-gtk-2.24.3-fix-glib-crash-js-object.patch b/patches/net-libs/webkit-gtk-2.24.2/webkit-gtk-2.24.3-fix-glib-crash-js-object.patch @@ -0,0 +1,191 @@ +Index: trunk/Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp +=================================================================== +--- trunk/Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp (revision 245513) ++++ trunk/Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp (revision 245514) +@@ -208,5 +208,5 @@ + case G_TYPE_OBJECT: + if (auto* ptr = returnValue.data[0].v_pointer) +- return toRef(jscClassGetOrCreateJSWrapper(m_class.get(), ptr)); ++ return toRef(jscClassGetOrCreateJSWrapper(m_class.get(), context.get(), ptr)); + *exception = toRef(JSC::createTypeError(toJS(jsContext), "constructor returned null"_s)); + break; +Index: trunk/Source/JavaScriptCore/API/glib/JSCClass.cpp +=================================================================== +--- trunk/Source/JavaScriptCore/API/glib/JSCClass.cpp (revision 245513) ++++ trunk/Source/JavaScriptCore/API/glib/JSCClass.cpp (revision 245514) +@@ -57,5 +57,5 @@ + + typedef struct _JSCClassPrivate { +- JSCContext* context; ++ JSGlobalContextRef context; + CString name; + JSClassRef jsClass; +@@ -64,5 +64,4 @@ + JSCClass* parentClass; + JSC::Weak<JSC::JSObject> prototype; +- HashMap<CString, JSC::Weak<JSC::JSObject>> constructors; + } JSCClassPrivate; + +@@ -284,7 +283,4 @@ + + switch (propID) { +- case PROP_CONTEXT: +- g_value_set_object(value, jscClass->priv->context); +- break; + case PROP_NAME: + g_value_set_string(value, jscClass->priv->name.data()); +@@ -304,5 +300,5 @@ + switch (propID) { + case PROP_CONTEXT: +- jscClass->priv->context = JSC_CONTEXT(g_value_get_object(value)); ++ jscClass->priv->context = jscContextGetJSContext(JSC_CONTEXT(g_value_get_object(value))); + break; + case PROP_NAME: +@@ -348,5 +344,5 @@ + "JSC Context", + JSC_TYPE_CONTEXT, +- static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); ++ static_cast<GParamFlags>(WEBKIT_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY))); + + /** +@@ -493,9 +489,9 @@ + prototypeDefinition.className = prototypeName.get(); + JSClassRef prototypeClass = JSClassCreate(&prototypeDefinition); +- priv->prototype = jscContextGetOrCreateJSWrapper(priv->context, prototypeClass); ++ priv->prototype = jscContextGetOrCreateJSWrapper(context, prototypeClass); + JSClassRelease(prototypeClass); + + if (priv->parentClass) +- JSObjectSetPrototype(jscContextGetJSContext(priv->context), toRef(priv->prototype.get()), toRef(priv->parentClass->priv->prototype.get())); ++ JSObjectSetPrototype(jscContextGetJSContext(context), toRef(priv->prototype.get()), toRef(priv->parentClass->priv->prototype.get())); + return jscClass; + } +@@ -506,14 +502,14 @@ + } + +-JSC::JSObject* jscClassGetOrCreateJSWrapper(JSCClass* jscClass, gpointer wrappedObject) ++JSC::JSObject* jscClassGetOrCreateJSWrapper(JSCClass* jscClass, JSCContext* context, gpointer wrappedObject) + { + JSCClassPrivate* priv = jscClass->priv; +- return jscContextGetOrCreateJSWrapper(priv->context, priv->jsClass, toRef(priv->prototype.get()), wrappedObject, priv->destroyFunction); +-} +- +-JSGlobalContextRef jscClassCreateContextWithJSWrapper(JSCClass* jscClass, gpointer wrappedObject) ++ return jscContextGetOrCreateJSWrapper(context, priv->jsClass, toRef(priv->prototype.get()), wrappedObject, priv->destroyFunction); ++} ++ ++JSGlobalContextRef jscClassCreateContextWithJSWrapper(JSCClass* jscClass, JSCContext* context, gpointer wrappedObject) + { + JSCClassPrivate* priv = jscClass->priv; +- return jscContextCreateContextWithJSWrapper(priv->context, priv->jsClass, toRef(priv->prototype.get()), wrappedObject, priv->destroyFunction); ++ return jscContextCreateContextWithJSWrapper(context, priv->jsClass, toRef(priv->prototype.get()), wrappedObject, priv->destroyFunction); + } + +@@ -563,15 +559,15 @@ + closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); + JSCClassPrivate* priv = jscClass->priv; +- JSC::ExecState* exec = toJS(jscContextGetJSContext(priv->context)); ++ JSC::ExecState* exec = toJS(priv->context); + JSC::VM& vm = exec->vm(); + JSC::JSLockHolder locker(vm); + auto* functionObject = JSC::JSCCallbackFunction::create(vm, exec->lexicalGlobalObject(), String::fromUTF8(name), + JSC::JSCCallbackFunction::Type::Constructor, jscClass, WTFMove(closure), returnType, WTFMove(parameters)); +- auto constructor = jscContextGetOrCreateValue(priv->context, toRef(functionObject)); +- GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(priv->context, toRef(priv->prototype.get())); ++ auto context = jscContextGetOrCreate(priv->context); ++ auto constructor = jscContextGetOrCreateValue(context.get(), toRef(functionObject)); ++ GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(context.get(), toRef(priv->prototype.get())); + auto nonEnumerable = static_cast<JSCValuePropertyFlags>(JSC_VALUE_PROPERTY_CONFIGURABLE | JSC_VALUE_PROPERTY_WRITABLE); + jsc_value_object_define_property_data(constructor.get(), "prototype", nonEnumerable, prototype.get()); + jsc_value_object_define_property_data(prototype.get(), "constructor", nonEnumerable, constructor.get()); +- priv->constructors.set(name, functionObject); + return constructor; + } +@@ -712,11 +708,12 @@ + JSCClassPrivate* priv = jscClass->priv; + GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); +- JSC::ExecState* exec = toJS(jscContextGetJSContext(priv->context)); ++ JSC::ExecState* exec = toJS(priv->context); + JSC::VM& vm = exec->vm(); + JSC::JSLockHolder locker(vm); + auto* functionObject = toRef(JSC::JSCCallbackFunction::create(vm, exec->lexicalGlobalObject(), String::fromUTF8(name), + JSC::JSCCallbackFunction::Type::Method, jscClass, WTFMove(closure), returnType, WTFMove(parameters))); +- auto method = jscContextGetOrCreateValue(priv->context, functionObject); +- GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(priv->context, toRef(priv->prototype.get())); ++ auto context = jscContextGetOrCreate(priv->context); ++ auto method = jscContextGetOrCreateValue(context.get(), functionObject); ++ GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(context.get(), toRef(priv->prototype.get())); + auto nonEnumerable = static_cast<JSCValuePropertyFlags>(JSC_VALUE_PROPERTY_CONFIGURABLE | JSC_VALUE_PROPERTY_WRITABLE); + jsc_value_object_define_property_data(prototype.get(), name, nonEnumerable, method.get()); +@@ -863,5 +860,6 @@ + g_return_if_fail(priv->context); + +- GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(priv->context, toRef(priv->prototype.get())); ++ auto context = jscContextGetOrCreate(priv->context); ++ GRefPtr<JSCValue> prototype = jscContextGetOrCreateValue(context.get(), toRef(priv->prototype.get())); + jsc_value_object_define_property_accessor(prototype.get(), name, JSC_VALUE_PROPERTY_CONFIGURABLE, propertyType, getter, setter, userData, destroyNotify); + } +Index: trunk/Source/JavaScriptCore/API/glib/JSCClassPrivate.h +=================================================================== +--- trunk/Source/JavaScriptCore/API/glib/JSCClassPrivate.h (revision 245513) ++++ trunk/Source/JavaScriptCore/API/glib/JSCClassPrivate.h (revision 245514) +@@ -28,5 +28,5 @@ + GRefPtr<JSCClass> jscClassCreate(JSCContext*, const char*, JSCClass*, JSCClassVTable*, GDestroyNotify); + JSClassRef jscClassGetJSClass(JSCClass*); +-JSC::JSObject* jscClassGetOrCreateJSWrapper(JSCClass*, gpointer); +-JSGlobalContextRef jscClassCreateContextWithJSWrapper(JSCClass*, gpointer); ++JSC::JSObject* jscClassGetOrCreateJSWrapper(JSCClass*, JSCContext*, gpointer); ++JSGlobalContextRef jscClassCreateContextWithJSWrapper(JSCClass*, JSCContext*, gpointer); + void jscClassInvalidate(JSCClass*); +Index: trunk/Source/JavaScriptCore/API/glib/JSCContext.cpp +=================================================================== +--- trunk/Source/JavaScriptCore/API/glib/JSCContext.cpp (revision 245513) ++++ trunk/Source/JavaScriptCore/API/glib/JSCContext.cpp (revision 245514) +@@ -879,5 +879,5 @@ + + JSRetainPtr<JSGlobalContextRef> objectContext(Adopt, +- instance ? jscClassCreateContextWithJSWrapper(objectClass, instance) : JSGlobalContextCreateInGroup(jscVirtualMachineGetContextGroup(context->priv->vm.get()), nullptr)); ++ instance ? jscClassCreateContextWithJSWrapper(objectClass, context, instance) : JSGlobalContextCreateInGroup(jscVirtualMachineGetContextGroup(context->priv->vm.get()), nullptr)); + JSC::ExecState* exec = toJS(objectContext.get()); + JSC::VM& vm = exec->vm(); +Index: trunk/Source/JavaScriptCore/API/glib/JSCValue.cpp +=================================================================== +--- trunk/Source/JavaScriptCore/API/glib/JSCValue.cpp (revision 245513) ++++ trunk/Source/JavaScriptCore/API/glib/JSCValue.cpp (revision 245514) +@@ -603,5 +603,5 @@ + g_return_val_if_fail(!instance || JSC_IS_CLASS(jscClass), nullptr); + +- return jscContextGetOrCreateValue(context, instance ? toRef(jscClassGetOrCreateJSWrapper(jscClass, instance)) : JSObjectMake(jscContextGetJSContext(context), nullptr, nullptr)).leakRef(); ++ return jscContextGetOrCreateValue(context, instance ? toRef(jscClassGetOrCreateJSWrapper(jscClass, context, instance)) : JSObjectMake(jscContextGetJSContext(context), nullptr, nullptr)).leakRef(); + } + +Index: trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp +=================================================================== +--- trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp (revision 245513) ++++ trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp (revision 245514) +@@ -180,4 +180,11 @@ + GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult)); + g_assert_cmpstr(valueString.get(), ==, "Foo"); ++ ++ javascriptResult = test->runJavaScriptAndWaitUntilFinished("var f = new GFile('.'); f.path();", &error.outPtr()); ++ g_assert_nonnull(javascriptResult); ++ g_assert_no_error(error.get()); ++ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult)); ++ GUniquePtr<char> currentDirectory(g_get_current_dir()); ++ g_assert_cmpstr(valueString.get(), ==, currentDirectory.get()); + } + +Index: trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp +=================================================================== +--- trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp (revision 245513) ++++ trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp (revision 245514) +@@ -428,4 +428,9 @@ + GRefPtr<JSCValue> function = adoptGRef(jsc_value_new_function(jsContext.get(), "echo", G_CALLBACK(echoCallback), NULL, NULL, G_TYPE_STRING, 1, G_TYPE_STRING)); + jsc_context_set_value(jsContext.get(), "echo", function.get()); ++ ++ auto* fileClass = jsc_context_register_class(jsContext.get(), "GFile", nullptr, nullptr, static_cast<GDestroyNotify>(g_object_unref)); ++ GRefPtr<JSCValue> constructor = adoptGRef(jsc_class_add_constructor(fileClass, "GFile", G_CALLBACK(g_file_new_for_path), nullptr, nullptr, G_TYPE_OBJECT, 1, G_TYPE_STRING)); ++ jsc_class_add_method(fileClass, "path", G_CALLBACK(g_file_get_path), nullptr, nullptr, G_TYPE_STRING, 0, G_TYPE_NONE); ++ jsc_context_set_value(jsContext.get(), "GFile", constructor.get()); + } + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0002-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkit-gtk-2.26.2/0002-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,55 @@ +From ae8bbb9f434b60643ce757ba02f5bc70f898016e Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 02/14] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index bbf8c38a2..839ad3011 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -774,26 +774,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -805,9 +785,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkit-gtk-2.26.2/0003-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,26 @@ +From d6550278f82b14c49724bd94c0472baa802bfce3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 03/14] CMakeLists.txt: Explain which variable is used to + define a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9b5f7a782..6ead6bdcf 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkit-gtk-2.26.2/0004-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,25 @@ +From 37cab94ddd521ceb478f02ee81c2506bbf94f1a7 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 04/14] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index 5f269e8b1..f9543f0e3 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -74,6 +74,7 @@ endif () + # Public options specific to the GTK port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0009-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch b/patches/net-libs/webkit-gtk-2.26.2/0009-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch @@ -0,0 +1,26 @@ +From 1a56dc3d541fa01107f803350b09150e6960e95a Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 20 Jun 2019 23:31:40 +0200 +Subject: [PATCH 09/14] WebKitWebViewGtk.cpp: Allow the user to override the + advertised MIME filter + +--- + Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +index af71e3b4d..55113c264 100644 +--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp ++++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +@@ -79,7 +79,7 @@ gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRe + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), TRUE); + + if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request)) +- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); ++ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection); + + if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0011-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch b/patches/net-libs/webkit-gtk-2.26.2/0011-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch @@ -0,0 +1,38 @@ +From 803634b6b013235898f47daa4020128cbb57ee4a Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 29 Jul 2019 16:41:43 +0200 +Subject: [PATCH 11/14] ProcessLauncher::launchProcess: Do not g_error() on me + +--- + .../UIProcess/Launcher/glib/ProcessLauncherGLib.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +index da8ff67fe..06cf973ff 100644 +--- a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +@@ -33,6 +33,7 @@ + #include <errno.h> + #include <fcntl.h> + #include <glib.h> ++#include <glib/gprintf.h> + #include <wtf/FileSystem.h> + #include <wtf/RunLoop.h> + #include <wtf/UniStdExtras.h> +@@ -167,8 +168,11 @@ void ProcessLauncher::launchProcess() + #endif + process = adoptGRef(g_subprocess_launcher_spawnv(launcher.get(), argv, &error.outPtr())); + +- if (!process.get()) +- g_error("Unable to fork a new child process: %s", error->message); ++ if (!process.get()) { ++ g_fprintf(stderr, "WebKit: Unable to fork a new child process: %s", error->message); ++ //TODO: try to clean before returning ++ return; ++ } + + const char* processIdStr = g_subprocess_get_identifier(process.get()); + m_processIdentifier = g_ascii_strtoll(processIdStr, nullptr, 0); +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0013-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch b/patches/net-libs/webkit-gtk-2.26.2/0013-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch @@ -0,0 +1,24 @@ +From 00ef6a74df92d31c2947d406a3ed3361f2166172 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 16 Dec 2019 19:24:28 +0100 +Subject: [PATCH 13/14] GStreamerRegistryScanner.cpp: register audio/x-mod + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index 84870ccc9..f69415a9a 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -204,6 +204,7 @@ void GStreamerRegistryScanner::initialize() + {AudioDecoder, "audio/x-sid", { }, { }}, + {AudioDecoder, "audio/x-speex", {"audio/speex", "audio/x-speex"}, { }}, + {AudioDecoder, "audio/x-wavpack", {"audio/x-wavpack"}, { }}, ++ {AudioDecoder, "audio/x-mod", {"audio/x-mod"}, { }}, + {VideoDecoder, "video/mpeg, mpegversion=(int){1,2}, systemstream=(boolean)false", {"video/mpeg"}, {"mpeg"}}, + {VideoDecoder, "video/mpegts", { }, { }}, + {VideoDecoder, "video/x-dirac", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.2/0014-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch b/patches/net-libs/webkit-gtk-2.26.2/0014-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch @@ -0,0 +1,24 @@ +From 9dbdfaedbc2e1d67b0c4a9102151947bdeb2d9ff Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 6 Jan 2020 04:22:46 +0100 +Subject: [PATCH 14/14] GStreamerRegistryScanner.cpp: Add MPEG-DASH support + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index f69415a9a..7d06be495 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -213,6 +213,7 @@ void GStreamerRegistryScanner::initialize() + {VideoDecoder, "video/x-msvideocodec", {"video/x-msvideo"}, { }}, + {Demuxer, "application/vnd.rn-realmedia", { }, { }}, + {Demuxer, "application/x-3gp", { }, { }}, ++ {Demuxer, "application/x-dash", {"application/dash+xml"}, { }}, + {Demuxer, "application/x-hls", {"application/vnd.apple.mpegurl", "application/x-mpegurl"}, { }}, + {Demuxer, "application/x-pn-realaudio", { }, { }}, + {Demuxer, "audio/x-aiff", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0001-Fixes-for-musl.patch b/patches/net-libs/webkit-gtk-2.26.3/0001-Fixes-for-musl.patch @@ -0,0 +1,165 @@ +From f9b0ff92a9c173e2b73f2cb897153b31e46e0276 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 28 Jan 2020 18:34:42 +0100 +Subject: [PATCH 01/15] Fixes for musl + +Grabbed from CarbsLinux + +Original upstream: Alpine Linux + +Source: @q66, @pullmoll +Original upstream: Alpine Linux +Reason: fixing machine context access for musl libc; reduce stack/heap usage for jsc; fix some overly restrictive __GLIBC__ checks + +Updated for latest webkit2gtk. +--- + Source/JavaScriptCore/runtime/MachineContext.h | 10 +++++----- + Source/JavaScriptCore/runtime/Options.h | 16 +++++++++++++--- + .../compiler/preprocessor/ExpressionParser.cpp | 4 ++-- + Source/WTF/wtf/Platform.h | 2 +- + Source/WebCore/xml/XPathGrammar.cpp | 4 ++-- + 5 files changed, 23 insertions(+), 13 deletions(-) + +diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h +index 823964c2..e8062952 100644 +--- a/Source/JavaScriptCore/runtime/MachineContext.h ++++ b/Source/JavaScriptCore/runtime/MachineContext.h +@@ -188,7 +188,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + #if CPU(X86) + return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]); +@@ -335,7 +335,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -482,7 +482,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -639,7 +639,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +@@ -756,7 +756,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext) + #error Unknown Architecture + #endif + +-#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__) ++#elif OS(FUCHSIA) || defined(__linux__) + + // The following sequence depends on glibc's sys/ucontext.h. + #if CPU(X86) +diff --git a/Source/JavaScriptCore/runtime/Options.h b/Source/JavaScriptCore/runtime/Options.h +index 44fbc30c..271e0652 100644 +--- a/Source/JavaScriptCore/runtime/Options.h ++++ b/Source/JavaScriptCore/runtime/Options.h +@@ -112,6 +112,16 @@ constexpr bool enableWebAssemblyStreamingApi = true; + constexpr bool enableWebAssemblyStreamingApi = false; + #endif + ++#if defined(__GLIBC__) ++constexpr unsigned jscMaxPerThreadStack = 4 * MB; ++constexpr unsigned jscSoftReservedZoneSize = 128 * KB; ++constexpr unsigned jscReservedZoneSize = 64 * KB; ++#else ++constexpr unsigned jscMaxPerThreadStack = 80 * KB; ++constexpr unsigned jscSoftReservedZoneSize = 32 * KB; ++constexpr unsigned jscReservedZoneSize = 16 * KB; ++#endif ++ + #define JSC_OPTIONS(v) \ + v(bool, useKernTCSM, true, Normal, "Note: this needs to go before other options since they depend on this value.") \ + v(bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \ +@@ -127,9 +137,9 @@ constexpr bool enableWebAssemblyStreamingApi = false; + \ + v(bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \ + \ +- v(unsigned, maxPerThreadStackUsage, 4 * MB, Normal, "Max allowed stack usage by the VM") \ +- v(unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ +- v(unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ ++ v(unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, Normal, "Max allowed stack usage by the VM") \ ++ v(unsigned, softReservedZoneSize, jscSoftReservedZoneSize, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \ ++ v(unsigned, reservedZoneSize, jscReservedZoneSize, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \ + \ + v(bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \ + v(unsigned, jitMemoryReservationSize, 0, Normal, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \ +diff --git a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp +index 5da6a22d..b380fb71 100644 +--- a/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp ++++ b/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp +@@ -728,7 +728,7 @@ int yydebug; + #if YYERROR_VERBOSE + + # ifndef yystrlen +-# if defined __GLIBC__ && defined _STRING_H ++# if defined __linux__ && defined _STRING_H + # define yystrlen strlen + # else + /* Return the length of YYSTR. */ +@@ -743,7 +743,7 @@ static YYSIZE_T yystrlen(const char *yystr) + # endif + + # ifndef yystpcpy +-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE + # define yystpcpy stpcpy + # else + /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 0e6faaa8..f8c6d684 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -707,7 +707,7 @@ + + #endif /* OS(DARWIN) */ + +-#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS))) ++#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__linux__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS))) + #define HAVE_MACHINE_CONTEXT 1 + #endif + +diff --git a/Source/WebCore/xml/XPathGrammar.cpp b/Source/WebCore/xml/XPathGrammar.cpp +index 5e069d79..c58413c8 100644 +--- a/Source/WebCore/xml/XPathGrammar.cpp ++++ b/Source/WebCore/xml/XPathGrammar.cpp +@@ -966,7 +966,7 @@ int yydebug; + #if YYERROR_VERBOSE + + # ifndef yystrlen +-# if defined __GLIBC__ && defined _STRING_H ++# if defined __linux__ && defined _STRING_H + # define yystrlen strlen + # else + /* Return the length of YYSTR. */ +@@ -989,7 +989,7 @@ yystrlen (yystr) + # endif + + # ifndef yystpcpy +-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# if defined __linux__ && defined _STRING_H && defined _GNU_SOURCE + # define yystpcpy stpcpy + # else + /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkit-gtk-2.26.3/0003-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,55 @@ +From a6b51c5b59e46aeb9a527c855d22d7e8f27b45f8 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 03/15] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index bbf8c38a..839ad301 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -774,26 +774,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -805,9 +785,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkit-gtk-2.26.3/0004-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,26 @@ +From 0fc5b398c15d6b051f6acf873c76e650bede29aa Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 04/15] CMakeLists.txt: Explain which variable is used to + define a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9b5f7a78..6ead6bdc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkit-gtk-2.26.3/0005-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,25 @@ +From 98bdef76f9fbce2bc8a7bf43b803a3750bbaa358 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 05/15] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index 0db51e8a..c9ef7e79 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -74,6 +74,7 @@ endif () + # Public options specific to the GTK port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch b/patches/net-libs/webkit-gtk-2.26.3/0010-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch @@ -0,0 +1,26 @@ +From b3c55b5250e62660411bdb6ba738c63e7adde0b3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 20 Jun 2019 23:31:40 +0200 +Subject: [PATCH 10/15] WebKitWebViewGtk.cpp: Allow the user to override the + advertised MIME filter + +--- + Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +index af71e3b4..55113c26 100644 +--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp ++++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +@@ -79,7 +79,7 @@ gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRe + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), TRUE); + + if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request)) +- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); ++ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection); + + if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0013-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch b/patches/net-libs/webkit-gtk-2.26.3/0013-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch @@ -0,0 +1,38 @@ +From 1b29d6a4eadfc9e9d466f39461710502e67778bd Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 29 Jul 2019 16:41:43 +0200 +Subject: [PATCH 13/15] ProcessLauncher::launchProcess: Do not g_error() on me + +--- + .../UIProcess/Launcher/glib/ProcessLauncherGLib.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +index da8ff67f..06cf973f 100644 +--- a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +@@ -33,6 +33,7 @@ + #include <errno.h> + #include <fcntl.h> + #include <glib.h> ++#include <glib/gprintf.h> + #include <wtf/FileSystem.h> + #include <wtf/RunLoop.h> + #include <wtf/UniStdExtras.h> +@@ -167,8 +168,11 @@ void ProcessLauncher::launchProcess() + #endif + process = adoptGRef(g_subprocess_launcher_spawnv(launcher.get(), argv, &error.outPtr())); + +- if (!process.get()) +- g_error("Unable to fork a new child process: %s", error->message); ++ if (!process.get()) { ++ g_fprintf(stderr, "WebKit: Unable to fork a new child process: %s", error->message); ++ //TODO: try to clean before returning ++ return; ++ } + + const char* processIdStr = g_subprocess_get_identifier(process.get()); + m_processIdentifier = g_ascii_strtoll(processIdStr, nullptr, 0); +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0014-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch b/patches/net-libs/webkit-gtk-2.26.3/0014-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch @@ -0,0 +1,24 @@ +From 12f2af3954251d9467a6da5ef1af35225ca8f86d Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 16 Dec 2019 19:24:28 +0100 +Subject: [PATCH 14/15] GStreamerRegistryScanner.cpp: register audio/x-mod + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index 84870ccc..f69415a9 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -204,6 +204,7 @@ void GStreamerRegistryScanner::initialize() + {AudioDecoder, "audio/x-sid", { }, { }}, + {AudioDecoder, "audio/x-speex", {"audio/speex", "audio/x-speex"}, { }}, + {AudioDecoder, "audio/x-wavpack", {"audio/x-wavpack"}, { }}, ++ {AudioDecoder, "audio/x-mod", {"audio/x-mod"}, { }}, + {VideoDecoder, "video/mpeg, mpegversion=(int){1,2}, systemstream=(boolean)false", {"video/mpeg"}, {"mpeg"}}, + {VideoDecoder, "video/mpegts", { }, { }}, + {VideoDecoder, "video/x-dirac", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.26.3/0015-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch b/patches/net-libs/webkit-gtk-2.26.3/0015-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch @@ -0,0 +1,24 @@ +From ac97701316d5c50f57f1b437a019c0ffa276f48b Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 6 Jan 2020 04:22:46 +0100 +Subject: [PATCH 15/15] GStreamerRegistryScanner.cpp: Add MPEG-DASH support + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index f69415a9..7d06be49 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -213,6 +213,7 @@ void GStreamerRegistryScanner::initialize() + {VideoDecoder, "video/x-msvideocodec", {"video/x-msvideo"}, { }}, + {Demuxer, "application/vnd.rn-realmedia", { }, { }}, + {Demuxer, "application/x-3gp", { }, { }}, ++ {Demuxer, "application/x-dash", {"application/dash+xml"}, { }}, + {Demuxer, "application/x-hls", {"application/vnd.apple.mpegurl", "application/x-mpegurl"}, { }}, + {Demuxer, "application/x-pn-realaudio", { }, { }}, + {Demuxer, "audio/x-aiff", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch b/patches/net-libs/webkit-gtk-2.28.0/0001-Source-WebInspectorUI-UserInterface-Views-ConsoleMes.patch @@ -0,0 +1,55 @@ +From a4835c11f19b23a26dd005e12140ce1423ee6dc3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Fri, 2 Nov 2018 17:59:57 +0100 +Subject: [PATCH 1/8] + Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js: Remove %c + support in the console + +--- + .../UserInterface/Views/ConsoleMessageView.js | 23 ------------------- + 1 file changed, 23 deletions(-) + +diff --git a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +index 93b6106c..4b512a6d 100644 +--- a/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js ++++ b/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js +@@ -791,26 +791,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + } + + var currentStyle = null; +- function styleFormatter(obj) +- { +- currentStyle = {}; +- var buffer = document.createElement("span"); +- buffer.setAttribute("style", obj.description); +- for (var i = 0; i < buffer.style.length; i++) { +- var property = buffer.style[i]; +- if (isWhitelistedProperty(property)) +- currentStyle[property] = buffer.style[property]; +- } +- } +- +- function isWhitelistedProperty(property) +- { +- for (var prefix of ["background", "border", "color", "font", "line", "margin", "padding", "text"]) { +- if (property.startsWith(prefix) || property.startsWith("-webkit-" + prefix)) +- return true; +- } +- return false; +- } + + // Firebug uses %o for formatting objects. + var formatters = {}; +@@ -822,9 +802,6 @@ WI.ConsoleMessageView = class ConsoleMessageView extends WI.Object + formatters.i = integerFormatter; + formatters.d = integerFormatter; + +- // Firebug uses %c for styling the message. +- formatters.c = styleFormatter; +- + // Support %O to force object formatting, instead of the type-based %o formatting. + formatters.O = parameterFormatter.bind(this, true); + +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0002-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch b/patches/net-libs/webkit-gtk-2.28.0/0002-CMakeLists.txt-Explain-which-variable-is-used-to-def.patch @@ -0,0 +1,26 @@ +From af330123af933d829594ff32fac44e0217324350 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:09:22 +0100 +Subject: [PATCH 2/8] CMakeLists.txt: Explain which variable is used to define + a port if undefined + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9b5f7a78..6ead6bdc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,7 @@ set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_ + + list(FIND ALL_PORTS ${PORT} RET) + if (${RET} EQUAL -1) +- message(FATAL_ERROR "Please choose which WebKit port to build (one of ${ALL_PORTS})") ++ message(FATAL_ERROR "Please define a PORT to build with (one of ${ALL_PORTS})") + endif () + + string(TOLOWER ${PORT} WEBKIT_PORT_DIR) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0003-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch b/patches/net-libs/webkit-gtk-2.28.0/0003-Source-cmake-OptionsGTK.cmake-Add-note-on-fixing-CMa.patch @@ -0,0 +1,25 @@ +From a442e246242efa98f1f2e1e4efdbde48b4fb27a9 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 6 Nov 2018 15:13:28 +0100 +Subject: [PATCH 3/8] Source/cmake/OptionsGTK.cmake: Add note on fixing CMake + defaults + +--- + Source/cmake/OptionsGTK.cmake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake +index e8d9d058..1cc433bc 100644 +--- a/Source/cmake/OptionsGTK.cmake ++++ b/Source/cmake/OptionsGTK.cmake +@@ -74,6 +74,7 @@ endif () + # Public options specific to the GTK port. Do not add any options here unless + # there is a strong reason we should support changing the value of the option, + # and the option is not relevant to any other WebKit ports. ++# XXX: Do not default to optionnal stuff like USE_LIBSECRET to REQUIRED + WEBKIT_OPTION_DEFINE(ENABLE_GLES2 "Whether to enable OpenGL ES 2.0." PUBLIC ${ENABLE_GLES2_DEFAULT}) + WEBKIT_OPTION_DEFINE(ENABLE_GTKDOC "Whether or not to use generate gtkdoc." PUBLIC OFF) + WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspection." PUBLIC ON) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0004-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch b/patches/net-libs/webkit-gtk-2.28.0/0004-Source-WebCore-page-RuntimeEnabledFeatures.h-hard-di.patch @@ -0,0 +1,72 @@ +From 1644485ea3ecc9c935b444ec8b80bba23484a86c Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 2 Dec 2018 02:33:31 +0100 +Subject: [PATCH 4/8] Source/WebCore/page/RuntimeEnabledFeatures.h: + hard-disable some features + +--- + Source/WebCore/page/RuntimeEnabledFeatures.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/Source/WebCore/page/RuntimeEnabledFeatures.h b/Source/WebCore/page/RuntimeEnabledFeatures.h +index d5ef93a7..9a58b8a3 100644 +--- a/Source/WebCore/page/RuntimeEnabledFeatures.h ++++ b/Source/WebCore/page/RuntimeEnabledFeatures.h +@@ -48,13 +48,13 @@ public: + bool blankAnchorTargetImpliesNoOpenerEnabled() const { return m_blankAnchorTargetImpliesNoOpenerEnabled; } + + void setLinkPreloadEnabled(bool isEnabled) { m_isLinkPreloadEnabled = isEnabled; } +- bool linkPreloadEnabled() const { return m_isLinkPreloadEnabled; } ++ bool linkPreloadEnabled() const { return false; } + + void setLinkPrefetchEnabled(bool isEnabled) { m_isLinkPrefetchEnabled = isEnabled; } +- bool linkPrefetchEnabled() const { return m_isLinkPrefetchEnabled; } ++ bool linkPrefetchEnabled() const { return false; } + + void setMediaPreloadingEnabled(bool isEnabled) { m_isMediaPreloadingEnabled = isEnabled; } +- bool mediaPreloadingEnabled() const { return m_isMediaPreloadingEnabled; } ++ bool mediaPreloadingEnabled() const { return false; } + + void setResourceTimingEnabled(bool isEnabled) { m_isResourceTimingEnabled = isEnabled; } + bool resourceTimingEnabled() const { return m_isResourceTimingEnabled; } +@@ -68,19 +68,19 @@ public: + bool shadowDOMEnabled() const { return m_isShadowDOMEnabled; } + + void setInputEventsEnabled(bool isEnabled) { m_inputEventsEnabled = isEnabled; } +- bool inputEventsEnabled() const { return m_inputEventsEnabled; } ++ bool inputEventsEnabled() const { return false; } + + void setInteractiveFormValidationEnabled(bool isEnabled) { m_isInteractiveFormValidationEnabled = isEnabled; } + bool interactiveFormValidationEnabled() const { return m_isInteractiveFormValidationEnabled; } + + void setCustomElementsEnabled(bool areEnabled) { m_areCustomElementsEnabled = areEnabled; } +- bool customElementsEnabled() const { return m_areCustomElementsEnabled; } ++ bool customElementsEnabled() const { return false; } + + void setMenuItemElementEnabled(bool isEnabled) { m_isMenuItemElementEnabled = isEnabled; } + bool menuItemElementEnabled() const { return m_isMenuItemElementEnabled; } + + void setDirectoryUploadEnabled(bool isEnabled) { m_isDirectoryUploadEnabled = isEnabled; } +- bool directoryUploadEnabled() const { return m_isDirectoryUploadEnabled; } ++ bool directoryUploadEnabled() const { return false; } + + void setDataTransferItemsEnabled(bool areEnabled) { m_areDataTransferItemsEnabled = areEnabled; } + bool dataTransferItemsEnabled() const { return m_areDataTransferItemsEnabled; } +@@ -326,12 +326,12 @@ public: + + #if ENABLE(ENCRYPTED_MEDIA) + void setEncryptedMediaAPIEnabled(bool isEnabled) { m_encryptedMediaAPIEnabled = isEnabled; } +- bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; } ++ bool encryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(LEGACY_ENCRYPTED_MEDIA) + void setLegacyEncryptedMediaAPIEnabled(bool isEnabled) { m_legacyEncryptedMediaAPIEnabled = isEnabled; } +- bool legacyEncryptedMediaAPIEnabled() const { return m_legacyEncryptedMediaAPIEnabled; } ++ bool legacyEncryptedMediaAPIEnabled() const { return false; } + #endif + + #if ENABLE(SERVICE_WORKER) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0005-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch b/patches/net-libs/webkit-gtk-2.28.0/0005-WebKitWebViewGtk.cpp-Allow-the-user-to-override-the-.patch @@ -0,0 +1,26 @@ +From 0b88c6fd3fbdfcb50e1667cd1cbbfa307b1dee80 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 20 Jun 2019 23:31:40 +0200 +Subject: [PATCH 5/8] WebKitWebViewGtk.cpp: Allow the user to override the + advertised MIME filter + +--- + Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +index af71e3b4..55113c26 100644 +--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp ++++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp +@@ -79,7 +79,7 @@ gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRe + gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(dialog), TRUE); + + if (GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(request)) +- gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); ++ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), allowsMultipleSelection); + + if (const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(request)) +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0006-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch b/patches/net-libs/webkit-gtk-2.28.0/0006-ProcessLauncher-launchProcess-Do-not-g_error-on-me.patch @@ -0,0 +1,38 @@ +From 92f36499c7188c6675b71e189028c3bbc8464e73 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 29 Jul 2019 16:41:43 +0200 +Subject: [PATCH 6/8] ProcessLauncher::launchProcess: Do not g_error() on me + +--- + .../UIProcess/Launcher/glib/ProcessLauncherGLib.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +index 1986ffe4..0e452dac 100644 +--- a/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp +@@ -34,6 +34,7 @@ + #include <errno.h> + #include <fcntl.h> + #include <glib.h> ++#include <glib/gprintf.h> + #include <wtf/FileSystem.h> + #include <wtf/RunLoop.h> + #include <wtf/UniStdExtras.h> +@@ -202,8 +203,11 @@ void ProcessLauncher::launchProcess() + #endif // OS(LINUX) + process = adoptGRef(g_subprocess_launcher_spawnv(launcher.get(), argv, &error.outPtr())); + +- if (!process.get()) +- g_error("Unable to fork a new child process: %s", error->message); ++ if (!process.get()) { ++ g_fprintf(stderr, "WebKit: Unable to fork a new child process: %s", error->message); ++ //TODO: try to clean before returning ++ return; ++ } + + const char* processIdStr = g_subprocess_get_identifier(process.get()); + m_processIdentifier = g_ascii_strtoll(processIdStr, nullptr, 0); +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0007-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch b/patches/net-libs/webkit-gtk-2.28.0/0007-GStreamerRegistryScanner.cpp-register-audio-x-mod.patch @@ -0,0 +1,24 @@ +From 3edc26635daa3755fb2948de759a081af390720b Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 16 Dec 2019 19:24:28 +0100 +Subject: [PATCH 7/8] GStreamerRegistryScanner.cpp: register audio/x-mod + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index 1afcff0d..edee35ab 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -204,6 +204,7 @@ void GStreamerRegistryScanner::initialize() + {AudioDecoder, "audio/x-sid", { }, { }}, + {AudioDecoder, "audio/x-speex", {"audio/speex", "audio/x-speex"}, { }}, + {AudioDecoder, "audio/x-wavpack", {"audio/x-wavpack"}, { }}, ++ {AudioDecoder, "audio/x-mod", {"audio/x-mod"}, { }}, + {VideoDecoder, "video/mpeg, mpegversion=(int){1,2}, systemstream=(boolean)false", {"video/mpeg"}, {"mpeg"}}, + {VideoDecoder, "video/mpegts", { }, { }}, + {VideoDecoder, "video/x-dirac", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk-2.28.0/0008-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch b/patches/net-libs/webkit-gtk-2.28.0/0008-GStreamerRegistryScanner.cpp-Add-MPEG-DASH-support.patch @@ -0,0 +1,24 @@ +From 1ddc916b3c62ab17bb211b7a013e4e5062e24310 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 6 Jan 2020 04:22:46 +0100 +Subject: [PATCH 8/8] GStreamerRegistryScanner.cpp: Add MPEG-DASH support + +--- + .../platform/graphics/gstreamer/GStreamerRegistryScanner.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +index edee35ab..dc906b1c 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp +@@ -213,6 +213,7 @@ void GStreamerRegistryScanner::initialize() + {VideoDecoder, "video/x-msvideocodec", {"video/x-msvideo"}, { }}, + {Demuxer, "application/vnd.rn-realmedia", { }, { }}, + {Demuxer, "application/x-3gp", { }, { }}, ++ {Demuxer, "application/x-dash", {"application/dash+xml"}, { }}, + {Demuxer, "application/x-hls", {"application/vnd.apple.mpegurl", "application/x-mpegurl"}, { }}, + {Demuxer, "application/x-pn-realaudio", { }, { }}, + {Demuxer, "audio/x-aiff", { }, { }}, +-- +2.24.1 + diff --git a/patches/net-libs/webkit-gtk/webkit-gtk-2.28.1-bubblewrap_launcher-allow-sndio.patch b/patches/net-libs/webkit-gtk/webkit-gtk-2.28.1-bubblewrap_launcher-allow-sndio.patch @@ -0,0 +1,37 @@ +commit bb27bdec2efb886c309144d3f755d1490c26dcfe +Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me> +Date: 2020-05-25T22:27:59 GMT + + BubblewrapLauncher.cpp: Allows to use sndio + +diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp +index ad301ab2..06dcd41b 100644 +--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp +@@ -381,6 +381,18 @@ static void bindPulse(Vector<CString>& args) + bindIfExists(args, "/dev/snd", BindFlags::Device); + } + ++static void bindSndio(Vector<CString>& args) ++{ ++ bindIfExists(args, "/tmp/sndio", BindFlags::ReadWrite); ++ ++ GUniquePtr<char> sndioUidDir(g_strdup_printf("/tmp/sndio-%d", getuid())); ++ bindIfExists(args, sndioUidDir.get(), BindFlags::ReadWrite); ++ ++ const char* homeDir = g_get_home_dir(); ++ GUniquePtr<char> sndioHomeDir(g_build_filename(homeDir, ".sndio", nullptr)); ++ bindIfExists(args, sndioHomeDir.get(), BindFlags::ReadWrite); ++} ++ + static void bindFonts(Vector<CString>& args) + { + const char* configDir = g_get_user_config_dir(); +@@ -807,6 +819,7 @@ GRefPtr<GSubprocess> bubblewrapSpawn(GSubprocessLauncher* launcher, const Proces + bindDBusSession(sandboxArgs, proxy); + // FIXME: We should move to Pipewire as soon as viable, Pulse doesn't restrict clients atm. + bindPulse(sandboxArgs); ++ bindSndio(sandboxArgs); + bindFonts(sandboxArgs); + bindGStreamerData(sandboxArgs); + bindOpenGL(sandboxArgs); diff --git a/patches/net-vpn/tor-0.3.2.9/tor-0.3.2.9-fix redefinition of unsigned u.patch b/patches/net-vpn/tor-0.3.2.9/tor-0.3.2.9-fix redefinition of unsigned u.patch @@ -0,0 +1,18 @@ +diff --git a/src/or/channeltls.c b/src/or/channeltls.c +index 8277813..900bff9 100644 +--- a/src/or/channeltls.c ++++ b/src/or/channeltls.c +@@ -2156,10 +2156,11 @@ channel_tls_process_certs_cell(var_cell_t *cell, channel_tls_t *chan) + } + + err: +- for (unsigned u = 0; u < ARRAY_LENGTH(x509_certs); ++u) { ++ unsigned u = 0; ++ for (u = 0; u < ARRAY_LENGTH(x509_certs); ++u) { + tor_x509_cert_free(x509_certs[u]); + } +- for (unsigned u = 0; u < ARRAY_LENGTH(ed_certs); ++u) { ++ for (u = 0; u < ARRAY_LENGTH(ed_certs); ++u) { + tor_cert_free(ed_certs[u]); + } + tor_free(rsa_ed_cc_cert); diff --git a/patches/sys-boot/grub/grub-2.02_tenshi.patch b/patches/sys-boot/grub/grub-2.02_tenshi.patch @@ -0,0 +1,15 @@ +diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c +index 9cad0c4..65883f2 100644 +--- a/grub-core/kern/main.c ++++ b/grub-core/kern/main.c +@@ -270,9 +270,8 @@ grub_main (void) + grub_boot_time ("After machine init."); + + /* Hello. */ +- grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT); +- grub_printf ("Welcome to GRUB!\n\n"); + grub_setcolorstate (GRUB_TERM_COLOR_STANDARD); ++ grub_printf ("Why is tenshi eating a corndog so cute?\n\n"); + + grub_load_config (); + diff --git a/patches/sys-libs/glibc-2.27/glibc-c-utf8-locale.patch b/patches/sys-libs/glibc-2.27/glibc-c-utf8-locale.patch @@ -0,0 +1,286 @@ +Short description: Add C.UTF-8 support. +Author(s): Fedora glibc team <glibc@lists.fedoraproject.org> +Origin: PATCH +Upstream status: not-submitted + +This patch needs to upstream as part of Carlos O'Donell +<carlos@redhat.com>'s work on enabling upstream C.UTF-8 support. This +work is currently blocked on cleaning up the test results to prove that +full code-point sorting is working as intended. + +Note that this patch does not provide full code-point sorting as +expected. + +This patch needs to upstream as soon as possible since it would be nice +to have this in F29 and fixed. + +From 2eda7b462b415105f5a05c1323372d4e39d46439 Mon Sep 17 00:00:00 2001 +From: Mike FABIAN <mfabian@redhat.com> +Date: Mon, 10 Aug 2015 15:58:12 +0200 +Subject: [PATCH] Add a C.UTF-8 locale + +--- + localedata/SUPPORTED | 1 + + localedata/locales/C | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 239 insertions(+) + create mode 100644 localedata/locales/C + +diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED +index 8ca023e..2a78391 100644 +--- a/localedata/SUPPORTED ++++ b/localedata/SUPPORTED +@@ -1,6 +1,7 @@ + # This file names the currently supported and somewhat tested locales. + # If you have any additions please file a glibc bug report. + SUPPORTED-LOCALES=\ ++C.UTF-8/UTF-8 \ + aa_DJ.UTF-8/UTF-8 \ + aa_DJ/ISO-8859-1 \ + aa_ER/UTF-8 \ +diff --git a/localedata/locales/C b/localedata/locales/C +new file mode 100644 +index 0000000..fdf460e +--- /dev/null ++++ b/localedata/locales/C +@@ -0,0 +1,238 @@ ++escape_char / ++comment_char % ++% Locale for C locale in UTF-8 ++ ++LC_IDENTIFICATION ++title "C locale" ++source "" ++address "" ++contact "" ++email "mfabian@redhat.com" ++tel "" ++fax "" ++language "C" ++territory "" ++revision "1.0" ++date "2015-08-10" ++% ++category "i18n:2012";LC_IDENTIFICATION ++category "i18n:2012";LC_CTYPE ++category "i18n:2012";LC_COLLATE ++category "i18n:2012";LC_TIME ++category "i18n:2012";LC_NUMERIC ++category "i18n:2012";LC_MONETARY ++category "i18n:2012";LC_MESSAGES ++category "i18n:2012";LC_PAPER ++category "i18n:2012";LC_NAME ++category "i18n:2012";LC_ADDRESS ++category "i18n:2012";LC_TELEPHONE ++category "i18n:2012";LC_MEASUREMENT ++END LC_IDENTIFICATION ++ ++LC_CTYPE ++copy "i18n" ++ ++translit_start ++include "translit_combining";"" ++translit_end ++ ++END LC_CTYPE ++ ++LC_COLLATE ++order_start forward ++<U0000> ++.. ++<UFFFF> ++<U10000> ++.. ++<U1FFFF> ++<U20000> ++.. ++<U2FFFF> ++<UE0000> ++.. ++<UEFFFF> ++<UF0000> ++.. ++<UFFFFF> ++<U100000> ++.. ++<U10FFFF> ++UNDEFINED ++order_end ++END LC_COLLATE ++ ++LC_MONETARY ++% This is the 14652 i18n fdcc-set definition for ++% the LC_MONETARY category ++% (except for the int_curr_symbol and currency_symbol, they are empty in ++% the 14652 i18n fdcc-set definition and also empty in ++% glibc/locale/C-monetary.c. But localedef complains in that case). ++% ++% Using "USD" for int_curr_symbol. But maybe "XXX" would be better? ++% XXX is "No currency" (https://en.wikipedia.org/wiki/ISO_4217) ++int_curr_symbol "<U0055><U0053><U0044><U0020>" ++% Using "$" for currency_symbol. But maybe <U00A4> would be better? ++% U+00A4 is the "generic currency symbol" ++% (https://en.wikipedia.org/wiki/Currency_sign_%28typography%29) ++currency_symbol "<U0024>" ++mon_decimal_point "<U002E>" ++mon_thousands_sep "" ++mon_grouping -1 ++positive_sign "" ++negative_sign "<U002D>" ++int_frac_digits -1 ++frac_digits -1 ++p_cs_precedes -1 ++int_p_sep_by_space -1 ++p_sep_by_space -1 ++n_cs_precedes -1 ++int_n_sep_by_space -1 ++n_sep_by_space -1 ++p_sign_posn -1 ++n_sign_posn -1 ++% ++END LC_MONETARY ++ ++LC_NUMERIC ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++decimal_point "<U002E>" ++thousands_sep "" ++grouping -1 ++END LC_NUMERIC ++ ++LC_TIME ++% This is the POSIX Locale definition for ++% the LC_TIME category. ++% ++% Abbreviated weekday names (%a) ++abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/ ++ "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/ ++ "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/ ++ "<U0053><U0061><U0074>" ++ ++% Full weekday names (%A) ++day "<U0053><U0075><U006E><U0064><U0061><U0079>";/ ++ "<U004D><U006F><U006E><U0064><U0061><U0079>";/ ++ "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/ ++ "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/ ++ "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/ ++ "<U0046><U0072><U0069><U0064><U0061><U0079>";/ ++ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>" ++ ++% Abbreviated month names (%b) ++abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/ ++ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/ ++ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/ ++ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ ++ "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/ ++ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>" ++ ++% Full month names (%B) ++mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/ ++ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/ ++ "<U004D><U0061><U0072><U0063><U0068>";/ ++ "<U0041><U0070><U0072><U0069><U006C>";/ ++ "<U004D><U0061><U0079>";/ ++ "<U004A><U0075><U006E><U0065>";/ ++ "<U004A><U0075><U006C><U0079>";/ ++ "<U0041><U0075><U0067><U0075><U0073><U0074>";/ ++ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ ++ "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/ ++ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ ++ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>" ++ ++% Week description, consists of three fields: ++% 1. Number of days in a week. ++% 2. Gregorian date that is a first weekday (19971130 for Sunday, 19971201 for Monday). ++% 3. The weekday number to be contained in the first week of the year. ++% ++% ISO 8601 conforming applications should use the values 7, 19971201 (a ++% Monday), and 4 (Thursday), respectively. ++week 7;19971201;4 ++first_weekday 1 ++first_workday 1 ++ ++% Appropriate date and time representation (%c) ++% "%a %b %e %H:%M:%S %Y" ++d_t_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0059>" ++ ++% Appropriate date representation (%x) ++% "%m/%d/%y" ++d_fmt "<U0025><U006D><U002F><U0025><U0064><U002F><U0025><U0079>" ++ ++% Appropriate time representation (%X) ++% "%H:%M:%S" ++t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>" ++ ++% Appropriate AM/PM time representation (%r) ++% "%I:%M:%S %p" ++t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>" ++ ++% Equivalent of AM/PM (%p) "AM"/"PM" ++% ++am_pm "<U0041><U004D>";"<U0050><U004D>" ++ ++% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" ++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>" ++END LC_TIME ++ ++LC_MESSAGES ++% This is the POSIX Locale definition for ++% the LC_NUMERIC category. ++% ++yesexpr "<U005E><U005B><U0079><U0059><U005D>" ++noexpr "<U005E><U005B><U006E><U004E><U005D>" ++yesstr "<U0059><U0065><U0073>" ++nostr "<U004E><U006F>" ++END LC_MESSAGES ++ ++LC_PAPER ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_PAPER category. ++% (A4 paper, this is also used in the built in C/POSIX ++% locale in glibc/locale/C-paper.c) ++height 297 ++width 210 ++END LC_PAPER ++ ++LC_NAME ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_NAME category. ++% "%p%t%g%t%m%t%f" ++% (also used in the built in C/POSIX locale in glibc/locale/C-name.c) ++name_fmt "<U0025><U0070><U0025><U0074><U0025><U0067><U0025><U0074>/ ++<U0025><U006D><U0025><U0074><U0025><U0066>" ++END LC_NAME ++ ++LC_ADDRESS ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_ADDRESS category. ++% "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N" ++% (also used in the built in C/POSIX locale in glibc/locale/C-address.c) ++postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E>/ ++<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/ ++<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/ ++<U004E><U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054><U0025>/ ++<U004E><U0025><U0063><U0025><U004E>" ++END LC_ADDRESS ++ ++LC_TELEPHONE ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_TELEPHONE category. ++% "+%c %a %l" ++tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/ ++<U006C>" ++% (also used in the built in C/POSIX locale in glibc/locale/C-telephone.c) ++END LC_TELEPHONE ++ ++LC_MEASUREMENT ++% This is the ISO/IEC 14652 "i18n" definition for ++% the LC_MEASUREMENT category. ++% (same as in the built in C/POSIX locale in glibc/locale/C-measurement.c) ++%metric ++measurement 1 ++END LC_MEASUREMENT ++ +-- +2.4.3 + diff --git a/patches/sys-libs/glibc/glibc-2.27-meme-sigsegv-message.patch b/patches/sys-libs/glibc/glibc-2.27-meme-sigsegv-message.patch @@ -0,0 +1,13 @@ +diff --git a/sysdeps/generic/siglist.h.old b/sysdeps/generic/siglist.h +index 99d05b2..fc46574 100644 +--- a/sysdeps/generic/siglist.h.old ++++ b/sysdeps/generic/siglist.h +@@ -36,7 +36,7 @@ + init_sig (SIGKILL, "KILL", N_("Killed")) + init_sig (SIGBUS, "BUS", N_("Bus error")) + init_sig (SIGSYS, "SYS", N_("Bad system call")) +- init_sig (SIGSEGV, "SEGV", N_("Segmentation fault")) ++ init_sig (SIGSEGV, "SEGV", N_("it done did a broke (SEGV)")) + init_sig (SIGPIPE, "PIPE", N_("Broken pipe")) + init_sig (SIGALRM, "ALRM", N_("Alarm clock")) + init_sig (SIGTERM, "TERM", N_("Terminated")) diff --git a/patches/sys-libs/glibc/stfu-rms-on-abort.patch b/patches/sys-libs/glibc/stfu-rms-on-abort.patch @@ -0,0 +1,21 @@ +X-Git-Url: https://sourceware.org/git/?p=glibc.git;a=blobdiff_plain;f=manual%2Fstartup.texi;h=21c48cd0374dcc906c33165267412081fc7de2dc;hp=7395d32dd0c877487938857fd432650e87fe7bb2;hb=340d9652b9d0e1d4136588f18b726662d195777c;hpb=c57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8 + +diff --git a/manual/startup.texi b/manual/startup.texi +index 7395d32..21c48cd 100644 +--- a/manual/startup.texi ++++ b/manual/startup.texi +@@ -1005,14 +1005,6 @@ This function actually terminates the process by raising a + intercept this signal; see @ref{Signal Handling}. + @end deftypefun + +-@c Put in by rms. Don't remove. +-@cartouche +-@strong{Future Change Warning:} Proposed Federal censorship regulations +-may prohibit us from giving you information about the possibility of +-calling this function. We would be required to say that this is not an +-acceptable way of terminating a program. +-@end cartouche +- + @node Termination Internals + @subsection Termination Internals + diff --git a/patches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-7.1.0/FreeBSD_bug32279.patch @@ -0,0 +1,16 @@ +diff --git a/runtime/cmake/LibompHandleFlags.cmake.old b/runtime/cmake/LibompHandleFlags.cmake +index 4bdbf8f..a411119 100644 +--- a/runtime/cmake/LibompHandleFlags.cmake.old ++++ b/runtime/cmake/LibompHandleFlags.cmake +@@ -152,6 +152,11 @@ function(libomp_get_libflags libflags) + if(${IA32}) + libomp_append(libflags_local -lirc_pic LIBOMP_HAVE_IRC_PIC_LIBRARY) + endif() ++ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ libomp_append(libflags_local -lm) ++ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + IF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") + libomp_append(libflags_local -lm) + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") diff --git a/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-8.0.1/FreeBSD_bug32279.patch @@ -0,0 +1,14 @@ +--- a/runtime/cmake/LibompHandleFlags.cmake ++++ b/runtime/cmake/LibompHandleFlags.cmake +@@ -152,6 +152,11 @@ function(libomp_get_libflags libflags) + libomp_append(libflags_local "-lm") + libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly") ++ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ libomp_append(libflags_local -lm) ++ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) ++ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + IF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") + libomp_append(libflags_local -lm) + ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") diff --git a/patches/sys-libs/libomp-9.0.0/FreeBSD_bug32279.patch b/patches/sys-libs/libomp-9.0.0/FreeBSD_bug32279.patch @@ -0,0 +1,11 @@ +--- a/runtime/cmake/LibompHandleFlags.cmake ++++ b/runtime/cmake/LibompHandleFlags.cmake +@@ -158,7 +158,7 @@ function(libomp_get_libflags libflags) + if(${IA32}) + libomp_append(libflags_local -lirc_pic LIBOMP_HAVE_IRC_PIC_LIBRARY) + endif() +- if(${CMAKE_SYSTEM_NAME} MATCHES "DragonFly") ++ if(${CMAKE_SYSTEM_NAME} MATCHES "(DragonFly|Linux)") + libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) + libomp_append(libflags_local "-lm") + libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG) diff --git a/patches/sys-libs/musl/musl-1.1.20-meme-sigsegv-message.patch b/patches/sys-libs/musl/musl-1.1.20-meme-sigsegv-message.patch @@ -0,0 +1,13 @@ +diff --git a/src/string/strsignal.c.old b/src/string/strsignal.c +index 96bfe84..9237fc3 100644 +--- a/src/string/strsignal.c.old ++++ b/src/string/strsignal.c +@@ -65,7 +65,7 @@ static const char strings[] = + "Arithmetic exception\0" + "Killed\0" + "User defined signal 1\0" +- "Segmentation fault\0" ++ "it done did a broke (SEGV)\0" + "User defined signal 2\0" + "Broken pipe\0" + "Alarm clock\0" diff --git a/patches/www-apps/stagit-0.8 b/patches/www-apps/stagit-0.8 @@ -0,0 +1 @@ +/seagate/sources/git/hacktivis.me/git/stagit-0.8+ \ No newline at end of file diff --git a/patches/www-apps/stagit-0.9/0001-fix-compile-libgit2-0.28-changed-giterr_last-to-git_.patch b/patches/www-apps/stagit-0.9/0001-fix-compile-libgit2-0.28-changed-giterr_last-to-git_.patch @@ -0,0 +1,60 @@ +From 583c44395ccc0e052c8db5217bd51fc21f7ffbb7 Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Sun, 3 Feb 2019 15:24:34 +0100 +Subject: [PATCH 01/22] fix compile: libgit2 0.28 changed giterr_last to + git_error_last + +libgit2 commit: +https://github.com/libgit2/libgit2/commit/a27a4de6f8003961d38958893c6c637395c7cc04 +--- + stagit-index.c | 4 +--- + stagit.c | 4 +--- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/stagit-index.c b/stagit-index.c +index e019793..ab47e48 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -147,7 +147,6 @@ err: + int + main(int argc, char *argv[]) + { +- const git_error *e = NULL; + FILE *fp; + char path[PATH_MAX], repodirabs[PATH_MAX + 1]; + const char *repodir; +@@ -174,8 +173,7 @@ main(int argc, char *argv[]) + + if (git_repository_open_ext(&repo, repodir, + GIT_REPOSITORY_OPEN_NO_SEARCH, NULL)) { +- e = giterr_last(); +- fprintf(stderr, "%s: %s\n", argv[0], e->message); ++ fprintf(stderr, "%s: cannot open repository\n", argv[0]); + ret = 1; + continue; + } +diff --git a/stagit.c b/stagit.c +index 093cdab..c2b2f2c 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -1054,7 +1054,6 @@ main(int argc, char *argv[]) + { + git_object *obj = NULL; + const git_oid *head = NULL; +- const git_error *e = NULL; + mode_t mask; + FILE *fp, *fpread; + char path[PATH_MAX], repodirabs[PATH_MAX + 1], *p; +@@ -1101,8 +1100,7 @@ main(int argc, char *argv[]) + + if (git_repository_open_ext(&repo, repodir, + GIT_REPOSITORY_OPEN_NO_SEARCH, NULL) < 0) { +- e = giterr_last(); +- fprintf(stderr, "%s: %s\n", argv[0], e->message); ++ fprintf(stderr, "%s: cannot open repository\n", argv[0]); + return 1; + } + +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0002-change-order-of-commits-in-log-from-most-recent-to-o.patch b/patches/www-apps/stagit-0.9/0002-change-order-of-commits-in-log-from-most-recent-to-o.patch @@ -0,0 +1,81 @@ +From 3fbef5c9b0dee2106537a6718e2380eaa6e27f15 Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Thu, 7 Feb 2019 21:00:06 +0100 +Subject: [PATCH 02/22] change order of commits in log from most recent to old + to applied order + +--- + LICENSE | 2 +- + stagit-index.c | 1 - + stagit.1 | 6 +++--- + stagit.c | 2 -- + 4 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/LICENSE b/LICENSE +index 3dc99fe..1305e35 100644 +--- a/LICENSE ++++ b/LICENSE +@@ -1,6 +1,6 @@ + MIT/X Consortium License + +-(c) 2015-2018 Hiltjo Posthuma <hiltjo@codemadness.org> ++(c) 2015-2019 Hiltjo Posthuma <hiltjo@codemadness.org> + (c) 2015-2016 Dimitris Papastamos <sin@2f30.org> + + Permission is hereby granted, free of charge, to any person obtaining a +diff --git a/stagit-index.c b/stagit-index.c +index ab47e48..accb1a5 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -105,7 +105,6 @@ writelog(FILE *fp) + + git_revwalk_new(&w, repo); + git_revwalk_push_head(w); +- git_revwalk_sorting(w, GIT_SORT_TIME); + git_revwalk_simplify_first_parent(w); + + if (git_revwalk_next(&id, w) || +diff --git a/stagit.1 b/stagit.1 +index 3e9a77a..360f716 100644 +--- a/stagit.1 ++++ b/stagit.1 +@@ -1,4 +1,4 @@ +-.Dd Januari 21, 2018 ++.Dd February 6, 2019 + .Dt STAGIT 1 + .Os + .Sh NAME +@@ -46,8 +46,8 @@ Atom XML feed + .It files.html + List of files in the latest tree, linking to the file. + .It log.html +-List of commits in order of most recent to old of the commits (top to bottom), +-each commit links to a page with a diffstat and diff of the commit. ++List of commits in reverse chronological applied commit order, each commit ++links to a page with a diffstat and diff of the commit. + .It refs.html + Lists references of the repository such as branches and tags. + .El +diff --git a/stagit.c b/stagit.c +index c2b2f2c..b8abea3 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -606,7 +606,6 @@ writelog(FILE *fp, const git_oid *oid) + + git_revwalk_new(&w, repo); + git_revwalk_push(w, oid); +- git_revwalk_sorting(w, GIT_SORT_TIME); + git_revwalk_simplify_first_parent(w); + + while (!git_revwalk_next(&id, w)) { +@@ -736,7 +735,6 @@ writeatom(FILE *fp) + + git_revwalk_new(&w, repo); + git_revwalk_push_head(w); +- git_revwalk_sorting(w, GIT_SORT_TIME); + git_revwalk_simplify_first_parent(w); + + for (i = 0; i < m && !git_revwalk_next(&id, w); i++) { +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0003-Makefile-add-DOCPREFIX-for-installing-docs-in-ports.patch b/patches/www-apps/stagit-0.9/0003-Makefile-add-DOCPREFIX-for-installing-docs-in-ports.patch @@ -0,0 +1,76 @@ +From 9224d31cf6fd63b6b0a29d43185ccc64035449ec Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Sat, 9 Feb 2019 15:02:38 +0100 +Subject: [PATCH 03/22] Makefile: add DOCPREFIX for installing docs in ports + +change installed doc from /usr/local/share/stagit to /usr/local/share/doc/stagit +--- + Makefile | 19 ++++++++++--------- + config.mk | 1 + + 2 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/Makefile b/Makefile +index 138dfc5..72e6213 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,6 +2,7 @@ include config.mk + + NAME = stagit + VERSION = 0.9 ++ + SRC = \ + stagit.c\ + stagit-index.c +@@ -64,14 +65,14 @@ install: all + cp -f ${BIN} ${DESTDIR}${PREFIX}/bin + for f in ${BIN}; do chmod 755 ${DESTDIR}${PREFIX}/bin/$$f; done + # installing example files. +- mkdir -p ${DESTDIR}${PREFIX}/share/${NAME} ++ mkdir -p ${DESTDIR}${DOCPREFIX} + cp -f style.css\ + favicon.png\ + logo.png\ + example_create.sh\ + example_post-receive.sh\ + README\ +- ${DESTDIR}${PREFIX}/share/${NAME} ++ ${DESTDIR}${DOCPREFIX} + # installing manual pages. + mkdir -p ${DESTDIR}${MANPREFIX}/man1 + cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1 +@@ -82,13 +83,13 @@ uninstall: + for f in ${BIN}; do rm -f ${DESTDIR}${PREFIX}/bin/$$f; done + # removing example files. + rm -f \ +- ${DESTDIR}${PREFIX}/share/${NAME}/style.css\ +- ${DESTDIR}${PREFIX}/share/${NAME}/favicon.png\ +- ${DESTDIR}${PREFIX}/share/${NAME}/logo.png\ +- ${DESTDIR}${PREFIX}/share/${NAME}/example_create.sh\ +- ${DESTDIR}${PREFIX}/share/${NAME}/example_post-receive.sh\ +- ${DESTDIR}${PREFIX}/share/${NAME}/README +- -rmdir ${DESTDIR}${PREFIX}/share/${NAME} ++ ${DESTDIR}${DOCPREFIX}/style.css\ ++ ${DESTDIR}${DOCPREFIX}/favicon.png\ ++ ${DESTDIR}${DOCPREFIX}/logo.png\ ++ ${DESTDIR}${DOCPREFIX}/example_create.sh\ ++ ${DESTDIR}${DOCPREFIX}/example_post-receive.sh\ ++ ${DESTDIR}${DOCPREFIX}/README ++ -rmdir ${DESTDIR}${DOCPREFIX} + # removing manual pages. + for m in ${MAN1}; do rm -f ${DESTDIR}${MANPREFIX}/man1/$$m; done + +diff --git a/config.mk b/config.mk +index ac47e70..90419a0 100644 +--- a/config.mk ++++ b/config.mk +@@ -3,6 +3,7 @@ + # paths + PREFIX = /usr/local + MANPREFIX = ${PREFIX}/man ++DOCPREFIX = ${PREFIX}/share/doc/stagit + + # compiler and linker + #CC = cc +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0004-bump-version-to-0.9.1.patch b/patches/www-apps/stagit-0.9/0004-bump-version-to-0.9.1.patch @@ -0,0 +1,25 @@ +From 477d50169a42431d7fb0f939eb851ef6a2d80c3a Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Fri, 22 Feb 2019 11:13:44 +0100 +Subject: [PATCH 04/22] bump version to 0.9.1 + +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 72e6213..aca1353 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + include config.mk + + NAME = stagit +-VERSION = 0.9 ++VERSION = 0.9.1 + + SRC = \ + stagit.c\ +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0005-fix-issues-in-example-scripts.patch b/patches/www-apps/stagit-0.9/0005-fix-issues-in-example-scripts.patch @@ -0,0 +1,43 @@ +From 587b01428d6ec2be1ab6b468198663118d483990 Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Fri, 1 Mar 2019 11:49:29 +0100 +Subject: [PATCH 05/22] fix issues in example scripts + +- in case cd fails don't continue (don't write in previous directory). +- post-receive: quote $(pwd) in case it has spaces. + +found by shellcheck tool. +--- + example_create.sh | 2 +- + example_post-receive.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/example_create.sh b/example_create.sh +index aff7d54..cf16e1d 100755 +--- a/example_create.sh ++++ b/example_create.sh +@@ -30,7 +30,7 @@ for dir in "${reposdir}/"*/; do + printf "%s... " "${d}" + + mkdir -p "${curdir}/${d}" +- cd "${curdir}/${d}" ++ cd "${curdir}/${d}" || continue + stagit -c ".cache" "${reposdir}/${r}" + + # symlinks +diff --git a/example_post-receive.sh b/example_post-receive.sh +index 0655569..c9bcb5e 100755 +--- a/example_post-receive.sh ++++ b/example_post-receive.sh +@@ -14,7 +14,7 @@ export LC_CTYPE="en_US.UTF-8" + + name="$1" + if test "${name}" = ""; then +- name=$(basename $(pwd)) ++ name=$(basename "$(pwd)") + fi + + # config +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0006-pedantic-snprintf-improvement.patch b/patches/www-apps/stagit-0.9/0006-pedantic-snprintf-improvement.patch @@ -0,0 +1,60 @@ +From bb1d06eb204b1d1135fcddccd14f6306abcd7f72 Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Sat, 9 Mar 2019 12:39:10 +0100 +Subject: [PATCH 06/22] pedantic snprintf() improvement + +POSIX says: +"If an output error was encountered, these functions shall return a negative +value and set errno to indicate the error." +--- + stagit-index.c | 2 +- + stagit.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/stagit-index.c b/stagit-index.c +index accb1a5..cc70e4d 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -28,7 +28,7 @@ joinpath(char *buf, size_t bufsiz, const char *path, const char *path2) + + r = snprintf(buf, bufsiz, "%s%s%s", + path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2); +- if (r == -1 || (size_t)r >= bufsiz) ++ if (r < 0 || (size_t)r >= bufsiz) + errx(1, "path truncated: '%s%s%s'", + path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2); + } +diff --git a/stagit.c b/stagit.c +index b8abea3..1fc6c1e 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -76,7 +76,7 @@ joinpath(char *buf, size_t bufsiz, const char *path, const char *path2) + + r = snprintf(buf, bufsiz, "%s%s%s", + path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2); +- if (r == -1 || (size_t)r >= bufsiz) ++ if (r < 0 || (size_t)r >= bufsiz) + errx(1, "path truncated: '%s%s%s'", + path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2); + } +@@ -616,7 +616,7 @@ writelog(FILE *fp, const git_oid *oid) + + git_oid_tostr(oidstr, sizeof(oidstr), &id); + r = snprintf(path, sizeof(path), "commit/%s.html", oidstr); +- if (r == -1 || (size_t)r >= sizeof(path)) ++ if (r < 0 || (size_t)r >= sizeof(path)) + errx(1, "path truncated: 'commit/%s.html'", oidstr); + r = access(path, F_OK); + +@@ -856,7 +856,7 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) + + r = snprintf(filepath, sizeof(filepath), "file/%s.html", + entrypath); +- if (r == -1 || (size_t)r >= sizeof(filepath)) ++ if (r < 0 || (size_t)r >= sizeof(filepath)) + errx(1, "path truncated: 'file/%s.html'", entrypath); + + if (!git_tree_entry_to_object(&obj, repo, entry)) { +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0007-escape-HTML-in-paths.patch b/patches/www-apps/stagit-0.9/0007-escape-HTML-in-paths.patch @@ -0,0 +1,48 @@ +From 028c7526bac907c91ef8afc6c3ae0f6d424bd229 Mon Sep 17 00:00:00 2001 +From: Hiltjo Posthuma <hiltjo@codemadness.org> +Date: Sat, 16 Mar 2019 13:07:58 +0100 +Subject: [PATCH 07/22] escape HTML in paths + +- escape paths in diff line. +- escape path in anchor href attribute in files.html +--- + stagit.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/stagit.c b/stagit.c +index 1fc6c1e..a6cfebc 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -532,9 +532,15 @@ printshowfile(FILE *fp, struct commitinfo *ci) + for (i = 0; i < ci->ndeltas; i++) { + patch = ci->deltas[i]->patch; + delta = git_patch_get_delta(patch); +- fprintf(fp, "<b>diff --git a/<a id=\"h%zu\" href=\"%sfile/%s.html\">%s</a> b/<a href=\"%sfile/%s.html\">%s</a></b>\n", +- i, relpath, delta->old_file.path, delta->old_file.path, +- relpath, delta->new_file.path, delta->new_file.path); ++ fprintf(fp, "<b>diff --git a/<a id=\"h%zu\" href=\"%sfile/", i, relpath); ++ xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path)); ++ fputs(".html\">", fp); ++ xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path)); ++ fprintf(fp, "</a> b/<a href=\"%sfile/", relpath); ++ xmlencode(fp, delta->new_file.path, strlen(delta->new_file.path)); ++ fprintf(fp, ".html\">"); ++ xmlencode(fp, delta->new_file.path, strlen(delta->new_file.path)); ++ fprintf(fp, "</a></b>\n"); + + /* check binary data */ + if (delta->flags & GIT_DIFF_FLAG_BINARY) { +@@ -881,7 +887,9 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) + + fputs("<tr><td>", fp); + fputs(filemode(git_tree_entry_filemode(entry)), fp); +- fprintf(fp, "</td><td><a href=\"%s%s\">", relpath, filepath); ++ fprintf(fp, "</td><td><a href=\"%s", relpath); ++ xmlencode(fp, filepath, strlen(filepath)); ++ fputs("\">", fp); + xmlencode(fp, entrypath, strlen(entrypath)); + fputs("</a></td><td class=\"num\" align=\"right\">", fp); + if (lc > 0) +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0008-stagit.c-Use-config.h.patch b/patches/www-apps/stagit-0.9/0008-stagit.c-Use-config.h.patch @@ -0,0 +1,35 @@ +From ee392a131423e9b4cb6625cbba028fae2f5b9006 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 4 Apr 2017 19:06:27 +0200 +Subject: [PATCH 08/22] stagit.c: Use config.h + +--- + config.h | 3 +++ + stagit.c | 1 + + 2 files changed, 4 insertions(+) + create mode 100644 config.h + +diff --git a/config.h b/config.h +new file mode 100644 +index 0000000..72da0f4 +--- /dev/null ++++ b/config.h +@@ -0,0 +1,3 @@ ++/* See LICENSE file for copyright and license details. */ ++static const unsigned summarylen = 70; /* summary length in the log */ ++static const int showlinecount = 1; /* display line count or file size in file tree index */ +diff --git a/stagit.c b/stagit.c +index a6cfebc..78390c9 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -14,6 +14,7 @@ + #include <git2.h> + + #include "compat.h" ++#include "config.h" + + struct deltainfo { + git_patch *patch; +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0009-Use-common-path-for-assets-style.css-logo.png.patch b/patches/www-apps/stagit-0.9/0009-Use-common-path-for-assets-style.css-logo.png.patch @@ -0,0 +1,44 @@ +From 8c648491538dc93052127d352fc880996138eb05 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 4 Apr 2017 18:56:41 +0200 +Subject: [PATCH 09/22] Use common path for assets(style.css & logo.png) + +--- + config.h | 1 + + stagit.c | 8 ++++---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/config.h b/config.h +index 72da0f4..09a5b79 100644 +--- a/config.h ++++ b/config.h +@@ -1,3 +1,4 @@ + /* See LICENSE file for copyright and license details. */ + static const unsigned summarylen = 70; /* summary length in the log */ + static const int showlinecount = 1; /* display line count or file size in file tree index */ ++static const char *assetpath = "/git/"; /* Where are the assets (example: assetpath/style.css ) */ +diff --git a/stagit.c b/stagit.c +index 78390c9..33edd82 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -352,13 +352,13 @@ writeheader(FILE *fp, const char *title) + if (description[0]) + fputs(" - ", fp); + xmlencode(fp, description, strlen(description)); +- fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%sfavicon.png\" />\n", relpath); ++ fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%sfavicon.png\" />\n", assetpath); + fprintf(fp, "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"%s Atom Feed\" href=\"%satom.xml\" />\n", + name, relpath); +- fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", relpath); ++ fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", assetpath); + fputs("</head>\n<body>\n<table><tr><td>", fp); +- fprintf(fp, "<a href=\"../%s\"><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></a>", +- relpath, relpath); ++ fprintf(fp, "<a href=\"..\"><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></a>", ++ assetpath); + fputs("</td><td><h1>", fp); + xmlencode(fp, strippedname, strlen(strippedname)); + fputs("</h1><span class=\"desc\">", fp); +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0010-stagit.c-Define-img-alt.patch b/patches/www-apps/stagit-0.9/0010-stagit.c-Define-img-alt.patch @@ -0,0 +1,25 @@ +From b9eccfb4bb6cf33bbbe231c2d277af2a104d5d2b Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 4 Apr 2017 18:57:41 +0200 +Subject: [PATCH 10/22] stagit.c: Define <img alt=""> + +--- + stagit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stagit.c b/stagit.c +index 33edd82..ee7ffe9 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -357,7 +357,7 @@ writeheader(FILE *fp, const char *title) + name, relpath); + fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", assetpath); + fputs("</head>\n<body>\n<table><tr><td>", fp); +- fprintf(fp, "<a href=\"..\"><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></a>", ++ fprintf(fp, "<a href=\"..\"><img src=\"%slogo.png\" alt=\"logo\" width=\"32\" height=\"32\" /></a>", + assetpath); + fputs("</td><td><h1>", fp); + xmlencode(fp, strippedname, strlen(strippedname)); +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0011-stagit-index.c-Let-HTTP-server-provide-default-index.patch b/patches/www-apps/stagit-0.9/0011-stagit-index.c-Let-HTTP-server-provide-default-index.patch @@ -0,0 +1,26 @@ +From 10892ee7c67d59d809eb84fa88937a336635af5f Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sat, 8 Apr 2017 17:51:33 +0200 +Subject: [PATCH 11/22] stagit-index.c: Let HTTP server provide default index + +--- + stagit-index.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/stagit-index.c b/stagit-index.c +index cc70e4d..b4142ff 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -124,7 +124,8 @@ writelog(FILE *fp) + + fputs("<tr><td><a href=\"", fp); + xmlencode(fp, stripped_name, strlen(stripped_name)); +- fputs("/log.html\">", fp); ++ /*fputs("/log.html\">", fp); Let http server set default index */ ++ fputs("/\">", fp); + xmlencode(fp, stripped_name, strlen(stripped_name)); + fputs("</a></td><td>", fp); + xmlencode(fp, description, strlen(description)); +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0012-HTML5-faviconurl-Wall.patch b/patches/www-apps/stagit-0.9/0012-HTML5-faviconurl-Wall.patch @@ -0,0 +1,98 @@ +From 5790cec7b177dfdda54f7b9ee0df4e1f1b5ed2c3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 30 Apr 2017 19:24:33 +0200 +Subject: [PATCH 12/22] HTML5, faviconurl, -Wall + +--- + config.h | 1 + + config.mk | 2 +- + stagit.c | 26 ++++++++++++++------------ + 3 files changed, 16 insertions(+), 13 deletions(-) + +diff --git a/config.h b/config.h +index 09a5b79..ee798da 100644 +--- a/config.h ++++ b/config.h +@@ -2,3 +2,4 @@ + static const unsigned summarylen = 70; /* summary length in the log */ + static const int showlinecount = 1; /* display line count or file size in file tree index */ + static const char *assetpath = "/git/"; /* Where are the assets (example: assetpath/style.css ) */ ++static const char *faviconurl = "/git/logo.png"; /* Where is the favicon (example: /favicon.png ) */ +diff --git a/config.mk b/config.mk +index 90419a0..9a3cfe8 100644 +--- a/config.mk ++++ b/config.mk +@@ -20,7 +20,7 @@ LIBS = -L${GITLIB} -lgit2 + #LDFLAGS = ${LIBS} + + # optimized +-CFLAGS = -O2 -std=c99 ${INCS} ++CFLAGS = -O2 -std=c99 -Wall ${INCS} + LDFLAGS = -s ${LIBS} + + # optimized static +diff --git a/stagit.c b/stagit.c +index ee7ffe9..2be3d6b 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -352,29 +352,31 @@ writeheader(FILE *fp, const char *title) + if (description[0]) + fputs(" - ", fp); + xmlencode(fp, description, strlen(description)); +- fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%sfavicon.png\" />\n", assetpath); ++ if(strlen(faviconurl) > 0) { ++ fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%s\" />\n", faviconurl); ++ } + fprintf(fp, "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"%s Atom Feed\" href=\"%satom.xml\" />\n", + name, relpath); + fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", assetpath); +- fputs("</head>\n<body>\n<table><tr><td>", fp); ++ fputs("</head>\n<body>\n<header>", fp); + fprintf(fp, "<a href=\"..\"><img src=\"%slogo.png\" alt=\"logo\" width=\"32\" height=\"32\" /></a>", + assetpath); +- fputs("</td><td><h1>", fp); ++ fputs("<h1>", fp); + xmlencode(fp, strippedname, strlen(strippedname)); + fputs("</h1><span class=\"desc\">", fp); + xmlencode(fp, description, strlen(description)); +- fputs("</span></td></tr>", fp); ++ fputs("</span>", fp); + if (cloneurl[0]) { +- fputs("<tr class=\"url\"><td></td><td>git clone <a href=\"", fp); ++ fputs("<code class=\"url\"><td></td><td>git clone <a rel=\"vcs-git\" href=\"", fp); + xmlencode(fp, cloneurl, strlen(cloneurl)); + fputs("\">", fp); + xmlencode(fp, cloneurl, strlen(cloneurl)); +- fputs("</a></td></tr>", fp); ++ fputs("</a></code>", fp); + } +- fputs("<tr><td></td><td>\n", fp); +- fprintf(fp, "<a href=\"%slog.html\">Log</a> | ", relpath); +- fprintf(fp, "<a href=\"%sfiles.html\">Files</a> | ", relpath); +- fprintf(fp, "<a href=\"%srefs.html\">Refs</a>", relpath); ++ fputs("</header><nav>\n", fp); ++ fprintf(fp, " <a rel=\"version-history\" href=\"%slog.html\">Log</a>", relpath); ++ fprintf(fp, " <a rel=\"index\" href=\"%sfiles.html\">Files</a>", relpath); ++ fprintf(fp, " <a href=\"%srefs.html\">Refs</a>", relpath); + if (submodules) + fprintf(fp, " | <a href=\"%sfile/%s.html\">Submodules</a>", + relpath, submodules); +@@ -384,13 +386,13 @@ writeheader(FILE *fp, const char *title) + if (license) + fprintf(fp, " | <a href=\"%sfile/%s.html\">LICENSE</a>", + relpath, license); +- fputs("</td></tr></table>\n<hr/>\n<div id=\"content\">\n", fp); ++ fputs("</nav>\n<main>\n", fp); + } + + void + writefooter(FILE *fp) + { +- fputs("</div>\n</body>\n</html>\n", fp); ++ fputs("</main>\n</body>\n</html>\n", fp); + } + + int +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0013-stagit.c-Remove-b-or-replace-to-strong.patch b/patches/www-apps/stagit-0.9/0013-stagit.c-Remove-b-or-replace-to-strong.patch @@ -0,0 +1,109 @@ +From 0ab9f0759098f632528b605e35d8664eee7df305 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 31 Jul 2017 09:02:10 +0200 +Subject: [PATCH 13/22] stagit.c: Remove <b> (or replace to strong) + +--- + stagit.c | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +diff --git a/stagit.c b/stagit.c +index 2be3d6b..aa1ea11 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -430,21 +430,21 @@ writeblobhtml(FILE *fp, const git_blob *blob) + void + printcommit(FILE *fp, struct commitinfo *ci) + { +- fprintf(fp, "<b>commit</b> <a href=\"%scommit/%s.html\">%s</a>\n", ++ fprintf(fp, "<strong>commit:</strong> <a href=\"%scommit/%s.html\">%s</a>\n", + relpath, ci->oid, ci->oid); + + if (ci->parentoid[0]) +- fprintf(fp, "<b>parent</b> <a href=\"%scommit/%s.html\">%s</a>\n", ++ fprintf(fp, "<strong>parent:</strong> <a href=\"%scommit/%s.html\">%s</a>\n", + relpath, ci->parentoid, ci->parentoid); + + if (ci->author) { +- fputs("<b>Author:</b> ", fp); ++ fputs("<strong>Author:</strong> ", fp); + xmlencode(fp, ci->author->name, strlen(ci->author->name)); + fputs(" &lt;<a href=\"mailto:", fp); + xmlencode(fp, ci->author->email, strlen(ci->author->email)); + fputs("\">", fp); + xmlencode(fp, ci->author->email, strlen(ci->author->email)); +- fputs("</a>&gt;\n<b>Date:</b> ", fp); ++ fputs("</a>&gt;\n<strong>Date:</strong> ", fp); + printtime(fp, &(ci->author->when)); + fputc('\n', fp); + } +@@ -480,7 +480,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) + } + + /* diff stat */ +- fputs("<b>Diffstat:</b>\n<table>", fp); ++ fputs("<h2>Diffstat:</h2>\n<table>", fp); + for (i = 0; i < ci->ndeltas; i++) { + delta = git_patch_get_delta(ci->deltas[i]->patch); + +@@ -535,7 +535,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) + for (i = 0; i < ci->ndeltas; i++) { + patch = ci->deltas[i]->patch; + delta = git_patch_get_delta(patch); +- fprintf(fp, "<b>diff --git a/<a id=\"h%zu\" href=\"%sfile/", i, relpath); ++ fprintf(fp, "<strong>diff --git a/<a id=\"h%zu\" href=\"%sfile/", i, relpath); + xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path)); + fputs(".html\">", fp); + xmlencode(fp, delta->old_file.path, strlen(delta->old_file.path)); +@@ -543,7 +543,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) + xmlencode(fp, delta->new_file.path, strlen(delta->new_file.path)); + fprintf(fp, ".html\">"); + xmlencode(fp, delta->new_file.path, strlen(delta->new_file.path)); +- fprintf(fp, "</a></b>\n"); ++ fprintf(fp, "</a></strong>\n"); + + /* check binary data */ + if (delta->flags & GIT_DIFF_FLAG_BINARY) { +@@ -921,8 +921,7 @@ writefiles(FILE *fp, const git_oid *id) + int ret = -1; + + fputs("<table id=\"files\"><thead>\n<tr>" +- "<td><b>Mode</b></td><td><b>Name</b></td>" +- "<td class=\"num\" align=\"right\"><b>Size</b></td>" ++ "<td>Mode</td><td>Name</td><td class=\"num\">Size</td>" + "</tr>\n</thead><tbody>\n", fp); + + if (!git_commit_lookup(&commit, repo, id) && +@@ -1007,9 +1006,9 @@ writerefs(FILE *fp) + /* print header if it has an entry (first). */ + if (++count == 1) { + fprintf(fp, "<h2>%s</h2><table id=\"%s\">" +- "<thead>\n<tr><td><b>Name</b></td>" +- "<td><b>Last commit date</b></td>" +- "<td><b>Author</b></td>\n</tr>\n" ++ "<thead>\n<tr><td>Name</td>" ++ "<td>Last commit date</td>" ++ "<td>Author</td>\n</tr>\n" + "</thead><tbody>\n", + titles[j], ids[j]); + } +@@ -1182,11 +1181,11 @@ main(int argc, char *argv[]) + relpath = ""; + mkdir("commit", S_IRWXU | S_IRWXG | S_IRWXO); + writeheader(fp, "Log"); +- fputs("<table id=\"log\"><thead>\n<tr><td><b>Date</b></td>" +- "<td><b>Commit message</b></td>" +- "<td><b>Author</b></td><td class=\"num\" align=\"right\"><b>Files</b></td>" +- "<td class=\"num\" align=\"right\"><b>+</b></td>" +- "<td class=\"num\" align=\"right\"><b>-</b></td></tr>\n</thead><tbody>\n", fp); ++ fputs("<table id=\"log\"><thead>\n<tr><td>Date</td>" ++ "<td>Commit message</td>" ++ "<td>Author</td><td class=\"num\" align=\"right\">Files</td>" ++ "<td class=\"num\" align=\"right\">+</td>" ++ "<td class=\"num\" align=\"right\">-</td></tr>\n</thead><tbody>\n", fp); + + if (cachefile && head) { + /* read from cache file (does not need to exist) */ +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0014-stagit-.c-Custom-footer.patch b/patches/www-apps/stagit-0.9/0014-stagit-.c-Custom-footer.patch @@ -0,0 +1,43 @@ +From 36b1b10f3e1bd7dec5ba15c3928586a7544da7d3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sat, 21 Apr 2018 17:31:24 +0200 +Subject: [PATCH 14/22] stagit*.c: Custom footer + +--- + stagit-index.c | 4 +++- + stagit.c | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/stagit-index.c b/stagit-index.c +index b4142ff..3d38142 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -90,7 +90,9 @@ writeheader(FILE *fp) + void + writefooter(FILE *fp) + { +- fputs("</tbody>\n</table>\n</div>\n</body>\n</html>\n", fp); ++ fputs("</tbody>\n</table>\n</div>\n",fp); ++ fputs("\t<footer>Please <a href=\"https://hacktivis.me/about\">contact me</a> by any means for patches, issues(tracker will maybe be added oneday), thanks/donations, or whatever else.</footer>\n", fp); ++ fputs("</body>\n</html>\n", fp); + } + + int +diff --git a/stagit.c b/stagit.c +index aa1ea11..a20d8f4 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -392,7 +392,9 @@ writeheader(FILE *fp, const char *title) + void + writefooter(FILE *fp) + { +- fputs("</main>\n</body>\n</html>\n", fp); ++ fputs("</main>\n", fp); ++ fputs("\t<footer>Please <a href=\"https://hacktivis.me/about\">contact me</a> by any means for patches, issues(tracker will maybe be added oneday), thanks/donations, or whatever else.</footer>\n", fp); ++ fputs("</body>\n</html>\n", fp); + } + + int +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0015-style.css-Replace-with-my-own.patch b/patches/www-apps/stagit-0.9/0015-style.css-Replace-with-my-own.patch @@ -0,0 +1,162 @@ +From bbb1b0664c34bd7953f790f7a60e32821f7e9185 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 31 Jul 2017 09:12:55 +0200 +Subject: [PATCH 15/22] style.css: Replace with my own + +--- + style.css | 100 +++++++++++++++++++++++------------------------------- + 1 file changed, 42 insertions(+), 58 deletions(-) + +diff --git a/style.css b/style.css +index d8f9fff..167498a 100644 +--- a/style.css ++++ b/style.css +@@ -1,102 +1,86 @@ +-body { +- color: #000; +- background-color: #fff; +- font-family: monospace; +-} ++@import '/css/colorscheme.css'; /* This makes it depend on blog.git at the root */ + +-h1, h2, h3, h4, h5, h6 { +- font-size: 1em; ++html, body { ++ background-color: var(--dark-ansi00-soft); ++ color: var(--dark-ansi15); + margin: 0; ++ padding: 0; ++ font-family: sans; + } + +-img, h1, h2 { +- vertical-align: middle; ++header h1 { ++ display: inline; ++ margin: 0 1em; + } + +-img { +- border: 0; ++header { ++ background-color: var(--dark-ansi00); ++ padding: 1ch 2em; + } + +-a.d, +-a.h, +-a.i, +-a.line { +- text-decoration: none; ++footer { ++ margin: 2ch 2em; + } + +-#blob a { +- color: #777; ++main { ++ display: table; ++ margin: 0 auto; + } + +-#blob a:hover { +- color: blue; ++a { ++ color: var(--dark-ansi04); + text-decoration: none; + } + +-table thead td { +- font-weight: bold; ++h1,h2,h3,h4,h5,h6 { font-family: serif; } ++pre { ++ white-space: pre-wrap; ++ font-family: monospace; + } + +-table td { +- padding: 0 0.4em; ++nav, .line, tr:nth-child(even) { ++ background-color: var(--dark-ansi00); + } + +-#content table td { +- vertical-align: top; +- white-space: nowrap; ++nav { ++ font-size: larger; ++ font-weight: bold; ++ padding: 0.25rem; + } + +-#branches tr:hover td, +-#tags tr:hover td, +-#index tr:hover td, +-#log tr:hover td, +-#files tr:hover td { +- background-color: #eee; ++table thead td { ++ font-weight: bold; + } + +-#index tr td:nth-child(2), +-#tags tr td:nth-child(3), +-#branches tr td:nth-child(3), +-#log tr td:nth-child(2) { +- white-space: normal; ++table td { ++ padding: 0 0.4em; + } + + td.num { + text-align: right; + } + +-.desc { +- color: #777; ++td:nth-child(1) { ++ text-align: right; ++ min-width: 8em; + } + +-hr { +- border: 0; +- border-top: 1px solid #777; +- height: 1px; +-} +- +-pre { +- font-family: monospace; ++tr td { ++ padding: 0.5em 1em; + } + + pre a.h { +- color: #00a; ++ color: var(--dark-ansi05); + } + + .A, + span.i, + pre a.i { +- color: #070; ++ color: var(--dark-ansi02); + } + + .D, + span.d, + pre a.d { +- color: #e00; +-} +- +-pre a.h:hover, +-pre a.i:hover, +-pre a.d:hover { +- text-decoration: none; +-} ++ color: var(--dark-ansi01); ++} +\ No newline at end of file +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0016-stagit-index.c-HTML5-it-Remove-Owner.patch b/patches/www-apps/stagit-0.9/0016-stagit-index.c-HTML5-it-Remove-Owner.patch @@ -0,0 +1,87 @@ +From 0d1b8ab205d7474b23cb53c9eb2df386a5b1c50d Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Wed, 1 Aug 2018 00:44:21 +0200 +Subject: [PATCH 16/22] stagit-index.c: HTML5 it, Remove Owner + +--- + config.h | 2 ++ + stagit-index.c | 31 +++++++++++++++++++------------ + 2 files changed, 21 insertions(+), 12 deletions(-) + +diff --git a/config.h b/config.h +index ee798da..2be90bb 100644 +--- a/config.h ++++ b/config.h +@@ -3,3 +3,5 @@ static const unsigned summarylen = 70; /* summary length in the log */ + static const int showlinecount = 1; /* display line count or file size in file tree index */ + static const char *assetpath = "/git/"; /* Where are the assets (example: assetpath/style.css ) */ + static const char *faviconurl = "/git/logo.png"; /* Where is the favicon (example: /favicon.png ) */ ++static const char *repo_name = "/git/"; ++static const char *repo_description = "Lanodan’s git repositories"; +diff --git a/stagit-index.c b/stagit-index.c +index 3d38142..19eb047 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -12,6 +12,7 @@ + #include <git2.h> + + #include "compat.h" ++#include "config.h" + + static git_repository *repo; + +@@ -73,24 +74,32 @@ writeheader(FILE *fp) + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n" + "<title>", fp); + xmlencode(fp, description, strlen(description)); +- fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%sfavicon.png\" />\n", relpath); ++ if(strlen(faviconurl) > 0) { ++ fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%s\" />\n", faviconurl); ++ } else { ++ fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%sfavicon.png\" />\n", assetpath); ++ } + fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", relpath); +- fputs("</head>\n<body>\n", fp); +- fprintf(fp, "<table>\n<tr><td><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></td>\n" +- "<td><span class=\"desc\">", relpath); +- xmlencode(fp, description, strlen(description)); +- fputs("</span></td></tr><tr><td></td><td>\n" +- "</td></tr>\n</table>\n<hr/>\n<div id=\"content\">\n" ++ fputs("</head>\n<body>\n<header>", fp); ++ fprintf(fp, "<img src=\"%slogo.png\" alt=\"logo\" width=\"32\" height=\"32\" />", ++ assetpath); ++ fputs("<h1>", fp); ++ xmlencode(fp, repo_name, strlen(repo_name)); ++ fputs("</h1><span class=\"desc\">", fp); ++ xmlencode(fp, repo_description, strlen(repo_description)); ++ fputs("</span></header>", fp); ++ fputs("<main>\n" + "<table id=\"index\"><thead>\n" +- "<tr><td><b>Name</b></td><td><b>Description</b></td><td><b>Owner</b></td>" +- "<td><b>Last commit</b></td></tr>" ++ "<tr><th>Name</th><th>Description</th>" ++ "<th>Last commit</th></tr>" + "</thead><tbody>\n", fp); + } + + void + writefooter(FILE *fp) + { +- fputs("</tbody>\n</table>\n</div>\n",fp); ++ fputs("</tbody>\n</table>\n",fp); ++ fputs("</main>\n", fp); + fputs("\t<footer>Please <a href=\"https://hacktivis.me/about\">contact me</a> by any means for patches, issues(tracker will maybe be added oneday), thanks/donations, or whatever else.</footer>\n", fp); + fputs("</body>\n</html>\n", fp); + } +@@ -132,8 +141,6 @@ writelog(FILE *fp) + fputs("</a></td><td>", fp); + xmlencode(fp, description, strlen(description)); + fputs("</td><td>", fp); +- xmlencode(fp, owner, strlen(owner)); +- fputs("</td><td>", fp); + if (author) + printtimeshort(fp, &(author->when)); + fputs("</td></tr>", fp); +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0017-stagit.c-fixup-HTML5.patch b/patches/www-apps/stagit-0.9/0017-stagit.c-fixup-HTML5.patch @@ -0,0 +1,33 @@ +From bdafdb3ad828d9f6610ee832e000910629aca7e0 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 11 Feb 2019 03:09:41 +0100 +Subject: [PATCH 17/22] stagit.c: fixup HTML5 + +--- + stagit.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/stagit.c b/stagit.c +index a20d8f4..d6d8b4b 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -378,13 +378,13 @@ writeheader(FILE *fp, const char *title) + fprintf(fp, " <a rel=\"index\" href=\"%sfiles.html\">Files</a>", relpath); + fprintf(fp, " <a href=\"%srefs.html\">Refs</a>", relpath); + if (submodules) +- fprintf(fp, " | <a href=\"%sfile/%s.html\">Submodules</a>", ++ fprintf(fp, " <a href=\"%sfile/%s.html\">Submodules</a>", + relpath, submodules); + if (readme) +- fprintf(fp, " | <a href=\"%sfile/%s.html\">README</a>", ++ fprintf(fp, " <a href=\"%sfile/%s.html\">README</a>", + relpath, readme); + if (license) +- fprintf(fp, " | <a href=\"%sfile/%s.html\">LICENSE</a>", ++ fprintf(fp, " <a href=\"%sfile/%s.html\">LICENSE</a>", + relpath, license); + fputs("</nav>\n<main>\n", fp); + } +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0018-stagit.c-Remove-decorative-td-td.patch b/patches/www-apps/stagit-0.9/0018-stagit.c-Remove-decorative-td-td.patch @@ -0,0 +1,25 @@ +From 7fa05aac02d1eedc2c0c2ba7cf9f3fd338dd55d6 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 11 Feb 2019 03:10:17 +0100 +Subject: [PATCH 18/22] stagit.c: Remove decorative <td> | </td> + +--- + stagit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stagit.c b/stagit.c +index d6d8b4b..fd5873a 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -520,7 +520,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) + memset(&linestr, '+', add); + memset(&linestr[add], '-', del); + +- fprintf(fp, "</a></td><td> | </td><td class=\"num\">%zu</td><td><span class=\"i\">", ++ fprintf(fp, "</a></td><td class=\"num\">%zu</td><td><span class=\"i\">", + ci->deltas[i]->addcount + ci->deltas[i]->delcount); + fwrite(&linestr, 1, add, fp); + fputs("</span><span class=\"d\">", fp); +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0019-stagit-index-.c-Add-a-bunch-of-classes-for-styling.patch b/patches/www-apps/stagit-0.9/0019-stagit-index-.c-Add-a-bunch-of-classes-for-styling.patch @@ -0,0 +1,69 @@ +From bdd0f2f3dee07deb3ab9b340335e1d3e70a38ebf Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 17 Mar 2019 01:20:06 +0100 +Subject: [PATCH 19/22] stagit{-index}.c: Add a bunch of classes for styling + +--- + stagit-index.c | 6 +++--- + stagit.c | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/stagit-index.c b/stagit-index.c +index 19eb047..b31b088 100644 +--- a/stagit-index.c ++++ b/stagit-index.c +@@ -133,14 +133,14 @@ writelog(FILE *fp) + if (!strcmp(p, ".git")) + *p = '\0'; + +- fputs("<tr><td><a href=\"", fp); ++ fputs("<tr><td class=\"text index-name\"><a href=\"", fp); + xmlencode(fp, stripped_name, strlen(stripped_name)); + /*fputs("/log.html\">", fp); Let http server set default index */ + fputs("/\">", fp); + xmlencode(fp, stripped_name, strlen(stripped_name)); +- fputs("</a></td><td>", fp); ++ fputs("</a></td><td class=\"text index-description\">", fp); + xmlencode(fp, description, strlen(description)); +- fputs("</td><td>", fp); ++ fputs("</td><td class=\"date index-author-date\">", fp); + if (author) + printtimeshort(fp, &(author->when)); + fputs("</td></tr>", fp); +diff --git a/stagit.c b/stagit.c +index fd5873a..f6282fa 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -584,23 +584,23 @@ printshowfile(FILE *fp, struct commitinfo *ci) + void + writelogline(FILE *fp, struct commitinfo *ci) + { +- fputs("<tr><td>", fp); ++ fputs("<tr><td class=\"date log-author-date\">", fp); + if (ci->author) + printtimeshort(fp, &(ci->author->when)); +- fputs("</td><td>", fp); ++ fputs("</td><td class=\"text log-summary\">", fp); + if (ci->summary) { + fprintf(fp, "<a href=\"%scommit/%s.html\">", relpath, ci->oid); + xmlencode(fp, ci->summary, strlen(ci->summary)); + fputs("</a>", fp); + } +- fputs("</td><td>", fp); ++ fputs("</td><td class=\"text log-author\">", fp); + if (ci->author) + xmlencode(fp, ci->author->name, strlen(ci->author->name)); +- fputs("</td><td class=\"num\" align=\"right\">", fp); ++ fputs("</td><td class=\"num log-filecount\">", fp); + fprintf(fp, "%zu", ci->filecount); +- fputs("</td><td class=\"num\" align=\"right\">", fp); ++ fputs("</td><td class=\"num log-addcount\">", fp); + fprintf(fp, "+%zu", ci->addcount); +- fputs("</td><td class=\"num\" align=\"right\">", fp); ++ fputs("</td><td class=\"num log-delcount\">", fp); + fprintf(fp, "-%zu", ci->delcount); + fputs("</td></tr>\n", fp); + } +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0020-style.css-Fix-overflows.patch b/patches/www-apps/stagit-0.9/0020-style.css-Fix-overflows.patch @@ -0,0 +1,45 @@ +From 189b1ad74de4096a312d1d498bbff5ab1bcf0655 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Sun, 17 Mar 2019 01:27:24 +0100 +Subject: [PATCH 20/22] style.css: Fix overflows + +--- + style.css | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/style.css b/style.css +index 167498a..4d5e7a9 100644 +--- a/style.css ++++ b/style.css +@@ -6,6 +6,7 @@ html, body { + margin: 0; + padding: 0; + font-family: sans; ++ overflow-wrap: break-word; + } + + header h1 { +@@ -60,9 +61,19 @@ td.num { + text-align: right; + } + ++td.date { ++ min-width: 8em; ++} ++ ++td.log-summary, ++td.index-name, ++td.index-description { ++ max-width: 50em; ++ break-word: break-all; ++} ++ + td:nth-child(1) { + text-align: right; +- min-width: 8em; + } + + tr td { +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0021-stagit.c-Move-atom-link-next-to-Log-for-better-disco.patch b/patches/www-apps/stagit-0.9/0021-stagit.c-Move-atom-link-next-to-Log-for-better-disco.patch @@ -0,0 +1,35 @@ +From 05d3fadaf9324a62c132c1514d1b456998e2dab0 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Thu, 21 Mar 2019 11:32:07 +0100 +Subject: [PATCH 21/22] stagit.c: Move atom link next to Log for better + discoverability + +--- + stagit.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/stagit.c b/stagit.c +index f6282fa..48d6d5c 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -355,8 +355,6 @@ writeheader(FILE *fp, const char *title) + if(strlen(faviconurl) > 0) { + fprintf(fp, "</title>\n<link rel=\"icon\" type=\"image/png\" href=\"%s\" />\n", faviconurl); + } +- fprintf(fp, "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"%s Atom Feed\" href=\"%satom.xml\" />\n", +- name, relpath); + fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", assetpath); + fputs("</head>\n<body>\n<header>", fp); + fprintf(fp, "<a href=\"..\"><img src=\"%slogo.png\" alt=\"logo\" width=\"32\" height=\"32\" /></a>", +@@ -375,6 +373,8 @@ writeheader(FILE *fp, const char *title) + } + fputs("</header><nav>\n", fp); + fprintf(fp, " <a rel=\"version-history\" href=\"%slog.html\">Log</a>", relpath); ++ fprintf(fp, " (<a rel=\"alternate\" type=\"application/atom+xml\" title=\"%s Atom Feed\" href=\"%satom.xml\">atom</a>)", ++ name, relpath); + fprintf(fp, " <a rel=\"index\" href=\"%sfiles.html\">Files</a>", relpath); + fprintf(fp, " <a href=\"%srefs.html\">Refs</a>", relpath); + if (submodules) +-- +2.26.2 + diff --git a/patches/www-apps/stagit-0.9/0022-stagit.c-link-footer-to-git-send-email.io.patch b/patches/www-apps/stagit-0.9/0022-stagit.c-link-footer-to-git-send-email.io.patch @@ -0,0 +1,25 @@ +From 380776fb8c5a9aa1c3bd799d2d60d8809eef6877 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Wed, 6 May 2020 12:40:06 +0200 +Subject: [PATCH 22/22] stagit.c: link footer to git-send-email.io + +--- + stagit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stagit.c b/stagit.c +index 48d6d5c..2688d58 100644 +--- a/stagit.c ++++ b/stagit.c +@@ -393,7 +393,7 @@ void + writefooter(FILE *fp) + { + fputs("</main>\n", fp); +- fputs("\t<footer>Please <a href=\"https://hacktivis.me/about\">contact me</a> by any means for patches, issues(tracker will maybe be added oneday), thanks/donations, or whatever else.</footer>\n", fp); ++ fputs("\t<footer>Please <a href=\"https://hacktivis.me/about\">contact me</a> by any means for <a href=\"https://git-send-email.io/\">patches</a>, issues(tracker will maybe be added oneday), or whatever else.</footer>\n", fp); + fputs("</body>\n</html>\n", fp); + } + +-- +2.26.2 + diff --git a/patches/www-client/firefox/firefox-solarized-view-source.diff b/patches/www-client/firefox/firefox-solarized-view-source.diff @@ -0,0 +1,70 @@ +--- firefox-52.2.0esr/layout/style/res/viewsource.css.old 2017-07-24 03:27:24.487605257 +0200 ++++ firefox-52.2.0esr/layout/style/res/viewsource.css 2017-07-24 03:29:46.253217198 +0200 +@@ -6,8 +6,8 @@ + @namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */ + + *|*:root { +- background-color: white; +- color: black; ++ background-color: #002b36; ++ color: #839496; + direction: ltr; + -moz-control-character-visibility: visible; + height: 100%; +@@ -20,7 +20,7 @@ + height: 100%; + box-sizing: border-box; + margin: 0; +- padding: 8px; ++ padding: 0; + } + #viewsource.wrap { + white-space: pre-wrap; +@@ -41,20 +41,21 @@ + width: 5ch; + margin: 0 0 0 -5ch; + text-align: right; +- color: #ccc; ++ color: #93a1a1; ++ background-color: #073642; + font-weight: normal; + font-style: normal; + } + .highlight .start-tag { +- color: purple; ++ color: #6c71c4; + font-weight: bold; + } + .highlight .end-tag { +- color: purple; ++ color: #6c71c4; + font-weight: bold; + } + .highlight .comment { +- color: green; ++ color: #586e75; + font-style: italic; + } + .highlight .cdata { +@@ -76,11 +77,11 @@ + font-weight: normal; + } + .highlight .attribute-name { +- color: black; ++ color: #cb4b16; + font-weight: bold; + } + .highlight .attribute-value { +- color: blue; ++ color: #2aa198; + font-weight: normal; + } + .highlight .markupdeclaration { +@@ -96,6 +97,6 @@ + .highlight .error, + .highlight .error > :-moz-any(.start-tag, .end-tag, .comment, .cdata, .doctype, + .pi, .entity, .attribute-name, .attribute-value) { +- color: red; ++ color: #dc322f; + font-weight: bold; + } diff --git a/patches/www-servers/nginx-1.14/00 no bgwhite.patch b/patches/www-servers/nginx-1.14/00 no bgwhite.patch @@ -0,0 +1,11 @@ +--- nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c.old 2017-08-12 17:03:38.956602736 +0200 ++++ nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c 2017-08-12 17:04:06.514291803 +0200 +@@ -446,7 +446,7 @@ + + static u_char header[] = + "</title></head>" CRLF +- "<body bgcolor=\"white\">" CRLF ++ "<body>" CRLF + "<h1>Index of " + ; + diff --git a/patches/www-servers/nginx-1.14/01 ISO 8601.patch b/patches/www-servers/nginx-1.14/01 ISO 8601.patch @@ -0,0 +1,24 @@ +--- nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c.old 2017-08-12 17:06:14.873525862 +0200 ++++ nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c 2017-08-12 17:07:32.167042961 +0200 +@@ -455,9 +455,6 @@ + "</html>" CRLF + ; + +- static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", +- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +- + if (r->headers_out.charset.len == 5 + && ngx_strncasecmp(r->headers_out.charset.data, (u_char *) "utf-8", 5) + == 0) +@@ -617,9 +614,9 @@ + + ngx_gmtime(entry[i].mtime + tp->gmtoff * 60 * alcf->localtime, &tm); + +- b->last = ngx_sprintf(b->last, "%02d-%s-%d %02d:%02d ", ++ b->last = ngx_sprintf(b->last, "%02d-%02d-%02d %02d:%02d ", + tm.ngx_tm_mday, +- months[tm.ngx_tm_mon - 1], ++ tm.ngx_tm_mon, + tm.ngx_tm_year, + tm.ngx_tm_hour, + tm.ngx_tm_min); diff --git a/patches/www-servers/nginx-1.14/02 custom autoindex.patch b/patches/www-servers/nginx-1.14/02 custom autoindex.patch @@ -0,0 +1,185 @@ +diff --git a/src/http/modules/ngx_http_autoindex_module.c.old b/src/http/modules/ngx_http_autoindex_module.c +index 2af88a0..18c7570 100644 +--- a/src/http/modules/ngx_http_autoindex_module.c.old ++++ b/src/http/modules/ngx_http_autoindex_module.c +@@ -52,9 +52,6 @@ typedef struct { + + #define NGX_HTTP_AUTOINDEX_PREALLOCATE 50 + +-#define NGX_HTTP_AUTOINDEX_NAME_LEN 50 +- +- + static ngx_buf_t *ngx_http_autoindex_html(ngx_http_request_t *r, + ngx_array_t *entries); + static ngx_buf_t *ngx_http_autoindex_json(ngx_http_request_t *r, +@@ -478,7 +475,8 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + + sizeof(header) - 1 + + r->uri.len + escape_html + + sizeof("</h1>") - 1 +- + sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1 ++ + sizeof("<table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF) - 1 ++ + sizeof("<tr><td><a href=\"../\">../</a></td></tr>" CRLF) - 1 + + sizeof("</pre><hr>") - 1 + + sizeof(tail) - 1; + +@@ -499,15 +497,13 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + } + + len += sizeof("<a href=\"") - 1 +- + entry[i].name.len + entry[i].escape ++ + entry[i].name.len + + 1 /* 1 is for "/" */ + + sizeof("\">") - 1 +- + entry[i].name.len - entry[i].utf_len +- + entry[i].escape_html +- + NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof("&gt;") - 2 ++ + entry[i].utf_len + + sizeof("</a>") - 1 + + sizeof(" 28-Sep-1970 12:00 ") - 1 +- + 20 /* the file size */ ++ + 256 /* the file size */ + + 2; + } + +@@ -531,14 +527,14 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + + b->last = ngx_cpymem(b->last, "</h1>", sizeof("</h1>") - 1); + +- b->last = ngx_cpymem(b->last, "<hr><pre><a href=\"../\">../</a>" CRLF, +- sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1); ++ b->last = ngx_cpymem(b->last, "<hr><table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF "<tr><td><a href=\"../\">../</a></td></tr>" CRLF, ++ sizeof("<hr><table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF "<tr><td><a href=\"../\">../</a></td></tr>" CRLF) - 1); + + alcf = ngx_http_get_module_loc_conf(r, ngx_http_autoindex_module); + tp = ngx_timeofday(); + + for (i = 0; i < entries->nelts; i++) { +- b->last = ngx_cpymem(b->last, "<a href=\"", sizeof("<a href=\"") - 1); ++ b->last = ngx_cpymem(b->last, "<tr><td><a href=\"", sizeof("<tr><td><a href=\"") - 1); + + if (entry[i].escape) { + ngx_escape_uri(b->last, entry[i].name.data, entry[i].name.len, +@@ -558,69 +554,19 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + *b->last++ = '"'; + *b->last++ = '>'; + +- len = entry[i].utf_len; +- +- if (entry[i].name.len != len) { +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN - 3 + 1; +- +- } else { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN + 1; +- } +- +- last = b->last; +- b->last = ngx_utf8_cpystrn(b->last, entry[i].name.data, +- char_len, entry[i].name.len + 1); ++ b->last = ngx_cpymem(b->last, entry[i].name.data, ++ entry[i].name.len); + +- if (entry[i].escape_html) { +- b->last = (u_char *) ngx_escape_html(last, entry[i].name.data, +- b->last - last); +- } +- +- last = b->last; +- +- } else { +- if (entry[i].escape_html) { +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN - 3; +- +- } else { +- char_len = len; +- } +- +- b->last = (u_char *) ngx_escape_html(b->last, +- entry[i].name.data, char_len); +- last = b->last; +- +- } else { +- b->last = ngx_cpystrn(b->last, entry[i].name.data, +- NGX_HTTP_AUTOINDEX_NAME_LEN + 1); +- last = b->last - 3; +- } +- } +- +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- b->last = ngx_cpymem(last, "..&gt;</a>", sizeof("..&gt;</a>") - 1); +- +- } else { +- if (entry[i].dir && NGX_HTTP_AUTOINDEX_NAME_LEN - len > 0) { +- *b->last++ = '/'; +- len++; +- } +- +- b->last = ngx_cpymem(b->last, "</a>", sizeof("</a>") - 1); +- +- if (NGX_HTTP_AUTOINDEX_NAME_LEN - len > 0) { +- ngx_memset(b->last, ' ', NGX_HTTP_AUTOINDEX_NAME_LEN - len); +- b->last += NGX_HTTP_AUTOINDEX_NAME_LEN - len; +- } ++ if (entry[i].dir) { ++ *b->last++ = '/'; ++ len++; + } + +- *b->last++ = ' '; ++ b->last = ngx_cpymem(b->last, "</a></td>", sizeof("</a></td>") - 1); + + ngx_gmtime(entry[i].mtime + tp->gmtoff * 60 * alcf->localtime, &tm); + +- b->last = ngx_sprintf(b->last, "%02d-%02d-%02d %02d:%02d ", ++ b->last = ngx_sprintf(b->last, "<td>%02d-%02d-%02d %02d:%02d</td>", + tm.ngx_tm_mday, + tm.ngx_tm_mon, + tm.ngx_tm_year, +@@ -628,19 +574,12 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + tm.ngx_tm_min); + + if (alcf->exact_size) { +- if (entry[i].dir) { +- b->last = ngx_cpymem(b->last, " -", +- sizeof(" -") - 1); +- } else { +- b->last = ngx_sprintf(b->last, "%19O", entry[i].size); ++ if (!entry[i].dir) { ++ b->last = ngx_sprintf(b->last, "<td>%O</td>", entry[i].size); + } + + } else { +- if (entry[i].dir) { +- b->last = ngx_cpymem(b->last, " -", +- sizeof(" -") - 1); +- +- } else { ++ if (!entry[i].dir) { + length = entry[i].size; + + if (length > 1024 * 1024 * 1024 - 1) { +@@ -672,19 +611,18 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + } + + if (scale) { +- b->last = ngx_sprintf(b->last, "%6i%c", size, scale); ++ b->last = ngx_sprintf(b->last, "<td>%i%c</td>", size, scale); + + } else { +- b->last = ngx_sprintf(b->last, " %6i", size); ++ b->last = ngx_sprintf(b->last, "<td>%i</td>", size); + } + } + } + +- *b->last++ = CR; +- *b->last++ = LF; ++ b->last = ngx_sprintf(b->last, "</tr>" CRLF); + } + +- b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1); ++ b->last = ngx_cpymem(b->last, "</table>", sizeof("</table>") - 1); + + b->last = ngx_cpymem(b->last, tail, sizeof(tail) - 1); + diff --git a/patches/www-servers/nginx-1.14/03 autoindex styling.patch b/patches/www-servers/nginx-1.14/03 autoindex styling.patch @@ -0,0 +1,16 @@ +diff --git a/src/http/modules/ngx_http_autoindex_module.c.old b/src/http/modules/ngx_http_autoindex_module.c +index 18c7570..94176b4 100644 +--- a/src/http/modules/ngx_http_autoindex_module.c.old ++++ b/src/http/modules/ngx_http_autoindex_module.c +@@ -448,8 +448,9 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + ; + + static u_char header[] = +- "</title></head>" CRLF +- "<body>" CRLF ++ "</title>" CRLF ++ "<style>td{font-family:monospace;}td:nth-child(3){text-align:right;}</style>" CRLF ++ "</head><body>" CRLF + "<h1>Index of " + ; + diff --git a/patches/www-servers/nginx/01 ISO 8601.patch b/patches/www-servers/nginx/01 ISO 8601.patch @@ -0,0 +1,26 @@ +--- nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c.old 2017-08-12 17:06:14.873525862 +0200 ++++ nginx-1.12.1/src/http/modules/ngx_http_autoindex_module.c 2017-08-12 17:07:32.167042961 +0200 +@@ -455,9 +455,6 @@ + "</html>" CRLF + ; + +- static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", +- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +- + if (r->headers_out.charset.len == 5 + && ngx_strncasecmp(r->headers_out.charset.data, (u_char *) "utf-8", 5) + == 0) +@@ -617,9 +614,9 @@ + + ngx_gmtime(entry[i].mtime + tp->gmtoff * 60 * alcf->localtime, &tm); + +- b->last = ngx_sprintf(b->last, "%02d-%s-%d %02d:%02d ", ++ b->last = ngx_sprintf(b->last, "%02d-%02d-%02d %02d:%02d ", +- tm.ngx_tm_mday, ++ tm.ngx_tm_year, +- months[tm.ngx_tm_mon - 1], ++ tm.ngx_tm_mon, +- tm.ngx_tm_year, ++ tm.ngx_tm_mday, + tm.ngx_tm_hour, + tm.ngx_tm_min); diff --git a/patches/www-servers/nginx/02 custom autoindex.patch b/patches/www-servers/nginx/02 custom autoindex.patch @@ -0,0 +1,184 @@ +diff --git a/src/http/modules/ngx_http_autoindex_module.c.old b/src/http/modules/ngx_http_autoindex_module.c +index 2af88a0..18c7570 100644 +--- a/src/http/modules/ngx_http_autoindex_module.c.old ++++ b/src/http/modules/ngx_http_autoindex_module.c +@@ -52,9 +52,6 @@ typedef struct { + + #define NGX_HTTP_AUTOINDEX_PREALLOCATE 50 + +-#define NGX_HTTP_AUTOINDEX_NAME_LEN 50 +- +- + static ngx_buf_t *ngx_http_autoindex_html(ngx_http_request_t *r, + ngx_array_t *entries); + static ngx_buf_t *ngx_http_autoindex_json(ngx_http_request_t *r, +@@ -478,7 +475,8 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + + sizeof(header) - 1 + + r->uri.len + escape_html + + sizeof("</h1>") - 1 +- + sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1 ++ + sizeof("<table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF) - 1 ++ + sizeof("<tr><td><a href=\"../\">../</a></td></tr>" CRLF) - 1 + + sizeof("</pre><hr>") - 1 + + sizeof(tail) - 1; + +@@ -499,14 +497,12 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + } + + entry_len = sizeof("<a href=\"") - 1 +- + entry[i].name.len + entry[i].escape ++ + entry[i].name.len + + 1 /* 1 is for "/" */ + + sizeof("\">") - 1 +- + entry[i].name.len - entry[i].utf_len +- + entry[i].escape_html +- + NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof("&gt;") - 2 ++ + entry[i].utf_len + + sizeof("</a>") - 1 + + sizeof(" 28-Sep-1970 12:00 ") - 1 +- + 20 /* the file size */ ++ + 256 /* the file size */ + + 2; + +@@ -531,14 +527,14 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + + b->last = ngx_cpymem(b->last, "</h1>", sizeof("</h1>") - 1); + +- b->last = ngx_cpymem(b->last, "<hr><pre><a href=\"../\">../</a>" CRLF, +- sizeof("<hr><pre><a href=\"../\">../</a>" CRLF) - 1); ++ b->last = ngx_cpymem(b->last, "<hr><table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF "<tr><td><a href=\"../\">../</a></td></tr>" CRLF, ++ sizeof("<hr><table><tr><th>Name</th><th>Date</th><th>Size</th></tr>" CRLF "<tr><td><a href=\"../\">../</a></td></tr>" CRLF) - 1); + + alcf = ngx_http_get_module_loc_conf(r, ngx_http_autoindex_module); + tp = ngx_timeofday(); + + for (i = 0; i < entries->nelts; i++) { +- b->last = ngx_cpymem(b->last, "<a href=\"", sizeof("<a href=\"") - 1); ++ b->last = ngx_cpymem(b->last, "<tr><td><a href=\"", sizeof("<tr><td><a href=\"") - 1); + + if (entry[i].escape) { + ngx_escape_uri(b->last, entry[i].name.data, entry[i].name.len, +@@ -558,69 +554,19 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + *b->last++ = '"'; + *b->last++ = '>'; + +- len = entry[i].utf_len; +- +- if (entry[i].name.len != len) { +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN - 3 + 1; +- +- } else { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN + 1; +- } +- +- last = b->last; +- b->last = ngx_utf8_cpystrn(b->last, entry[i].name.data, +- char_len, entry[i].name.len + 1); ++ b->last = ngx_cpymem(b->last, entry[i].name.data, ++ entry[i].name.len); + +- if (entry[i].escape_html) { +- b->last = (u_char *) ngx_escape_html(last, entry[i].name.data, +- b->last - last); +- } +- +- last = b->last; +- +- } else { +- if (entry[i].escape_html) { +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- char_len = NGX_HTTP_AUTOINDEX_NAME_LEN - 3; +- +- } else { +- char_len = len; +- } +- +- b->last = (u_char *) ngx_escape_html(b->last, +- entry[i].name.data, char_len); +- last = b->last; +- +- } else { +- b->last = ngx_cpystrn(b->last, entry[i].name.data, +- NGX_HTTP_AUTOINDEX_NAME_LEN + 1); +- last = b->last - 3; +- } +- } +- +- if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) { +- b->last = ngx_cpymem(last, "..&gt;</a>", sizeof("..&gt;</a>") - 1); +- +- } else { +- if (entry[i].dir && NGX_HTTP_AUTOINDEX_NAME_LEN - len > 0) { +- *b->last++ = '/'; +- len++; +- } +- +- b->last = ngx_cpymem(b->last, "</a>", sizeof("</a>") - 1); +- +- if (NGX_HTTP_AUTOINDEX_NAME_LEN - len > 0) { +- ngx_memset(b->last, ' ', NGX_HTTP_AUTOINDEX_NAME_LEN - len); +- b->last += NGX_HTTP_AUTOINDEX_NAME_LEN - len; +- } ++ if (entry[i].dir) { ++ *b->last++ = '/'; ++ len++; + } + +- *b->last++ = ' '; ++ b->last = ngx_cpymem(b->last, "</a></td>", sizeof("</a></td>") - 1); + + ngx_gmtime(entry[i].mtime + tp->gmtoff * 60 * alcf->localtime, &tm); + +- b->last = ngx_sprintf(b->last, "%02d-%02d-%02d %02d:%02d ", ++ b->last = ngx_sprintf(b->last, "<td>%02d-%02d-%02d %02d:%02d</td>", + tm.ngx_tm_year, + tm.ngx_tm_mon, + tm.ngx_tm_mday, +@@ -628,19 +574,12 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + tm.ngx_tm_min); + + if (alcf->exact_size) { +- if (entry[i].dir) { +- b->last = ngx_cpymem(b->last, " -", +- sizeof(" -") - 1); +- } else { +- b->last = ngx_sprintf(b->last, "%19O", entry[i].size); ++ if (!entry[i].dir) { ++ b->last = ngx_sprintf(b->last, "<td>%O</td>", entry[i].size); + } + + } else { +- if (entry[i].dir) { +- b->last = ngx_cpymem(b->last, " -", +- sizeof(" -") - 1); +- +- } else { ++ if (!entry[i].dir) { + length = entry[i].size; + + if (length > 1024 * 1024 * 1024 - 1) { +@@ -672,19 +611,18 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + } + + if (scale) { +- b->last = ngx_sprintf(b->last, "%6i%c", size, scale); ++ b->last = ngx_sprintf(b->last, "<td>%i%c</td>", size, scale); + + } else { +- b->last = ngx_sprintf(b->last, " %6i", size); ++ b->last = ngx_sprintf(b->last, "<td>%i</td>", size); + } + } + } + +- *b->last++ = CR; +- *b->last++ = LF; ++ b->last = ngx_sprintf(b->last, "</tr>" CRLF); + } + +- b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1); ++ b->last = ngx_cpymem(b->last, "</table>", sizeof("</table>") - 1); + + b->last = ngx_cpymem(b->last, tail, sizeof(tail) - 1); + diff --git a/patches/www-servers/nginx/03 autoindex styling.patch b/patches/www-servers/nginx/03 autoindex styling.patch @@ -0,0 +1,16 @@ +diff --git a/src/http/modules/ngx_http_autoindex_module.c.old b/src/http/modules/ngx_http_autoindex_module.c +index 18c7570..94176b4 100644 +--- a/src/http/modules/ngx_http_autoindex_module.c.old ++++ b/src/http/modules/ngx_http_autoindex_module.c +@@ -448,8 +448,9 @@ ngx_http_autoindex_html(ngx_http_request_t *r, ngx_array_t *entries) + ; + + static u_char header[] = +- "</title></head>" CRLF +- "<body>" CRLF ++ "</title>" CRLF ++ "<style>td{font-family:monospace;}td:nth-child(3){text-align:right;}</style>" CRLF ++ "</head><body>" CRLF + "<h1>Index of " + ; + diff --git a/patches/x11-libs/cairo-1.14.12/cairo-1.14.6-macos.patch b/patches/x11-libs/cairo-1.14.12/cairo-1.14.6-macos.patch @@ -0,0 +1,103 @@ +diff --git a/configure b/configure +index 6476db0..e1cbe17 100755 +--- a/configure ++++ b/configure +@@ -19177,7 +19177,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -19224,7 +19224,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -19275,7 +19275,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -19322,7 +19322,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -19391,7 +19391,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -19447,7 +19447,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -20920,7 +20920,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -20967,7 +20967,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -34129,7 +34129,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -34248,7 +34248,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + +@@ -34329,7 +34329,7 @@ fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +- if test "x$cairo_cc_stderr" != "x"; then ++ if false; then + cairo_cc_flag=no + fi + diff --git a/patches/x11-libs/gtk+-3.24.1/gtk+-3.24.1_purple.patch b/patches/x11-libs/gtk+-3.24.1/gtk+-3.24.1_purple.patch @@ -0,0 +1,913 @@ +grep -rl '#4a90d9' . | xargs sed -i 's/#4a90d9/#b16286/' + +diff --git a/demos/gtk-demo/cssview.css b/demos/gtk-demo/cssview.css +index c4fe5ee..778aee8 100644 +--- a/demos/gtk-demo/cssview.css ++++ b/demos/gtk-demo/cssview.css +@@ -7,7 +7,7 @@ + + .view:selected { + color: white; +- background-color: #4a90d9; ++ background-color: #b16286; + } + + scrollbar trough, +diff --git a/gtk/gesture/gesture-pinch-symbolic.svg b/gtk/gesture/gesture-pinch-symbolic.svg +index 408f809..344d8f7 100644 +--- a/gtk/gesture/gesture-pinch-symbolic.svg ++++ b/gtk/gesture/gesture-pinch-symbolic.svg +@@ -71,7 +71,7 @@ + id="layer1" + transform="translate(180,-470.14793)"> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 40 8 C 37.784003 8 36 9.8667876 36 12.185547 L 36 36 L 35 36 L 35 29.185547 C 35 29.022886 34.97217 28.868661 34.955078 28.710938 A 4.0004 4.0004 0 0 0 32.398438 24.994141 L 27.960938 23.253906 C 27.578317 18.647747 23.701182 15 19 15 C 14.04721 15 10 19.0472 10 24 C 10 25.418791 10.341256 26.758764 10.931641 27.955078 C 6.0103696 27.99252 2 32.021431 2 36.951172 C 2 41.903972 6.04721 45.951172 11 45.951172 C 11.65701 45.951172 12.296258 45.87534 12.914062 45.740234 L 22 57 L 31 57 L 33.097656 57 L 58 57 C 60.215997 57 62 55.133212 62 52.814453 L 62 40.185547 L 62 31.185547 C 62 28.866788 60.215997 27 58 27 C 55.784003 27 54 28.866788 54 31.185547 L 54 36 L 53 36 L 53 25.185547 C 53 22.866788 51.215997 21 49 21 C 46.784003 21 45 22.866788 45 25.185547 L 45 36 L 44 36 L 44 12.185547 C 44 9.8667876 42.215997 8 40 8 z M 19 18 C 21.608824 18 23.804048 19.639507 24.636719 21.949219 L 20.414062 20.291016 A 4.0004 4.0004 0 0 0 18.851562 19.994141 A 4.0004 4.0004 0 0 0 17.492188 27.738281 L 21.666016 29.376953 C 20.863524 29.772856 19.960933 30 19 30 C 15.66853 30 13 27.33148 13 24 C 13 20.66852 15.66853 18 19 18 z M 24.996094 30.683594 L 27 31.470703 L 27 40.185547 L 27 42.535156 L 22.605469 44.484375 L 19.25 40.533203 C 19.730663 39.433901 20 38.223149 20 36.951172 C 20 35.532014 19.659028 34.192639 19.068359 32.996094 C 21.343367 32.978785 23.41661 32.101557 24.996094 30.683594 z M 11 30.951172 C 14.33147 30.951172 17 33.619692 17 36.951172 C 17 37.24237 16.97303 37.526912 16.933594 37.806641 L 14.105469 34.478516 C 13.349589 33.519886 12.197352 32.958868 10.976562 32.955078 C 7.575713 32.943978 5.7130814 36.912434 7.8945312 39.521484 L 10.648438 42.933594 C 7.4835407 42.75281 5 40.164051 5 36.951172 C 5 33.619692 7.66853 30.951172 11 30.951172 z " + transform="translate(-180,470.14793)" + id="rect6515" /> +@@ -83,9 +83,9 @@ + height="32" + width="7.99999" + id="rect7304" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7306" + width="7.99999" + height="49.000015" +@@ -101,9 +101,9 @@ + height="36.000011" + width="7.99999" + id="rect7308" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7310" + width="7.99999" + height="30.000006" +@@ -119,7 +119,7 @@ + height="21" + width="34.999985" + id="rect7312" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <ellipse + cx="-269" + cy="507.09995" +@@ -135,7 +135,7 @@ + rx="7.4999938" + ry="7.5000024" /> + <ellipse +- style="opacity:1;fill:#4a90d9;fill-opacity:0.31564989;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" ++ style="opacity:1;fill:#b16286;fill-opacity:0.31564989;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse7318" + cx="-261" + cy="494.14792" +diff --git a/gtk/gesture/gesture-rotate-anticlockwise-symbolic.svg b/gtk/gesture/gesture-rotate-anticlockwise-symbolic.svg +index 10f4e36..1932430 100644 +--- a/gtk/gesture/gesture-rotate-anticlockwise-symbolic.svg ++++ b/gtk/gesture/gesture-rotate-anticlockwise-symbolic.svg +@@ -83,7 +83,7 @@ + d="" + inkscape:connector-curvature="0" /> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 30.978516,13.310547 c -2.207639,0.03872 -3.966459,1.858733 -3.929688,4.066406 l 0.05273,22.876953 c 0,0.642649 -0.67295,0.87956 -0.910156,0.373047 L 18.742188,24.804688 c -0.621941,-1.370965 -1.960897,-2.276685 -3.464844,-2.34375 -3.031568,-0.134912 -5.103626,3.02251 -3.773438,5.75 l 8.003906,16.998046 c -0.773572,0.82429 -1.941423,1.030647 -3.832031,0.09961 L 12.714844,40.179688 C 11.555464,38.171583 9.0877248,37.440537 7.1816406,38.541016 l -0.3828125,0.220703 c -1.9060842,1.100478 -2.5070358,3.603224 -1.3476562,5.611328 l 6.3964841,11.080078 c 0.145898,0.252702 0.312481,0.484172 0.496094,0.695313 l 1.599609,3.548828 C 14.606259,61.127306 15.445616,62 17.478516,62 l 12.875,0 0.0098,0 17.94336,0 C 50.907298,62 53,59.866806 53,57.216797 L 53,42.783203 53,39 c 0,-2.215997 -1.784003,-4 -4,-4 -1.868548,0 -3.417636,1.273706 -3.861328,3 L 44,38 44,36 c 0,-2.215997 -1.682015,-4 -3.771484,-4 l -0.457032,0 C 37.682015,32 36,33.784003 36,36 l 0,2 -0.900391,0 -0.05078,-20.642578 c 0.02655,-2.255146 -1.815356,-4.086446 -4.070312,-4.046875 z" + transform="translate(-1077.1429,641.07582)" + id="rect4211" +@@ -127,9 +127,9 @@ + height="21.164835" + width="8.3888855" + id="rect7306" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7308" + width="8" + height="20.928894" +@@ -145,15 +145,15 @@ + height="18.381226" + width="8" + id="rect7310" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="path7312" + d="m -1183.2276,685.33054 c 4.1113,2.85277 5.6524,1.6667 6.4893,-0.62598 l 15.1527,18.2581 -24.6089,-8.74318 c -0.4862,-1.41421 -0.6185,-2.72414 -0.6185,-4.23285 z" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7314" + width="27.331339" + height="24.00001" +diff --git a/gtk/gesture/gesture-rotate-clockwise-symbolic.svg b/gtk/gesture/gesture-rotate-clockwise-symbolic.svg +index 38c44dc..f249b5d 100644 +--- a/gtk/gesture/gesture-rotate-clockwise-symbolic.svg ++++ b/gtk/gesture/gesture-rotate-clockwise-symbolic.svg +@@ -71,7 +71,7 @@ + id="layer1" + transform="translate(1077.1429,-641.07582)"> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect4211" + width="7.99999" + height="18.999975" +@@ -87,10 +87,10 @@ + height="27.193785" + width="8" + id="rect4215" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect4217" + width="8" + height="24.624201" +@@ -100,7 +100,7 @@ + rx="3.999995" + transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)" /> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m -983.2276,685.33054 31.238,17.58202 -9.596,0.0501 -24.6089,-8.74318 c -0.4862,-1.41421 -0.6185,-2.72414 -0.6185,-4.23285 z" + id="rect4219" + inkscape:connector-curvature="0" +@@ -113,7 +113,7 @@ + height="21" + width="22.205551" + id="rect4221" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)" /> + <ellipse + transform="matrix(-0.25881906,-0.96592582,-0.96592582,0.25881906,0,0)" +diff --git a/gtk/gesture/gesture-stretch-symbolic.svg b/gtk/gesture/gesture-stretch-symbolic.svg +index d783c20..bfb4dad 100644 +--- a/gtk/gesture/gesture-stretch-symbolic.svg ++++ b/gtk/gesture/gesture-stretch-symbolic.svg +@@ -60,12 +60,12 @@ + id="layer1" + transform="translate(0,-988.3622)"> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 25 8 C 20.047207 8 16 12.0472 16 17 C 16 21.849398 19.882333 25.820253 24.693359 25.984375 L 27 30.894531 L 27 41.185547 L 27 43.494141 L 20.464844 44.285156 L 19.414062 43.158203 C 19.786753 42.17281 20 41.112337 20 40 C 20 35.0472 15.952793 31 11 31 C 6.0472067 31 2 35.0472 2 40 C 2 44.9528 6.0472067 49 11 49 C 11.857115 49 12.684113 48.870665 13.470703 48.644531 L 22 58 L 31 58 L 35 58 L 58 58 C 60.215997 58 62 56.133212 62 53.814453 L 62 41.185547 L 62 32.185547 C 62 29.866788 60.215997 28 58 28 C 55.784003 28 54 29.866788 54 32.185547 L 54 37 L 53 37 L 53 26.185547 C 53 23.866788 51.215997 22 49 22 C 46.784003 22 45 23.866788 45 26.185547 L 45 37 L 44 37 L 44 13.185547 C 44 10.866788 42.215997 9 40 9 C 37.784003 9 36 10.866788 36 13.185547 L 36 37 L 35 37 L 35 30.185547 C 35 30.18084 34.998062 30.176578 34.998047 30.171875 A 4.0004 4.0004 0 0 0 34.621094 28.300781 L 31.974609 22.667969 C 33.238019 21.117771 34 19.145357 34 17 C 34 12.0472 29.952793 8 25 8 z M 25 11 C 28.331471 11 31 13.6686 31 17 C 31 17.882507 30.807929 18.714615 30.470703 19.466797 L 29.060547 16.462891 A 4.1028752 3.9987371 0 0 0 25 13.001953 A 4.1028752 3.9987371 0 0 0 24.826172 13.007812 A 4.0004 4.0004 0 0 0 20.896484 16.998047 A 4.1028752 3.9987371 0 0 1 20.896484 17 A 4.1028752 3.9987371 0 0 0 20.898438 17.027344 A 4.0004 4.0004 0 0 0 21.298828 18.755859 L 23.15625 22.710938 C 20.73678 21.938685 19 19.686937 19 17 C 19 13.6686 21.668529 11 25 11 z M 11 34 C 14.331471 34 17 36.6686 17 40 C 17 40.182439 16.988332 40.36093 16.972656 40.539062 L 13.964844 37.3125 C 13.238574 36.5117 12.219112 36.038953 11.138672 36.001953 C 7.5520017 35.879253 5.6304813 40.176278 8.1132812 42.767578 L 11.056641 45.998047 C 11.037592 45.998222 11.019093 46 11 46 C 7.6685289 46 5 43.3315 5 40 C 5 36.6686 7.6685289 34 11 34 z " + transform="translate(0,988.3622)" + id="rect4249" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7301" + width="7.99999" + height="32" +@@ -81,9 +81,9 @@ + height="49.000015" + width="7.99999" + id="rect7303" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7305" + width="7.99999" + height="36.000011" +@@ -99,9 +99,9 @@ + height="30.000006" + width="7.99999" + id="rect7307" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7309" + width="34.999985" + height="21" +@@ -135,7 +135,7 @@ + cy="1005.3622" + cx="-75.000008" + id="ellipse7317" +- style="opacity:1;fill:#4a90d9;fill-opacity:0.31564989;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> ++ style="opacity:1;fill:#b16286;fill-opacity:0.31564989;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" +diff --git a/gtk/gesture/gesture-two-finger-swipe-left-symbolic.svg b/gtk/gesture/gesture-two-finger-swipe-left-symbolic.svg +index e25947c..e3b5c7d 100644 +--- a/gtk/gesture/gesture-two-finger-swipe-left-symbolic.svg ++++ b/gtk/gesture/gesture-two-finger-swipe-left-symbolic.svg +@@ -64,7 +64,7 @@ + id="layer1" + transform="translate(180,-470.14793)"> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 38.271484 6.0039062 C 37.981892 5.9956378 37.692703 6.0019094 37.40625 6.0214844 C 34.246377 6.2374271 31.332975 8.1249345 29.902344 11.082031 C 29.173793 10.990041 28.447857 10.978702 27.738281 11.0625 C 24.36672 11.460668 21.373919 13.762084 20.242188 17.148438 L 12 17.148438 L 12 10.148438 L 2 19.648438 L 12 29.148438 L 12 22.148438 L 20.048828 22.148438 C 20.694441 24.742195 22.473591 26.994506 25 28.162109 L 25 47 L 24 47 L 24 39.185547 C 24 36.866788 22.215997 35 20 35 C 17.784003 35 16 36.866788 16 39.185547 L 16 47 L 16 55.814453 L 16 60 L 20 60 L 45 60 L 56 60 C 58.215997 60 60 58.133212 60 55.814453 L 60 43.185547 L 60 34.185547 C 60 31.866788 58.215997 30 56 30 C 53.784003 30 52 31.866788 52 34.185547 L 52 39 L 51 39 L 51 28.185547 C 51 25.866788 49.215997 24 47 24 C 44.784003 24 43 25.866788 43 28.185547 L 43 39 L 42 39 L 42 23.042969 C 44.136586 21.978813 45.853243 20.084457 46.603516 17.640625 C 48.028796 12.998095 45.481769 8.0270562 40.880859 6.4726562 C 40.018187 6.1812063 39.140263 6.0287116 38.271484 6.0039062 z M 38.171875 8.9980469 C 38.752124 9.0164906 39.339992 9.1204781 39.919922 9.3164062 C 43.012882 10.361346 44.694478 13.640769 43.736328 16.761719 C 43.402083 17.85044 42.787396 18.769252 42 19.474609 L 42 15.185547 C 42 12.866788 40.215997 11 38 11 C 35.784003 11 34 12.866788 34 15.185547 L 34 22.945312 C 33.72503 23.436938 33.386634 23.876948 33 24.261719 L 33 20.185547 C 33 17.866788 31.215997 16 29 16 C 26.784003 16 25 17.866788 25 20.185547 L 25 24.666016 C 23.150282 23.179661 22.297135 20.683826 23.027344 18.265625 C 23.981604 15.105485 27.261604 13.320305 30.433594 14.234375 A 1.50015 1.50015 0 0 0 32.361328 12.945312 A 1.50015 1.50015 0 0 0 32.371094 12.921875 C 33.289974 10.433529 35.657461 8.9181241 38.171875 8.9980469 z M 34 27.302734 L 34 39 L 33 39 L 33 27.925781 C 33.346618 27.7409 33.679606 27.531269 34 27.302734 z " + transform="translate(-180,470.14793)" + id="rect7308" /> +@@ -82,9 +82,9 @@ + height="24.999994" + width="7.99999" + id="rect7395" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7397" + width="7.99999" + height="43.999989" +@@ -100,9 +100,9 @@ + height="49.000015" + width="7.99999" + id="rect7399" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7401" + width="7.99999" + height="36.000011" +@@ -118,16 +118,16 @@ + height="30.000006" + width="7.99999" + id="rect7403" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7405" + width="28.999994" + height="12.99999" + x="-324" + y="403" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7407" + width="34.999985" + height="21" +@@ -169,7 +169,7 @@ + sodipodi:nodetypes="cccc" /> + <rect + transform="scale(-1,-1)" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7415" + width="13.061281" + height="4.9999938" +diff --git a/gtk/gesture/gesture-two-finger-swipe-right-symbolic.svg b/gtk/gesture/gesture-two-finger-swipe-right-symbolic.svg +index e27b4b1..6e73fc8 100644 +--- a/gtk/gesture/gesture-two-finger-swipe-right-symbolic.svg ++++ b/gtk/gesture/gesture-two-finger-swipe-right-symbolic.svg +@@ -64,7 +64,7 @@ + id="layer1" + transform="translate(180,-470.14793)"> + <path +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m -129,475.29637 0,7 -14.48047,0 c -0.8685,-2.58098 -2.88029,-4.74387 -5.63867,-5.67578 -1.15023,-0.3886 -2.3288,-0.52948 -3.47461,-0.45118 -3.16004,0.21596 -6.07335,2.10345 -7.50391,5.06055 -0.72859,-0.0926 -1.45444,-0.10529 -2.16406,-0.0215 -3.45482,0.40801 -6.51775,2.81143 -7.58203,6.33594 -1.30748,4.32992 0.83762,8.91584 4.84375,10.76757 l 0,18.83594 -1,0 0,-7.81445 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,7.81445 0,8.81445 0,4.18555 4,0 25,0 11,0 c 2.216,0 4,-1.86679 4,-4.18555 l 0,-12.6289 0,-9 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,4.81445 -1,0 0,-10.81445 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,10.81445 -1,0 0,-15.95703 c 2.13659,-1.06416 3.85324,-2.95852 4.60352,-5.40235 0.0502,-0.16362 0.0846,-0.32791 0.125,-0.49218 l 14.27148,0 0,7 10,-9.5 -10,-9.5 z m -22.82812,3.84961 c 0.58024,0.0183 1.16811,0.12047 1.74804,0.3164 2.47175,0.83508 4.03799,3.09857 4.08008,5.56641 l 0,0.23242 c -0.012,0.54544 -0.0952,1.09784 -0.26367,1.64649 -0.33419,1.08853 -0.94913,2.00757 -1.73633,2.71289 l 0,-4.28711 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,7.75976 c -0.27497,0.49163 -0.61337,0.93164 -1,1.31641 l 0,-4.07617 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,4.48242 c -1.84972,-1.48636 -2.70286,-3.98414 -1.97266,-6.40235 0.95426,-3.16014 4.23426,-4.94531 7.40625,-4.03125 a 1.50015,1.50015 0 0 0 1.92774,-1.28906 1.5004025,1.5004025 0 0 0 0.01,-0.0234 c 0.91888,-2.48834 3.28636,-4.00326 5.80078,-3.92383 z M -156,497.45066 l 0,11.69727 -1,0 0,-11.07227 c 0.34667,-0.1849 0.67956,-0.39643 1,-0.625 z" + id="rect6513" + inkscape:connector-curvature="0" /> +@@ -75,7 +75,7 @@ + <g + id="g7306"> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7308" + width="7.99999" + height="24.999994" +@@ -91,9 +91,9 @@ + height="43.999989" + width="7.99999" + id="rect7310" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7312" + width="7.99999" + height="49.000015" +@@ -109,9 +109,9 @@ + height="36.000011" + width="7.99999" + id="rect7314" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect7316" + width="7.99999" + height="30.000006" +@@ -125,7 +125,7 @@ + height="12.99999" + width="28.999994" + id="rect7318" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <rect + rx="3.999995" + ry="4.1854858" +@@ -134,7 +134,7 @@ + height="21" + width="34.999985" + id="rect7320" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" + id="path7322" +@@ -173,7 +173,7 @@ + height="4.9999919" + width="20.686279" + id="rect7328" +- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" ++ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#b16286;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + transform="scale(1,-1)" /> + </g> + </svg> +diff --git a/gtk/theme/Adwaita/_colors.scss b/gtk/theme/Adwaita/_colors.scss +index 597f94f..617a51c 100644 +--- a/gtk/theme/Adwaita/_colors.scss ++++ b/gtk/theme/Adwaita/_colors.scss +@@ -8,7 +8,7 @@ $bg_color: if($variant == 'light', #e8e8e7, #33393b); + $fg_color: if($variant == 'light', #2e3436, #eeeeec); + + $selected_fg_color: #ffffff; +-$selected_bg_color: if($variant == 'light', #4a90d9, darken(#4a90d9, 20%)); ++$selected_bg_color: if($variant == 'light', #b16286, darken(#4a90d9, 20%)); + $selected_borders_color: if($variant== 'light', darken($selected_bg_color, 30%), darken($selected_bg_color, 20%)); + $borders_color: if($variant == 'light', darken($bg_color, 20%), darken($bg_color, 10%)); + $alt_borders_color: if($variant == 'light', darken($bg_color, 35%), darken($bg_color, 17%)); +diff --git a/gtk/theme/Adwaita/gtk-contained-dark.css b/gtk/theme/Adwaita/gtk-contained-dark.css +index d8366cd..dd14f43 100644 +--- a/gtk/theme/Adwaita/gtk-contained-dark.css ++++ b/gtk/theme/Adwaita/gtk-contained-dark.css +@@ -462,7 +462,7 @@ button.color { padding: 4px; } + button.color colorswatch:only-child, button.color colorswatch:only-child overlay { border-radius: 0; } + + /********* Links * */ +-button:link > label, button:visited > label, *:link, button:link, button:visited { color: #4a90d9; } ++button:link > label, button:visited > label, *:link, button:link, button:visited { color: #b16286; } + + button:link > label:visited, button:visited > label:visited, *:link:visited, button:visited { color: #2a76c6; } + +@@ -472,7 +472,7 @@ button:link > label:hover, button:visited > label:hover, *:link:hover, button:ho + + *:selected button:link > label:hover, *:selected button:visited > label:hover, *:selected *:link:hover, *:selected button:hover:link, *:selected button:hover:visited { color: #e9eff5; } + +-button:link > label:active, button:visited > label:active, *:link:active, button:active:link, button:active:visited { color: #4a90d9; } ++button:link > label:active, button:visited > label:active, *:link:active, button:active:link, button:active:visited { color: #b16286; } + + *:selected button:link > label:active, *:selected button:visited > label:active, *:selected *:link:active, *:selected button:active:link, *:selected button:active:visited { color: #d3dfeb; } + +@@ -785,7 +785,7 @@ menubar:backdrop, .menubar:backdrop { background-color: #33393b; } + + menubar > menuitem, .menubar > menuitem { min-height: 16px; padding: 4px 8px; } + +-menubar > menuitem:hover, .menubar > menuitem:hover { box-shadow: inset 0 -3px #215d9c; color: #4a90d9; } ++menubar > menuitem:hover, .menubar > menuitem:hover { box-shadow: inset 0 -3px #215d9c; color: #b16286; } + + menubar > menuitem:disabled, .menubar > menuitem:disabled { color: #919494; box-shadow: none; } + +diff --git a/gtk/theme/Adwaita/gtk-contained.css b/gtk/theme/Adwaita/gtk-contained.css +index cbb4e24..c40b1b1 100644 +--- a/gtk/theme/Adwaita/gtk-contained.css ++++ b/gtk/theme/Adwaita/gtk-contained.css +@@ -1,4 +1,4 @@ +-* { padding: 0; -GtkToolButton-icon-spacing: 4; -GtkTextView-error-underline-color: #cc0000; -GtkScrolledWindow-scrollbar-spacing: 0; -GtkToolItemGroup-expander-size: 11; -GtkWidget-text-handle-width: 20; -GtkWidget-text-handle-height: 24; -GtkDialog-button-spacing: 4; -GtkDialog-action-area-border: 0; outline-color: alpha(currentColor,0.3); outline-style: dashed; outline-offset: -3px; outline-width: 1px; -gtk-outline-radius: 2px; -gtk-secondary-caret-color: #4a90d9; } ++* { padding: 0; -GtkToolButton-icon-spacing: 4; -GtkTextView-error-underline-color: #cc0000; -GtkScrolledWindow-scrollbar-spacing: 0; -GtkToolItemGroup-expander-size: 11; -GtkWidget-text-handle-width: 20; -GtkWidget-text-handle-height: 24; -GtkDialog-button-spacing: 4; -GtkDialog-action-area-border: 0; outline-color: alpha(currentColor,0.3); outline-style: dashed; outline-offset: -3px; outline-width: 1px; -gtk-outline-radius: 2px; -gtk-secondary-caret-color: #b16286; } + + /*************** Base States * */ + .background { color: #2e3436; background-color: #e8e8e7; } +@@ -16,7 +16,7 @@ + + .gtkstyle-fallback:disabled { color: #8b8e8f; background-color: #f1f1f1; } + +-.gtkstyle-fallback:selected { color: #ffffff; background-color: #4a90d9; } ++.gtkstyle-fallback:selected { color: #ffffff; background-color: #b16286; } + + .view, iconview, .view text, iconview text, textview text { color: black; background-color: #ffffff; } + +@@ -50,7 +50,7 @@ label.separator { color: #2e3436; } + + label.separator:backdrop { color: #8b8e8f; } + +-label selection { background-color: #4a90d9; color: #ffffff; } ++label selection { background-color: #b16286; color: #ffffff; } + + label:disabled { color: #8b8e8f; } + +@@ -96,7 +96,7 @@ spinbutton:not(.vertical) undershoot.right, entry undershoot.right { background- + + spinbutton.flat:focus:not(.vertical), spinbutton.flat:backdrop:not(.vertical), spinbutton.flat:disabled:not(.vertical), spinbutton.flat:backdrop:disabled:not(.vertical), spinbutton.flat:not(.vertical), entry.flat:focus, entry.flat:backdrop, entry.flat:disabled, entry.flat:backdrop:disabled, entry.flat { min-height: 0; padding: 2px; background-color: transparent; border-color: transparent; border-radius: 0; } + +-spinbutton:focus:not(.vertical), entry:focus { box-shadow: inset 0 0 0 1px #4a90d9; border-color: #4a90d9; } ++spinbutton:focus:not(.vertical), entry:focus { box-shadow: inset 0 0 0 1px #b16286; border-color: #4a90d9; } + + spinbutton:disabled:not(.vertical), entry:disabled { color: #8b8e8f; border-color: #b6b6b3; background-color: #f1f1f1; box-shadow: none; } + +@@ -120,7 +120,7 @@ spinbutton:not(.vertical) image, entry image { color: #585d5e; } + + spinbutton:not(.vertical) image:hover, entry image:hover { color: #2e3436; } + +-spinbutton:not(.vertical) image:active, entry image:active { color: #4a90d9; } ++spinbutton:not(.vertical) image:active, entry image:active { color: #b16286; } + + spinbutton:not(.vertical) image:backdrop, entry image:backdrop { color: #a2a4a5; } + +@@ -128,17 +128,17 @@ spinbutton:drop(active):focus:not(.vertical), spinbutton:drop(active):not(.verti + + .osd spinbutton:not(.vertical), .osd entry { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; text-shadow: 0 1px black; -gtk-icon-shadow: 0 1px black; } + +-.osd spinbutton:focus:not(.vertical), .osd entry:focus { color: white; border-color: #4a90d9; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: inset 0 0 0 1px #4a90d9; text-shadow: 0 1px black; -gtk-icon-shadow: 0 1px black; } ++.osd spinbutton:focus:not(.vertical), .osd entry:focus { color: white; border-color: #b16286; background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: inset 0 0 0 1px #4a90d9; text-shadow: 0 1px black; -gtk-icon-shadow: 0 1px black; } + + .osd spinbutton:backdrop:not(.vertical), .osd entry:backdrop { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(0, 0, 0, 0.5); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; } + + .osd spinbutton:disabled:not(.vertical), .osd entry:disabled { color: #858786; border-color: rgba(0, 0, 0, 0.7); background-color: rgba(49, 52, 52, 0.5); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; } + +-spinbutton:not(.vertical) progress, entry progress { margin: 2px -6px; background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #4a90d9; border-style: solid; box-shadow: none; } ++spinbutton:not(.vertical) progress, entry progress { margin: 2px -6px; background-color: transparent; background-image: none; border-radius: 0; border-width: 0 0 2px; border-color: #b16286; border-style: solid; box-shadow: none; } + + spinbutton:not(.vertical) progress:backdrop, entry progress:backdrop { background-color: transparent; } + +-.linked:not(.vertical) > spinbutton:focus:not(.vertical) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:focus:not(.vertical) + button, .linked:not(.vertical) > spinbutton:focus:not(.vertical) + combobox > box > button.combo, .linked:not(.vertical) > entry:focus + spinbutton:not(.vertical), .linked:not(.vertical) > entry:focus + button, .linked:not(.vertical) > entry:focus + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:focus:not(.vertical) + entry, .linked:not(.vertical) > entry:focus + entry { border-left-color: #4a90d9; } ++.linked:not(.vertical) > spinbutton:focus:not(.vertical) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:focus:not(.vertical) + button, .linked:not(.vertical) > spinbutton:focus:not(.vertical) + combobox > box > button.combo, .linked:not(.vertical) > entry:focus + spinbutton:not(.vertical), .linked:not(.vertical) > entry:focus + button, .linked:not(.vertical) > entry:focus + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:focus:not(.vertical) + entry, .linked:not(.vertical) > entry:focus + entry { border-left-color: #b16286; } + + .linked:not(.vertical) > spinbutton:focus.error:not(.vertical) + spinbutton:not(.vertical), .linked:not(.vertical) > spinbutton:focus.error:not(.vertical) + button, .linked:not(.vertical) > spinbutton:focus.error:not(.vertical) + combobox > box > button.combo, .linked:not(.vertical) > entry:focus.error + spinbutton:not(.vertical), .linked:not(.vertical) > entry:focus.error + button, .linked:not(.vertical) > entry:focus.error + combobox > box > button.combo, .linked:not(.vertical) > spinbutton:focus.error:not(.vertical) + entry, .linked:not(.vertical) > entry:focus.error + entry { border-left-color: #cc0000; } + +@@ -150,13 +150,13 @@ spinbutton:not(.vertical) progress:backdrop, entry progress:backdrop { backgroun + + .linked.vertical > spinbutton:disabled:not(.vertical) + spinbutton:disabled:not(.vertical), .linked.vertical > spinbutton:disabled:not(.vertical) + entry:disabled, .linked.vertical > entry:disabled + spinbutton:disabled:not(.vertical), .linked.vertical > entry:disabled + entry:disabled { border-top-color: #e9e9e8; } + +-.linked.vertical > spinbutton:not(.vertical) + spinbutton:focus:not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + entry:focus:not(:only-child), .linked.vertical > entry + spinbutton:focus:not(:only-child):not(.vertical), .linked.vertical > entry + entry:focus:not(:only-child) { border-top-color: #4a90d9; } ++.linked.vertical > spinbutton:not(.vertical) + spinbutton:focus:not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + entry:focus:not(:only-child), .linked.vertical > entry + spinbutton:focus:not(:only-child):not(.vertical), .linked.vertical > entry + entry:focus:not(:only-child) { border-top-color: #b16286; } + + .linked.vertical > spinbutton:not(.vertical) + spinbutton:focus.error:not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + entry:focus.error:not(:only-child), .linked.vertical > entry + spinbutton:focus.error:not(:only-child):not(.vertical), .linked.vertical > entry + entry:focus.error:not(:only-child) { border-top-color: #cc0000; } + + .linked.vertical > spinbutton:not(.vertical) + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > spinbutton:not(.vertical) + entry:drop(active):not(:only-child), .linked.vertical > entry + spinbutton:drop(active):not(:only-child):not(.vertical), .linked.vertical > entry + entry:drop(active):not(:only-child) { border-top-color: #4e9a06; } + +-.linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + spinbutton:not(.vertical), .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + entry, .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + button, .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + combobox > box > button.combo, .linked.vertical > entry:focus:not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:focus:not(:only-child) + entry, .linked.vertical > entry:focus:not(:only-child) + button, .linked.vertical > entry:focus:not(:only-child) + combobox > box > button.combo { border-top-color: #4a90d9; } ++.linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + spinbutton:not(.vertical), .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + entry, .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + button, .linked.vertical > spinbutton:focus:not(:only-child):not(.vertical) + combobox > box > button.combo, .linked.vertical > entry:focus:not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:focus:not(:only-child) + entry, .linked.vertical > entry:focus:not(:only-child) + button, .linked.vertical > entry:focus:not(:only-child) + combobox > box > button.combo { border-top-color: #b16286; } + + .linked.vertical > spinbutton:focus.error:not(:only-child):not(.vertical) + spinbutton:not(.vertical), .linked.vertical > spinbutton:focus.error:not(:only-child):not(.vertical) + entry, .linked.vertical > spinbutton:focus.error:not(:only-child):not(.vertical) + button, .linked.vertical > spinbutton:focus.error:not(:only-child):not(.vertical) + combobox > box > button.combo, .linked.vertical > entry:focus.error:not(:only-child) + spinbutton:not(.vertical), .linked.vertical > entry:focus.error:not(:only-child) + entry, .linked.vertical > entry:focus.error:not(:only-child) + button, .linked.vertical > entry:focus.error:not(:only-child) + combobox > box > button.combo { border-top-color: #cc0000; } + +@@ -166,9 +166,9 @@ treeview entry:focus:dir(rtl), treeview entry:focus:dir(ltr) { background-color: + + treeview entry.flat, treeview entry { border-radius: 0; background-image: none; background-color: #ffffff; } + +-treeview entry.flat:focus, treeview entry:focus { border-color: #4a90d9; } ++treeview entry.flat:focus, treeview entry:focus { border-color: #b16286; } + +-.entry-tag { padding: 5px; margin-top: 2px; margin-bottom: 2px; border-style: none; color: #ffffff; background-color: #4a90d9; } ++.entry-tag { padding: 5px; margin-top: 2px; margin-bottom: 2px; border-style: none; color: #ffffff; background-color: #b16286; } + + :dir(ltr) .entry-tag { margin-left: 8px; margin-right: -5px; } + +@@ -176,17 +176,17 @@ treeview entry.flat:focus, treeview entry:focus { border-color: #4a90d9; } + + .entry-tag:hover { background-color: #74aae2; } + +-:backdrop .entry-tag { color: #fcfcfc; background-color: #4a90d9; } ++:backdrop .entry-tag { color: #fcfcfc; background-color: #b16286; } + + .entry-tag.button { background-color: transparent; color: rgba(255, 255, 255, 0.7); } + +-:not(:backdrop) .entry-tag.button:hover { border: 1px solid #4a90d9; color: #ffffff; } ++:not(:backdrop) .entry-tag.button:hover { border: 1px solid #b16286; color: #ffffff; } + +-:not(:backdrop) .entry-tag.button:active { background-color: #4a90d9; color: rgba(255, 255, 255, 0.7); } ++:not(:backdrop) .entry-tag.button:active { background-color: #b16286; color: rgba(255, 255, 255, 0.7); } + + /*********** Buttons * */ +-@keyframes needs_attention { from { background-image: -gtk-gradient(radial, center center, 0, center center, 0.01, to(#4a90d9), to(transparent)); } +- to { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#4a90d9), to(transparent)); } } ++@keyframes needs_attention { from { background-image: -gtk-gradient(radial, center center, 0, center center, 0.01, to(#b16286), to(transparent)); } ++ to { background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#b16286), to(transparent)); } } + + notebook > header > tabs > arrow, button.titlebutton, button { min-height: 24px; min-width: 16px; padding: 4px 8px; border: 1px solid; border-radius: 3px; transition: all 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94); color: #2e3436; outline-color: rgba(46, 52, 54, 0.3); border-color: #b6b6b3; border-bottom-color: #91918c; background-image: linear-gradient(to bottom, #e8e8e7, #dededd 60%, #cfcfcd); text-shadow: 0 1px rgba(255, 255, 255, 0.769231); -gtk-icon-shadow: 0 1px rgba(255, 255, 255, 0.769231); box-shadow: inset 0 1px rgba(255, 255, 255, 0.8); } + +@@ -274,15 +274,15 @@ popover.background.touch-selection button.flat:backdrop, popover.background.magn + + popover.background.touch-selection button.flat:active, popover.background.magnifier button.flat:active, .app-notification button.flat:active, popover.background.touch-selection button.flat:checked, popover.background.magnifier button.flat:checked, .app-notification button.flat:checked, .osd button.flat:active, .osd button.flat:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(0, 0, 0, 0.7)); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; outline-color: rgba(238, 238, 236, 0.3); } + +-button.suggested-action { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #4a90d9, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } ++button.suggested-action { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #b16286, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } + +-.selection-mode button.titlebutton, button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; color: #4a90d9; } ++.selection-mode button.titlebutton, button.suggested-action.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; color: #b16286; } + +-button.suggested-action:hover { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #4a90d9 60%, #3986d5); } ++button.suggested-action:hover { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #b16286 60%, #3986d5); } + + button.suggested-action:active, button.suggested-action:checked { color: white; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; background-image: image(#3180d4); box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; } + +-.selection-mode button.titlebutton:backdrop, button.suggested-action:backdrop, button.suggested-action.flat:backdrop { border-color: #4a90d9; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); } ++.selection-mode button.titlebutton:backdrop, button.suggested-action:backdrop, button.suggested-action.flat:backdrop { border-color: #b16286; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); } + + .selection-mode button.titlebutton:backdrop label, .selection-mode button.titlebutton:backdrop, button.suggested-action:backdrop label, button.suggested-action:backdrop, button.suggested-action.flat:backdrop label, button.suggested-action.flat:backdrop { color: #dbe9f7; } + +@@ -312,7 +312,7 @@ button.suggested-action:disabled:active label, button.suggested-action:disabled: + + .osd button.suggested-action:hover { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(74, 144, 217, 0.7)); background-clip: padding-box; box-shadow: inset 0 1px rgba(255, 255, 255, 0.1); text-shadow: 0 1px black; -gtk-icon-shadow: 0 1px black; outline-color: rgba(238, 238, 236, 0.3); } + +-.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#4a90d9); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; outline-color: rgba(238, 238, 236, 0.3); } ++.osd button.suggested-action:active:backdrop, .osd button.suggested-action:active, .osd button.suggested-action:checked:backdrop, .osd button.suggested-action:checked { color: white; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(#b16286); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; outline-color: rgba(238, 238, 236, 0.3); } + + .osd button.suggested-action:disabled:backdrop, .osd button.suggested-action:disabled { color: #858786; border-color: rgba(0, 0, 0, 0.7); background-color: transparent; background-image: image(rgba(49, 52, 52, 0.5)); background-clip: padding-box; box-shadow: none; text-shadow: none; -gtk-icon-shadow: none; } + +@@ -390,7 +390,7 @@ button.circular:not(.flat):not(:checked):not(:active):not(:disabled):not(:backdr + + button.circular:hover:not(:checked):not(:active):not(:disabled):not(:backdrop) { color: #2e3436; outline-color: rgba(46, 52, 54, 0.3); border-color: #b6b6b3; border-bottom-color: #91918c; text-shadow: 0 1px rgba(255, 255, 255, 0.769231); -gtk-icon-shadow: 0 1px rgba(255, 255, 255, 0.769231); box-shadow: inset 0 1px white; background-image: linear-gradient(to bottom, #f7f7f7, #e8e8e7 60%, #dededd); background-image: linear-gradient(to bottom, #f7f7f7, #e8e8e7 60%, #dededd), linear-gradient(to top, #91918c 25%, #b6b6b3 50%); border-color: transparent; } + +-.stack-switcher > button.needs-attention > label, .stack-switcher > button.needs-attention > image, stacksidebar row.needs-attention > label { animation: needs_attention 150ms ease-in; background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#4a90d9), to(transparent)), -gtk-gradient(radial, center center, 0, center center, 0.5, to(rgba(255, 255, 255, 0.769231)), to(transparent)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 4px; } ++.stack-switcher > button.needs-attention > label, .stack-switcher > button.needs-attention > image, stacksidebar row.needs-attention > label { animation: needs_attention 150ms ease-in; background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#b16286), to(transparent)), -gtk-gradient(radial, center center, 0, center center, 0.5, to(rgba(255, 255, 255, 0.769231)), to(transparent)); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; background-position: right 3px, right 4px; } + + .stack-switcher > button.needs-attention > label:backdrop, .stack-switcher > button.needs-attention > image:backdrop, stacksidebar row.needs-attention > label:backdrop { background-size: 6px 6px, 0 0; } + +@@ -476,7 +476,7 @@ button:link > label:visited, button:visited > label:visited, *:link:visited, but + + *:selected button:link > label:visited, *:selected button:visited > label:visited, *:selected *:link:visited, *:selected button:visited:link, *:selected button:visited { color: #b7d3f0; } + +-button:link > label:hover, button:visited > label:hover, *:link:hover, button:hover:link, button:hover:visited { color: #4a90d9; } ++button:link > label:hover, button:visited > label:hover, *:link:hover, button:hover:link, button:hover:visited { color: #b16286; } + + *:selected button:link > label:hover, *:selected button:visited > label:hover, *:selected *:link:hover, *:selected button:hover:link, *:selected button:hover:visited { color: #edf4fb; } + +@@ -484,7 +484,7 @@ button:link > label:active, button:visited > label:active, *:link:active, button + + *:selected button:link > label:active, *:selected button:visited > label:active, *:selected *:link:active, *:selected button:active:link, *:selected button:active:visited { color: #dbe9f7; } + +-button:link > label:backdrop:backdrop:hover, button:visited > label:backdrop:backdrop:hover, button:link > label:backdrop:backdrop:hover:selected, button:visited > label:backdrop:backdrop:hover:selected, button:link > label:backdrop, button:visited > label:backdrop, *:link:backdrop:backdrop:hover, button:backdrop:backdrop:hover:link, button:backdrop:backdrop:hover:visited, *:link:backdrop:backdrop:hover:selected, button:backdrop:backdrop:hover:selected:link, button:backdrop:backdrop:hover:selected:visited, .selection-mode .titlebar:not(headerbar) .subtitle:backdrop:backdrop:hover:link, .selection-mode.titlebar:not(headerbar) .subtitle:backdrop:backdrop:hover:link, .selection-mode headerbar .subtitle:backdrop:backdrop:hover:link, headerbar.selection-mode .subtitle:backdrop:backdrop:hover:link, *:link:backdrop, button:backdrop:link, button:backdrop:visited { color: #4a90d9; } ++button:link > label:backdrop:backdrop:hover, button:visited > label:backdrop:backdrop:hover, button:link > label:backdrop:backdrop:hover:selected, button:visited > label:backdrop:backdrop:hover:selected, button:link > label:backdrop, button:visited > label:backdrop, *:link:backdrop:backdrop:hover, button:backdrop:backdrop:hover:link, button:backdrop:backdrop:hover:visited, *:link:backdrop:backdrop:hover:selected, button:backdrop:backdrop:hover:selected:link, button:backdrop:backdrop:hover:selected:visited, .selection-mode .titlebar:not(headerbar) .subtitle:backdrop:backdrop:hover:link, .selection-mode.titlebar:not(headerbar) .subtitle:backdrop:backdrop:hover:link, .selection-mode headerbar .subtitle:backdrop:backdrop:hover:link, headerbar.selection-mode .subtitle:backdrop:backdrop:hover:link, *:link:backdrop, button:backdrop:link, button:backdrop:visited { color: #b16286; } + + infobar.info *:link, infobar.info button:link, infobar.info button:visited, infobar.question *:link, infobar.question button:link, infobar.question button:visited, infobar.warning *:link, infobar.warning button:link, infobar.warning button:visited, infobar.error *:link, infobar.error button:link, infobar.error button:visited, button:link > label:selected, button:visited > label:selected, *:selected button:link > label, *:selected button:visited > label, *:link:selected, button:selected:link, button:selected:visited, .selection-mode .titlebar:not(headerbar) .subtitle:link, .selection-mode.titlebar:not(headerbar) .subtitle:link, .selection-mode headerbar .subtitle:link, headerbar.selection-mode .subtitle:link, *:selected *:link, *:selected button:link, *:selected button:visited { color: #dbe9f7; } + +@@ -604,19 +604,19 @@ searchbar > revealer > box { margin: -6px; padding: 6px; } + + .titlebar:not(headerbar) .subtitle, headerbar .subtitle { font-size: smaller; padding-left: 12px; padding-right: 12px; } + +-.selection-mode .titlebar:not(headerbar), .selection-mode.titlebar:not(headerbar), .selection-mode headerbar, headerbar.selection-mode { color: #ffffff; border-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.5); background: #4a90d9 linear-gradient(to top, #276fba, #428bd7 2px, #4a90d9 3px); box-shadow: inset 0 1px rgba(146, 188, 232, 0.9); } ++.selection-mode .titlebar:not(headerbar), .selection-mode.titlebar:not(headerbar), .selection-mode headerbar, headerbar.selection-mode { color: #ffffff; border-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.5); background: #b16286 linear-gradient(to top, #276fba, #428bd7 2px, #4a90d9 3px); box-shadow: inset 0 1px rgba(146, 188, 232, 0.9); } + +-.selection-mode .titlebar:backdrop:not(headerbar), .selection-mode.titlebar:backdrop:not(headerbar), .selection-mode headerbar:backdrop, headerbar.selection-mode:backdrop { background-color: #4a90d9; background-image: none; box-shadow: inset 0 1px rgba(165, 200, 236, 0.88); } ++.selection-mode .titlebar:backdrop:not(headerbar), .selection-mode.titlebar:backdrop:not(headerbar), .selection-mode headerbar:backdrop, headerbar.selection-mode:backdrop { background-color: #b16286; background-image: none; box-shadow: inset 0 1px rgba(165, 200, 236, 0.88); } + +-.selection-mode .titlebar:not(headerbar) button, .selection-mode.titlebar:not(headerbar) button, .selection-mode headerbar button, headerbar.selection-mode button { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #4a90d9, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } ++.selection-mode .titlebar:not(headerbar) button, .selection-mode.titlebar:not(headerbar) button, .selection-mode headerbar button, headerbar.selection-mode button { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #b16286, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } + + .selection-mode .titlebar:not(headerbar) button.flat, .selection-mode.titlebar:not(headerbar) button.flat, .selection-mode headerbar button.flat, headerbar.selection-mode button.flat { border-color: transparent; background-color: transparent; background-image: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; } + +-.selection-mode .titlebar:not(headerbar) button:hover, .selection-mode.titlebar:not(headerbar) button:hover, .selection-mode headerbar button:hover, headerbar.selection-mode button:hover { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #4a90d9 60%, #3986d5); } ++.selection-mode .titlebar:not(headerbar) button:hover, .selection-mode.titlebar:not(headerbar) button:hover, .selection-mode headerbar button:hover, headerbar.selection-mode button:hover { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #b16286 60%, #3986d5); } + + .selection-mode .titlebar:not(headerbar) button:active, .selection-mode .titlebar:not(headerbar) button:checked, .selection-mode.titlebar:not(headerbar) button:active, .selection-mode.titlebar:not(headerbar) button:checked, .selection-mode headerbar button:active, .selection-mode headerbar button:checked, headerbar.selection-mode button:active, headerbar.selection-mode button:checked { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; background-image: image(#3180d4); box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; } + +-.selection-mode .titlebar:not(headerbar) button:backdrop.flat, .selection-mode .titlebar:not(headerbar) button:backdrop, .selection-mode.titlebar:not(headerbar) button:backdrop.flat, .selection-mode.titlebar:not(headerbar) button:backdrop, .selection-mode headerbar button:backdrop.flat, .selection-mode headerbar button:backdrop, headerbar.selection-mode button:backdrop.flat, headerbar.selection-mode button:backdrop { border-color: #4a90d9; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); -gtk-icon-effect: none; border-color: #184472; } ++.selection-mode .titlebar:not(headerbar) button:backdrop.flat, .selection-mode .titlebar:not(headerbar) button:backdrop, .selection-mode.titlebar:not(headerbar) button:backdrop.flat, .selection-mode.titlebar:not(headerbar) button:backdrop, .selection-mode headerbar button:backdrop.flat, .selection-mode headerbar button:backdrop, headerbar.selection-mode button:backdrop.flat, headerbar.selection-mode button:backdrop { border-color: #b16286; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); -gtk-icon-effect: none; border-color: #184472; } + + .selection-mode .titlebar:not(headerbar) button:backdrop.flat label, .selection-mode .titlebar:not(headerbar) button:backdrop.flat, .selection-mode .titlebar:not(headerbar) button:backdrop label, .selection-mode .titlebar:not(headerbar) button:backdrop, .selection-mode.titlebar:not(headerbar) button:backdrop.flat label, .selection-mode.titlebar:not(headerbar) button:backdrop.flat, .selection-mode.titlebar:not(headerbar) button:backdrop label, .selection-mode.titlebar:not(headerbar) button:backdrop, .selection-mode headerbar button:backdrop.flat label, .selection-mode headerbar button:backdrop.flat, .selection-mode headerbar button:backdrop label, .selection-mode headerbar button:backdrop, headerbar.selection-mode button:backdrop.flat label, headerbar.selection-mode button:backdrop.flat, headerbar.selection-mode button:backdrop label, headerbar.selection-mode button:backdrop { color: #dbe9f7; } + +@@ -754,17 +754,17 @@ treeview.view.expander:checked { -gtk-icon-source: -gtk-icontheme("pan-down-symb + + treeview.view.expander:backdrop { color: #adafb0; } + +-treeview.view.progressbar { color: #ffffff; border: 1px solid #184472; border-radius: 4px; background-color: #4a90d9; background-image: linear-gradient(to bottom, #4a90d9, #2a76c6); box-shadow: inset 0 1px rgba(255, 255, 255, 0.3), 0 1px rgba(0, 0, 0, 0.2); } ++treeview.view.progressbar { color: #ffffff; border: 1px solid #184472; border-radius: 4px; background-color: #b16286; background-image: linear-gradient(to bottom, #4a90d9, #2a76c6); box-shadow: inset 0 1px rgba(255, 255, 255, 0.3), 0 1px rgba(0, 0, 0, 0.2); } + +-treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { border-radius: 4px; color: #4a90d9; box-shadow: none; background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); } ++treeview.view.progressbar:selected:focus, treeview.view.progressbar:selected { border-radius: 4px; color: #b16286; box-shadow: none; background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); } + +-treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { color: #4a90d9; border-color: #184472; background-color: #fcfcfc; } ++treeview.view.progressbar:selected:focus:backdrop, treeview.view.progressbar:selected:backdrop { color: #b16286; border-color: #184472; background-color: #fcfcfc; } + + treeview.view.progressbar:backdrop { color: #fcfcfc; background-image: none; box-shadow: none; } + + treeview.view.trough { background-color: rgba(46, 52, 54, 0.1); border-radius: 4px; } + +-treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: rgba(255, 255, 255, 0.3); border-radius: 4px; border-width: 1px 0; border-style: solid; border-color: #4a90d9; } ++treeview.view.trough:selected:focus, treeview.view.trough:selected { background-color: rgba(255, 255, 255, 0.3); border-radius: 4px; border-width: 1px 0; border-style: solid; border-color: #b16286; } + + treeview.view header button { color: #979a9b; background-color: #ffffff; font-weight: bold; text-shadow: none; box-shadow: none; } + +@@ -772,9 +772,9 @@ treeview.view header button:hover { color: #636769; box-shadow: none; transition + + treeview.view header button:active { color: #2e3436; transition: none; } + +-treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #ffffff; background-image: none; background-color: #4a90d9; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #ffffff; text-shadow: none; transition: none; } ++treeview.view button.dnd:active, treeview.view button.dnd:selected, treeview.view button.dnd:hover, treeview.view button.dnd, treeview.view header.button.dnd:active, treeview.view header.button.dnd:selected, treeview.view header.button.dnd:hover, treeview.view header.button.dnd { padding: 0 6px; color: #ffffff; background-image: none; background-color: #b16286; border-style: none; border-radius: 0; box-shadow: inset 0 0 0 1px #ffffff; text-shadow: none; transition: none; } + +-treeview.view acceleditor > label { background-color: #4a90d9; } ++treeview.view acceleditor > label { background-color: #b16286; } + + treeview.view header button, treeview.view header button:hover, treeview.view header button:active { padding: 0 6px; background-image: none; border-style: none solid solid none; border-color: #e8e8e7; border-radius: 0; text-shadow: none; } + +@@ -793,7 +793,7 @@ menubar:backdrop, .menubar:backdrop { background-color: #e8e8e7; } + + menubar > menuitem, .menubar > menuitem { min-height: 16px; padding: 4px 8px; } + +-menubar > menuitem:hover, .menubar > menuitem:hover { box-shadow: inset 0 -3px #4a90d9; color: #2a76c6; } ++menubar > menuitem:hover, .menubar > menuitem:hover { box-shadow: inset 0 -3px #b16286; color: #2a76c6; } + + menubar > menuitem:disabled, .menubar > menuitem:disabled { color: #8b8e8f; box-shadow: none; } + +@@ -805,7 +805,7 @@ menu:backdrop, .menu:backdrop, .context-menu:backdrop { background-color: #fcfcf + + menu menuitem, .menu menuitem, .context-menu menuitem { min-height: 16px; min-width: 40px; padding: 4px 6px; text-shadow: none; } + +-menu menuitem:hover, .menu menuitem:hover, .context-menu menuitem:hover { color: #ffffff; background-color: #4a90d9; } ++menu menuitem:hover, .menu menuitem:hover, .context-menu menuitem:hover { color: #ffffff; background-color: #b16286; } + + menu menuitem:disabled, .menu menuitem:disabled, .context-menu menuitem:disabled { color: #8b8e8f; } + +@@ -871,7 +871,7 @@ notebook > header.top > tabs > tab:hover { box-shadow: inset 0 -3px #b6b6b3; } + + notebook > header.top > tabs > tab:backdrop { box-shadow: none; } + +-notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -3px #4a90d9; } ++notebook > header.top > tabs > tab:checked { box-shadow: inset 0 -3px #b16286; } + + notebook > header.bottom { border-top-style: solid; } + +@@ -881,7 +881,7 @@ notebook > header.bottom > tabs > tab:hover { box-shadow: inset 0 3px #b6b6b3; } + + notebook > header.bottom > tabs > tab:backdrop { box-shadow: none; } + +-notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 3px #4a90d9; } ++notebook > header.bottom > tabs > tab:checked { box-shadow: inset 0 3px #b16286; } + + notebook > header.left { border-right-style: solid; } + +@@ -891,7 +891,7 @@ notebook > header.left > tabs > tab:hover { box-shadow: inset -3px 0 #b6b6b3; } + + notebook > header.left > tabs > tab:backdrop { box-shadow: none; } + +-notebook > header.left > tabs > tab:checked { box-shadow: inset -3px 0 #4a90d9; } ++notebook > header.left > tabs > tab:checked { box-shadow: inset -3px 0 #b16286; } + + notebook > header.right { border-left-style: solid; } + +@@ -901,7 +901,7 @@ notebook > header.right > tabs > tab:hover { box-shadow: inset 3px 0 #b6b6b3; } + + notebook > header.right > tabs > tab:backdrop { box-shadow: none; } + +-notebook > header.right > tabs > tab:checked { box-shadow: inset 3px 0 #4a90d9; } ++notebook > header.right > tabs > tab:checked { box-shadow: inset 3px 0 #b16286; } + + notebook > header.top > tabs > arrow { border-top-style: none; } + +@@ -1067,13 +1067,13 @@ treeview ~ scrollbar.vertical { border-top: 1px solid #b6b6b3; margin-top: -1px; + /********** Switch * */ + switch { font-weight: bold; font-size: smaller; outline-offset: -4px; border: 1px solid #b6b6b3; border-radius: 3px; color: #2e3436; background-color: #cfcfcd; text-shadow: 0 1px rgba(0, 0, 0, 0.1); } + +-switch:checked { color: #ffffff; border-color: #184472; background-color: #4a90d9; text-shadow: 0 1px rgba(24, 68, 114, 0.5), 0 0 2px rgba(255, 255, 255, 0.6); } ++switch:checked { color: #ffffff; border-color: #184472; background-color: #b16286; text-shadow: 0 1px rgba(24, 68, 114, 0.5), 0 0 2px rgba(255, 255, 255, 0.6); } + + switch:disabled { color: #8b8e8f; border-color: #b6b6b3; background-color: #f1f1f1; text-shadow: none; } + + switch:backdrop { color: #8b8e8f; border-color: #c0c0bd; background-color: #dadad8; text-shadow: none; transition: 200ms ease-out; } + +-switch:backdrop:checked { color: #e8e8e7; border-color: #4a90d9; background-color: #4a90d9; } ++switch:backdrop:checked { color: #e8e8e7; border-color: #b16286; background-color: #4a90d9; } + + switch:backdrop:disabled { color: #c3c3c0; border-color: #c0c0bd; background-color: #f1f1f1; } + +@@ -1091,7 +1091,7 @@ switch:backdrop slider { transition: 200ms ease-out; border-color: #c0c0bd; back + + switch:backdrop slider label, switch:backdrop slider { color: #8b8e8f; } + +-switch:backdrop:checked slider { border-color: #4a90d9; } ++switch:backdrop:checked slider { border-color: #b16286; } + + switch:backdrop:disabled slider { border-color: #c0c0bd; background-image: image(#f1f1f1); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); } + +@@ -1215,11 +1215,11 @@ row:selected scale trough:disabled, scale row:selected trough:disabled, row:sele + + .osd scale trough:disabled, scale .osd trough:disabled, .osd scale fill:disabled, scale .osd fill:disabled, .osd progressbar trough:disabled, progressbar .osd trough:disabled { background-color: rgba(49, 52, 52, 0.5); } + +-scale highlight, progressbar progress { border: 1px solid #184472; border-radius: 3px; background-color: #4a90d9; } ++scale highlight, progressbar progress { border: 1px solid #184472; border-radius: 3px; background-color: #b16286; } + + scale highlight:disabled, progressbar progress:disabled { background-color: transparent; border-color: transparent; } + +-scale highlight:backdrop, progressbar progress:backdrop { border-color: #4a90d9; } ++scale highlight:backdrop, progressbar progress:backdrop { border-color: #b16286; } + + scale highlight:backdrop:disabled, progressbar progress:backdrop:disabled { background-color: transparent; border-color: transparent; } + +@@ -1501,9 +1501,9 @@ levelbar block.low { border-color: #8f4700; background-color: #f57900; } + + levelbar block.low:backdrop { border-color: #f57900; } + +-levelbar block.high, levelbar block:not(.empty) { border-color: #215d9c; background-color: #4a90d9; } ++levelbar block.high, levelbar block:not(.empty) { border-color: #215d9c; background-color: #b16286; } + +-levelbar block.high:backdrop, levelbar block:not(.empty):backdrop { border-color: #4a90d9; } ++levelbar block.high:backdrop, levelbar block:not(.empty):backdrop { border-color: #b16286; } + + levelbar block.full { border-color: #40760c; background-color: #73d216; } + +@@ -1588,7 +1588,7 @@ row.activatable:selected:active { box-shadow: inset 0 2px 3px -1px rgba(0, 0, 0, + + row.activatable:selected.has-open-popup, row.activatable:selected:hover { background-color: #4787c9; } + +-row.activatable:selected:backdrop { background-color: #4a90d9; } ++row.activatable:selected:backdrop { background-color: #b16286; } + + /********************* App Notifications * */ + .app-notification, .app-notification.frame { padding: 10px; border-radius: 0 0 5px 5px; background-color: rgba(28, 31, 32, 0.7); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent 2px); background-clip: padding-box; } +@@ -1714,7 +1714,7 @@ placessidebar row:selected:active { box-shadow: none; } + + placessidebar row.sidebar-placeholder-row { padding: 0 8px; min-height: 2px; background-image: image(#4e9a06); background-clip: content-box; } + +-placessidebar row.sidebar-new-bookmark-row { color: #4a90d9; } ++placessidebar row.sidebar-new-bookmark-row { color: #b16286; } + + placessidebar row:drop(active):not(:disabled) { color: #4e9a06; box-shadow: inset 0 1px #4e9a06, inset 0 -1px #4e9a06; } + +@@ -1731,7 +1731,7 @@ placesview > actionbar > revealer > box > label { padding-left: 8px; padding-rig + /********* Paned * */ + paned > separator { min-width: 1px; min-height: 1px; -gtk-icon-source: none; border-style: none; background-color: transparent; background-image: image(#b6b6b3); background-size: 1px 1px; } + +-paned > separator:selected { background-image: image(#4a90d9); } ++paned > separator:selected { background-image: image(#b16286); } + + paned > separator:backdrop { background-image: image(#c0c0bd); } + +@@ -1756,15 +1756,15 @@ infobar { border-style: none; } + + infobar.info, infobar.question, infobar.warning, infobar.error { text-shadow: 0 1px #2a76c6; } + +-infobar.info:backdrop, infobar.info, infobar.question:backdrop, infobar.question, infobar.warning:backdrop, infobar.warning, infobar.error:backdrop, infobar.error { background-color: #4a90d9; border-color: #2a76c6; } ++infobar.info:backdrop, infobar.info, infobar.question:backdrop, infobar.question, infobar.warning:backdrop, infobar.warning, infobar.error:backdrop, infobar.error { background-color: #b16286; border-color: #2a76c6; } + + infobar.info:backdrop label, infobar.info:backdrop, infobar.info label, infobar.info, infobar.question:backdrop label, infobar.question:backdrop, infobar.question label, infobar.question, infobar.warning:backdrop label, infobar.warning:backdrop, infobar.warning label, infobar.warning, infobar.error:backdrop label, infobar.error:backdrop, infobar.error label, infobar.error { color: #ffffff; } + + infobar.info:backdrop, infobar.question:backdrop, infobar.warning:backdrop, infobar.error:backdrop { text-shadow: none; } + +-infobar.info button, infobar.question button, infobar.warning button, infobar.error button { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #4a90d9, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } ++infobar.info button, infobar.question button, infobar.warning button, infobar.error button { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; background-image: linear-gradient(to bottom, #b16286, #3986d5 60%, #2a76c6); text-shadow: 0 -1px rgba(0, 0, 0, 0.543529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.543529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } + +-infobar.info button:hover, infobar.question button:hover, infobar.warning button:hover, infobar.error button:hover { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #4a90d9 60%, #3986d5); } ++infobar.info button:hover, infobar.question button:hover, infobar.warning button:hover, infobar.error button:hover { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; border-bottom-color: #184472; text-shadow: 0 -1px rgba(0, 0, 0, 0.495529); -gtk-icon-shadow: 0 -1px rgba(0, 0, 0, 0.495529); box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); background-image: linear-gradient(to bottom, #63a0de, #b16286 60%, #3986d5); } + + infobar.info button:active, infobar.info button:checked, infobar.question button:active, infobar.question button:checked, infobar.warning button:active, infobar.warning button:checked, infobar.error button:active, infobar.error button:checked { color: #ffffff; outline-color: rgba(255, 255, 255, 0.3); border-color: #215d9c; background-image: image(#3180d4); box-shadow: inset 0 1px rgba(255, 255, 255, 0); text-shadow: none; -gtk-icon-shadow: none; } + +@@ -1772,7 +1772,7 @@ infobar.info button:disabled, infobar.question button:disabled, infobar.warning + + infobar.info button:disabled label, infobar.info button:disabled, infobar.question button:disabled label, infobar.question button:disabled, infobar.warning button:disabled label, infobar.warning button:disabled, infobar.error button:disabled label, infobar.error button:disabled { color: #b2d0ef; } + +-infobar.info button:backdrop, infobar.question button:backdrop, infobar.warning button:backdrop, infobar.error button:backdrop { border-color: #4a90d9; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); border-color: #215d9c; } ++infobar.info button:backdrop, infobar.question button:backdrop, infobar.warning button:backdrop, infobar.error button:backdrop { border-color: #b16286; background-image: image(#4a90d9); text-shadow: none; -gtk-icon-shadow: none; box-shadow: inset 0 1px rgba(255, 255, 255, 0); border-color: #215d9c; } + + infobar.info button:backdrop label, infobar.info button:backdrop, infobar.question button:backdrop label, infobar.question button:backdrop, infobar.warning button:backdrop label, infobar.warning button:backdrop, infobar.error button:backdrop label, infobar.error button:backdrop { color: #dbe9f7; } + +@@ -1902,7 +1902,7 @@ button.titlebutton:backdrop { -gtk-icon-shadow: none; } + + .selection-mode headerbar button.titlebutton:backdrop, .selection-mode .titlebar button.titlebutton:backdrop, headerbar.selection-mode button.titlebutton:backdrop, .titlebar.selection-mode button.titlebutton:backdrop { -gtk-icon-shadow: none; } + +-.view:selected:focus, .view:selected, iconview:selected, .view text:selected, iconview text:selected, textview text:selected, .view text selection:focus, iconview text selection:focus, .view text selection, iconview text selection, textview text selection:focus, textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection, entry selection, modelbutton.flat:selected, .menuitem.button.flat:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar:selected { background-color: #4a90d9; } ++.view:selected:focus, .view:selected, iconview:selected, .view text:selected, iconview text:selected, textview text:selected, .view text selection:focus, iconview text selection:focus, .view text selection, iconview text selection, textview text selection:focus, textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection, entry selection, modelbutton.flat:selected, .menuitem.button.flat:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar:selected { background-color: #b16286; } + + row:selected label, label:selected, .selection-mode button.titlebutton, .view:selected:focus, .view:selected, iconview:selected, .view text:selected, iconview text:selected, textview text:selected, .view text selection:focus, iconview text selection:focus, .view text selection, iconview text selection, textview text selection:focus, textview text selection, flowbox flowboxchild:selected, spinbutton:not(.vertical) selection, entry selection, modelbutton.flat:selected, .menuitem.button.flat:selected, treeview.view:selected:focus, treeview.view:selected, row:selected, calendar:selected { color: #ffffff; } + +@@ -1956,7 +1956,7 @@ button.emoji-section:backdrop:not(:checked) { border-color: transparent; } + + button.emoji-section:hover { border-color: #b6b6b3; } + +-button.emoji-section:checked { border-color: #4a90d9; } ++button.emoji-section:checked { border-color: #b16286; } + + button.emoji-section label { padding: 0; opacity: 0.55; } + +@@ -1966,7 +1966,7 @@ button.emoji-section:checked label { opacity: 1; } + + popover.emoji-picker .emoji { font-size: x-large; padding: 6px; border-radius: 6px; } + +-popover.emoji-picker .emoji :hover { background: #4a90d9; } ++popover.emoji-picker .emoji :hover { background: #b16286; } + + popover.emoji-completion arrow { border: none; background: none; } + +@@ -1989,7 +1989,7 @@ text widgets and the like base background color */ + @define-color theme_base_color #ffffff; + /* + base background color of selections */ +-@define-color theme_selected_bg_color #4a90d9; ++@define-color theme_selected_bg_color #b16286; + /* + text/foreground color of selections */ + @define-color theme_selected_fg_color #ffffff; +@@ -2016,7 +2016,7 @@ text widgets and the like base background color on backdrop windows */ + @define-color theme_unfocused_base_color #fcfcfc; + /* + base background color of selections on backdrop windows */ +-@define-color theme_unfocused_selected_bg_color #4a90d9; ++@define-color theme_unfocused_selected_bg_color #b16286; + /* + text/foreground color of selections on backdrop windows */ + @define-color theme_unfocused_selected_fg_color #ffffff; +diff --git a/gtk/theme/HighContrast/_colors.scss b/gtk/theme/HighContrast/_colors.scss +index ac9ba03..df79d00 100644 +--- a/gtk/theme/HighContrast/_colors.scss ++++ b/gtk/theme/HighContrast/_colors.scss +@@ -7,7 +7,7 @@ $bg_color: if($variant == 'light', #fff, #000); + $fg_color: if($variant == 'light', #000, #fff); + + $selected_fg_color: if($variant == 'light', #fff, #000); +-$selected_bg_color: if($variant == 'light', #000, #ddd); //#4a90d9; ++$selected_bg_color: if($variant == 'light', #000, #ddd); //#b16286; + $selected_borders_color: if($variant == 'light', #000, #aaa); + $popover_bg_color: $bg_color; + $popover_hover_color: lighten($bg_color, 5%); +@@ -21,7 +21,7 @@ $scrollbar_slider_color: mix($fg_color, $bg_color, 60%); + $scrollbar_slider_hover_color: mix($fg_color, $bg_color, 80%); + $scrollbar_slider_active_color: if($variant=='light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 10%)); + +-$suggested_color: #4a90d9; ++$suggested_color: #b16286; + $warning_color: #f57900; + $error_color: #cc0000; + $success_color: #73d216; +diff --git a/gtk/theme/HighContrast/gtk-contained-inverse.css b/gtk/theme/HighContrast/gtk-contained-inverse.css +index fadb1ce..e24aa43 100644 +--- a/gtk/theme/HighContrast/gtk-contained-inverse.css ++++ b/gtk/theme/HighContrast/gtk-contained-inverse.css +@@ -388,7 +388,7 @@ button.color colorswatch:only-child, button.color colorswatch:only-child overlay + + *:link:backdrop, *:link:backdrop:hover { color: #ddd; } + +-button:link, button:visited { color: #4a90d9; font-weight: bold; text-shadow: none; } ++button:link, button:visited { color: #b16286; font-weight: bold; text-shadow: none; } + + button:link:hover, button:link:active, button:visited:hover, button:visited:active { color: #ebebeb; text-shadow: none; } + +@@ -1294,13 +1294,13 @@ messagedialog.csd .dialog-action-area button:backdrop { border-width: 2px; borde + + messagedialog.csd .dialog-action-area button:backdrop:disabled { border-width: 2px; border-style: solid; color: gray; background-color: #070707; border-color: #494949; background-image: none; } + +-messagedialog.csd .dialog-action-area button.suggested-action { border-width: 2px; border-style: solid; color: white; background-image: none; background-color: #4a90d9; border-color: #1c5187; } ++messagedialog.csd .dialog-action-area button.suggested-action { border-width: 2px; border-style: solid; color: white; background-image: none; background-color: #b16286; border-color: #1c5187; } + +-messagedialog.csd .dialog-action-area button.suggested-action:hover { border-width: 2px; border-style: solid; color: white; background-color: #4a90d9; border-color: #1c5187; background-image: none; } ++messagedialog.csd .dialog-action-area button.suggested-action:hover { border-width: 2px; border-style: solid; color: white; background-color: #b16286; border-color: #1c5187; background-image: none; } + + messagedialog.csd .dialog-action-area button.suggested-action:active { border-width: 2px; border-style: solid; background-image: none; color: black; background-color: #b56f26; border-color: #1c5187; } + +-messagedialog.csd .dialog-action-area button.suggested-action:backdrop { border-width: 2px; border-style: solid; color: white; background-color: #4a90d9; border-color: #4a90d9; background-image: none; } ++messagedialog.csd .dialog-action-area button.suggested-action:backdrop { border-width: 2px; border-style: solid; color: white; background-color: #b16286; border-color: #4a90d9; background-image: none; } + + messagedialog.csd .dialog-action-area button.suggested-action:backdrop:disabled { border-width: 2px; border-style: solid; color: gray; background-color: #070707; border-color: #494949; background-image: none; } + +diff --git a/gtk/theme/HighContrast/gtk-contained.css b/gtk/theme/HighContrast/gtk-contained.css +index e0e6a58..1ed100e 100644 +--- a/gtk/theme/HighContrast/gtk-contained.css ++++ b/gtk/theme/HighContrast/gtk-contained.css +@@ -392,7 +392,7 @@ button.color colorswatch:only-child:disabled, button.color colorswatch:only-chil + + *:link:backdrop, *:link:backdrop:hover { color: #000; } + +-button:link, button:visited { color: #4a90d9; font-weight: bold; text-shadow: none; } ++button:link, button:visited { color: #b16286; font-weight: bold; text-shadow: none; } + + button:link:hover, button:link:active, button:visited:hover, button:visited:active { color: black; text-shadow: none; } + +@@ -1300,13 +1300,13 @@ messagedialog.csd .dialog-action-area button:backdrop { border-width: 2px; borde + + messagedialog.csd .dialog-action-area button:backdrop:disabled { border-width: 2px; border-style: solid; color: gray; background-color: white; border-color: silver; background-image: none; } + +-messagedialog.csd .dialog-action-area button.suggested-action { border-width: 2px; border-style: solid; color: white; background-image: none; background-color: #4a90d9; border-color: #1c5187; } ++messagedialog.csd .dialog-action-area button.suggested-action { border-width: 2px; border-style: solid; color: white; background-image: none; background-color: #b16286; border-color: #1c5187; } + +-messagedialog.csd .dialog-action-area button.suggested-action:hover { border-width: 2px; border-style: solid; color: white; background-color: #4a90d9; border-color: #1c5187; background-image: none; } ++messagedialog.csd .dialog-action-area button.suggested-action:hover { border-width: 2px; border-style: solid; color: white; background-color: #b16286; border-color: #1c5187; background-image: none; } + + messagedialog.csd .dialog-action-area button.suggested-action:active { border-width: 2px; border-style: solid; background-image: none; color: black; background-color: #b56f26; border-color: #1c5187; } + +-messagedialog.csd .dialog-action-area button.suggested-action:backdrop { border-width: 2px; border-style: solid; color: white; background-color: #4a90d9; border-color: #4a90d9; background-image: none; } ++messagedialog.csd .dialog-action-area button.suggested-action:backdrop { border-width: 2px; border-style: solid; color: white; background-color: #b16286; border-color: #4a90d9; background-image: none; } + + messagedialog.csd .dialog-action-area button.suggested-action:backdrop:disabled { border-width: 2px; border-style: solid; color: gray; background-color: white; border-color: silver; background-image: none; } + diff --git a/patches/x11-libs/libXfont2-2.0.4/libXfont2-2.0.4_define_have_libbsd.patch b/patches/x11-libs/libXfont2-2.0.4/libXfont2-2.0.4_define_have_libbsd.patch @@ -0,0 +1,26 @@ +From 5fceeeb0d1cdccdb2870f65444f2965344f3b8b9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls <bernd.kuhls@t-online.de> +Date: Sat, 19 Oct 2019 09:32:41 +0200 +Subject: [PATCH] configure: define HAVE_LIBBSD when libbsd was found + +--- + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure.ac b/configure.ac +index f507c28..cc7ca91 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -53,6 +53,9 @@ AC_CHECK_HEADERS([endian.h poll.h sys/poll.h]) + # Checks for library functions. + AC_CHECK_FUNCS([poll readlink]) + AC_SEARCH_LIBS([strlcat], [bsd]) ++if test "$ac_cv_search_strlcat" = "-lbsd"; then ++ AC_DEFINE(HAVE_LIBBSD,1,[Has libbsd]) ++fi + AC_CONFIG_LIBOBJ_DIR([src/util]) + AC_REPLACE_FUNCS([reallocarray strlcat strlcpy]) + +-- +2.26.2 + diff --git a/patches/x11-libs/libXft/1.patch b/patches/x11-libs/libXft/1.patch @@ -0,0 +1,738 @@ +From 7808631e7a9a605d5fe7a1077129c658d9ec47fc Mon Sep 17 00:00:00 2001 +From: Maxime Coste <mawww@kakoune.org> +Date: Tue, 22 Oct 2019 22:46:49 +1100 +Subject: [PATCH] Add support for BGRA glyphs display and scaling + +Display is done using an XRender Picture, as XRender +glyphs are incompatible with BGRA rendering due to +their use of the glyph bitmap as a mask. + +Scaling is done by averaging all relevant pixel, which gives +much better result than nearest pixel sampling while staying +simple enough and not too computationally expensive. + +This enables color emoji rendering support. + +Fixes: #6 + +Signed-off-by: Maxime Coste <mawww@kakoune.org> +--- + src/xftfreetype.c | 18 ++++- + src/xftglyphs.c | 200 ++++++++++++++++++++++++++++++++++++++++++---- + src/xftint.h | 2 + + src/xftrender.c | 168 ++++++++++++++++++++++++-------------- + 4 files changed, 307 insertions(+), 81 deletions(-) + +diff --git a/src/xftfreetype.c b/src/xftfreetype.c +index a3b8332..a639a03 100644 +--- a/src/xftfreetype.c ++++ b/src/xftfreetype.c +@@ -514,7 +514,7 @@ XftFontInfoFill (Display *dpy, _Xconst FcPattern *pattern, XftFontInfo *fi) + /* + * Compute glyph load flags + */ +- fi->load_flags = FT_LOAD_DEFAULT; ++ fi->load_flags = FT_LOAD_DEFAULT | FT_LOAD_COLOR; + + #ifndef XFT_EMBEDDED_BITMAP + #define XFT_EMBEDDED_BITMAP "embeddedbitmap" +@@ -766,6 +766,7 @@ XftFontOpenInfo (Display *dpy, + FcChar32 hash_value; + FcChar32 rehash_value; + FcBool antialias; ++ FcBool color; + int max_glyph_memory; + int alloc_size; + int ascent, descent, height; +@@ -822,12 +823,16 @@ XftFontOpenInfo (Display *dpy, + if (!(face->face_flags & FT_FACE_FLAG_SCALABLE)) + antialias = FcFalse; + ++ color = FT_HAS_COLOR(face) ? FcTrue : FcFalse; ++ + /* + * Find the appropriate picture format + */ + if (fi->render) + { +- if (antialias) ++ if (color) ++ format = XRenderFindStandardFormat (dpy, PictStandardARGB32); ++ else if (antialias) + { + switch (fi->rgba) { + case FC_RGBA_RGB: +@@ -842,9 +847,7 @@ XftFontOpenInfo (Display *dpy, + } + } + else +- { + format = XRenderFindStandardFormat (dpy, PictStandardA1); +- } + + if (!format) + goto bail2; +@@ -959,6 +962,13 @@ XftFontOpenInfo (Display *dpy, + * which doesn't happen in XftFontInfoFill + */ + font->info.antialias = antialias; ++ ++ /* ++ * Set color value, which is only known once the ++ * font was loaded ++ */ ++ font->info.color = color; ++ + /* + * bump XftFile reference count + */ +diff --git a/src/xftglyphs.c b/src/xftglyphs.c +index 4b5fb82..af2e3c1 100644 +--- a/src/xftglyphs.c ++++ b/src/xftglyphs.c +@@ -26,6 +26,8 @@ + + #include FT_SYNTHESIS_H + ++#include FT_GLYPH_H ++ + /* + * Validate the memory info for a font + */ +@@ -78,9 +80,11 @@ _XftFontValidateMemory (Display *dpy, XftFont *public) + static int + _compute_xrender_bitmap_size( FT_Bitmap* target, + FT_GlyphSlot slot, +- FT_Render_Mode mode ) ++ FT_Render_Mode mode, ++ FT_Matrix* matrix ) + { + FT_Bitmap* ftbit; ++ FT_Vector vector; + int width, height, pitch; + + if ( slot->format != FT_GLYPH_FORMAT_BITMAP ) +@@ -88,9 +92,18 @@ _compute_xrender_bitmap_size( FT_Bitmap* target, + + // compute the size of the final bitmap + ftbit = &slot->bitmap; +- + width = ftbit->width; + height = ftbit->rows; ++ ++ if ( matrix && mode == FT_RENDER_MODE_NORMAL ) ++ { ++ vector.x = ftbit->width; ++ vector.y = ftbit->rows; ++ FT_Vector_Transform(&vector, matrix); ++ ++ width = vector.x; ++ height = vector.y; ++ } + pitch = (width+3) & ~3; + + switch ( ftbit->pixel_mode ) +@@ -112,6 +125,10 @@ _compute_xrender_bitmap_size( FT_Bitmap* target, + } + break; + ++ case FT_PIXEL_MODE_BGRA: ++ pitch = width * 4; ++ break; ++ + case FT_PIXEL_MODE_LCD: + if ( mode != FT_RENDER_MODE_LCD ) + return -1; +@@ -142,6 +159,105 @@ _compute_xrender_bitmap_size( FT_Bitmap* target, + return pitch * height; + } + ++/* this functions converts the glyph bitmap found in a FT_GlyphSlot ++ * into a different format while scaling by applying the given matrix ++ * (see _compute_xrender_bitmap_size) ++ * ++ * you should call this function after _compute_xrender_bitmap_size ++ * ++ * target :: target bitmap descriptor. Note that its 'buffer' pointer ++ * must point to memory allocated by the caller ++ * ++ * source :: the source bitmap descriptor ++ * ++ * matrix :: the scaling matrix to apply ++ */ ++static void ++_scaled_fill_xrender_bitmap( FT_Bitmap* target, ++ FT_Bitmap* source, ++ const FT_Matrix* matrix ) ++{ ++ unsigned char* src_buf = source->buffer; ++ unsigned char* dst_line = target->buffer; ++ int src_pitch = source->pitch; ++ int width = target->width; ++ int height = target->rows; ++ int pitch = target->pitch; ++ int h; ++ FT_Vector vector; ++ FT_Matrix inverse = *matrix; ++ int sampling_width; ++ int sampling_height; ++ int sample_count; ++ ++ if ( src_pitch < 0 ) ++ src_buf -= src_pitch*(source->rows-1); ++ ++ FT_Matrix_Invert(&inverse); ++ ++ /* compute how many source pixels a target pixel spans */ ++ vector.x = 1; ++ vector.y = 1; ++ FT_Vector_Transform(&vector, &inverse); ++ sampling_width = vector.x / 2; ++ sampling_height = vector.y / 2; ++ sample_count = (2 * sampling_width + 1) * (2 * sampling_height + 1); ++ ++ for ( h = height; h > 0; h--, dst_line += pitch ) ++ { ++ int x; ++ ++ for ( x = 0; x < width; x++ ) ++ { ++ unsigned char* src; ++ ++#define CLAMP(x, min, max) ((x) < (min) ? (min) : ((x) > (max) ? (max) : (x))) ++ ++ /* compute target pixel location in source space */ ++ vector.x = (x * 0x10000) + 0x10000 / 2; ++ vector.y = ((height - h) * 0x10000) + 0x10000 / 2; ++ FT_Vector_Transform(&vector, &inverse); ++ vector.x = CLAMP(FT_RoundFix(vector.x) / 0x10000, 0, source->width - 1); ++ vector.y = CLAMP(FT_RoundFix(vector.y) / 0x10000, 0, source->rows - 1); ++ ++ switch ( source->pixel_mode ) ++ { ++ case FT_PIXEL_MODE_MONO: /* convert mono to 8-bit gray, scale using nearest pixel */ ++ src = src_buf + (vector.y * src_pitch); ++ if ( src[(vector.x >> 3)] & (0x80 >> (vector.x & 7)) ) ++ dst_line[x] = 0xff; ++ break; ++ ++ case FT_PIXEL_MODE_GRAY: /* scale using nearest pixel */ ++ src = src_buf + (vector.y * src_pitch); ++ dst_line[x] = src[vector.x]; ++ break; ++ ++ case FT_PIXEL_MODE_BGRA: /* scale by averaging all relevant source pixels, keep BGRA format */ ++ { ++ int sample_x, sample_y; ++ int bgra[4] = {}; ++ for (sample_y = - sampling_height; sample_y < sampling_height + 1; ++sample_y) ++ { ++ int src_y = CLAMP(vector.y + sample_y, 0, source->rows - 1); ++ src = src_buf + (src_y * src_pitch); ++ for (sample_x = - sampling_width; sample_x < sampling_width + 1; ++sample_x) ++ { ++ int src_x = CLAMP(vector.x + sample_x, 0, source->width - 1); ++ for (int i = 0; i < 4; ++i) ++ bgra[i] += src[src_x * 4 + i]; ++ } ++ } ++ ++ for (int i = 0; i < 4; ++i) ++ dst_line[4 * x + i] = bgra[i] / sample_count; ++ break; ++ } ++ } ++ } ++ } ++} ++ + /* this functions converts the glyph bitmap found in a FT_GlyphSlot + * into a different format (see _compute_xrender_bitmap_size) + * +@@ -244,6 +360,11 @@ _fill_xrender_bitmap( FT_Bitmap* target, + } + break; + ++ case FT_PIXEL_MODE_BGRA: /* Preserve BGRA format */ ++ for ( h = height; h > 0; h--, srcLine += src_pitch, dstLine += pitch ) ++ memcpy( dstLine, srcLine, width * 4 ); ++ break; ++ + case FT_PIXEL_MODE_LCD: + if ( !bgr ) + { +@@ -365,6 +486,8 @@ XftFontLoadGlyphs (Display *dpy, + FT_Vector vector; + FT_Face face; + FT_Render_Mode mode = FT_RENDER_MODE_MONO; ++ FcBool transform; ++ FcBool glyph_transform; + + if (!info) + return; +@@ -374,6 +497,8 @@ XftFontLoadGlyphs (Display *dpy, + if (!face) + return; + ++ if (font->info.color) ++ mode = FT_RENDER_MODE_NORMAL; + if (font->info.antialias) + { + switch (font->info.rgba) { +@@ -390,6 +515,8 @@ XftFontLoadGlyphs (Display *dpy, + } + } + ++ transform = font->info.transform && mode != FT_RENDER_MODE_MONO; ++ + while (nglyph--) + { + glyphindex = *glyphs++; +@@ -440,7 +567,7 @@ XftFontLoadGlyphs (Display *dpy, + /* + * Compute glyph metrics from FreeType information + */ +- if(font->info.transform && glyphslot->format != FT_GLYPH_FORMAT_BITMAP) ++ if (transform) + { + /* + * calculate the true width by transforming all four corners. +@@ -487,7 +614,7 @@ XftFontLoadGlyphs (Display *dpy, + * Clip charcell glyphs to the bounding box + * XXX transformed? + */ +- if (font->info.spacing >= FC_CHARCELL && !font->info.transform) ++ if (font->info.spacing >= FC_CHARCELL && !transform) + { + if (font->info.load_flags & FT_LOAD_VERTICAL_LAYOUT) + { +@@ -519,18 +646,20 @@ XftFontLoadGlyphs (Display *dpy, + } + } + ++ glyph_transform = transform; + if ( glyphslot->format != FT_GLYPH_FORMAT_BITMAP ) + { + error = FT_Render_Glyph( face->glyph, mode ); + if (error) + continue; ++ glyph_transform = False; + } + + FT_Library_SetLcdFilter( _XftFTlibrary, FT_LCD_FILTER_NONE ); + + if (font->info.spacing >= FC_MONO) + { +- if (font->info.transform) ++ if (transform) + { + if (font->info.load_flags & FT_LOAD_VERTICAL_LAYOUT) + { +@@ -613,14 +742,27 @@ XftFontLoadGlyphs (Display *dpy, + } + } + +- size = _compute_xrender_bitmap_size( &local, glyphslot, mode ); ++ size = _compute_xrender_bitmap_size( &local, glyphslot, mode, glyph_transform ? &font->info.matrix : NULL ); + if ( size < 0 ) + continue; + + xftg->metrics.width = local.width; + xftg->metrics.height = local.rows; +- xftg->metrics.x = - glyphslot->bitmap_left; +- xftg->metrics.y = glyphslot->bitmap_top; ++ if (transform) ++ { ++ vector.x = - glyphslot->bitmap_left; ++ vector.y = glyphslot->bitmap_top; ++ ++ FT_Vector_Transform(&vector, &font->info.matrix); ++ ++ xftg->metrics.x = vector.x; ++ xftg->metrics.y = vector.y; ++ } ++ else ++ { ++ xftg->metrics.x = - glyphslot->bitmap_left; ++ xftg->metrics.y = glyphslot->bitmap_top; ++ } + + /* + * If the glyph is relatively large (> 1% of server memory), +@@ -645,9 +787,12 @@ XftFontLoadGlyphs (Display *dpy, + + local.buffer = bufBitmap; + +- _fill_xrender_bitmap( &local, glyphslot, mode, +- (font->info.rgba == FC_RGBA_BGR || +- font->info.rgba == FC_RGBA_VBGR ) ); ++ if (mode == FT_RENDER_MODE_NORMAL && glyph_transform) ++ _scaled_fill_xrender_bitmap(&local, &glyphslot->bitmap, &font->info.matrix); ++ else ++ _fill_xrender_bitmap( &local, glyphslot, mode, ++ (font->info.rgba == FC_RGBA_BGR || ++ font->info.rgba == FC_RGBA_VBGR ) ); + + /* + * Copy or convert into local buffer. +@@ -662,6 +807,7 @@ XftFontLoadGlyphs (Display *dpy, + */ + glyph = (Glyph) glyphindex; + ++ xftg->picture = 0; + xftg->glyph_memory = size + sizeof (XftGlyph); + if (font->format) + { +@@ -685,15 +831,35 @@ XftFontLoadGlyphs (Display *dpy, + } + } + } +- else if ( mode != FT_RENDER_MODE_NORMAL ) ++ else if (glyphslot->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA || mode != FT_RENDER_MODE_NORMAL) + { + /* invert ARGB <=> BGRA */ + if (ImageByteOrder (dpy) != XftNativeByteOrder ()) + XftSwapCARD32 ((CARD32 *) bufBitmap, size >> 2); + } +- XRenderAddGlyphs (dpy, font->glyphset, &glyph, +- &xftg->metrics, 1, +- (char *) bufBitmap, size); ++ ++ if (glyphslot->bitmap.pixel_mode == FT_PIXEL_MODE_BGRA) ++ { ++ Pixmap pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy), local.width, local.rows, 32); ++ GC gc = XCreateGC(dpy, pixmap, 0, NULL); ++ XImage image = { ++ local.width, local.rows, 0, ZPixmap, (char *)bufBitmap, ++ dpy->byte_order, dpy->bitmap_unit, dpy->bitmap_bit_order, 32, ++ 32, local.width * 4 - local.pitch, 32, ++ 0, 0, 0 ++ }; ++ ++ XInitImage(&image); ++ XPutImage(dpy, pixmap, gc, &image, 0, 0, 0, 0, local.width, local.rows); ++ xftg->picture = XRenderCreatePicture(dpy, pixmap, font->format, 0, NULL); ++ ++ XFreeGC(dpy, gc); ++ XFreePixmap(dpy, pixmap); ++ } ++ else ++ XRenderAddGlyphs (dpy, font->glyphset, &glyph, ++ &xftg->metrics, 1, ++ (char *) bufBitmap, size); + } + else + { +@@ -744,7 +910,9 @@ XftFontUnloadGlyphs (Display *dpy, + { + if (font->format) + { +- if (font->glyphset) ++ if (xftg->picture) ++ XRenderFreePicture(dpy, xftg->picture); ++ else if (font->glyphset) + { + glyphBuf[nused++] = (Glyph) glyphindex; + if (nused == sizeof (glyphBuf) / sizeof (glyphBuf[0])) +diff --git a/src/xftint.h b/src/xftint.h +index c06ac3c..b263520 100644 +--- a/src/xftint.h ++++ b/src/xftint.h +@@ -85,6 +85,7 @@ typedef struct _XftGlyph { + XGlyphInfo metrics; + void *bitmap; + unsigned long glyph_memory; ++ Picture picture; + } XftGlyph; + + /* +@@ -134,6 +135,7 @@ struct _XftFontInfo { + FT_F26Dot6 xsize, ysize; /* pixel size */ + FcBool antialias; /* doing antialiasing */ + FcBool embolden; /* force emboldening */ ++ FcBool color; /* contains color glyphs */ + int rgba; /* subpixel order */ + int lcd_filter; /* lcd filter */ + FT_Matrix matrix; /* glyph transformation matrix */ +diff --git a/src/xftrender.c b/src/xftrender.c +index b280c03..9a789cb 100644 +--- a/src/xftrender.c ++++ b/src/xftrender.c +@@ -25,6 +25,35 @@ + #define NUM_LOCAL 1024 + #define NUM_ELT_LOCAL 128 + ++/* ++ * Dispatch glyph drawing to the correct XRenderCompositeString function ++ */ ++static void ++_XftCompositeString (Display *dpy, int op, Picture src, Picture dst, XRenderPictFormat* format, GlyphSet glyphset, int srcx, int srcy, int dstx, int dsty, int charwidth, unsigned int* chars, int nchars) ++{ ++ if (nchars == 0) ++ return; ++ ++ switch (charwidth) { ++ case 1: ++ default: ++ XRenderCompositeString8 (dpy, op, ++ src, dst, format, glyphset, ++ srcx, srcy, dstx, dsty, (char*)chars, nchars); ++ break; ++ case 2: ++ XRenderCompositeString16(dpy, op, ++ src, dst, format, glyphset, ++ srcx, srcy, dstx, dsty, (unsigned short*)chars, nchars); ++ break; ++ case 4: ++ XRenderCompositeString32(dpy, op, ++ src, dst, format, glyphset, ++ srcx, srcy, dstx, dsty, (unsigned int*)chars, nchars); ++ break; ++ } ++} ++ + /* + * Use the Render extension to draw the glyphs + */ +@@ -43,12 +72,14 @@ XftGlyphRender (Display *dpy, + int nglyphs) + { + XftFontInt *font = (XftFontInt *) pub; +- int i; ++ int i, j; + FT_UInt missing[XFT_NMISSING]; + int nmissing; + FT_UInt g, max; + int size, width; ++ int dstx, dsty; + Glyph wire; ++ XftGlyph* glyph; + char *char8; + unsigned short *char16; + unsigned int *char32; +@@ -100,43 +131,75 @@ XftGlyphRender (Display *dpy, + if (!chars) + goto bail1; + } ++ dstx = x; ++ dsty = y; + char8 = (char *) chars; + char16 = (unsigned short *) chars; + char32 = (unsigned int *) chars; +- for (i = 0; i < nglyphs; i++) ++ for (i = 0, j = 0; i < nglyphs; i++) + { + wire = (Glyph) glyphs[i]; + if (wire >= font->num_glyphs || !font->glyphs[wire]) + wire = 0; +- switch (width) { +- case 1: char8[i] = (char) wire; break; +- case 2: char16[i] = (unsigned short) wire; break; +- case 4: char32[i] = (unsigned long) wire; break; ++ glyph = font->glyphs[wire]; ++ if (glyph->picture) ++ { ++ _XftCompositeString(dpy, op, src, dst, font->format, font->glyphset, srcx, srcy, x, y, width, chars, j); ++ XRenderComposite(dpy, PictOpOver, glyph->picture, None, dst, 0, 0, 0, 0, dstx, dsty - glyph->metrics.y, glyph->metrics.width, glyph->metrics.height); ++ x = dstx = dstx + glyph->metrics.xOff; ++ x = dsty = dsty + glyph->metrics.yOff; ++ j = 0; ++ } ++ else ++ { ++ switch (width) { ++ case 1: char8[j] = (char) wire; break; ++ case 2: char16[j] = (unsigned short) wire; break; ++ case 4: char32[j] = (unsigned long) wire; break; ++ } ++ dstx += glyph->metrics.xOff; ++ dsty += glyph->metrics.yOff; ++ ++j; + } + } +- switch (width) { ++ _XftCompositeString(dpy, op, src, dst, font->format, font->glyphset, srcx, srcy, x, y, width, chars, j); ++ if (chars != char_local) ++ free (chars); ++bail1: ++ if (glyphs_loaded) ++ _XftFontManageMemory (dpy, pub); ++} ++ ++/* ++ * Dispatch glyph drawing to the correct XRenderCompositeText function ++ */ ++static void ++_XftCompositeText (Display *dpy, int op, Picture src, Picture dst, XRenderPictFormat* format, int srcx, int srcy, int dstx, int dsty, int eltwidth, XGlyphElt8* elts, int nelt) ++{ ++ if (nelt == 0) ++ return; ++ ++ switch (eltwidth) { + case 1: + default: +- XRenderCompositeString8 (dpy, op, +- src, dst, font->format, font->glyphset, +- srcx, srcy, x, y, char8, nglyphs); ++ XRenderCompositeText8 (dpy, op, ++ src, dst, format, ++ srcx, srcy, dstx, dsty, ++ (XGlyphElt8*)elts, nelt); + break; + case 2: +- XRenderCompositeString16(dpy, op, +- src, dst, font->format, font->glyphset, +- srcx, srcy, x, y, char16, nglyphs); ++ XRenderCompositeText16(dpy, op, ++ src, dst, format, ++ srcx, srcy, dstx, dsty, ++ (XGlyphElt16*)elts, nelt); + break; + case 4: +- XRenderCompositeString32(dpy, op, +- src, dst, font->format, font->glyphset, +- srcx, srcy, x, y, char32, nglyphs); ++ XRenderCompositeText32(dpy, op, ++ src, dst, format, ++ srcx, srcy, dstx, dsty, ++ (XGlyphElt32*)elts, nelt); + break; + } +- if (chars != char_local) +- free (chars); +-bail1: +- if (glyphs_loaded) +- _XftFontManageMemory (dpy, pub); + } + + _X_EXPORT void +@@ -251,9 +314,10 @@ XftGlyphSpecRender (Display *dpy, + g = 0; + /* + * check to see if the glyph is placed where it would +- * fall using the normal spacing ++ * fall using the normal spacing and if it would render ++ * as a XRender glyph + */ +- if ((glyph = font->glyphs[g])) ++ if ((glyph = font->glyphs[g]) && !glyph->picture) + { + if (x != glyphs[i].x || y != glyphs[i].y) + { +@@ -267,7 +331,7 @@ XftGlyphSpecRender (Display *dpy, + } + + elts = elts_local; +- if (nelt > NUM_ELT_LOCAL) ++ if (!font->info.color && nelt > NUM_ELT_LOCAL) + { + elts = malloc (nelt * sizeof (XGlyphElt8)); + if (!elts) +@@ -275,7 +339,7 @@ XftGlyphSpecRender (Display *dpy, + } + + /* +- * Generate the list of glyph elts ++ * Generate the list of glyph elts or render color glyphs + */ + nelt = 0; + x = y = 0; +@@ -289,6 +353,11 @@ XftGlyphSpecRender (Display *dpy, + g = 0; + if ((glyph = font->glyphs[g])) + { ++ if (glyph->picture) ++ { ++ XRenderComposite(dpy, PictOpOver, glyph->picture, None, dst, 0, 0, 0, 0, glyphs[i].x, glyphs[i].y - glyph->metrics.y, glyph->metrics.width, glyph->metrics.height); ++ continue; ++ } + if (!i || x != glyphs[i].x || y != glyphs[i].y) + { + if (n) +@@ -320,23 +389,9 @@ XftGlyphSpecRender (Display *dpy, + elts[nelt].nchars = n; + nelt++; + } +- switch (width) { +- case 1: +- XRenderCompositeText8 (dpy, op, src, dst, font->format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- elts, nelt); +- break; +- case 2: +- XRenderCompositeText16 (dpy, op, src, dst, font->format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- (XGlyphElt16 *) elts, nelt); +- break; +- case 4: +- XRenderCompositeText32 (dpy, op, src, dst, font->format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- (XGlyphElt32 *) elts, nelt); +- break; +- } ++ _XftCompositeText(dpy, op, src, dst, font->format, ++ srcx, srcy, glyphs[0].x, glyphs[0].y, ++ width, elts, nelt); + + if (elts != elts_local) + free (elts); +@@ -535,7 +590,7 @@ XftGlyphFontSpecRender (Display *dpy, + * check to see if the glyph is placed where it would + * fall using the normal spacing + */ +- if ((glyph = font->glyphs[g])) ++ if ((glyph = font->glyphs[g]) && !glyph->picture) + { + if (pub != prevPublic || x != glyphs[i].x || y != glyphs[i].y) + { +@@ -560,7 +615,7 @@ XftGlyphFontSpecRender (Display *dpy, + } + + /* +- * Generate the list of glyph elts ++ * Generate the list of glyph elts and render color glyphs + */ + nelt = 0; + x = y = 0; +@@ -578,6 +633,11 @@ XftGlyphFontSpecRender (Display *dpy, + g = 0; + if ((glyph = font->glyphs[g])) + { ++ if (glyph->picture) ++ { ++ XRenderComposite(dpy, PictOpOver, glyph->picture, None, dst, 0, 0, 0, 0, glyphs[i].x, glyphs[i].y - glyph->metrics.y, glyph->metrics.width, glyph->metrics.height); ++ continue; ++ } + if (!i || pub != prevPublic || x != glyphs[i].x || y != glyphs[i].y) + { + if (n) +@@ -610,23 +670,9 @@ XftGlyphFontSpecRender (Display *dpy, + elts[nelt].nchars = n; + nelt++; + } +- switch (width) { +- case 1: +- XRenderCompositeText8 (dpy, op, src, dst, format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- elts, nelt); +- break; +- case 2: +- XRenderCompositeText16 (dpy, op, src, dst, format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- (XGlyphElt16 *) elts, nelt); +- break; +- case 4: +- XRenderCompositeText32 (dpy, op, src, dst, format, +- srcx, srcy, glyphs[0].x, glyphs[0].y, +- (XGlyphElt32 *) elts, nelt); +- break; +- } ++ _XftCompositeText(dpy, op, src, dst, format, ++ srcx, srcy, glyphs[0].x, glyphs[0].y, ++ width, elts, nelt); + + if (elts != elts_local) + free (elts); +-- +2.24.1 + diff --git a/patches/x11-libs/pango-1.42.4-r1/pango-CVE-2019-1010238.patch b/patches/x11-libs/pango-1.42.4-r1/pango-CVE-2019-1010238.patch @@ -0,0 +1,34 @@ +From 490f8979a260c16b1df055eab386345da18a2d54 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen <mclasen@redhat.com> +Date: Wed, 10 Jul 2019 20:26:23 -0400 +Subject: [PATCH] bidi: Be safer against bad input + +Don't run off the end of an array that we +allocated to certain length. + +Closes: https://gitlab.gnome.org/GNOME/pango/issues/342 +--- + pango/pango-bidi-type.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c +index 3e46b66c..5c02dbbb 100644 +--- a/pango/pango-bidi-type.c ++++ b/pango/pango-bidi-type.c +@@ -181,8 +181,11 @@ pango_log2vis_get_embedding_levels (const gchar *text, + for (i = 0, p = text; p < text + length; p = g_utf8_next_char(p), i++) + { + gunichar ch = g_utf8_get_char (p); +- FriBidiCharType char_type; +- char_type = fribidi_get_bidi_type (ch); ++ FriBidiCharType char_type = fribidi_get_bidi_type (ch); ++ ++ if (i == n_chars) ++ break; ++ + bidi_types[i] = char_type; + ored_types |= char_type; + if (FRIBIDI_IS_STRONG (char_type)) +-- +2.21.0 + diff --git a/patches/x11-misc/redshift/redshift-1.12_no_objc.patch b/patches/x11-misc/redshift/redshift-1.12_no_objc.patch @@ -0,0 +1,91 @@ +diff -udr ./configure.ac ../redshift-1.12.new/configure.ac +--- ./configure.ac 2018-05-21 01:47:53.000000000 +0000 ++++ ./configure.ac 2020-04-04 08:00:02.853123881 +0000 +@@ -13,7 +13,6 @@ + # Checks for programs. + AC_PROG_CC_C99 + AC_PROG_LIBTOOL +-AC_PROG_OBJC # For macOS support modules + AC_LANG([C]) + + AC_PROG_INTLTOOL([0.50]) +@@ -39,18 +38,6 @@ + [test "x$enable_windows_resource" = xyes]) + + +-# Test whether Objective C compiler works +-AC_MSG_CHECKING([whether Objective C compiler works]) +-AC_LANG_PUSH([Objective C]) +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [ +- AC_MSG_RESULT([yes]) +- have_objc_compiler=yes +-], [ +- AC_MSG_RESULT([no]) +- have_objc_compiler=no +-]) +-AC_LANG_POP([Objective C]) +- + # Checks for libraries. + AM_GNU_GETTEXT_VERSION([0.17]) + AM_GNU_GETTEXT([external]) +@@ -74,25 +61,7 @@ + # macOS headers + AC_CHECK_HEADER([ApplicationServices/ApplicationServices.h], [have_appserv_h=yes], [have_appserv_h=no]) + +-# CoreLocation.h is an Objective C header. Only test if +-# Objective C compiler works. AC_CHECK_HEADER does not +-# appear to work if the Ojective C compiler is not +-# available so we need a custom test. +-AC_MSG_CHECKING([whether CoreLocation/CoreLocation.h is usable]) +-AS_IF([test "x$have_objc_compiler" = xyes], [ +- AC_LANG_PUSH([Objective C]) +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#import <CoreLocation/CoreLocation.h>]],[[]])], [ +- AC_MSG_RESULT([yes]) +- have_corelocation_h=yes +- ], [ +- AC_MSG_RESULT([no]) +- have_corelocation_h=no +- ]) +- AC_LANG_POP([Objective C]) +-], [ +- AC_MSG_RESULT([no Objective C compiler available]) +- have_corelocation_h=no +-]) ++have_corelocation_h=no + + # Windows header + AC_CHECK_HEADER([windows.h], [have_windows_h=yes], [have_windows_h=no]) +diff -udr ./src/Makefile.am ../redshift-1.12.new/src/Makefile.am +--- ./src/Makefile.am 2018-05-21 01:47:53.000000000 +0000 ++++ ./src/Makefile.am 2020-04-04 08:00:03.109117287 +0000 +@@ -28,7 +28,6 @@ + gamma-quartz.c gamma-quartz.h \ + gamma-w32gdi.c gamma-w32gdi.h \ + location-geoclue2.c location-geoclue2.h \ +- location-corelocation.m location-corelocation.h \ + windows/appicon.rc \ + windows/versioninfo.rc + +@@ -80,22 +79,6 @@ + $(GEOCLUE2_LIBS) $(GEOCLUE2_CFLAGS) + endif + +-# Build CoreLocation module as a separate convenience +-# library since it is using a separate compiler +-# (Objective C). +- +-if ENABLE_CORELOCATION +-noinst_LTLIBRARIES = liblocation-corelocation.la +-liblocation_corelocation_la_SOURCES = \ +- location-corelocation.m location-corelocation.h +-liblocation_corelocation_la_OBJCFLAGS = \ +- $(CORELOCATION_CFLAGS) +-liblocation_corelocation_la_LIBADD = \ +- $(CORELOCATION_CFLAGS) $(CORELOCATION_LIBS) +-redshift_LDADD += liblocation-corelocation.la +-endif +- +- + # Windows resources + if ENABLE_WINDOWS_RESOURCE + redshift_SOURCES += windows/appicon.rc windows/versioninfo.rc diff --git a/patches/x11-misc/tabbed-0.6/tabbed-0.6-xft.diff b/patches/x11-misc/tabbed-0.6/tabbed-0.6-xft.diff @@ -0,0 +1,233 @@ +diff --git a/config.def.h b/config.def.h +index ceda9f7..bc7cfe2 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -1,7 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + + /* appearance */ +-static const char font[] = "-*-*-medium-*-*-*-14-*-*-*-*-*-*-*"; ++static const char font[] = "monospace-9"; + static const char* normbgcolor = "#222222"; + static const char* normfgcolor = "#cccccc"; + static const char* selbgcolor = "#555555"; +diff --git a/config.mk b/config.mk +index 5279711..037f9d7 100644 +--- a/config.mk ++++ b/config.mk +@@ -8,8 +8,8 @@ PREFIX = /usr/local + MANPREFIX = ${PREFIX}/share/man + + # includes and libs +-INCS = -I. -I/usr/include +-LIBS = -lX11 ++INCS = -I. -I/usr/include -I/usr/include/freetype2 ++LIBS = -L/usr/lib -lc -lX11 -lfontconfig -lXft + + # flags + CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE +diff --git a/tabbed.c b/tabbed.c +index d30206b..d08348c 100644 +--- a/tabbed.c ++++ b/tabbed.c +@@ -15,6 +15,7 @@ + #include <X11/Xproto.h> + #include <X11/Xutil.h> + #include <X11/XKBlib.h> ++#include <X11/Xft/Xft.h> + + #include "arg.h" + +@@ -64,16 +65,15 @@ typedef struct { + + typedef struct { + int x, y, w, h; +- unsigned long norm[ColLast]; +- unsigned long sel[ColLast]; ++ XftColor norm[ColLast]; ++ XftColor sel[ColLast]; + Drawable drawable; + GC gc; + struct { + int ascent; + int descent; + int height; +- XFontSet set; +- XFontStruct *xfont; ++ XftFont *xfont; + } font; + } DC; /* draw context */ + +@@ -95,7 +95,7 @@ static void createnotify(const XEvent *e); + static void destroynotify(const XEvent *e); + static void die(const char *errstr, ...); + static void drawbar(void); +-static void drawtext(const char *text, unsigned long col[ColLast]); ++static void drawtext(const char *text, XftColor col[ColLast]); + static void *emallocz(size_t size); + static void *erealloc(void *o, size_t size); + static void expose(const XEvent *e); +@@ -105,7 +105,7 @@ static void focusonce(const Arg *arg); + static void fullscreen(const Arg *arg); + static char* getatom(int a); + static int getclient(Window w); +-static unsigned long getcolor(const char *colstr); ++static XftColor getcolor(const char *colstr); + static int getfirsttab(void); + static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); + static void initfont(const char *fontstr); +@@ -219,12 +219,6 @@ cleanup(void) { + free(clients); + clients = NULL; + +- if(dc.font.set) { +- XFreeFontSet(dpy, dc.font.set); +- } else { +- XFreeFont(dpy, dc.font.xfont); +- } +- + XFreePixmap(dpy, dc.drawable); + XFreeGC(dpy, dc.gc); + XDestroyWindow(dpy, win); +@@ -305,7 +299,7 @@ die(const char *errstr, ...) { + + void + drawbar(void) { +- unsigned long *col; ++ XftColor *col; + int c, fc, width, n = 0; + char *name = NULL; + +@@ -362,12 +356,13 @@ drawbar(void) { + } + + void +-drawtext(const char *text, unsigned long col[ColLast]) { ++drawtext(const char *text, XftColor col[ColLast]) { + int i, x, y, h, len, olen; + char buf[256]; ++ XftDraw *d; + XRectangle r = { dc.x, dc.y, dc.w, dc.h }; + +- XSetForeground(dpy, dc.gc, col[ColBG]); ++ XSetForeground(dpy, dc.gc, col[ColBG].pixel); + XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); + if(!text) + return; +@@ -388,13 +383,10 @@ drawtext(const char *text, unsigned long col[ColLast]) { + for(i = len; i && i > len - 3; buf[--i] = '.'); + } + +- XSetForeground(dpy, dc.gc, col[ColFG]); +- if(dc.font.set) { +- XmbDrawString(dpy, dc.drawable, dc.font.set, +- dc.gc, x, y, buf, len); +- } else { +- XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); +- } ++ d = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy, screen), DefaultColormap(dpy, screen)); ++ ++ XftDrawStringUtf8(d, &col[ColFG], dc.font.xfont, x, y, (XftChar8 *) buf, len); ++ XftDrawDestroy(d); + } + + void * +@@ -524,15 +516,14 @@ getclient(Window w) { + return -1; + } + +-unsigned long ++XftColor + getcolor(const char *colstr) { +- Colormap cmap = DefaultColormap(dpy, screen); +- XColor color; ++ XftColor color; + +- if(!XAllocNamedColor(dpy, cmap, colstr, &color, &color)) ++ if(!XftColorAllocName(dpy, DefaultVisual(dpy, screen), DefaultColormap(dpy, screen), colstr, &color)) + die("tabbed: cannot allocate color '%s'\n", colstr); + +- return color.pixel; ++ return color; + } + + int +@@ -585,41 +576,12 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size) { + + void + initfont(const char *fontstr) { +- char *def, **missing, **font_names; +- int i, n; +- XFontStruct **xfonts; +- +- missing = NULL; +- if(dc.font.set) +- XFreeFontSet(dpy, dc.font.set); +- +- dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); +- if(missing) { +- while(n--) +- fprintf(stderr, "tabbed: missing fontset: %s\n", missing[n]); +- XFreeStringList(missing); +- } ++ if(!(dc.font.xfont = XftFontOpenName(dpy, screen, fontstr)) ++ && !(dc.font.xfont = XftFontOpenName(dpy, screen, "fixed"))) ++ die("error, cannot load font: '%s'\n", fontstr); + +- if(dc.font.set) { +- dc.font.ascent = dc.font.descent = 0; +- n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); +- for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) { +- dc.font.ascent = MAX(dc.font.ascent, (*xfonts)->ascent); +- dc.font.descent = MAX(dc.font.descent,(*xfonts)->descent); +- xfonts++; +- } +- } else { +- if(dc.font.xfont) +- XFreeFont(dpy, dc.font.xfont); +- dc.font.xfont = NULL; +- if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr)) +- && !(dc.font.xfont = XLoadQueryFont(dpy, "fixed"))) { +- die("tabbed: cannot load font: '%s'\n", fontstr); +- } +- +- dc.font.ascent = dc.font.xfont->ascent; +- dc.font.descent = dc.font.xfont->descent; +- } ++ dc.font.ascent = dc.font.xfont->ascent; ++ dc.font.descent = dc.font.xfont->descent; + dc.font.height = dc.font.ascent + dc.font.descent; + } + +@@ -972,11 +934,9 @@ setup(void) { + dc.drawable = XCreatePixmap(dpy, root, ww, wh, + DefaultDepth(dpy, screen)); + dc.gc = XCreateGC(dpy, root, 0, 0); +- if(!dc.font.set) +- XSetFont(dpy, dc.gc, dc.font.xfont->fid); + + win = XCreateSimpleWindow(dpy, root, wx, wy, ww, wh, 0, +- dc.norm[ColFG], dc.norm[ColBG]); ++ dc.norm[ColFG].pixel, dc.norm[ColBG].pixel); + XMapRaised(dpy, win); + XSelectInput(dpy, win, SubstructureNotifyMask|FocusChangeMask| + ButtonPressMask|ExposureMask|KeyPressMask|PropertyChangeMask| +@@ -1040,15 +1000,9 @@ spawn(const Arg *arg) { + + int + textnw(const char *text, unsigned int len) { +- XRectangle r; +- +- if(dc.font.set) { +- XmbTextExtents(dc.font.set, text, len, NULL, &r); +- +- return r.width; +- } +- +- return XTextWidth(dc.font.xfont, text, len); ++ XGlyphInfo ext; ++ XftTextExtentsUtf8(dpy, dc.font.xfont, (XftChar8 *) text, len, &ext); ++ return ext.xOff; + } + + void diff --git a/patches/x11-misc/xkeyboard-config/xkeyboard-config-2.26_custom-US-layout.patch b/patches/x11-misc/xkeyboard-config/xkeyboard-config-2.26_custom-US-layout.patch @@ -0,0 +1,41 @@ +diff --git a/symbols/us.old b/symbols/us +index 708a7ab..b7d3d22 100644 +--- a/symbols/us.old ++++ b/symbols/us +@@ -56,6 +56,36 @@ xkb_symbols "basic" { + key <BKSL> { [ backslash, bar ] }; + }; + ++partial alphanumeric_keys modifier_keys keypad_keys ++xkb_symbols "lanodan" { ++ ++ include "us(basic)" ++ name[Group1]= "English (US; lanodan)"; ++ ++ key <AE11> { [ minus, underscore, U00B7 ] }; ++ ++ key <AD02> { [ w, W, Up ] }; ++ key <AD03> { [ e, E, U00E6 ] }; ++ key <AD10> { [ p, P, U2032 ] }; ++ key <AD11> { [ bracketleft, braceleft, U2033 ] }; ++ key <AD12> { [ bracketright, braceright, U2034 ] }; ++ ++ key <AC01> { [ a, A, Left ] }; ++ key <AC02> { [ s, S, Down ] }; ++ key <AC03> { [ d, D, Right ] }; ++ key <AC06> { [ h, H, Left, Home ] }; ++ key <AC07> { [ j, J, Down, Prior ] }; ++ key <AC08> { [ k, K, Up, Next ] }; ++ key <AC09> { [ l, L, Right, End ] }; ++ key <AC11> { [ apostrophe, quotedbl, U2018, U201C ] }; ++ key <BKSL> { [ backslash, bar, U2019, U201D ] }; ++ ++ key <AB08> { [ comma, less, U00AB ] }; ++ key <AB09> { [ period, greater, U00BB ] }; ++ key <AB10> { [ slash, question, UFFFD ] }; ++ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; ++}; ++ + partial alphanumeric_keys + xkb_symbols "euro" { + diff --git a/patches/x11-terms/st-0.8.1/0001-apply-01b-my-config.diff.patch b/patches/x11-terms/st-0.8.1/0001-apply-01b-my-config.diff.patch @@ -0,0 +1,34 @@ +From 170a93a33ba5545aaab2d0a5b7aefe084b4af3cd Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 1 Oct 2018 01:08:20 +0200 +Subject: [PATCH 1/3] apply: 01b-my-config.diff + +--- + config.def.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 82b1b09..3c587e2 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -5,7 +5,7 @@ + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +-static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; ++static char *font = "monospace-7"; + static int borderpx = 2; + + /* +@@ -32,7 +32,7 @@ static float chscale = 1.0; + * + * More advanced example: " `'\"()[]{}" + */ +-char *worddelimiters = " "; ++char *worddelimiters = "   │`'\"()[]{}“”<>‘’\~\;"; + + /* selection timeouts (in milliseconds) */ + static unsigned int doubleclicktimeout = 300; +-- +2.19.1 + diff --git a/patches/x11-terms/st-0.8.1/0002-Fix-keyboard-input-on-terminal.patch b/patches/x11-terms/st-0.8.1/0002-Fix-keyboard-input-on-terminal.patch @@ -0,0 +1,770 @@ +From fa87c7afac1f0f1a866d7b7e1bb6f9d28ba97d37 Mon Sep 17 00:00:00 2001 +From: Jan Christoph Ebersbach <jceb@e-jc.de> +Date: Mon, 1 Oct 2018 01:38:52 +0200 +Subject: [PATCH 2/3] Fix keyboard input on terminal + +URL: http://st.suckless.org/patches/fix_keyboard_input +--- + config.def.h | 691 +++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 641 insertions(+), 50 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 3c587e2..1ea6902 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -209,7 +209,80 @@ static Shortcut shortcuts[] = { + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +-static KeySym mappedkeys[] = { -1 }; ++static KeySym mappedkeys[] = { ++ XK_space, ++ XK_m, ++ XK_i, ++ XK_A, ++ XK_B, ++ XK_C, ++ XK_D, ++ XK_E, ++ XK_F, ++ XK_G, ++ XK_H, ++ XK_I, ++ XK_K, ++ XK_J, ++ XK_L, ++ XK_M, ++ XK_N, ++ XK_O, ++ XK_P, ++ XK_Q, ++ XK_R, ++ XK_S, ++ XK_T, ++ XK_U, ++ XK_V, ++ XK_W, ++ XK_X, ++ XK_Y, ++ XK_Z, ++ XK_Z, ++ XK_0, ++ XK_1, ++ XK_2, ++ XK_3, ++ XK_4, ++ XK_5, ++ XK_6, ++ XK_7, ++ XK_8, ++ XK_9, ++ XK_exclam, ++ XK_quotedbl, ++ XK_numbersign, ++ XK_dollar, ++ XK_percent, ++ XK_ampersand, ++ XK_apostrophe, ++ XK_parenleft, ++ XK_parenright, ++ XK_asterisk, ++ XK_plus, ++ XK_comma, ++ XK_minus, ++ XK_period, ++ XK_slash, ++ XK_colon, ++ XK_semicolon, ++ XK_less, ++ XK_equal, ++ XK_greater, ++ XK_question, ++ XK_at, ++ XK_bracketleft, ++ XK_backslash, ++ XK_bracketright, ++ XK_asciicircum, ++ XK_underscore, ++ XK_grave, ++ XK_braceleft, ++ XK_bar, ++ XK_braceright, ++ XK_asciitilde, ++}; + + /* + * State bits to ignore when matching key or button events. By default, +@@ -232,59 +305,20 @@ static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, +- { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, +- { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, +- { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, +- { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, +- { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, +- { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, +- { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, +- { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, +- { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, +- { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, +- { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, +- { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, +- { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, +- { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, +- { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, +- { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, +- { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, +- { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, +- { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, +- { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, +- { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, +- { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, +- { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, +- { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, +- { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, +- { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, +- { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, +- { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, +- { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, +- { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, +- { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, +- { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, +- { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, +- { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, +- { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, +- { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, +- { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, +- { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, +- { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, +@@ -323,36 +357,27 @@ static Key key[] = { + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, +- { XK_Return, XK_ANY_MOD, "\r", 0, 0}, ++ { XK_Return, XK_NO_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, +- { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, +- { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, +- { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, +- { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, +- { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, +- { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, +- { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, +- { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, +- { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, +@@ -439,6 +464,572 @@ static Key key[] = { + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, ++ ++ // libtermkey compatible keyboard input ++ { XK_KP_Home, XK_NO_MOD, "\033[H", 0, -1}, ++ { XK_KP_Home, XK_NO_MOD, "\033[1~", 0, +1}, ++ { XK_KP_Home, ControlMask, "\033[149;5u", 0, 0}, ++ { XK_KP_Home, ControlMask|ShiftMask, "\033[149;6u", 0, 0}, ++ { XK_KP_Home, Mod1Mask, "\033[149;3u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ControlMask, "\033[149;7u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ControlMask|ShiftMask, "\033[149;8u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ShiftMask, "\033[149;4u", 0, 0}, ++ { XK_KP_Home, ShiftMask, "\033[149;2u", 0, 0}, ++ { XK_KP_Up, XK_NO_MOD, "\033Ox", +1, 0}, ++ { XK_KP_Up, XK_NO_MOD, "\033[A", 0, -1}, ++ { XK_KP_Up, XK_NO_MOD, "\033OA", 0, +1}, ++ { XK_KP_Up, ControlMask, "\033[151;5u", 0, 0}, ++ { XK_KP_Up, ControlMask|ShiftMask, "\033[151;6u", 0, 0}, ++ { XK_KP_Up, Mod1Mask, "\033[151;3u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ControlMask, "\033[151;7u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ControlMask|ShiftMask, "\033[151;8u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ShiftMask, "\033[151;4u", 0, 0}, ++ { XK_KP_Up, ShiftMask, "\033[151;2u", 0, 0}, ++ { XK_KP_Down, XK_NO_MOD, "\033Or", +1, 0}, ++ { XK_KP_Down, XK_NO_MOD, "\033[B", 0, -1}, ++ { XK_KP_Down, XK_NO_MOD, "\033OB", 0, +1}, ++ { XK_KP_Down, ControlMask, "\033[153;5u", 0, 0}, ++ { XK_KP_Down, ControlMask|ShiftMask, "\033[153;6u", 0, 0}, ++ { XK_KP_Down, Mod1Mask, "\033[153;3u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ControlMask, "\033[153;7u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ControlMask|ShiftMask, "\033[153;8u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ShiftMask, "\033[153;4u", 0, 0}, ++ { XK_KP_Down, ShiftMask, "\033[153;2u", 0, 0}, ++ { XK_KP_Left, XK_NO_MOD, "\033Ot", +1, 0}, ++ { XK_KP_Left, XK_NO_MOD, "\033[D", 0, -1}, ++ { XK_KP_Left, XK_NO_MOD, "\033OD", 0, +1}, ++ { XK_KP_Left, ControlMask, "\033[150;5u", 0, 0}, ++ { XK_KP_Left, ControlMask|ShiftMask, "\033[150;6u", 0, 0}, ++ { XK_KP_Left, Mod1Mask, "\033[150;3u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ControlMask, "\033[150;7u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ControlMask|ShiftMask, "\033[150;8u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ShiftMask, "\033[150;4u", 0, 0}, ++ { XK_KP_Left, ShiftMask, "\033[150;2u", 0, 0}, ++ { XK_KP_Right, XK_NO_MOD, "\033Ov", +1, 0}, ++ { XK_KP_Right, XK_NO_MOD, "\033[C", 0, -1}, ++ { XK_KP_Right, XK_NO_MOD, "\033OC", 0, +1}, ++ { XK_KP_Right, ControlMask, "\033[152;5u", 0, 0}, ++ { XK_KP_Right, ControlMask|ShiftMask, "\033[152;6u", 0, 0}, ++ { XK_KP_Right, Mod1Mask, "\033[152;3u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ControlMask, "\033[152;7u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ControlMask|ShiftMask, "\033[152;8u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ShiftMask, "\033[152;4u", 0, 0}, ++ { XK_KP_Right, ShiftMask, "\033[152;2u", 0, 0}, ++ { XK_KP_Prior, XK_NO_MOD, "\033[5~", 0, 0}, ++ { XK_KP_Prior, ControlMask, "\033[154;5u", 0, 0}, ++ { XK_KP_Prior, ControlMask|ShiftMask, "\033[154;6u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask, "\033[154;3u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ControlMask, "\033[154;7u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ControlMask|ShiftMask, "\033[154;8u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ShiftMask, "\033[154;4u", 0, 0}, ++ { XK_KP_Begin, XK_NO_MOD, "\033[E", 0, 0}, ++ { XK_KP_Begin, ControlMask, "\033[157;5u", 0, 0}, ++ { XK_KP_Begin, ControlMask|ShiftMask, "\033[157;6u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask, "\033[157;3u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ControlMask, "\033[157;7u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ControlMask|ShiftMask, "\033[157;8u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ShiftMask, "\033[157;4u", 0, 0}, ++ { XK_KP_Begin, ShiftMask, "\033[157;2u", 0, 0}, ++ { XK_KP_End, XK_NO_MOD, "\033[4~", 0, 0}, ++ { XK_KP_End, ControlMask|ShiftMask, "\033[156;6u", 0, 0}, ++ { XK_KP_End, Mod1Mask, "\033[156;3u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ControlMask, "\033[156;7u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ControlMask|ShiftMask, "\033[156;8u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ShiftMask, "\033[156;4u", 0, 0}, ++ { XK_KP_Next, XK_NO_MOD, "\033[6~", 0, 0}, ++ { XK_KP_Next, ControlMask, "\033[155;5u", 0, 0}, ++ { XK_KP_Next, ControlMask|ShiftMask, "\033[155;6u", 0, 0}, ++ { XK_KP_Next, Mod1Mask, "\033[155;3u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ControlMask, "\033[155;7u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ControlMask|ShiftMask, "\033[155;8u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ShiftMask, "\033[155;4u", 0, 0}, ++ { XK_KP_Insert, XK_NO_MOD, "\033[4h", -1, 0}, ++ { XK_KP_Insert, XK_NO_MOD, "\033[2~", +1, 0}, ++ { XK_KP_Insert, ControlMask|ShiftMask, "\033[158;6u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask, "\033[158;3u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ControlMask, "\033[158;7u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ControlMask|ShiftMask, "\033[158;8u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ShiftMask, "\033[158;4u", 0, 0}, ++ { XK_KP_Delete, XK_NO_MOD, "\033[P", -1, 0}, ++ { XK_KP_Delete, XK_NO_MOD, "\033[3~", +1, 0}, ++ { XK_KP_Delete, ControlMask|ShiftMask, "\033[159;6u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask, "\033[159;3u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ControlMask, "\033[159;7u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ControlMask|ShiftMask, "\033[159;8u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ShiftMask, "\033[159;4u", 0, 0}, ++ { XK_KP_Multiply, XK_NO_MOD, "\033Oj", +2, 0}, ++ { XK_KP_Multiply, ControlMask, "\033[170;5u", 0, 0}, ++ { XK_KP_Multiply, ControlMask|ShiftMask, "\033[170;6u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask, "\033[170;3u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ControlMask, "\033[170;7u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ControlMask|ShiftMask, "\033[170;8u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ShiftMask, "\033[170;4u", 0, 0}, ++ { XK_KP_Multiply, ShiftMask, "\033[170;2u", 0, 0}, ++ { XK_KP_Add, XK_NO_MOD, "\033Ok", +2, 0}, ++ { XK_KP_Add, ControlMask, "\033[171;5u", 0, 0}, ++ { XK_KP_Add, ControlMask|ShiftMask, "\033[171;6u", 0, 0}, ++ { XK_KP_Add, Mod1Mask, "\033[171;3u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ControlMask, "\033[171;7u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ControlMask|ShiftMask, "\033[171;8u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ShiftMask, "\033[171;4u", 0, 0}, ++ { XK_KP_Add, ShiftMask, "\033[171;2u", 0, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\033OM", +2, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\r", -1, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\r\n", -1, 0}, ++ { XK_KP_Enter, ControlMask, "\033[141;5u", 0, 0}, ++ { XK_KP_Enter, ControlMask|ShiftMask, "\033[141;6u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask, "\033[141;3u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ControlMask, "\033[141;7u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ControlMask|ShiftMask, "\033[141;8u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ShiftMask, "\033[141;4u", 0, 0}, ++ { XK_KP_Enter, ShiftMask, "\033[141;2u", 0, 0}, ++ { XK_KP_Subtract, XK_NO_MOD, "\033Om", +2, 0}, ++ { XK_KP_Subtract, ControlMask, "\033[173;5u", 0, 0}, ++ { XK_KP_Subtract, ControlMask|ShiftMask, "\033[173;6u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask, "\033[173;3u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ControlMask, "\033[173;7u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ControlMask|ShiftMask, "\033[173;8u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ShiftMask, "\033[173;4u", 0, 0}, ++ { XK_KP_Subtract, ShiftMask, "\033[173;2u", 0, 0}, ++ { XK_KP_Decimal, XK_NO_MOD, "\033On", +2, 0}, ++ { XK_KP_Decimal, ControlMask, "\033[174;5u", 0, 0}, ++ { XK_KP_Decimal, ControlMask|ShiftMask, "\033[174;6u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask, "\033[174;3u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ControlMask, "\033[174;7u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ControlMask|ShiftMask, "\033[174;8u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ShiftMask, "\033[174;4u", 0, 0}, ++ { XK_KP_Decimal, ShiftMask, "\033[174;2u", 0, 0}, ++ { XK_KP_Divide, XK_NO_MOD, "\033Oo", +2, 0}, ++ { XK_KP_Divide, ControlMask, "\033[175;5u", 0, 0}, ++ { XK_KP_Divide, ControlMask|ShiftMask, "\033[175;6u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask, "\033[175;3u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ControlMask, "\033[175;7u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ControlMask|ShiftMask, "\033[175;8u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ShiftMask, "\033[175;4u", 0, 0}, ++ { XK_KP_Divide, ShiftMask, "\033[175;2u", 0, 0}, ++ { XK_KP_0, XK_NO_MOD, "\033Op", +2, 0}, ++ { XK_KP_0, ControlMask, "\033[176;5u", 0, 0}, ++ { XK_KP_0, ControlMask|ShiftMask, "\033[176;6u", 0, 0}, ++ { XK_KP_0, Mod1Mask, "\033[176;3u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask, "\033[176;7u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask|ShiftMask, "\033[176;8u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ShiftMask, "\033[176;4u", 0, 0}, ++ { XK_KP_0, ShiftMask, "\033[176;2u", 0, 0}, ++ { XK_KP_1, XK_NO_MOD, "\033Oq", +2, 0}, ++ { XK_KP_0, ControlMask, "\033[177;5u", 0, 0}, ++ { XK_KP_0, ControlMask|ShiftMask, "\033[177;6u", 0, 0}, ++ { XK_KP_0, Mod1Mask, "\033[177;3u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask, "\033[177;7u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask|ShiftMask, "\033[177;8u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ShiftMask, "\033[177;4u", 0, 0}, ++ { XK_KP_0, ShiftMask, "\033[177;2u", 0, 0}, ++ { XK_KP_2, XK_NO_MOD, "\033Or", +2, 0}, ++ { XK_KP_2, ControlMask, "\033[178;5u", 0, 0}, ++ { XK_KP_2, ControlMask|ShiftMask, "\033[178;6u", 0, 0}, ++ { XK_KP_2, Mod1Mask, "\033[178;3u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ControlMask, "\033[178;7u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ControlMask|ShiftMask, "\033[178;8u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ShiftMask, "\033[178;4u", 0, 0}, ++ { XK_KP_2, ShiftMask, "\033[178;2u", 0, 0}, ++ { XK_KP_3, XK_NO_MOD, "\033Os", +2, 0}, ++ { XK_KP_3, ControlMask, "\033[179;5u", 0, 0}, ++ { XK_KP_3, ControlMask|ShiftMask, "\033[179;6u", 0, 0}, ++ { XK_KP_3, Mod1Mask, "\033[179;3u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ControlMask, "\033[179;7u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ControlMask|ShiftMask, "\033[179;8u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ShiftMask, "\033[179;4u", 0, 0}, ++ { XK_KP_3, ShiftMask, "\033[179;2u", 0, 0}, ++ { XK_KP_4, XK_NO_MOD, "\033Ot", +2, 0}, ++ { XK_KP_4, ControlMask, "\033[180;5u", 0, 0}, ++ { XK_KP_4, ControlMask|ShiftMask, "\033[180;6u", 0, 0}, ++ { XK_KP_4, Mod1Mask, "\033[180;3u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ControlMask, "\033[180;7u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ControlMask|ShiftMask, "\033[180;8u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ShiftMask, "\033[180;4u", 0, 0}, ++ { XK_KP_4, ShiftMask, "\033[180;2u", 0, 0}, ++ { XK_KP_5, XK_NO_MOD, "\033Ou", +2, 0}, ++ { XK_KP_5, ControlMask, "\033[181;5u", 0, 0}, ++ { XK_KP_5, ControlMask|ShiftMask, "\033[181;6u", 0, 0}, ++ { XK_KP_5, Mod1Mask, "\033[181;3u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ControlMask, "\033[181;7u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ControlMask|ShiftMask, "\033[181;8u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ShiftMask, "\033[181;4u", 0, 0}, ++ { XK_KP_5, ShiftMask, "\033[181;2u", 0, 0}, ++ { XK_KP_6, XK_NO_MOD, "\033Ov", +2, 0}, ++ { XK_KP_6, ControlMask, "\033[182;5u", 0, 0}, ++ { XK_KP_6, ControlMask|ShiftMask, "\033[182;6u", 0, 0}, ++ { XK_KP_6, Mod1Mask, "\033[182;3u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ControlMask, "\033[182;7u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ControlMask|ShiftMask, "\033[182;8u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ShiftMask, "\033[182;4u", 0, 0}, ++ { XK_KP_6, ShiftMask, "\033[182;2u", 0, 0}, ++ { XK_KP_7, XK_NO_MOD, "\033Ow", +2, 0}, ++ { XK_KP_7, ControlMask, "\033[183;5u", 0, 0}, ++ { XK_KP_7, ControlMask|ShiftMask, "\033[183;6u", 0, 0}, ++ { XK_KP_7, Mod1Mask, "\033[183;3u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ControlMask, "\033[183;7u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ControlMask|ShiftMask, "\033[183;8u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ShiftMask, "\033[183;4u", 0, 0}, ++ { XK_KP_7, ShiftMask, "\033[183;2u", 0, 0}, ++ { XK_KP_8, XK_NO_MOD, "\033Ox", +2, 0}, ++ { XK_KP_8, ControlMask, "\033[184;5u", 0, 0}, ++ { XK_KP_8, ControlMask|ShiftMask, "\033[184;6u", 0, 0}, ++ { XK_KP_8, Mod1Mask, "\033[184;3u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ControlMask, "\033[184;7u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ControlMask|ShiftMask, "\033[184;8u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ShiftMask, "\033[184;4u", 0, 0}, ++ { XK_KP_8, ShiftMask, "\033[184;2u", 0, 0}, ++ { XK_KP_9, XK_NO_MOD, "\033Oy", +2, 0}, ++ { XK_KP_9, ControlMask, "\033[185;5u", 0, 0}, ++ { XK_KP_9, ControlMask|ShiftMask, "\033[185;6u", 0, 0}, ++ { XK_KP_9, Mod1Mask, "\033[185;3u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ControlMask, "\033[185;7u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ControlMask|ShiftMask, "\033[185;8u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ShiftMask, "\033[185;4u", 0, 0}, ++ { XK_KP_9, ShiftMask, "\033[185;2u", 0, 0}, ++ { XK_BackSpace, ControlMask, "\033[127;5u", 0, 0}, ++ { XK_BackSpace, ControlMask|ShiftMask, "\033[127;6u", 0, 0}, ++ { XK_BackSpace, Mod1Mask, "\033[127;3u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ControlMask, "\033[127;7u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ControlMask|ShiftMask, "\033[127;8u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ShiftMask, "\033[127;4u", 0, 0}, ++ { XK_BackSpace, ShiftMask, "\033[127;2u", 0, 0}, ++ { XK_Tab, ControlMask, "\033[9;5u", 0, 0}, ++ { XK_Tab, ControlMask|ShiftMask, "\033[1;5Z", 0, 0}, ++ { XK_Tab, Mod1Mask, "\033[1;3Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ControlMask, "\033[1;7Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ControlMask|ShiftMask, "\033[1;8Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ShiftMask, "\033[1;4Z", 0, 0}, ++ { XK_Return, ControlMask, "\033[13;5u", 0, 0}, ++ { XK_Return, ControlMask|ShiftMask, "\033[13;6u", 0, 0}, ++ { XK_Return, Mod1Mask, "\033[13;3u", 0, 0}, ++ { XK_Return, Mod1Mask|ControlMask, "\033[13;7u", 0, 0}, ++ { XK_Return, Mod1Mask|ControlMask|ShiftMask, "\033[13;8u", 0, 0}, ++ { XK_Return, Mod1Mask|ShiftMask, "\033[13;4u", 0, 0}, ++ { XK_Return, ShiftMask, "\033[13;2u", 0, 0}, ++ { XK_Pause, ControlMask, "\033[18;5u", 0, 0}, ++ { XK_Pause, ControlMask|ShiftMask, "\033[18;6u", 0, 0}, ++ { XK_Pause, Mod1Mask, "\033[18;3u", 0, 0}, ++ { XK_Pause, Mod1Mask|ControlMask, "\033[18;7u", 0, 0}, ++ { XK_Pause, Mod1Mask|ControlMask|ShiftMask, "\033[18;8u", 0, 0}, ++ { XK_Pause, Mod1Mask|ShiftMask, "\033[18;4u", 0, 0}, ++ { XK_Pause, ShiftMask, "\033[18;2u", 0, 0}, ++ { XK_Scroll_Lock, ControlMask, "\033[20;5u", 0, 0}, ++ { XK_Scroll_Lock, ControlMask|ShiftMask, "\033[20;6u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask, "\033[20;3u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ControlMask, "\033[20;7u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ControlMask|ShiftMask, "\033[20;8u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ShiftMask, "\033[20;4u", 0, 0}, ++ { XK_Scroll_Lock, ShiftMask, "\033[20;2u", 0, 0}, ++ { XK_Escape, ControlMask, "\033[27;5u", 0, 0}, ++ { XK_Escape, ControlMask|ShiftMask, "\033[27;6u", 0, 0}, ++ { XK_Escape, Mod1Mask, "\033[27;3u", 0, 0}, ++ { XK_Escape, Mod1Mask|ControlMask, "\033[27;7u", 0, 0}, ++ { XK_Escape, Mod1Mask|ControlMask|ShiftMask, "\033[27;8u", 0, 0}, ++ { XK_Escape, Mod1Mask|ShiftMask, "\033[27;4u", 0, 0}, ++ { XK_Escape, ShiftMask, "\033[27;2u", 0, 0}, ++ { XK_Home, XK_NO_MOD, "\033[H", 0, -1}, ++ { XK_Home, XK_NO_MOD, "\033[1~", 0, +1}, ++ { XK_Home, ControlMask|ShiftMask, "\033[80;6u", 0, 0}, ++ { XK_Home, Mod1Mask, "\033[80;3u", 0, 0}, ++ { XK_Home, Mod1Mask|ControlMask, "\033[80;7u", 0, 0}, ++ { XK_Home, Mod1Mask|ControlMask|ShiftMask, "\033[80;8u", 0, 0}, ++ { XK_Home, Mod1Mask|ShiftMask, "\033[80;4u", 0, 0}, ++ { XK_End, XK_NO_MOD, "\033[4~", 0, 0}, ++ { XK_End, ControlMask|ShiftMask, "\033[87;6u", 0, 0}, ++ { XK_End, Mod1Mask, "\033[87;3u", 0, 0}, ++ { XK_End, Mod1Mask|ControlMask, "\033[87;7u", 0, 0}, ++ { XK_End, Mod1Mask|ControlMask|ShiftMask, "\033[87;8u", 0, 0}, ++ { XK_End, Mod1Mask|ShiftMask, "\033[87;4u", 0, 0}, ++ { XK_Prior, XK_NO_MOD, "\033[5~", 0, 0}, ++ { XK_Prior, ControlMask|ShiftMask, "\033[85;6u", 0, 0}, ++ { XK_Prior, Mod1Mask, "\033[85;3u", 0, 0}, ++ { XK_Prior, Mod1Mask|ControlMask, "\033[85;7u", 0, 0}, ++ { XK_Prior, Mod1Mask|ControlMask|ShiftMask, "\033[85;8u", 0, 0}, ++ { XK_Prior, Mod1Mask|ShiftMask, "\033[85;4u", 0, 0}, ++ { XK_Next, XK_NO_MOD, "\033[6~", 0, 0}, ++ { XK_Next, ControlMask|ShiftMask, "\033[86;6u", 0, 0}, ++ { XK_Next, Mod1Mask, "\033[86;3u", 0, 0}, ++ { XK_Next, Mod1Mask|ControlMask, "\033[86;7u", 0, 0}, ++ { XK_Next, Mod1Mask|ControlMask|ShiftMask, "\033[86;8u", 0, 0}, ++ { XK_Next, Mod1Mask|ShiftMask, "\033[86;4u", 0, 0}, ++ { XK_Print, ControlMask, "\033[97;5u", 0, 0}, ++ { XK_Print, ControlMask|ShiftMask, "\033[97;6u", 0, 0}, ++ { XK_Print, Mod1Mask, "\033[97;3u", 0, 0}, ++ { XK_Print, Mod1Mask|ControlMask, "\033[97;7u", 0, 0}, ++ { XK_Print, Mod1Mask|ControlMask|ShiftMask, "\033[97;8u", 0, 0}, ++ { XK_Print, Mod1Mask|ShiftMask, "\033[97;4u", 0, 0}, ++ { XK_Print, ShiftMask, "\033[97;2u", 0, 0}, ++ { XK_Insert, XK_NO_MOD, "\033[4h", -1, 0}, ++ { XK_Insert, XK_NO_MOD, "\033[2~", +1, 0}, ++ { XK_Insert, ControlMask|ShiftMask, "\033[99;6u", 0, 0}, ++ { XK_Insert, Mod1Mask, "\033[99;3u", 0, 0}, ++ { XK_Insert, Mod1Mask|ControlMask, "\033[99;7u", 0, 0}, ++ { XK_Insert, Mod1Mask|ControlMask|ShiftMask, "\033[99;8u", 0, 0}, ++ { XK_Insert, Mod1Mask|ShiftMask, "\033[99;4u", 0, 0}, ++ { XK_Menu, ControlMask, "\033[103;5u", 0, 0}, ++ { XK_Menu, ControlMask|ShiftMask, "\033[103;6u", 0, 0}, ++ { XK_Menu, Mod1Mask, "\033[103;3u", 0, 0}, ++ { XK_Menu, Mod1Mask|ControlMask, "\033[103;7u", 0, 0}, ++ { XK_Menu, Mod1Mask|ControlMask|ShiftMask, "\033[103;8u", 0, 0}, ++ { XK_Menu, Mod1Mask|ShiftMask, "\033[103;4u", 0, 0}, ++ { XK_Menu, ShiftMask, "\033[103;2u", 0, 0}, ++ { XK_Delete, XK_NO_MOD, "\033[P", -1, 0}, ++ { XK_Delete, XK_NO_MOD, "\033[3~", +1, 0}, ++ { XK_Delete, ControlMask|ShiftMask, "\033[255;6u", 0, 0}, ++ { XK_Delete, Mod1Mask, "\033[255;3u", 0, 0}, ++ { XK_Delete, Mod1Mask|ControlMask, "\033[255;7u", 0, 0}, ++ { XK_Delete, Mod1Mask|ControlMask|ShiftMask, "\033[255;8u", 0, 0}, ++ { XK_Delete, Mod1Mask|ShiftMask, "\033[255;4u", 0, 0}, ++ { XK_i, ControlMask, "\033[105;5u", 0, 0}, ++ { XK_i, Mod1Mask|ControlMask, "\033[105;7u", 0, 0}, ++ { XK_m, ControlMask, "\033[109;5u", 0, 0}, ++ { XK_m, Mod1Mask|ControlMask, "\033[109;7u", 0, 0}, ++ { XK_space, ControlMask|ShiftMask, "\033[32;6u", 0, 0}, ++ { XK_space, Mod1Mask, "\033[32;3u", 0, 0}, ++ { XK_space, Mod1Mask|ControlMask, "\033[32;7u", 0, 0}, ++ { XK_space, Mod1Mask|ControlMask|ShiftMask, "\033[32;8u", 0, 0}, ++ { XK_space, Mod1Mask|ShiftMask, "\033[32;4u", 0, 0}, ++ { XK_space, ShiftMask, "\033[32;2u", 0, 0}, ++ { XK_0, ControlMask, "\033[48;5u", 0, 0}, ++ { XK_A, ControlMask|ShiftMask, "\033[65;6u", 0, 0}, ++ { XK_B, ControlMask|ShiftMask, "\033[66;6u", 0, 0}, ++ { XK_C, ControlMask|ShiftMask, "\033[67;6u", 0, 0}, ++ { XK_D, ControlMask|ShiftMask, "\033[68;6u", 0, 0}, ++ { XK_E, ControlMask|ShiftMask, "\033[69;6u", 0, 0}, ++ { XK_F, ControlMask|ShiftMask, "\033[70;6u", 0, 0}, ++ { XK_G, ControlMask|ShiftMask, "\033[71;6u", 0, 0}, ++ { XK_H, ControlMask|ShiftMask, "\033[72;6u", 0, 0}, ++ { XK_I, ControlMask|ShiftMask, "\033[73;6u", 0, 0}, ++ { XK_I, Mod1Mask|ControlMask|ShiftMask, "\033[73;8u", 0, 0}, ++ { XK_J, ControlMask|ShiftMask, "\033[75;6u", 0, 0}, ++ { XK_K, ControlMask|ShiftMask, "\033[74;6u", 0, 0}, ++ { XK_L, ControlMask|ShiftMask, "\033[76;6u", 0, 0}, ++ { XK_M, ControlMask|ShiftMask, "\033[77;6u", 0, 0}, ++ { XK_M, Mod1Mask|ControlMask|ShiftMask, "\033[77;8u", 0, 0}, ++ { XK_N, ControlMask|ShiftMask, "\033[78;6u", 0, 0}, ++ { XK_O, ControlMask|ShiftMask, "\033[79;6u", 0, 0}, ++ { XK_P, ControlMask|ShiftMask, "\033[80;6u", 0, 0}, ++ { XK_Q, ControlMask|ShiftMask, "\033[81;6u", 0, 0}, ++ { XK_R, ControlMask|ShiftMask, "\033[82;6u", 0, 0}, ++ { XK_S, ControlMask|ShiftMask, "\033[83;6u", 0, 0}, ++ { XK_T, ControlMask|ShiftMask, "\033[84;6u", 0, 0}, ++ { XK_U, ControlMask|ShiftMask, "\033[85;6u", 0, 0}, ++ { XK_V, ControlMask|ShiftMask, "\033[86;6u", 0, 0}, ++ { XK_W, ControlMask|ShiftMask, "\033[87;6u", 0, 0}, ++ { XK_X, ControlMask|ShiftMask, "\033[88;6u", 0, 0}, ++ { XK_Y, ControlMask|ShiftMask, "\033[89;6u", 0, 0}, ++ { XK_Z, ControlMask|ShiftMask, "\033[90;6u", 0, 0}, ++ { XK_Z, ControlMask|ShiftMask, "\033[90;6u", 0, 0}, ++ { XK_0, Mod1Mask|ControlMask, "\033[48;7u", 0, 0}, ++ { XK_1, ControlMask, "\033[49;5u", 0, 0}, ++ { XK_1, Mod1Mask|ControlMask, "\033[49;7u", 0, 0}, ++ { XK_2, ControlMask, "\033[50;5u", 0, 0}, ++ { XK_2, Mod1Mask|ControlMask, "\033[50;7u", 0, 0}, ++ { XK_3, ControlMask, "\033[51;5u", 0, 0}, ++ { XK_3, Mod1Mask|ControlMask, "\033[51;7u", 0, 0}, ++ { XK_4, ControlMask, "\033[52;5u", 0, 0}, ++ { XK_4, Mod1Mask|ControlMask, "\033[52;7u", 0, 0}, ++ { XK_5, ControlMask, "\033[53;5u", 0, 0}, ++ { XK_5, Mod1Mask|ControlMask, "\033[53;7u", 0, 0}, ++ { XK_6, ControlMask, "\033[54;5u", 0, 0}, ++ { XK_6, Mod1Mask|ControlMask, "\033[54;7u", 0, 0}, ++ { XK_7, ControlMask, "\033[55;5u", 0, 0}, ++ { XK_7, Mod1Mask|ControlMask, "\033[55;7u", 0, 0}, ++ { XK_8, ControlMask, "\033[56;5u", 0, 0}, ++ { XK_8, Mod1Mask|ControlMask, "\033[56;7u", 0, 0}, ++ { XK_9, ControlMask, "\033[57;5u", 0, 0}, ++ { XK_9, Mod1Mask|ControlMask, "\033[57;7u", 0, 0}, ++ { XK_ampersand, ControlMask, "\033[38;5u", 0, 0}, ++ { XK_ampersand, ControlMask|ShiftMask, "\033[38;6u", 0, 0}, ++ { XK_ampersand, Mod1Mask, "\033[38;3u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ControlMask, "\033[38;7u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ControlMask|ShiftMask, "\033[38;8u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ShiftMask, "\033[38;4u", 0, 0}, ++ { XK_apostrophe, ControlMask, "\033[39;5u", 0, 0}, ++ { XK_apostrophe, ControlMask|ShiftMask, "\033[39;6u", 0, 0}, ++ { XK_apostrophe, Mod1Mask, "\033[39;3u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ControlMask, "\033[39;7u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ControlMask|ShiftMask, "\033[39;8u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ShiftMask, "\033[39;4u", 0, 0}, ++ { XK_asciicircum, ControlMask, "\033[94;5u", 0, 0}, ++ { XK_asciicircum, ControlMask|ShiftMask, "\033[94;6u", 0, 0}, ++ { XK_asciicircum, Mod1Mask, "\033[94;3u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ControlMask, "\033[94;7u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ControlMask|ShiftMask, "\033[94;8u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ShiftMask, "\033[94;4u", 0, 0}, ++ { XK_asciitilde, ControlMask, "\033[126;5u", 0, 0}, ++ { XK_asciitilde, ControlMask|ShiftMask, "\033[126;6u", 0, 0}, ++ { XK_asciitilde, Mod1Mask, "\033[126;3u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ControlMask, "\033[126;7u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ControlMask|ShiftMask, "\033[126;8u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ShiftMask, "\033[126;4u", 0, 0}, ++ { XK_asterisk, ControlMask, "\033[42;5u", 0, 0}, ++ { XK_asterisk, ControlMask|ShiftMask, "\033[42;6u", 0, 0}, ++ { XK_asterisk, Mod1Mask, "\033[42;3u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ControlMask, "\033[42;7u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ControlMask|ShiftMask, "\033[42;8u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ShiftMask, "\033[42;4u", 0, 0}, ++ { XK_at, ControlMask, "\033[64;5u", 0, 0}, ++ { XK_at, ControlMask|ShiftMask, "\033[64;6u", 0, 0}, ++ { XK_at, Mod1Mask, "\033[64;3u", 0, 0}, ++ { XK_at, Mod1Mask|ControlMask, "\033[64;7u", 0, 0}, ++ { XK_at, Mod1Mask|ControlMask|ShiftMask, "\033[64;8u", 0, 0}, ++ { XK_at, Mod1Mask|ShiftMask, "\033[64;4u", 0, 0}, ++ { XK_backslash, ControlMask, "\033[92;5u", 0, 0}, ++ { XK_backslash, ControlMask|ShiftMask, "\033[92;6u", 0, 0}, ++ { XK_backslash, Mod1Mask, "\033[92;3u", 0, 0}, ++ { XK_backslash, Mod1Mask|ControlMask, "\033[92;7u", 0, 0}, ++ { XK_backslash, Mod1Mask|ControlMask|ShiftMask, "\033[92;8u", 0, 0}, ++ { XK_backslash, Mod1Mask|ShiftMask, "\033[92;4u", 0, 0}, ++ { XK_bar, ControlMask, "\033[124;5u", 0, 0}, ++ { XK_bar, ControlMask|ShiftMask, "\033[124;6u", 0, 0}, ++ { XK_bar, Mod1Mask, "\033[124;3u", 0, 0}, ++ { XK_bar, Mod1Mask|ControlMask, "\033[124;7u", 0, 0}, ++ { XK_bar, Mod1Mask|ControlMask|ShiftMask, "\033[124;8u", 0, 0}, ++ { XK_bar, Mod1Mask|ShiftMask, "\033[124;4u", 0, 0}, ++ { XK_braceleft, ControlMask, "\033[123;5u", 0, 0}, ++ { XK_braceleft, ControlMask|ShiftMask, "\033[123;6u", 0, 0}, ++ { XK_braceleft, Mod1Mask, "\033[123;3u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ControlMask, "\033[123;7u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ControlMask|ShiftMask, "\033[123;8u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ShiftMask, "\033[123;4u", 0, 0}, ++ { XK_braceright, ControlMask, "\033[125;5u", 0, 0}, ++ { XK_braceright, ControlMask|ShiftMask, "\033[125;6u", 0, 0}, ++ { XK_braceright, Mod1Mask, "\033[125;3u", 0, 0}, ++ { XK_braceright, Mod1Mask|ControlMask, "\033[125;7u", 0, 0}, ++ { XK_braceright, Mod1Mask|ControlMask|ShiftMask, "\033[125;8u", 0, 0}, ++ { XK_braceright, Mod1Mask|ShiftMask, "\033[125;4u", 0, 0}, ++ { XK_bracketleft, ControlMask, "\033[91;5u", 0, 0}, ++ { XK_bracketleft, ControlMask|ShiftMask, "\033[91;6u", 0, 0}, ++ { XK_bracketleft, Mod1Mask, "\033[91;3u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ControlMask, "\033[91;7u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ControlMask|ShiftMask, "\033[91;8u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ShiftMask, "\033[91;4u", 0, 0}, ++ { XK_bracketright, ControlMask, "\033[93;5u", 0, 0}, ++ { XK_bracketright, ControlMask|ShiftMask, "\033[93;6u", 0, 0}, ++ { XK_bracketright, Mod1Mask, "\033[93;3u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ControlMask, "\033[93;7u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ControlMask|ShiftMask, "\033[93;8u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ShiftMask, "\033[93;4u", 0, 0}, ++ { XK_colon, ControlMask, "\033[58;5u", 0, 0}, ++ { XK_colon, ControlMask|ShiftMask, "\033[58;6u", 0, 0}, ++ { XK_colon, Mod1Mask, "\033[58;3u", 0, 0}, ++ { XK_colon, Mod1Mask|ControlMask, "\033[58;7u", 0, 0}, ++ { XK_colon, Mod1Mask|ControlMask|ShiftMask, "\033[58;8u", 0, 0}, ++ { XK_colon, Mod1Mask|ShiftMask, "\033[58;4u", 0, 0}, ++ { XK_comma, ControlMask, "\033[44;5u", 0, 0}, ++ { XK_comma, ControlMask|ShiftMask, "\033[44;6u", 0, 0}, ++ { XK_comma, Mod1Mask, "\033[44;3u", 0, 0}, ++ { XK_comma, Mod1Mask|ControlMask, "\033[44;7u", 0, 0}, ++ { XK_comma, Mod1Mask|ControlMask|ShiftMask, "\033[44;8u", 0, 0}, ++ { XK_comma, Mod1Mask|ShiftMask, "\033[44;4u", 0, 0}, ++ { XK_dollar, ControlMask, "\033[36;5u", 0, 0}, ++ { XK_dollar, ControlMask|ShiftMask, "\033[36;6u", 0, 0}, ++ { XK_dollar, Mod1Mask, "\033[36;3u", 0, 0}, ++ { XK_dollar, Mod1Mask|ControlMask, "\033[36;7u", 0, 0}, ++ { XK_dollar, Mod1Mask|ControlMask|ShiftMask, "\033[36;8u", 0, 0}, ++ { XK_dollar, Mod1Mask|ShiftMask, "\033[36;4u", 0, 0}, ++ { XK_equal, ControlMask, "\033[61;5u", 0, 0}, ++ { XK_equal, ControlMask|ShiftMask, "\033[61;6u", 0, 0}, ++ { XK_equal, Mod1Mask, "\033[61;3u", 0, 0}, ++ { XK_equal, Mod1Mask|ControlMask, "\033[61;7u", 0, 0}, ++ { XK_equal, Mod1Mask|ControlMask|ShiftMask, "\033[61;8u", 0, 0}, ++ { XK_equal, Mod1Mask|ShiftMask, "\033[61;4u", 0, 0}, ++ { XK_exclam, ControlMask, "\033[33;5u", 0, 0}, ++ { XK_exclam, ControlMask|ShiftMask, "\033[33;6u", 0, 0}, ++ { XK_exclam, Mod1Mask, "\033[33;3u", 0, 0}, ++ { XK_exclam, Mod1Mask|ControlMask, "\033[33;7u", 0, 0}, ++ { XK_exclam, Mod1Mask|ControlMask|ShiftMask, "\033[33;8u", 0, 0}, ++ { XK_exclam, Mod1Mask|ShiftMask, "\033[33;4u", 0, 0}, ++ { XK_grave, ControlMask, "\033[96;5u", 0, 0}, ++ { XK_grave, ControlMask|ShiftMask, "\033[96;6u", 0, 0}, ++ { XK_grave, Mod1Mask, "\033[96;3u", 0, 0}, ++ { XK_grave, Mod1Mask|ControlMask, "\033[96;7u", 0, 0}, ++ { XK_grave, Mod1Mask|ControlMask|ShiftMask, "\033[96;8u", 0, 0}, ++ { XK_grave, Mod1Mask|ShiftMask, "\033[96;4u", 0, 0}, ++ { XK_greater, ControlMask, "\033[62;5u", 0, 0}, ++ { XK_greater, ControlMask|ShiftMask, "\033[62;6u", 0, 0}, ++ { XK_greater, Mod1Mask, "\033[62;3u", 0, 0}, ++ { XK_greater, Mod1Mask|ControlMask, "\033[62;7u", 0, 0}, ++ { XK_greater, Mod1Mask|ControlMask|ShiftMask, "\033[62;8u", 0, 0}, ++ { XK_greater, Mod1Mask|ShiftMask, "\033[62;4u", 0, 0}, ++ { XK_less, ControlMask, "\033[60;5u", 0, 0}, ++ { XK_less, ControlMask|ShiftMask, "\033[60;6u", 0, 0}, ++ { XK_less, Mod1Mask, "\033[60;3u", 0, 0}, ++ { XK_less, Mod1Mask|ControlMask, "\033[60;7u", 0, 0}, ++ { XK_less, Mod1Mask|ControlMask|ShiftMask, "\033[60;8u", 0, 0}, ++ { XK_less, Mod1Mask|ShiftMask, "\033[60;4u", 0, 0}, ++ { XK_minus, ControlMask, "\033[45;5u", 0, 0}, ++ { XK_minus, ControlMask|ShiftMask, "\033[45;6u", 0, 0}, ++ { XK_minus, Mod1Mask, "\033[45;3u", 0, 0}, ++ { XK_minus, Mod1Mask|ControlMask, "\033[45;7u", 0, 0}, ++ { XK_minus, Mod1Mask|ControlMask|ShiftMask, "\033[45;8u", 0, 0}, ++ { XK_minus, Mod1Mask|ShiftMask, "\033[45;4u", 0, 0}, ++ { XK_numbersign, ControlMask, "\033[35;5u", 0, 0}, ++ { XK_numbersign, ControlMask|ShiftMask, "\033[35;6u", 0, 0}, ++ { XK_numbersign, Mod1Mask, "\033[35;3u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ControlMask, "\033[35;7u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ControlMask|ShiftMask, "\033[35;8u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ShiftMask, "\033[35;4u", 0, 0}, ++ { XK_parenleft, ControlMask, "\033[40;5u", 0, 0}, ++ { XK_parenleft, ControlMask|ShiftMask, "\033[40;6u", 0, 0}, ++ { XK_parenleft, Mod1Mask, "\033[40;3u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ControlMask, "\033[40;7u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ControlMask|ShiftMask, "\033[40;8u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ShiftMask, "\033[40;4u", 0, 0}, ++ { XK_parenright, ControlMask, "\033[41;5u", 0, 0}, ++ { XK_parenright, ControlMask|ShiftMask, "\033[41;6u", 0, 0}, ++ { XK_parenright, Mod1Mask, "\033[41;3u", 0, 0}, ++ { XK_parenright, Mod1Mask|ControlMask, "\033[41;7u", 0, 0}, ++ { XK_parenright, Mod1Mask|ControlMask|ShiftMask, "\033[41;8u", 0, 0}, ++ { XK_parenright, Mod1Mask|ShiftMask, "\033[41;4u", 0, 0}, ++ { XK_percent, ControlMask, "\033[37;5u", 0, 0}, ++ { XK_percent, ControlMask|ShiftMask, "\033[37;6u", 0, 0}, ++ { XK_percent, Mod1Mask, "\033[37;3u", 0, 0}, ++ { XK_percent, Mod1Mask|ControlMask, "\033[37;7u", 0, 0}, ++ { XK_percent, Mod1Mask|ControlMask|ShiftMask, "\033[37;8u", 0, 0}, ++ { XK_percent, Mod1Mask|ShiftMask, "\033[37;4u", 0, 0}, ++ { XK_period, ControlMask, "\033[46;5u", 0, 0}, ++ { XK_period, ControlMask|ShiftMask, "\033[46;6u", 0, 0}, ++ { XK_period, Mod1Mask|ControlMask, "\033[46;7u", 0, 0}, ++ { XK_period, Mod1Mask|ControlMask|ShiftMask, "\033[46;8u", 0, 0}, ++ { XK_period, Mod1Mask|ShiftMask, "\033[46;4u", 0, 0}, ++ { XK_plus, ControlMask, "\033[43;5u", 0, 0}, ++ { XK_plus, ControlMask|ShiftMask, "\033[43;6u", 0, 0}, ++ { XK_plus, Mod1Mask, "\033[43;3u", 0, 0}, ++ { XK_plus, Mod1Mask|ControlMask, "\033[43;7u", 0, 0}, ++ { XK_plus, Mod1Mask|ControlMask|ShiftMask, "\033[43;8u", 0, 0}, ++ { XK_plus, Mod1Mask|ShiftMask, "\033[43;4u", 0, 0}, ++ { XK_question, ControlMask, "\033[63;5u", 0, 0}, ++ { XK_question, ControlMask|ShiftMask, "\033[63;6u", 0, 0}, ++ { XK_question, Mod1Mask, "\033[63;3u", 0, 0}, ++ { XK_question, Mod1Mask|ControlMask, "\033[63;7u", 0, 0}, ++ { XK_question, Mod1Mask|ControlMask|ShiftMask, "\033[63;8u", 0, 0}, ++ { XK_question, Mod1Mask|ShiftMask, "\033[63;4u", 0, 0}, ++ { XK_quotedbl, ControlMask, "\033[34;5u", 0, 0}, ++ { XK_quotedbl, ControlMask|ShiftMask, "\033[34;6u", 0, 0}, ++ { XK_quotedbl, Mod1Mask, "\033[34;3u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ControlMask, "\033[34;7u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ControlMask|ShiftMask, "\033[34;8u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ShiftMask, "\033[34;4u", 0, 0}, ++ { XK_semicolon, ControlMask, "\033[59;5u", 0, 0}, ++ { XK_semicolon, ControlMask|ShiftMask, "\033[59;6u", 0, 0}, ++ { XK_semicolon, Mod1Mask, "\033[59;3u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ControlMask, "\033[59;7u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ControlMask|ShiftMask, "\033[59;8u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ShiftMask, "\033[59;4u", 0, 0}, ++ { XK_slash, ControlMask|ShiftMask, "\033[47;6u", 0, 0}, ++ { XK_slash, Mod1Mask, "\033[47;3u", 0, 0}, ++ { XK_slash, Mod1Mask|ControlMask, "\033[47;7u", 0, 0}, ++ { XK_slash, Mod1Mask|ControlMask|ShiftMask, "\033[47;8u", 0, 0}, ++ { XK_slash, Mod1Mask|ShiftMask, "\033[47;4u", 0, 0}, ++ { XK_underscore, ControlMask, "\033[95;5u", 0, 0}, ++ { XK_underscore, ControlMask|ShiftMask, "\033[95;6u", 0, 0}, ++ { XK_underscore, Mod1Mask, "\033[95;3u", 0, 0}, ++ { XK_underscore, Mod1Mask|ControlMask, "\033[95;7u", 0, 0}, ++ { XK_underscore, Mod1Mask|ControlMask|ShiftMask, "\033[95;8u", 0, 0}, ++ { XK_underscore, Mod1Mask|ShiftMask, "\033[95;4u", 0, 0}, + }; + + /* +-- +2.19.1 + diff --git a/patches/x11-terms/st-0.8.1/0003-apply-st-gruvbox-both-0.8.1.diff.patch b/patches/x11-terms/st-0.8.1/0003-apply-st-gruvbox-both-0.8.1.diff.patch @@ -0,0 +1,216 @@ +From e61affc3317385cdee0e749da20a2fbb22acb0f3 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 23 Oct 2018 02:39:08 +0200 +Subject: [PATCH 3/3] apply st-gruvbox-both-0.8.1.diff + +--- + config.def.h | 68 +++++++++++++++++++++++++++++++++------------------- + st.h | 1 + + x.c | 28 +++++++++++++++++----- + 3 files changed, 66 insertions(+), 31 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1ea6902..e1587ba 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -84,31 +84,48 @@ unsigned int tabspaces = 8; + + /* Terminal colors (16 first used in escape sequence) */ + static const char *colorname[] = { +- /* 8 normal colors */ +- "black", +- "red3", +- "green3", +- "yellow3", +- "blue2", +- "magenta3", +- "cyan3", +- "gray90", +- +- /* 8 bright colors */ +- "gray50", +- "red", +- "green", +- "yellow", +- "#5c5cff", +- "magenta", +- "cyan", +- "white", ++ /* gruvbox dark */ ++ "#282828", /* hard contrast: #1d2021 / soft contrast: #32302f / normal: #282828 */ ++ "#cc241d", ++ "#98971a", ++ "#d79921", ++ "#458588", ++ "#b16286", ++ "#689d6a", ++ "#a89984", ++ "#928374", ++ "#fb4934", ++ "#b8bb26", ++ "#fabd2f", ++ "#83a598", ++ "#d3869b", ++ "#8ec07c", ++ "#ebdbb2", + + [255] = 0, ++}; + +- /* more colors can be added after 255 to use with DefaultXX */ +- "#cccccc", +- "#555555", ++/* Terminal colors for alternate (light) palette */ ++static const char *altcolorname[] = { ++ /* gruvbox light */ ++ "#fbf1c7", /* hard contrast: #f9f5d7 / soft contrast: #f2e5bc / normal: #fbf1c7 */ ++ "#cc241d", ++ "#98971a", ++ "#d79921", ++ "#458588", ++ "#b16286", ++ "#689d6a", ++ "#7c6f64", ++ "#928374", ++ "#9d0006", ++ "#79740e", ++ "#b57614", ++ "#076678", ++ "#8f3f71", ++ "#427b58", ++ "#3c3836", ++ ++ [255] = 0, + }; + + +@@ -116,10 +133,10 @@ static const char *colorname[] = { + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +-unsigned int defaultfg = 7; ++unsigned int defaultfg = 15; + unsigned int defaultbg = 0; +-static unsigned int defaultcs = 256; +-static unsigned int defaultrcs = 257; ++static unsigned int defaultcs = 15; ++static unsigned int defaultrcs = 0; + + /* + * Default shape of cursor +@@ -178,6 +195,7 @@ static Shortcut shortcuts[] = { + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, + { TERMMOD, XK_I, iso14755, {.i = 0} }, ++ { XK_ANY_MOD, XK_F6, swapcolors, {.i = 0} }, + }; + + /* +diff --git a/st.h b/st.h +index dac64d8..7b0159d 100644 +--- a/st.h ++++ b/st.h +@@ -118,6 +118,7 @@ extern char *vtiden; + extern char *worddelimiters; + extern int allowaltscreen; + extern char *termname; ++extern int usealtcolors; + extern unsigned int tabspaces; + extern unsigned int defaultfg; + extern unsigned int defaultbg; +diff --git a/x.c b/x.c +index c343ba2..47ef3e9 100644 +--- a/x.c ++++ b/x.c +@@ -53,6 +53,7 @@ static void clipcopy(const Arg *); + static void clippaste(const Arg *); + static void numlock(const Arg *); + static void selpaste(const Arg *); ++static void swapcolors(const Arg *); + static void zoom(const Arg *); + static void zoomabs(const Arg *); + static void zoomreset(const Arg *); +@@ -240,6 +241,8 @@ static char *opt_title = NULL; + + static int oldbutton = 3; /* button event on startup: 3 = release */ + ++int usealtcolors = 0; /* 1 to use alternate palette */ ++ + void + clipcopy(const Arg *dummy) + { +@@ -278,6 +281,14 @@ numlock(const Arg *dummy) + win.mode ^= MODE_NUMLOCK; + } + ++void ++swapcolors(const Arg *dummy) ++{ ++ usealtcolors = !usealtcolors; ++ xloadcols(); ++ redraw(); ++} ++ + void + zoom(const Arg *arg) + { +@@ -700,6 +711,11 @@ sixd_to_16bit(int x) + return x == 0 ? 0 : 0x3737 + 0x2828 * x; + } + ++const char* getcolorname(int i) ++{ ++ return (usealtcolors) ? altcolorname[i] : colorname[i]; ++} ++ + int + xloadcolor(int i, const char *name, Color *ncolor) + { +@@ -718,7 +734,7 @@ xloadcolor(int i, const char *name, Color *ncolor) + return XftColorAllocValue(xw.dpy, xw.vis, + xw.cmap, &color, ncolor); + } else +- name = colorname[i]; ++ name = getcolorname(i); + } + + return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor); +@@ -731,7 +747,7 @@ xloadcols(void) + static int loaded; + Color *cp; + +- dc.collen = MAX(LEN(colorname), 256); ++ dc.collen = MAX(LEN(colorname), LEN(altcolorname)); + dc.col = xmalloc(dc.collen * sizeof(Color)); + + if (loaded) { +@@ -741,8 +757,8 @@ xloadcols(void) + + for (i = 0; i < dc.collen; i++) + if (!xloadcolor(i, NULL, &dc.col[i])) { +- if (colorname[i]) +- die("Could not allocate color '%s'\n", colorname[i]); ++ if (getcolorname(i)) ++ die("Could not allocate color '%s'\n", getcolorname(i)); + else + die("Could not allocate color %d\n", i); + } +@@ -1079,13 +1095,13 @@ xinit(int cols, int rows) + cursor = XCreateFontCursor(xw.dpy, mouseshape); + XDefineCursor(xw.dpy, xw.win, cursor); + +- if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) { ++ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousefg), &xmousefg) == 0) { + xmousefg.red = 0xffff; + xmousefg.green = 0xffff; + xmousefg.blue = 0xffff; + } + +- if (XParseColor(xw.dpy, xw.cmap, colorname[mousebg], &xmousebg) == 0) { ++ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousebg), &xmousebg) == 0) { + xmousebg.red = 0x0000; + xmousebg.green = 0x0000; + xmousebg.blue = 0x0000; +-- +2.19.1 + diff --git a/patches/x11-terms/st-0.8.2/0001-better-Input-Method-Editor-IME-support.patch b/patches/x11-terms/st-0.8.2/0001-better-Input-Method-Editor-IME-support.patch @@ -0,0 +1,152 @@ +From e85b6b64660214121164ea97fb098eaa4935f7db Mon Sep 17 00:00:00 2001 +From: Ivan Tham <pickfire@riseup.net> +Date: Tue, 12 Feb 2019 18:41:41 +0100 +Subject: [PATCH 1/5] better Input Method Editor (IME) support + +Features: + +- Allow input methods swap with hotkey (E.g. left ctrl + left shift). +- Over-the-spot pre-editing style, pre-edit data placed over insertion point. +- Restart IME without segmentation fault. + +TODO: + +- Automatically pickup IME if st started before IME +--- + st.c | 1 + + win.h | 1 + + x.c | 69 ++++++++++++++++++++++++++++++++++++++++++++--------------- + 3 files changed, 54 insertions(+), 17 deletions(-) + +diff --git a/st.c b/st.c +index b8e6077..cf8687e 100644 +--- a/st.c ++++ b/st.c +@@ -2594,6 +2594,7 @@ draw(void) + term.ocx, term.ocy, term.line[term.ocy][term.ocx]); + term.ocx = cx, term.ocy = term.c.y; + xfinishdraw(); ++ xximspot(term.ocx, term.ocy); + } + + void +diff --git a/win.h b/win.h +index 31f327d..a6ef1b9 100644 +--- a/win.h ++++ b/win.h +@@ -36,3 +36,4 @@ void xsetmode(int, unsigned int); + void xsetpointermotion(int); + void xsetsel(char *); + int xstartdraw(void); ++void xximspot(int, int); +diff --git a/x.c b/x.c +index 0422421..865dacc 100644 +--- a/x.c ++++ b/x.c +@@ -139,6 +139,9 @@ static void xdrawglyphfontspecs(const XftGlyphFontSpec *, Glyph, int, int, int); + static void xdrawglyph(Glyph, int, int); + static void xclear(int, int, int, int); + static int xgeommasktogravity(int); ++static void ximopen(Display *); ++static void ximinstantiate(Display *, XPointer, XPointer); ++static void ximdestroy(XIM, XPointer, XPointer); + static void xinit(int, int); + static void cresize(int, int); + static void xresize(int, int); +@@ -996,6 +999,43 @@ xunloadfonts(void) + xunloadfont(&dc.ibfont); + } + ++void ++ximopen(Display *dpy) ++{ ++ XIMCallback destroy = { .client_data = NULL, .callback = ximdestroy }; ++ ++ if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { ++ XSetLocaleModifiers("@im=local"); ++ if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { ++ XSetLocaleModifiers("@im="); ++ if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) ++ die("XOpenIM failed. Could not open input device.\n"); ++ } ++ } ++ if (XSetIMValues(xw.xim, XNDestroyCallback, &destroy, NULL) != NULL) ++ die("XSetIMValues failed. Could not set input method value.\n"); ++ xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, ++ XNClientWindow, xw.win, XNFocusWindow, xw.win, NULL); ++ if (xw.xic == NULL) ++ die("XCreateIC failed. Could not obtain input method.\n"); ++} ++ ++void ++ximinstantiate(Display *dpy, XPointer client, XPointer call) ++{ ++ ximopen(dpy); ++ XUnregisterIMInstantiateCallback(xw.dpy, NULL, NULL, NULL, ++ ximinstantiate, NULL); ++} ++ ++void ++ximdestroy(XIM xim, XPointer client, XPointer call) ++{ ++ xw.xim = NULL; ++ XRegisterIMInstantiateCallback(xw.dpy, NULL, NULL, NULL, ++ ximinstantiate, NULL); ++} ++ + void + xinit(int cols, int rows) + { +@@ -1033,7 +1073,7 @@ xinit(int cols, int rows) + xw.attrs.background_pixel = dc.col[defaultbg].pixel; + xw.attrs.border_pixel = dc.col[defaultbg].pixel; + xw.attrs.bit_gravity = NorthWestGravity; +- xw.attrs.event_mask = FocusChangeMask | KeyPressMask ++ xw.attrs.event_mask = FocusChangeMask | KeyPressMask | KeyReleaseMask + | ExposureMask | VisibilityChangeMask | StructureNotifyMask + | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; + xw.attrs.colormap = xw.cmap; +@@ -1061,22 +1101,7 @@ xinit(int cols, int rows) + xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); + + /* input methods */ +- if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { +- XSetLocaleModifiers("@im=local"); +- if ((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { +- XSetLocaleModifiers("@im="); +- if ((xw.xim = XOpenIM(xw.dpy, +- NULL, NULL, NULL)) == NULL) { +- die("XOpenIM failed. Could not open input" +- " device.\n"); +- } +- } +- } +- xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing +- | XIMStatusNothing, XNClientWindow, xw.win, +- XNFocusWindow, xw.win, NULL); +- if (xw.xic == NULL) +- die("XCreateIC failed. Could not obtain input method.\n"); ++ ximopen(xw.dpy); + + /* white cursor, black outline */ + cursor = XCreateFontCursor(xw.dpy, mouseshape); +@@ -1554,6 +1579,16 @@ xfinishdraw(void) + defaultfg : defaultbg].pixel); + } + ++void ++xximspot(int x, int y) ++{ ++ XPoint spot = { borderpx + x * win.cw, borderpx + (y + 1) * win.ch }; ++ XVaNestedList attr = XVaCreateNestedList(0, XNSpotLocation, &spot, NULL); ++ ++ XSetICValues(xw.xic, XNPreeditAttributes, attr, NULL); ++ XFree(attr); ++} ++ + void + expose(XEvent *ev) + { +-- +2.21.0 + diff --git a/patches/x11-terms/st-0.8.2/0002-fix-use-after-free-in-font-caching-algorithm.patch b/patches/x11-terms/st-0.8.2/0002-fix-use-after-free-in-font-caching-algorithm.patch @@ -0,0 +1,62 @@ +From a8cb8e94547d7e31441d2444e8a196415e3e4c1f Mon Sep 17 00:00:00 2001 +From: magras <dr.magras@gmail.com> +Date: Thu, 28 Feb 2019 04:56:01 +0300 +Subject: [PATCH 2/5] fix use after free in font caching algorithm + +Current font caching algorithm contains a use after free error. A font +removed from `frc` might be still listed in `wx.specbuf`. It will lead +to a crash inside `XftDrawGlyphFontSpec()`. + +Steps to reproduce: +$ st -f 'Misc Tamsyn:scalable=false' +$ curl https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt + +Of course, result depends on fonts installed on a system and fontconfig. +In my case, I'm getting consistent segfaults with different fonts. + +I replaced a fixed array with a simple unbounded buffer with a constant +growth rate. Cache starts with a capacity of 0, gets increments by 16, +and never shrinks. On my machine after `cat UTF-8-demo.txt` buffer +reaches a capacity of 192. During casual use capacity stays at 0. +--- + x.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/x.c b/x.c +index 865dacc..2cd76d0 100644 +--- a/x.c ++++ b/x.c +@@ -226,8 +226,9 @@ typedef struct { + } Fontcache; + + /* Fontcache is an array now. A new font will be appended to the array. */ +-static Fontcache frc[16]; ++static Fontcache *frc = NULL; + static int frclen = 0; ++static int frccap = 0; + static char *usedfont = NULL; + static double usedfontsize = 0; + static double defaultfontsize = 0; +@@ -1244,12 +1245,14 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x + fcpattern, &fcres); + + /* +- * Overwrite or create the new cache entry. ++ * Allocate memory for the new cache entry. + */ +- if (frclen >= LEN(frc)) { +- frclen = LEN(frc) - 1; +- XftFontClose(xw.dpy, frc[frclen].font); +- frc[frclen].unicodep = 0; ++ if (frclen >= frccap) { ++ frccap += 16; ++ if (!frc) ++ frc = xmalloc(frccap * sizeof(Fontcache)); ++ else ++ frc = xrealloc(frc, frccap * sizeof(Fontcache)); + } + + frc[frclen].font = XftFontOpenPattern(xw.dpy, +-- +2.21.0 + diff --git a/patches/x11-terms/st-0.8.2/0003-apply-01b-my-config.diff.patch b/patches/x11-terms/st-0.8.2/0003-apply-01b-my-config.diff.patch @@ -0,0 +1,34 @@ +From abeb13a8d0de88b7790d2f8343e83509eae404f8 Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Mon, 1 Oct 2018 01:08:20 +0200 +Subject: [PATCH 3/5] apply: 01b-my-config.diff + +--- + config.def.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 0e01717..5c6944c 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -5,7 +5,7 @@ + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +-static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; ++static char *font = "monospace-7"; + static int borderpx = 2; + + /* +@@ -32,7 +32,7 @@ static float chscale = 1.0; + * + * More advanced example: " `'\"()[]{}" + */ +-char *worddelimiters = " "; ++char *worddelimiters = "   │`'\"()[]{}“”<>‘’\~\;"; + + /* selection timeouts (in milliseconds) */ + static unsigned int doubleclicktimeout = 300; +-- +2.21.0 + diff --git a/patches/x11-terms/st-0.8.2/0004-Fix-keyboard-input-on-terminal.louli b/patches/x11-terms/st-0.8.2/0004-Fix-keyboard-input-on-terminal.louli @@ -0,0 +1,770 @@ +From 9b5498f1f279bf8c509939aa1bd460e5e325e41d Mon Sep 17 00:00:00 2001 +From: Jan Christoph Ebersbach <jceb@e-jc.de> +Date: Mon, 1 Oct 2018 01:38:52 +0200 +Subject: [PATCH 4/5] Fix keyboard input on terminal + +URL: http://st.suckless.org/patches/fix_keyboard_input +--- + config.def.h | 691 +++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 641 insertions(+), 50 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 5c6944c..78ebbc5 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -209,7 +209,80 @@ static Shortcut shortcuts[] = { + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +-static KeySym mappedkeys[] = { -1 }; ++static KeySym mappedkeys[] = { ++ XK_space, ++ XK_m, ++ XK_i, ++ XK_A, ++ XK_B, ++ XK_C, ++ XK_D, ++ XK_E, ++ XK_F, ++ XK_G, ++ XK_H, ++ XK_I, ++ XK_K, ++ XK_J, ++ XK_L, ++ XK_M, ++ XK_N, ++ XK_O, ++ XK_P, ++ XK_Q, ++ XK_R, ++ XK_S, ++ XK_T, ++ XK_U, ++ XK_V, ++ XK_W, ++ XK_X, ++ XK_Y, ++ XK_Z, ++ XK_Z, ++ XK_0, ++ XK_1, ++ XK_2, ++ XK_3, ++ XK_4, ++ XK_5, ++ XK_6, ++ XK_7, ++ XK_8, ++ XK_9, ++ XK_exclam, ++ XK_quotedbl, ++ XK_numbersign, ++ XK_dollar, ++ XK_percent, ++ XK_ampersand, ++ XK_apostrophe, ++ XK_parenleft, ++ XK_parenright, ++ XK_asterisk, ++ XK_plus, ++ XK_comma, ++ XK_minus, ++ XK_period, ++ XK_slash, ++ XK_colon, ++ XK_semicolon, ++ XK_less, ++ XK_equal, ++ XK_greater, ++ XK_question, ++ XK_at, ++ XK_bracketleft, ++ XK_backslash, ++ XK_bracketright, ++ XK_asciicircum, ++ XK_underscore, ++ XK_grave, ++ XK_braceleft, ++ XK_bar, ++ XK_braceright, ++ XK_asciitilde, ++}; + + /* + * State bits to ignore when matching key or button events. By default, +@@ -232,59 +305,20 @@ static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, +- { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, +- { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, +- { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, +- { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, +- { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, +- { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, +- { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, +- { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, +- { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, +- { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, +- { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, +- { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, +- { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, +- { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, +- { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, +- { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, +- { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, +- { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, +- { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, +- { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, +- { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, +- { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, +- { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, +- { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, +- { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, +- { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, +- { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, +- { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, +- { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, +- { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, +- { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, +- { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, +- { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, +- { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, +- { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, +- { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, +- { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, +- { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, +- { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, +@@ -323,36 +357,27 @@ static Key key[] = { + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, +- { XK_Return, XK_ANY_MOD, "\r", 0, 0}, ++ { XK_Return, XK_NO_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, +- { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, +- { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, +- { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, +- { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, +- { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, +- { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, +- { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, +- { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, +- { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, +@@ -439,6 +464,572 @@ static Key key[] = { + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, ++ ++ // libtermkey compatible keyboard input ++ { XK_KP_Home, XK_NO_MOD, "\033[H", 0, -1}, ++ { XK_KP_Home, XK_NO_MOD, "\033[1~", 0, +1}, ++ { XK_KP_Home, ControlMask, "\033[149;5u", 0, 0}, ++ { XK_KP_Home, ControlMask|ShiftMask, "\033[149;6u", 0, 0}, ++ { XK_KP_Home, Mod1Mask, "\033[149;3u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ControlMask, "\033[149;7u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ControlMask|ShiftMask, "\033[149;8u", 0, 0}, ++ { XK_KP_Home, Mod1Mask|ShiftMask, "\033[149;4u", 0, 0}, ++ { XK_KP_Home, ShiftMask, "\033[149;2u", 0, 0}, ++ { XK_KP_Up, XK_NO_MOD, "\033Ox", +1, 0}, ++ { XK_KP_Up, XK_NO_MOD, "\033[A", 0, -1}, ++ { XK_KP_Up, XK_NO_MOD, "\033OA", 0, +1}, ++ { XK_KP_Up, ControlMask, "\033[151;5u", 0, 0}, ++ { XK_KP_Up, ControlMask|ShiftMask, "\033[151;6u", 0, 0}, ++ { XK_KP_Up, Mod1Mask, "\033[151;3u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ControlMask, "\033[151;7u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ControlMask|ShiftMask, "\033[151;8u", 0, 0}, ++ { XK_KP_Up, Mod1Mask|ShiftMask, "\033[151;4u", 0, 0}, ++ { XK_KP_Up, ShiftMask, "\033[151;2u", 0, 0}, ++ { XK_KP_Down, XK_NO_MOD, "\033Or", +1, 0}, ++ { XK_KP_Down, XK_NO_MOD, "\033[B", 0, -1}, ++ { XK_KP_Down, XK_NO_MOD, "\033OB", 0, +1}, ++ { XK_KP_Down, ControlMask, "\033[153;5u", 0, 0}, ++ { XK_KP_Down, ControlMask|ShiftMask, "\033[153;6u", 0, 0}, ++ { XK_KP_Down, Mod1Mask, "\033[153;3u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ControlMask, "\033[153;7u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ControlMask|ShiftMask, "\033[153;8u", 0, 0}, ++ { XK_KP_Down, Mod1Mask|ShiftMask, "\033[153;4u", 0, 0}, ++ { XK_KP_Down, ShiftMask, "\033[153;2u", 0, 0}, ++ { XK_KP_Left, XK_NO_MOD, "\033Ot", +1, 0}, ++ { XK_KP_Left, XK_NO_MOD, "\033[D", 0, -1}, ++ { XK_KP_Left, XK_NO_MOD, "\033OD", 0, +1}, ++ { XK_KP_Left, ControlMask, "\033[150;5u", 0, 0}, ++ { XK_KP_Left, ControlMask|ShiftMask, "\033[150;6u", 0, 0}, ++ { XK_KP_Left, Mod1Mask, "\033[150;3u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ControlMask, "\033[150;7u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ControlMask|ShiftMask, "\033[150;8u", 0, 0}, ++ { XK_KP_Left, Mod1Mask|ShiftMask, "\033[150;4u", 0, 0}, ++ { XK_KP_Left, ShiftMask, "\033[150;2u", 0, 0}, ++ { XK_KP_Right, XK_NO_MOD, "\033Ov", +1, 0}, ++ { XK_KP_Right, XK_NO_MOD, "\033[C", 0, -1}, ++ { XK_KP_Right, XK_NO_MOD, "\033OC", 0, +1}, ++ { XK_KP_Right, ControlMask, "\033[152;5u", 0, 0}, ++ { XK_KP_Right, ControlMask|ShiftMask, "\033[152;6u", 0, 0}, ++ { XK_KP_Right, Mod1Mask, "\033[152;3u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ControlMask, "\033[152;7u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ControlMask|ShiftMask, "\033[152;8u", 0, 0}, ++ { XK_KP_Right, Mod1Mask|ShiftMask, "\033[152;4u", 0, 0}, ++ { XK_KP_Right, ShiftMask, "\033[152;2u", 0, 0}, ++ { XK_KP_Prior, XK_NO_MOD, "\033[5~", 0, 0}, ++ { XK_KP_Prior, ControlMask, "\033[154;5u", 0, 0}, ++ { XK_KP_Prior, ControlMask|ShiftMask, "\033[154;6u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask, "\033[154;3u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ControlMask, "\033[154;7u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ControlMask|ShiftMask, "\033[154;8u", 0, 0}, ++ { XK_KP_Prior, Mod1Mask|ShiftMask, "\033[154;4u", 0, 0}, ++ { XK_KP_Begin, XK_NO_MOD, "\033[E", 0, 0}, ++ { XK_KP_Begin, ControlMask, "\033[157;5u", 0, 0}, ++ { XK_KP_Begin, ControlMask|ShiftMask, "\033[157;6u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask, "\033[157;3u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ControlMask, "\033[157;7u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ControlMask|ShiftMask, "\033[157;8u", 0, 0}, ++ { XK_KP_Begin, Mod1Mask|ShiftMask, "\033[157;4u", 0, 0}, ++ { XK_KP_Begin, ShiftMask, "\033[157;2u", 0, 0}, ++ { XK_KP_End, XK_NO_MOD, "\033[4~", 0, 0}, ++ { XK_KP_End, ControlMask|ShiftMask, "\033[156;6u", 0, 0}, ++ { XK_KP_End, Mod1Mask, "\033[156;3u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ControlMask, "\033[156;7u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ControlMask|ShiftMask, "\033[156;8u", 0, 0}, ++ { XK_KP_End, Mod1Mask|ShiftMask, "\033[156;4u", 0, 0}, ++ { XK_KP_Next, XK_NO_MOD, "\033[6~", 0, 0}, ++ { XK_KP_Next, ControlMask, "\033[155;5u", 0, 0}, ++ { XK_KP_Next, ControlMask|ShiftMask, "\033[155;6u", 0, 0}, ++ { XK_KP_Next, Mod1Mask, "\033[155;3u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ControlMask, "\033[155;7u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ControlMask|ShiftMask, "\033[155;8u", 0, 0}, ++ { XK_KP_Next, Mod1Mask|ShiftMask, "\033[155;4u", 0, 0}, ++ { XK_KP_Insert, XK_NO_MOD, "\033[4h", -1, 0}, ++ { XK_KP_Insert, XK_NO_MOD, "\033[2~", +1, 0}, ++ { XK_KP_Insert, ControlMask|ShiftMask, "\033[158;6u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask, "\033[158;3u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ControlMask, "\033[158;7u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ControlMask|ShiftMask, "\033[158;8u", 0, 0}, ++ { XK_KP_Insert, Mod1Mask|ShiftMask, "\033[158;4u", 0, 0}, ++ { XK_KP_Delete, XK_NO_MOD, "\033[P", -1, 0}, ++ { XK_KP_Delete, XK_NO_MOD, "\033[3~", +1, 0}, ++ { XK_KP_Delete, ControlMask|ShiftMask, "\033[159;6u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask, "\033[159;3u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ControlMask, "\033[159;7u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ControlMask|ShiftMask, "\033[159;8u", 0, 0}, ++ { XK_KP_Delete, Mod1Mask|ShiftMask, "\033[159;4u", 0, 0}, ++ { XK_KP_Multiply, XK_NO_MOD, "\033Oj", +2, 0}, ++ { XK_KP_Multiply, ControlMask, "\033[170;5u", 0, 0}, ++ { XK_KP_Multiply, ControlMask|ShiftMask, "\033[170;6u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask, "\033[170;3u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ControlMask, "\033[170;7u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ControlMask|ShiftMask, "\033[170;8u", 0, 0}, ++ { XK_KP_Multiply, Mod1Mask|ShiftMask, "\033[170;4u", 0, 0}, ++ { XK_KP_Multiply, ShiftMask, "\033[170;2u", 0, 0}, ++ { XK_KP_Add, XK_NO_MOD, "\033Ok", +2, 0}, ++ { XK_KP_Add, ControlMask, "\033[171;5u", 0, 0}, ++ { XK_KP_Add, ControlMask|ShiftMask, "\033[171;6u", 0, 0}, ++ { XK_KP_Add, Mod1Mask, "\033[171;3u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ControlMask, "\033[171;7u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ControlMask|ShiftMask, "\033[171;8u", 0, 0}, ++ { XK_KP_Add, Mod1Mask|ShiftMask, "\033[171;4u", 0, 0}, ++ { XK_KP_Add, ShiftMask, "\033[171;2u", 0, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\033OM", +2, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\r", -1, 0}, ++ { XK_KP_Enter, XK_NO_MOD, "\r\n", -1, 0}, ++ { XK_KP_Enter, ControlMask, "\033[141;5u", 0, 0}, ++ { XK_KP_Enter, ControlMask|ShiftMask, "\033[141;6u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask, "\033[141;3u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ControlMask, "\033[141;7u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ControlMask|ShiftMask, "\033[141;8u", 0, 0}, ++ { XK_KP_Enter, Mod1Mask|ShiftMask, "\033[141;4u", 0, 0}, ++ { XK_KP_Enter, ShiftMask, "\033[141;2u", 0, 0}, ++ { XK_KP_Subtract, XK_NO_MOD, "\033Om", +2, 0}, ++ { XK_KP_Subtract, ControlMask, "\033[173;5u", 0, 0}, ++ { XK_KP_Subtract, ControlMask|ShiftMask, "\033[173;6u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask, "\033[173;3u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ControlMask, "\033[173;7u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ControlMask|ShiftMask, "\033[173;8u", 0, 0}, ++ { XK_KP_Subtract, Mod1Mask|ShiftMask, "\033[173;4u", 0, 0}, ++ { XK_KP_Subtract, ShiftMask, "\033[173;2u", 0, 0}, ++ { XK_KP_Decimal, XK_NO_MOD, "\033On", +2, 0}, ++ { XK_KP_Decimal, ControlMask, "\033[174;5u", 0, 0}, ++ { XK_KP_Decimal, ControlMask|ShiftMask, "\033[174;6u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask, "\033[174;3u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ControlMask, "\033[174;7u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ControlMask|ShiftMask, "\033[174;8u", 0, 0}, ++ { XK_KP_Decimal, Mod1Mask|ShiftMask, "\033[174;4u", 0, 0}, ++ { XK_KP_Decimal, ShiftMask, "\033[174;2u", 0, 0}, ++ { XK_KP_Divide, XK_NO_MOD, "\033Oo", +2, 0}, ++ { XK_KP_Divide, ControlMask, "\033[175;5u", 0, 0}, ++ { XK_KP_Divide, ControlMask|ShiftMask, "\033[175;6u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask, "\033[175;3u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ControlMask, "\033[175;7u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ControlMask|ShiftMask, "\033[175;8u", 0, 0}, ++ { XK_KP_Divide, Mod1Mask|ShiftMask, "\033[175;4u", 0, 0}, ++ { XK_KP_Divide, ShiftMask, "\033[175;2u", 0, 0}, ++ { XK_KP_0, XK_NO_MOD, "\033Op", +2, 0}, ++ { XK_KP_0, ControlMask, "\033[176;5u", 0, 0}, ++ { XK_KP_0, ControlMask|ShiftMask, "\033[176;6u", 0, 0}, ++ { XK_KP_0, Mod1Mask, "\033[176;3u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask, "\033[176;7u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask|ShiftMask, "\033[176;8u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ShiftMask, "\033[176;4u", 0, 0}, ++ { XK_KP_0, ShiftMask, "\033[176;2u", 0, 0}, ++ { XK_KP_1, XK_NO_MOD, "\033Oq", +2, 0}, ++ { XK_KP_0, ControlMask, "\033[177;5u", 0, 0}, ++ { XK_KP_0, ControlMask|ShiftMask, "\033[177;6u", 0, 0}, ++ { XK_KP_0, Mod1Mask, "\033[177;3u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask, "\033[177;7u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ControlMask|ShiftMask, "\033[177;8u", 0, 0}, ++ { XK_KP_0, Mod1Mask|ShiftMask, "\033[177;4u", 0, 0}, ++ { XK_KP_0, ShiftMask, "\033[177;2u", 0, 0}, ++ { XK_KP_2, XK_NO_MOD, "\033Or", +2, 0}, ++ { XK_KP_2, ControlMask, "\033[178;5u", 0, 0}, ++ { XK_KP_2, ControlMask|ShiftMask, "\033[178;6u", 0, 0}, ++ { XK_KP_2, Mod1Mask, "\033[178;3u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ControlMask, "\033[178;7u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ControlMask|ShiftMask, "\033[178;8u", 0, 0}, ++ { XK_KP_2, Mod1Mask|ShiftMask, "\033[178;4u", 0, 0}, ++ { XK_KP_2, ShiftMask, "\033[178;2u", 0, 0}, ++ { XK_KP_3, XK_NO_MOD, "\033Os", +2, 0}, ++ { XK_KP_3, ControlMask, "\033[179;5u", 0, 0}, ++ { XK_KP_3, ControlMask|ShiftMask, "\033[179;6u", 0, 0}, ++ { XK_KP_3, Mod1Mask, "\033[179;3u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ControlMask, "\033[179;7u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ControlMask|ShiftMask, "\033[179;8u", 0, 0}, ++ { XK_KP_3, Mod1Mask|ShiftMask, "\033[179;4u", 0, 0}, ++ { XK_KP_3, ShiftMask, "\033[179;2u", 0, 0}, ++ { XK_KP_4, XK_NO_MOD, "\033Ot", +2, 0}, ++ { XK_KP_4, ControlMask, "\033[180;5u", 0, 0}, ++ { XK_KP_4, ControlMask|ShiftMask, "\033[180;6u", 0, 0}, ++ { XK_KP_4, Mod1Mask, "\033[180;3u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ControlMask, "\033[180;7u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ControlMask|ShiftMask, "\033[180;8u", 0, 0}, ++ { XK_KP_4, Mod1Mask|ShiftMask, "\033[180;4u", 0, 0}, ++ { XK_KP_4, ShiftMask, "\033[180;2u", 0, 0}, ++ { XK_KP_5, XK_NO_MOD, "\033Ou", +2, 0}, ++ { XK_KP_5, ControlMask, "\033[181;5u", 0, 0}, ++ { XK_KP_5, ControlMask|ShiftMask, "\033[181;6u", 0, 0}, ++ { XK_KP_5, Mod1Mask, "\033[181;3u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ControlMask, "\033[181;7u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ControlMask|ShiftMask, "\033[181;8u", 0, 0}, ++ { XK_KP_5, Mod1Mask|ShiftMask, "\033[181;4u", 0, 0}, ++ { XK_KP_5, ShiftMask, "\033[181;2u", 0, 0}, ++ { XK_KP_6, XK_NO_MOD, "\033Ov", +2, 0}, ++ { XK_KP_6, ControlMask, "\033[182;5u", 0, 0}, ++ { XK_KP_6, ControlMask|ShiftMask, "\033[182;6u", 0, 0}, ++ { XK_KP_6, Mod1Mask, "\033[182;3u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ControlMask, "\033[182;7u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ControlMask|ShiftMask, "\033[182;8u", 0, 0}, ++ { XK_KP_6, Mod1Mask|ShiftMask, "\033[182;4u", 0, 0}, ++ { XK_KP_6, ShiftMask, "\033[182;2u", 0, 0}, ++ { XK_KP_7, XK_NO_MOD, "\033Ow", +2, 0}, ++ { XK_KP_7, ControlMask, "\033[183;5u", 0, 0}, ++ { XK_KP_7, ControlMask|ShiftMask, "\033[183;6u", 0, 0}, ++ { XK_KP_7, Mod1Mask, "\033[183;3u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ControlMask, "\033[183;7u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ControlMask|ShiftMask, "\033[183;8u", 0, 0}, ++ { XK_KP_7, Mod1Mask|ShiftMask, "\033[183;4u", 0, 0}, ++ { XK_KP_7, ShiftMask, "\033[183;2u", 0, 0}, ++ { XK_KP_8, XK_NO_MOD, "\033Ox", +2, 0}, ++ { XK_KP_8, ControlMask, "\033[184;5u", 0, 0}, ++ { XK_KP_8, ControlMask|ShiftMask, "\033[184;6u", 0, 0}, ++ { XK_KP_8, Mod1Mask, "\033[184;3u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ControlMask, "\033[184;7u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ControlMask|ShiftMask, "\033[184;8u", 0, 0}, ++ { XK_KP_8, Mod1Mask|ShiftMask, "\033[184;4u", 0, 0}, ++ { XK_KP_8, ShiftMask, "\033[184;2u", 0, 0}, ++ { XK_KP_9, XK_NO_MOD, "\033Oy", +2, 0}, ++ { XK_KP_9, ControlMask, "\033[185;5u", 0, 0}, ++ { XK_KP_9, ControlMask|ShiftMask, "\033[185;6u", 0, 0}, ++ { XK_KP_9, Mod1Mask, "\033[185;3u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ControlMask, "\033[185;7u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ControlMask|ShiftMask, "\033[185;8u", 0, 0}, ++ { XK_KP_9, Mod1Mask|ShiftMask, "\033[185;4u", 0, 0}, ++ { XK_KP_9, ShiftMask, "\033[185;2u", 0, 0}, ++ { XK_BackSpace, ControlMask, "\033[127;5u", 0, 0}, ++ { XK_BackSpace, ControlMask|ShiftMask, "\033[127;6u", 0, 0}, ++ { XK_BackSpace, Mod1Mask, "\033[127;3u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ControlMask, "\033[127;7u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ControlMask|ShiftMask, "\033[127;8u", 0, 0}, ++ { XK_BackSpace, Mod1Mask|ShiftMask, "\033[127;4u", 0, 0}, ++ { XK_BackSpace, ShiftMask, "\033[127;2u", 0, 0}, ++ { XK_Tab, ControlMask, "\033[9;5u", 0, 0}, ++ { XK_Tab, ControlMask|ShiftMask, "\033[1;5Z", 0, 0}, ++ { XK_Tab, Mod1Mask, "\033[1;3Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ControlMask, "\033[1;7Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ControlMask|ShiftMask, "\033[1;8Z", 0, 0}, ++ { XK_Tab, Mod1Mask|ShiftMask, "\033[1;4Z", 0, 0}, ++ { XK_Return, ControlMask, "\033[13;5u", 0, 0}, ++ { XK_Return, ControlMask|ShiftMask, "\033[13;6u", 0, 0}, ++ { XK_Return, Mod1Mask, "\033[13;3u", 0, 0}, ++ { XK_Return, Mod1Mask|ControlMask, "\033[13;7u", 0, 0}, ++ { XK_Return, Mod1Mask|ControlMask|ShiftMask, "\033[13;8u", 0, 0}, ++ { XK_Return, Mod1Mask|ShiftMask, "\033[13;4u", 0, 0}, ++ { XK_Return, ShiftMask, "\033[13;2u", 0, 0}, ++ { XK_Pause, ControlMask, "\033[18;5u", 0, 0}, ++ { XK_Pause, ControlMask|ShiftMask, "\033[18;6u", 0, 0}, ++ { XK_Pause, Mod1Mask, "\033[18;3u", 0, 0}, ++ { XK_Pause, Mod1Mask|ControlMask, "\033[18;7u", 0, 0}, ++ { XK_Pause, Mod1Mask|ControlMask|ShiftMask, "\033[18;8u", 0, 0}, ++ { XK_Pause, Mod1Mask|ShiftMask, "\033[18;4u", 0, 0}, ++ { XK_Pause, ShiftMask, "\033[18;2u", 0, 0}, ++ { XK_Scroll_Lock, ControlMask, "\033[20;5u", 0, 0}, ++ { XK_Scroll_Lock, ControlMask|ShiftMask, "\033[20;6u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask, "\033[20;3u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ControlMask, "\033[20;7u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ControlMask|ShiftMask, "\033[20;8u", 0, 0}, ++ { XK_Scroll_Lock, Mod1Mask|ShiftMask, "\033[20;4u", 0, 0}, ++ { XK_Scroll_Lock, ShiftMask, "\033[20;2u", 0, 0}, ++ { XK_Escape, ControlMask, "\033[27;5u", 0, 0}, ++ { XK_Escape, ControlMask|ShiftMask, "\033[27;6u", 0, 0}, ++ { XK_Escape, Mod1Mask, "\033[27;3u", 0, 0}, ++ { XK_Escape, Mod1Mask|ControlMask, "\033[27;7u", 0, 0}, ++ { XK_Escape, Mod1Mask|ControlMask|ShiftMask, "\033[27;8u", 0, 0}, ++ { XK_Escape, Mod1Mask|ShiftMask, "\033[27;4u", 0, 0}, ++ { XK_Escape, ShiftMask, "\033[27;2u", 0, 0}, ++ { XK_Home, XK_NO_MOD, "\033[H", 0, -1}, ++ { XK_Home, XK_NO_MOD, "\033[1~", 0, +1}, ++ { XK_Home, ControlMask|ShiftMask, "\033[80;6u", 0, 0}, ++ { XK_Home, Mod1Mask, "\033[80;3u", 0, 0}, ++ { XK_Home, Mod1Mask|ControlMask, "\033[80;7u", 0, 0}, ++ { XK_Home, Mod1Mask|ControlMask|ShiftMask, "\033[80;8u", 0, 0}, ++ { XK_Home, Mod1Mask|ShiftMask, "\033[80;4u", 0, 0}, ++ { XK_End, XK_NO_MOD, "\033[4~", 0, 0}, ++ { XK_End, ControlMask|ShiftMask, "\033[87;6u", 0, 0}, ++ { XK_End, Mod1Mask, "\033[87;3u", 0, 0}, ++ { XK_End, Mod1Mask|ControlMask, "\033[87;7u", 0, 0}, ++ { XK_End, Mod1Mask|ControlMask|ShiftMask, "\033[87;8u", 0, 0}, ++ { XK_End, Mod1Mask|ShiftMask, "\033[87;4u", 0, 0}, ++ { XK_Prior, XK_NO_MOD, "\033[5~", 0, 0}, ++ { XK_Prior, ControlMask|ShiftMask, "\033[85;6u", 0, 0}, ++ { XK_Prior, Mod1Mask, "\033[85;3u", 0, 0}, ++ { XK_Prior, Mod1Mask|ControlMask, "\033[85;7u", 0, 0}, ++ { XK_Prior, Mod1Mask|ControlMask|ShiftMask, "\033[85;8u", 0, 0}, ++ { XK_Prior, Mod1Mask|ShiftMask, "\033[85;4u", 0, 0}, ++ { XK_Next, XK_NO_MOD, "\033[6~", 0, 0}, ++ { XK_Next, ControlMask|ShiftMask, "\033[86;6u", 0, 0}, ++ { XK_Next, Mod1Mask, "\033[86;3u", 0, 0}, ++ { XK_Next, Mod1Mask|ControlMask, "\033[86;7u", 0, 0}, ++ { XK_Next, Mod1Mask|ControlMask|ShiftMask, "\033[86;8u", 0, 0}, ++ { XK_Next, Mod1Mask|ShiftMask, "\033[86;4u", 0, 0}, ++ { XK_Print, ControlMask, "\033[97;5u", 0, 0}, ++ { XK_Print, ControlMask|ShiftMask, "\033[97;6u", 0, 0}, ++ { XK_Print, Mod1Mask, "\033[97;3u", 0, 0}, ++ { XK_Print, Mod1Mask|ControlMask, "\033[97;7u", 0, 0}, ++ { XK_Print, Mod1Mask|ControlMask|ShiftMask, "\033[97;8u", 0, 0}, ++ { XK_Print, Mod1Mask|ShiftMask, "\033[97;4u", 0, 0}, ++ { XK_Print, ShiftMask, "\033[97;2u", 0, 0}, ++ { XK_Insert, XK_NO_MOD, "\033[4h", -1, 0}, ++ { XK_Insert, XK_NO_MOD, "\033[2~", +1, 0}, ++ { XK_Insert, ControlMask|ShiftMask, "\033[99;6u", 0, 0}, ++ { XK_Insert, Mod1Mask, "\033[99;3u", 0, 0}, ++ { XK_Insert, Mod1Mask|ControlMask, "\033[99;7u", 0, 0}, ++ { XK_Insert, Mod1Mask|ControlMask|ShiftMask, "\033[99;8u", 0, 0}, ++ { XK_Insert, Mod1Mask|ShiftMask, "\033[99;4u", 0, 0}, ++ { XK_Menu, ControlMask, "\033[103;5u", 0, 0}, ++ { XK_Menu, ControlMask|ShiftMask, "\033[103;6u", 0, 0}, ++ { XK_Menu, Mod1Mask, "\033[103;3u", 0, 0}, ++ { XK_Menu, Mod1Mask|ControlMask, "\033[103;7u", 0, 0}, ++ { XK_Menu, Mod1Mask|ControlMask|ShiftMask, "\033[103;8u", 0, 0}, ++ { XK_Menu, Mod1Mask|ShiftMask, "\033[103;4u", 0, 0}, ++ { XK_Menu, ShiftMask, "\033[103;2u", 0, 0}, ++ { XK_Delete, XK_NO_MOD, "\033[P", -1, 0}, ++ { XK_Delete, XK_NO_MOD, "\033[3~", +1, 0}, ++ { XK_Delete, ControlMask|ShiftMask, "\033[255;6u", 0, 0}, ++ { XK_Delete, Mod1Mask, "\033[255;3u", 0, 0}, ++ { XK_Delete, Mod1Mask|ControlMask, "\033[255;7u", 0, 0}, ++ { XK_Delete, Mod1Mask|ControlMask|ShiftMask, "\033[255;8u", 0, 0}, ++ { XK_Delete, Mod1Mask|ShiftMask, "\033[255;4u", 0, 0}, ++ { XK_i, ControlMask, "\033[105;5u", 0, 0}, ++ { XK_i, Mod1Mask|ControlMask, "\033[105;7u", 0, 0}, ++ { XK_m, ControlMask, "\033[109;5u", 0, 0}, ++ { XK_m, Mod1Mask|ControlMask, "\033[109;7u", 0, 0}, ++ { XK_space, ControlMask|ShiftMask, "\033[32;6u", 0, 0}, ++ { XK_space, Mod1Mask, "\033[32;3u", 0, 0}, ++ { XK_space, Mod1Mask|ControlMask, "\033[32;7u", 0, 0}, ++ { XK_space, Mod1Mask|ControlMask|ShiftMask, "\033[32;8u", 0, 0}, ++ { XK_space, Mod1Mask|ShiftMask, "\033[32;4u", 0, 0}, ++ { XK_space, ShiftMask, "\033[32;2u", 0, 0}, ++ { XK_0, ControlMask, "\033[48;5u", 0, 0}, ++ { XK_A, ControlMask|ShiftMask, "\033[65;6u", 0, 0}, ++ { XK_B, ControlMask|ShiftMask, "\033[66;6u", 0, 0}, ++ { XK_C, ControlMask|ShiftMask, "\033[67;6u", 0, 0}, ++ { XK_D, ControlMask|ShiftMask, "\033[68;6u", 0, 0}, ++ { XK_E, ControlMask|ShiftMask, "\033[69;6u", 0, 0}, ++ { XK_F, ControlMask|ShiftMask, "\033[70;6u", 0, 0}, ++ { XK_G, ControlMask|ShiftMask, "\033[71;6u", 0, 0}, ++ { XK_H, ControlMask|ShiftMask, "\033[72;6u", 0, 0}, ++ { XK_I, ControlMask|ShiftMask, "\033[73;6u", 0, 0}, ++ { XK_I, Mod1Mask|ControlMask|ShiftMask, "\033[73;8u", 0, 0}, ++ { XK_J, ControlMask|ShiftMask, "\033[75;6u", 0, 0}, ++ { XK_K, ControlMask|ShiftMask, "\033[74;6u", 0, 0}, ++ { XK_L, ControlMask|ShiftMask, "\033[76;6u", 0, 0}, ++ { XK_M, ControlMask|ShiftMask, "\033[77;6u", 0, 0}, ++ { XK_M, Mod1Mask|ControlMask|ShiftMask, "\033[77;8u", 0, 0}, ++ { XK_N, ControlMask|ShiftMask, "\033[78;6u", 0, 0}, ++ { XK_O, ControlMask|ShiftMask, "\033[79;6u", 0, 0}, ++ { XK_P, ControlMask|ShiftMask, "\033[80;6u", 0, 0}, ++ { XK_Q, ControlMask|ShiftMask, "\033[81;6u", 0, 0}, ++ { XK_R, ControlMask|ShiftMask, "\033[82;6u", 0, 0}, ++ { XK_S, ControlMask|ShiftMask, "\033[83;6u", 0, 0}, ++ { XK_T, ControlMask|ShiftMask, "\033[84;6u", 0, 0}, ++ { XK_U, ControlMask|ShiftMask, "\033[85;6u", 0, 0}, ++ { XK_V, ControlMask|ShiftMask, "\033[86;6u", 0, 0}, ++ { XK_W, ControlMask|ShiftMask, "\033[87;6u", 0, 0}, ++ { XK_X, ControlMask|ShiftMask, "\033[88;6u", 0, 0}, ++ { XK_Y, ControlMask|ShiftMask, "\033[89;6u", 0, 0}, ++ { XK_Z, ControlMask|ShiftMask, "\033[90;6u", 0, 0}, ++ { XK_Z, ControlMask|ShiftMask, "\033[90;6u", 0, 0}, ++ { XK_0, Mod1Mask|ControlMask, "\033[48;7u", 0, 0}, ++ { XK_1, ControlMask, "\033[49;5u", 0, 0}, ++ { XK_1, Mod1Mask|ControlMask, "\033[49;7u", 0, 0}, ++ { XK_2, ControlMask, "\033[50;5u", 0, 0}, ++ { XK_2, Mod1Mask|ControlMask, "\033[50;7u", 0, 0}, ++ { XK_3, ControlMask, "\033[51;5u", 0, 0}, ++ { XK_3, Mod1Mask|ControlMask, "\033[51;7u", 0, 0}, ++ { XK_4, ControlMask, "\033[52;5u", 0, 0}, ++ { XK_4, Mod1Mask|ControlMask, "\033[52;7u", 0, 0}, ++ { XK_5, ControlMask, "\033[53;5u", 0, 0}, ++ { XK_5, Mod1Mask|ControlMask, "\033[53;7u", 0, 0}, ++ { XK_6, ControlMask, "\033[54;5u", 0, 0}, ++ { XK_6, Mod1Mask|ControlMask, "\033[54;7u", 0, 0}, ++ { XK_7, ControlMask, "\033[55;5u", 0, 0}, ++ { XK_7, Mod1Mask|ControlMask, "\033[55;7u", 0, 0}, ++ { XK_8, ControlMask, "\033[56;5u", 0, 0}, ++ { XK_8, Mod1Mask|ControlMask, "\033[56;7u", 0, 0}, ++ { XK_9, ControlMask, "\033[57;5u", 0, 0}, ++ { XK_9, Mod1Mask|ControlMask, "\033[57;7u", 0, 0}, ++ { XK_ampersand, ControlMask, "\033[38;5u", 0, 0}, ++ { XK_ampersand, ControlMask|ShiftMask, "\033[38;6u", 0, 0}, ++ { XK_ampersand, Mod1Mask, "\033[38;3u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ControlMask, "\033[38;7u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ControlMask|ShiftMask, "\033[38;8u", 0, 0}, ++ { XK_ampersand, Mod1Mask|ShiftMask, "\033[38;4u", 0, 0}, ++ { XK_apostrophe, ControlMask, "\033[39;5u", 0, 0}, ++ { XK_apostrophe, ControlMask|ShiftMask, "\033[39;6u", 0, 0}, ++ { XK_apostrophe, Mod1Mask, "\033[39;3u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ControlMask, "\033[39;7u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ControlMask|ShiftMask, "\033[39;8u", 0, 0}, ++ { XK_apostrophe, Mod1Mask|ShiftMask, "\033[39;4u", 0, 0}, ++ { XK_asciicircum, ControlMask, "\033[94;5u", 0, 0}, ++ { XK_asciicircum, ControlMask|ShiftMask, "\033[94;6u", 0, 0}, ++ { XK_asciicircum, Mod1Mask, "\033[94;3u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ControlMask, "\033[94;7u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ControlMask|ShiftMask, "\033[94;8u", 0, 0}, ++ { XK_asciicircum, Mod1Mask|ShiftMask, "\033[94;4u", 0, 0}, ++ { XK_asciitilde, ControlMask, "\033[126;5u", 0, 0}, ++ { XK_asciitilde, ControlMask|ShiftMask, "\033[126;6u", 0, 0}, ++ { XK_asciitilde, Mod1Mask, "\033[126;3u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ControlMask, "\033[126;7u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ControlMask|ShiftMask, "\033[126;8u", 0, 0}, ++ { XK_asciitilde, Mod1Mask|ShiftMask, "\033[126;4u", 0, 0}, ++ { XK_asterisk, ControlMask, "\033[42;5u", 0, 0}, ++ { XK_asterisk, ControlMask|ShiftMask, "\033[42;6u", 0, 0}, ++ { XK_asterisk, Mod1Mask, "\033[42;3u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ControlMask, "\033[42;7u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ControlMask|ShiftMask, "\033[42;8u", 0, 0}, ++ { XK_asterisk, Mod1Mask|ShiftMask, "\033[42;4u", 0, 0}, ++ { XK_at, ControlMask, "\033[64;5u", 0, 0}, ++ { XK_at, ControlMask|ShiftMask, "\033[64;6u", 0, 0}, ++ { XK_at, Mod1Mask, "\033[64;3u", 0, 0}, ++ { XK_at, Mod1Mask|ControlMask, "\033[64;7u", 0, 0}, ++ { XK_at, Mod1Mask|ControlMask|ShiftMask, "\033[64;8u", 0, 0}, ++ { XK_at, Mod1Mask|ShiftMask, "\033[64;4u", 0, 0}, ++ { XK_backslash, ControlMask, "\033[92;5u", 0, 0}, ++ { XK_backslash, ControlMask|ShiftMask, "\033[92;6u", 0, 0}, ++ { XK_backslash, Mod1Mask, "\033[92;3u", 0, 0}, ++ { XK_backslash, Mod1Mask|ControlMask, "\033[92;7u", 0, 0}, ++ { XK_backslash, Mod1Mask|ControlMask|ShiftMask, "\033[92;8u", 0, 0}, ++ { XK_backslash, Mod1Mask|ShiftMask, "\033[92;4u", 0, 0}, ++ { XK_bar, ControlMask, "\033[124;5u", 0, 0}, ++ { XK_bar, ControlMask|ShiftMask, "\033[124;6u", 0, 0}, ++ { XK_bar, Mod1Mask, "\033[124;3u", 0, 0}, ++ { XK_bar, Mod1Mask|ControlMask, "\033[124;7u", 0, 0}, ++ { XK_bar, Mod1Mask|ControlMask|ShiftMask, "\033[124;8u", 0, 0}, ++ { XK_bar, Mod1Mask|ShiftMask, "\033[124;4u", 0, 0}, ++ { XK_braceleft, ControlMask, "\033[123;5u", 0, 0}, ++ { XK_braceleft, ControlMask|ShiftMask, "\033[123;6u", 0, 0}, ++ { XK_braceleft, Mod1Mask, "\033[123;3u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ControlMask, "\033[123;7u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ControlMask|ShiftMask, "\033[123;8u", 0, 0}, ++ { XK_braceleft, Mod1Mask|ShiftMask, "\033[123;4u", 0, 0}, ++ { XK_braceright, ControlMask, "\033[125;5u", 0, 0}, ++ { XK_braceright, ControlMask|ShiftMask, "\033[125;6u", 0, 0}, ++ { XK_braceright, Mod1Mask, "\033[125;3u", 0, 0}, ++ { XK_braceright, Mod1Mask|ControlMask, "\033[125;7u", 0, 0}, ++ { XK_braceright, Mod1Mask|ControlMask|ShiftMask, "\033[125;8u", 0, 0}, ++ { XK_braceright, Mod1Mask|ShiftMask, "\033[125;4u", 0, 0}, ++ { XK_bracketleft, ControlMask, "\033[91;5u", 0, 0}, ++ { XK_bracketleft, ControlMask|ShiftMask, "\033[91;6u", 0, 0}, ++ { XK_bracketleft, Mod1Mask, "\033[91;3u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ControlMask, "\033[91;7u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ControlMask|ShiftMask, "\033[91;8u", 0, 0}, ++ { XK_bracketleft, Mod1Mask|ShiftMask, "\033[91;4u", 0, 0}, ++ { XK_bracketright, ControlMask, "\033[93;5u", 0, 0}, ++ { XK_bracketright, ControlMask|ShiftMask, "\033[93;6u", 0, 0}, ++ { XK_bracketright, Mod1Mask, "\033[93;3u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ControlMask, "\033[93;7u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ControlMask|ShiftMask, "\033[93;8u", 0, 0}, ++ { XK_bracketright, Mod1Mask|ShiftMask, "\033[93;4u", 0, 0}, ++ { XK_colon, ControlMask, "\033[58;5u", 0, 0}, ++ { XK_colon, ControlMask|ShiftMask, "\033[58;6u", 0, 0}, ++ { XK_colon, Mod1Mask, "\033[58;3u", 0, 0}, ++ { XK_colon, Mod1Mask|ControlMask, "\033[58;7u", 0, 0}, ++ { XK_colon, Mod1Mask|ControlMask|ShiftMask, "\033[58;8u", 0, 0}, ++ { XK_colon, Mod1Mask|ShiftMask, "\033[58;4u", 0, 0}, ++ { XK_comma, ControlMask, "\033[44;5u", 0, 0}, ++ { XK_comma, ControlMask|ShiftMask, "\033[44;6u", 0, 0}, ++ { XK_comma, Mod1Mask, "\033[44;3u", 0, 0}, ++ { XK_comma, Mod1Mask|ControlMask, "\033[44;7u", 0, 0}, ++ { XK_comma, Mod1Mask|ControlMask|ShiftMask, "\033[44;8u", 0, 0}, ++ { XK_comma, Mod1Mask|ShiftMask, "\033[44;4u", 0, 0}, ++ { XK_dollar, ControlMask, "\033[36;5u", 0, 0}, ++ { XK_dollar, ControlMask|ShiftMask, "\033[36;6u", 0, 0}, ++ { XK_dollar, Mod1Mask, "\033[36;3u", 0, 0}, ++ { XK_dollar, Mod1Mask|ControlMask, "\033[36;7u", 0, 0}, ++ { XK_dollar, Mod1Mask|ControlMask|ShiftMask, "\033[36;8u", 0, 0}, ++ { XK_dollar, Mod1Mask|ShiftMask, "\033[36;4u", 0, 0}, ++ { XK_equal, ControlMask, "\033[61;5u", 0, 0}, ++ { XK_equal, ControlMask|ShiftMask, "\033[61;6u", 0, 0}, ++ { XK_equal, Mod1Mask, "\033[61;3u", 0, 0}, ++ { XK_equal, Mod1Mask|ControlMask, "\033[61;7u", 0, 0}, ++ { XK_equal, Mod1Mask|ControlMask|ShiftMask, "\033[61;8u", 0, 0}, ++ { XK_equal, Mod1Mask|ShiftMask, "\033[61;4u", 0, 0}, ++ { XK_exclam, ControlMask, "\033[33;5u", 0, 0}, ++ { XK_exclam, ControlMask|ShiftMask, "\033[33;6u", 0, 0}, ++ { XK_exclam, Mod1Mask, "\033[33;3u", 0, 0}, ++ { XK_exclam, Mod1Mask|ControlMask, "\033[33;7u", 0, 0}, ++ { XK_exclam, Mod1Mask|ControlMask|ShiftMask, "\033[33;8u", 0, 0}, ++ { XK_exclam, Mod1Mask|ShiftMask, "\033[33;4u", 0, 0}, ++ { XK_grave, ControlMask, "\033[96;5u", 0, 0}, ++ { XK_grave, ControlMask|ShiftMask, "\033[96;6u", 0, 0}, ++ { XK_grave, Mod1Mask, "\033[96;3u", 0, 0}, ++ { XK_grave, Mod1Mask|ControlMask, "\033[96;7u", 0, 0}, ++ { XK_grave, Mod1Mask|ControlMask|ShiftMask, "\033[96;8u", 0, 0}, ++ { XK_grave, Mod1Mask|ShiftMask, "\033[96;4u", 0, 0}, ++ { XK_greater, ControlMask, "\033[62;5u", 0, 0}, ++ { XK_greater, ControlMask|ShiftMask, "\033[62;6u", 0, 0}, ++ { XK_greater, Mod1Mask, "\033[62;3u", 0, 0}, ++ { XK_greater, Mod1Mask|ControlMask, "\033[62;7u", 0, 0}, ++ { XK_greater, Mod1Mask|ControlMask|ShiftMask, "\033[62;8u", 0, 0}, ++ { XK_greater, Mod1Mask|ShiftMask, "\033[62;4u", 0, 0}, ++ { XK_less, ControlMask, "\033[60;5u", 0, 0}, ++ { XK_less, ControlMask|ShiftMask, "\033[60;6u", 0, 0}, ++ { XK_less, Mod1Mask, "\033[60;3u", 0, 0}, ++ { XK_less, Mod1Mask|ControlMask, "\033[60;7u", 0, 0}, ++ { XK_less, Mod1Mask|ControlMask|ShiftMask, "\033[60;8u", 0, 0}, ++ { XK_less, Mod1Mask|ShiftMask, "\033[60;4u", 0, 0}, ++ { XK_minus, ControlMask, "\033[45;5u", 0, 0}, ++ { XK_minus, ControlMask|ShiftMask, "\033[45;6u", 0, 0}, ++ { XK_minus, Mod1Mask, "\033[45;3u", 0, 0}, ++ { XK_minus, Mod1Mask|ControlMask, "\033[45;7u", 0, 0}, ++ { XK_minus, Mod1Mask|ControlMask|ShiftMask, "\033[45;8u", 0, 0}, ++ { XK_minus, Mod1Mask|ShiftMask, "\033[45;4u", 0, 0}, ++ { XK_numbersign, ControlMask, "\033[35;5u", 0, 0}, ++ { XK_numbersign, ControlMask|ShiftMask, "\033[35;6u", 0, 0}, ++ { XK_numbersign, Mod1Mask, "\033[35;3u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ControlMask, "\033[35;7u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ControlMask|ShiftMask, "\033[35;8u", 0, 0}, ++ { XK_numbersign, Mod1Mask|ShiftMask, "\033[35;4u", 0, 0}, ++ { XK_parenleft, ControlMask, "\033[40;5u", 0, 0}, ++ { XK_parenleft, ControlMask|ShiftMask, "\033[40;6u", 0, 0}, ++ { XK_parenleft, Mod1Mask, "\033[40;3u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ControlMask, "\033[40;7u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ControlMask|ShiftMask, "\033[40;8u", 0, 0}, ++ { XK_parenleft, Mod1Mask|ShiftMask, "\033[40;4u", 0, 0}, ++ { XK_parenright, ControlMask, "\033[41;5u", 0, 0}, ++ { XK_parenright, ControlMask|ShiftMask, "\033[41;6u", 0, 0}, ++ { XK_parenright, Mod1Mask, "\033[41;3u", 0, 0}, ++ { XK_parenright, Mod1Mask|ControlMask, "\033[41;7u", 0, 0}, ++ { XK_parenright, Mod1Mask|ControlMask|ShiftMask, "\033[41;8u", 0, 0}, ++ { XK_parenright, Mod1Mask|ShiftMask, "\033[41;4u", 0, 0}, ++ { XK_percent, ControlMask, "\033[37;5u", 0, 0}, ++ { XK_percent, ControlMask|ShiftMask, "\033[37;6u", 0, 0}, ++ { XK_percent, Mod1Mask, "\033[37;3u", 0, 0}, ++ { XK_percent, Mod1Mask|ControlMask, "\033[37;7u", 0, 0}, ++ { XK_percent, Mod1Mask|ControlMask|ShiftMask, "\033[37;8u", 0, 0}, ++ { XK_percent, Mod1Mask|ShiftMask, "\033[37;4u", 0, 0}, ++ { XK_period, ControlMask, "\033[46;5u", 0, 0}, ++ { XK_period, ControlMask|ShiftMask, "\033[46;6u", 0, 0}, ++ { XK_period, Mod1Mask|ControlMask, "\033[46;7u", 0, 0}, ++ { XK_period, Mod1Mask|ControlMask|ShiftMask, "\033[46;8u", 0, 0}, ++ { XK_period, Mod1Mask|ShiftMask, "\033[46;4u", 0, 0}, ++ { XK_plus, ControlMask, "\033[43;5u", 0, 0}, ++ { XK_plus, ControlMask|ShiftMask, "\033[43;6u", 0, 0}, ++ { XK_plus, Mod1Mask, "\033[43;3u", 0, 0}, ++ { XK_plus, Mod1Mask|ControlMask, "\033[43;7u", 0, 0}, ++ { XK_plus, Mod1Mask|ControlMask|ShiftMask, "\033[43;8u", 0, 0}, ++ { XK_plus, Mod1Mask|ShiftMask, "\033[43;4u", 0, 0}, ++ { XK_question, ControlMask, "\033[63;5u", 0, 0}, ++ { XK_question, ControlMask|ShiftMask, "\033[63;6u", 0, 0}, ++ { XK_question, Mod1Mask, "\033[63;3u", 0, 0}, ++ { XK_question, Mod1Mask|ControlMask, "\033[63;7u", 0, 0}, ++ { XK_question, Mod1Mask|ControlMask|ShiftMask, "\033[63;8u", 0, 0}, ++ { XK_question, Mod1Mask|ShiftMask, "\033[63;4u", 0, 0}, ++ { XK_quotedbl, ControlMask, "\033[34;5u", 0, 0}, ++ { XK_quotedbl, ControlMask|ShiftMask, "\033[34;6u", 0, 0}, ++ { XK_quotedbl, Mod1Mask, "\033[34;3u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ControlMask, "\033[34;7u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ControlMask|ShiftMask, "\033[34;8u", 0, 0}, ++ { XK_quotedbl, Mod1Mask|ShiftMask, "\033[34;4u", 0, 0}, ++ { XK_semicolon, ControlMask, "\033[59;5u", 0, 0}, ++ { XK_semicolon, ControlMask|ShiftMask, "\033[59;6u", 0, 0}, ++ { XK_semicolon, Mod1Mask, "\033[59;3u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ControlMask, "\033[59;7u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ControlMask|ShiftMask, "\033[59;8u", 0, 0}, ++ { XK_semicolon, Mod1Mask|ShiftMask, "\033[59;4u", 0, 0}, ++ { XK_slash, ControlMask|ShiftMask, "\033[47;6u", 0, 0}, ++ { XK_slash, Mod1Mask, "\033[47;3u", 0, 0}, ++ { XK_slash, Mod1Mask|ControlMask, "\033[47;7u", 0, 0}, ++ { XK_slash, Mod1Mask|ControlMask|ShiftMask, "\033[47;8u", 0, 0}, ++ { XK_slash, Mod1Mask|ShiftMask, "\033[47;4u", 0, 0}, ++ { XK_underscore, ControlMask, "\033[95;5u", 0, 0}, ++ { XK_underscore, ControlMask|ShiftMask, "\033[95;6u", 0, 0}, ++ { XK_underscore, Mod1Mask, "\033[95;3u", 0, 0}, ++ { XK_underscore, Mod1Mask|ControlMask, "\033[95;7u", 0, 0}, ++ { XK_underscore, Mod1Mask|ControlMask|ShiftMask, "\033[95;8u", 0, 0}, ++ { XK_underscore, Mod1Mask|ShiftMask, "\033[95;4u", 0, 0}, + }; + + /* +-- +2.21.0 + diff --git a/patches/x11-terms/st-0.8.2/0005-apply-st-gruvbox-both-0.8.1.diff.patch b/patches/x11-terms/st-0.8.2/0005-apply-st-gruvbox-both-0.8.1.diff.patch @@ -0,0 +1,214 @@ +From a5f5407bbcaa7d232af0e43bcacaac39d9b871ea Mon Sep 17 00:00:00 2001 +From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> +Date: Tue, 23 Oct 2018 02:39:08 +0200 +Subject: [PATCH 5/5] apply st-gruvbox-both-0.8.1.diff + +--- + config.def.h | 68 +++++++++++++++++++++++++++++++++------------------- + st.h | 1 + + x.c | 28 +++++++++++++++++----- + 3 files changed, 66 insertions(+), 31 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 78ebbc5..5f9a078 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -84,31 +84,48 @@ unsigned int tabspaces = 8; + + /* Terminal colors (16 first used in escape sequence) */ + static const char *colorname[] = { +- /* 8 normal colors */ +- "black", +- "red3", +- "green3", +- "yellow3", +- "blue2", +- "magenta3", +- "cyan3", +- "gray90", +- +- /* 8 bright colors */ +- "gray50", +- "red", +- "green", +- "yellow", +- "#5c5cff", +- "magenta", +- "cyan", +- "white", ++ /* gruvbox dark */ ++ "#282828", /* hard contrast: #1d2021 / soft contrast: #32302f / normal: #282828 */ ++ "#cc241d", ++ "#98971a", ++ "#d79921", ++ "#458588", ++ "#b16286", ++ "#689d6a", ++ "#a89984", ++ "#928374", ++ "#fb4934", ++ "#b8bb26", ++ "#fabd2f", ++ "#83a598", ++ "#d3869b", ++ "#8ec07c", ++ "#ebdbb2", + + [255] = 0, ++}; + +- /* more colors can be added after 255 to use with DefaultXX */ +- "#cccccc", +- "#555555", ++/* Terminal colors for alternate (light) palette */ ++static const char *altcolorname[] = { ++ /* gruvbox light */ ++ "#fbf1c7", /* hard contrast: #f9f5d7 / soft contrast: #f2e5bc / normal: #fbf1c7 */ ++ "#cc241d", ++ "#98971a", ++ "#d79921", ++ "#458588", ++ "#b16286", ++ "#689d6a", ++ "#7c6f64", ++ "#928374", ++ "#9d0006", ++ "#79740e", ++ "#b57614", ++ "#076678", ++ "#8f3f71", ++ "#427b58", ++ "#3c3836", ++ ++ [255] = 0, + }; + + +@@ -116,10 +133,10 @@ static const char *colorname[] = { + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +-unsigned int defaultfg = 7; ++unsigned int defaultfg = 15; + unsigned int defaultbg = 0; +-static unsigned int defaultcs = 256; +-static unsigned int defaultrcs = 257; ++static unsigned int defaultcs = 15; ++static unsigned int defaultrcs = 0; + + /* + * Default shape of cursor +@@ -178,6 +195,7 @@ static Shortcut shortcuts[] = { + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, ++ { TERMMOD, XK_F6, swapcolors, {.i = 0} }, + }; + + /* +diff --git a/st.h b/st.h +index 38c61c4..941b5f8 100644 +--- a/st.h ++++ b/st.h +@@ -117,6 +117,7 @@ extern char *vtiden; + extern char *worddelimiters; + extern int allowaltscreen; + extern char *termname; ++extern int usealtcolors; + extern unsigned int tabspaces; + extern unsigned int defaultfg; + extern unsigned int defaultbg; +diff --git a/x.c b/x.c +index 2cd76d0..5a54960 100644 +--- a/x.c ++++ b/x.c +@@ -53,6 +53,7 @@ static void clipcopy(const Arg *); + static void clippaste(const Arg *); + static void numlock(const Arg *); + static void selpaste(const Arg *); ++static void swapcolors(const Arg *); + static void zoom(const Arg *); + static void zoomabs(const Arg *); + static void zoomreset(const Arg *); +@@ -244,6 +245,8 @@ static char *opt_title = NULL; + + static int oldbutton = 3; /* button event on startup: 3 = release */ + ++int usealtcolors = 0; /* 1 to use alternate palette */ ++ + void + clipcopy(const Arg *dummy) + { +@@ -282,6 +285,14 @@ numlock(const Arg *dummy) + win.mode ^= MODE_NUMLOCK; + } + ++void ++swapcolors(const Arg *dummy) ++{ ++ usealtcolors = !usealtcolors; ++ xloadcols(); ++ redraw(); ++} ++ + void + zoom(const Arg *arg) + { +@@ -706,6 +717,11 @@ sixd_to_16bit(int x) + return x == 0 ? 0 : 0x3737 + 0x2828 * x; + } + ++const char* getcolorname(int i) ++{ ++ return (usealtcolors) ? altcolorname[i] : colorname[i]; ++} ++ + int + xloadcolor(int i, const char *name, Color *ncolor) + { +@@ -724,7 +740,7 @@ xloadcolor(int i, const char *name, Color *ncolor) + return XftColorAllocValue(xw.dpy, xw.vis, + xw.cmap, &color, ncolor); + } else +- name = colorname[i]; ++ name = getcolorname(i); + } + + return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor); +@@ -741,14 +757,14 @@ xloadcols(void) + for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp) + XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); + } else { +- dc.collen = MAX(LEN(colorname), 256); ++ dc.collen = MAX(LEN(colorname), LEN(altcolorname)); + dc.col = xmalloc(dc.collen * sizeof(Color)); + } + + for (i = 0; i < dc.collen; i++) + if (!xloadcolor(i, NULL, &dc.col[i])) { +- if (colorname[i]) +- die("could not allocate color '%s'\n", colorname[i]); ++ if (getcolorname(i)) ++ die("could not allocate color '%s'\n", getcolorname(i)); + else + die("could not allocate color %d\n", i); + } +@@ -1108,13 +1124,13 @@ xinit(int cols, int rows) + cursor = XCreateFontCursor(xw.dpy, mouseshape); + XDefineCursor(xw.dpy, xw.win, cursor); + +- if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) { ++ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousefg), &xmousefg) == 0) { + xmousefg.red = 0xffff; + xmousefg.green = 0xffff; + xmousefg.blue = 0xffff; + } + +- if (XParseColor(xw.dpy, xw.cmap, colorname[mousebg], &xmousebg) == 0) { ++ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousebg), &xmousebg) == 0) { + xmousebg.red = 0x0000; + xmousebg.green = 0x0000; + xmousebg.blue = 0x0000; +-- +2.21.0 + diff --git a/postsync.d/100-sync_system_flags b/postsync.d/100-sync_system_flags @@ -0,0 +1,8 @@ +#!/bin/bash +system_use_flags() { + echo -n 'USE="$USE' + sed -r 's;^.*/.*:(system-.*) - .+$; \1;' /var/db/repos/*/profiles/use.local.desc | grep '^ system-' | sort -u | tr -d '\n' + echo '"' +} + +system_use_flags > /etc/portage/system-use-flags.txt diff --git a/postsync.d/9998-eix b/postsync.d/9998-eix @@ -0,0 +1,8 @@ +#!/bin/sh +if [[ -e /var/cache/eix/portage.eix ]]; then + cp -a /var/cache/eix/portage.eix /var/cache/eix/previous.eix; +fi +eix-update +if [[ -e /var/cache/eix/previous.eix ]]; then + eix-diff; +fi diff --git a/postsync.d/9999-eix-remote b/postsync.d/9999-eix-remote @@ -0,0 +1,2 @@ +#!/bin/sh +eix-remote update diff --git a/repo.postsync.d/000-sync_gentoo_cache b/repo.postsync.d/000-sync_gentoo_cache @@ -0,0 +1,34 @@ +#!/bin/bash + +repository_name="${1}" +repository_path="${3}" + +[[ "${repository_name}" == "gentoo" ]] || exit 0 + +source /lib/gentoo/functions.sh + +# Number of jobs for egencache, default is number or processors. +parallel_jobs="$(nproc)" + +if [[ -f ${repository_path}/metadata/timestamp.x ]]; then + portage_current_timestamp=$(cut -f 1 -d " " "${repository_path}/metadata/timestamp.x" ) +else + portage_current_timestamp=0 +fi + +ebegin "Fetching metadata timestamp for ${repository_name}" +rsync -aq rsync://rsync.gentoo.org/gentoo-portage/metadata/timestamp.x "${repository_path}"/metadata/timestamp.x +eend $? +portage_new_timestamp=$(cut -f 1 -d " " "${repository_path}/metadata/timestamp.x" ) + +if [[ ${portage_current_timestamp} -lt ${portage_new_timestamp} ]]; then + ebegin "Fetching pre-generated metadata cache for ${repository_name}" + rsync -aq rsync://rsync.gentoo.org/gentoo-portage/metadata/md5-cache/ "${repository_path}"/metadata/md5-cache/ + eend $? +else + einfo "Metadata cache for ${repository_name} already recent, no need to fetch it :-)" +fi + +ebegin "Updating metadata cache for ${repository_name}" +egencache --jobs="${parallel_jobs}" --repo="${repository_name}" --update --update-use-local-desc +eend $? diff --git a/repo.postsync.d/000-sync_gentoo_dtd b/repo.postsync.d/000-sync_gentoo_dtd @@ -0,0 +1,17 @@ +#!/bin/bash + +repository_name="${1}" +repository_path="${3}" + +[[ ${repository_name} == "gentoo" ]] || exit 0 + +source /lib/gentoo/functions.sh + +DTDDIR="${repository_path}"/metadata/dtd +ebegin "Updating DTDs" +if [[ -e ${DTDDIR} ]]; then + git -C "${DTDDIR}" pull -q --ff-only +else + git clone -q https://anongit.gentoo.org/git/data/dtd.git "${DTDDIR}" +fi +eend "$?" diff --git a/repo.postsync.d/000-sync_gentoo_glsa b/repo.postsync.d/000-sync_gentoo_glsa @@ -0,0 +1,17 @@ +#!/bin/bash + +repository_name="${1}" +repository_path="${3}" + +[[ ${repository_name} == "gentoo" ]] || exit 0 + +source /lib/gentoo/functions.sh + +GLSADIR="${repository_path}"/metadata/glsa +ebegin "Updating GLSAs" +if [[ -e ${GLSADIR} ]]; then + git -C "${GLSADIR}" pull -q --ff-only +else + git clone -q https://anongit.gentoo.org/git/data/glsa.git "${GLSADIR}" +fi +eend "$?" diff --git a/repo.postsync.d/000-sync_gentoo_news b/repo.postsync.d/000-sync_gentoo_news @@ -0,0 +1,17 @@ +#!/bin/bash + +repository_name="${1}" +repository_path="${3}" + +[[ ${repository_name} == "gentoo" ]] || exit 0 + +source /lib/gentoo/functions.sh + +NEWSDIR="${repository_path}"/metadata/news +ebegin "Updating news items" +if [[ -e ${NEWSDIR} ]]; then + git -C "${NEWSDIR}" pull -q --ff-only +else + git clone -q https://anongit.gentoo.org/git/data/gentoo-news.git "${NEWSDIR}" +fi +eend $? "Try to remove ${NEWSDIR}" diff --git a/repo.postsync.d/000-sync_gentoo_projects_xml b/repo.postsync.d/000-sync_gentoo_projects_xml @@ -0,0 +1,12 @@ +#!/bin/bash + +repository_name="${1}" +repository_path="${3}" + +[[ ${repository_name} == "gentoo" ]] || exit 0 + +source /lib/gentoo/functions.sh + +ebegin "Updating projects.xml" +wget -q -P "${repository_path}"/metadata/ -N https://api.gentoo.org/metastructure/projects.xml +eend $? diff --git a/repo.postsync.d/000-sync_overlay_cache b/repo.postsync.d/000-sync_overlay_cache @@ -0,0 +1,29 @@ +#!/bin/bash + +repository_name="${1}" +#sync_uri="${2}" +repository_path="${3}" + +[[ -z ${repository_name} ]] && exit 0 +[[ ${repository_name} == "gentoo" ]] && exit 0 + +source /lib/gentoo/functions.sh + +update_metadata() { + ebegin "Updating metadata cache for ${repository_name}" + egencache --jobs="${parallel_jobs}" --repo="${repository_name}" --update --update-use-local-desc --tolerant + eend $? +} + +# Number of jobs for egencache, default is number or processors. +parallel_jobs="$(nproc)" + +pushd "${repository_path}" >/dev/null +if git status -s metadata/md5-cache | grep -E '^(\?\?|!!)' >/dev/null; then + update_metadata +elif [ ! -e ./metadata/md5-cache ]; then + update_metadata +else + einfo "Metadata cache is into git, not updating it ourselves" +fi +popd >/dev/null diff --git a/repo.postsync.d/example b/repo.postsync.d/example @@ -0,0 +1,51 @@ +#!/bin/sh +# Example /etc/portage/repo.postsync.d script. Make it executable (chmod +x) for +# Portage to process it. +# +# With portage-2.2.16 and newer, all repo.postsync.d hooks will be called multiple +# times after syncing each repository. +# +# Older versions of Portage support syncing only one repository. +# In those versions, the postsync.d hooks will be called only once, +# and they will not be passed any parameters. + +# On a repo.postsync.d hook call, positional parameters contain +# information about the just-synced repository. + +# Your hook can control it's actions depending on any of the three +# parameters passed in to it. +# +# They are as follows: +# +# The repository name. +repository_name=${1} +# The URI to which the repository was synced. +sync_uri=${2} +# The path to the repository. +repository_path=${3} + +# Portage assumes that a hook succeeded if it exits with 0 code. If no +# explicit exit is done, the exit code is the exit code of last spawned +# command. Since our script is a bit more complex, we want to control +# the exit code explicitly. +ret=0 + +if [ -n "${repository_name}" ]; then + # Repository name was provided, so we're in a post-repository hook. + echo "* In post-repository hook for ${repository_name}" + echo "** synced from remote repository ${sync_uri}" + echo "** synced into ${repository_path}" + + # Gentoo comes with pregenerated cache but the other repositories + # usually don't. Generate them to improve performance. + if [ "${repository_name}" != "gentoo" ]; then + if ! egencache --update --repo="${repository_name}" --jobs=4 + then + echo "!!! egencache failed!" + ret=1 + fi + fi +fi + +# Return explicit status. +exit "${ret}" diff --git a/repos.conf/crossdev b/repos.conf/crossdev @@ -0,0 +1,5 @@ +[crossdev] +location = /usr/local/portage-crossdev +priority = 10 +masters = gentoo +auto-sync = no diff --git a/repos.conf/eselect-repo.conf~ b/repos.conf/eselect-repo.conf~ @@ -0,0 +1,136 @@ +[poly-c] +location = /var/db/repos/poly-c +sync-type = git +sync-uri = https://github.com/gentoo-mirror/poly-c.git +auto-sync = Yes + +[4nykey] +location = /var/db/repos/4nykey +sync-type = git +sync-uri = https://github.com/4nykey/4nykey.git +auto-sync = Yes + +[audio-overlay] +location = /var/db/repos/audio-overlay +sync-type = git +sync-uri = https://github.com/gentoo-audio/audio-overlay.git +auto-sync = Yes + +[booboo] +location = /var/db/repos/booboo +sync-type = git +sync-uri = https://github.com/l29ah/booboo.git +auto-sync = Yes + +[chaoslab] +location = /var/db/repos/chaoslab +sync-type = git +sync-uri = https://gitlab.com/chaoslab/chaoslab-overlay.git +auto-sync = Yes + +[go-overlay] +location = /var/db/repos/go-overlay +sync-type = git +sync-uri = https://github.com/Dr-Terrible/go-overlay.git +auto-sync = Yes + +[haskell] +priority = 50 +location = /var/db/repos/haskell +sync-type = git +sync-uri = https://github.com/gentoo-haskell/gentoo-haskell.git +auto-sync = Yes + +[java] +priority = 50 +location = /var/db/repos/java +sync-type = git +sync-uri = git://anongit.gentoo.org/proj/java.git +auto-sync = Yes + +[jorgicio] +location = /var/db/repos/jorgicio +sync-type = git +sync-uri = https://github.com/jorgicio/jorgicio-gentoo.git +auto-sync = Yes + +[lanodanOverlay] +priority = 200 +location = /var/db/repos/lanodanOverlay +sync-type = git +sync-uri = https://gitlab.com/lanodan/overlay.git +auto-sync = Yes + +[laurentb] +priority = -10 +location = /var/db/repos/laurentb +sync-type = git +sync-uri = git://github.com/laurentb/gentoo-overlay.git +auto-sync = Yes + +[libressl] +priority = 100 +location = /var/db/repos/libressl +sync-type = git +sync-uri = https://anongit.gentoo.org/git/repo/proj/libressl.git +auto-sync = Yes + +[pentoo] +location = /var/db/repos/pentoo +sync-type = git +sync-uri = git://github.com/pentoo/pentoo-overlay.git +auto-sync = Yes + +[dotnet] +location = /var/db/repos/dotnet +sync-type = git +sync-uri = https://github.com/gentoo/dotnet.git +auto-sync = Yes + +[ArtSoftware] +location = /var/db/repos/ArtSoftware +sync-type = git +sync-uri = http://git.art-software.fr/ArtSoftware/portageLocalRepo.git +auto-sync = Yes + +[guru] +priority = 50 +location = /var/db/repos/guru +sync-type = git +sync-uri = https://anongit.gentoo.org/git/repo/proj/guru.git +auto-sync = Yes + +[steam-overlay] +location = /var/db/repos/steam-overlay +sync-type = git +sync-uri = https://github.com/anyc/steam-overlay.git + +[lua] +location = /var/db/repos/lua +sync-type = git +sync-uri = https://github.com/gentoo-mirror/lua.git + +[gamarouns] +location = /var/db/repos/gamarouns +sync-type = git +sync-uri = https://github.com/gentoo-mirror/gamarouns.git + +[khoverlay] +location = /var/db/repos/khoverlay +sync-type = git +sync-uri = https://github.com/gentoo-mirror/khoverlay.git + +[flussence] +location = /var/db/repos/flussence +sync-type = git +sync-uri = https://repo.or.cz/flussence-overlay.git + +[vapoursynth] +location = /var/db/repos/vapoursynth +sync-type = git +sync-uri = https://github.com/gentoo-mirror/vapoursynth.git + +[tastytea] +location = /var/db/repos/tastytea +sync-type = git +sync-uri = https://github.com/gentoo-mirror/tastytea.git diff --git a/repos.conf/gentoo.conf b/repos.conf/gentoo.conf @@ -0,0 +1,13 @@ +[DEFAULT] +main-repo = gentoo +sync-depth = 1 +priority = 0 + +[gentoo] +sync-type = git +sync-uri = https://anongit.gentoo.org/git/repo/gentoo.git +sync-depth = 1 +auto-sync = yes +priority = 100 +#sync-git-pull-extra-opts = --rebase --autostash +location = /var/db/repos/gentoo diff --git a/savedconfig/gui-wm/inaban-9999 b/savedconfig/gui-wm/inaban-9999 @@ -0,0 +1,21 @@ +#ifndef CONFIG_H +#define CONFIG_H + +static const char *menucmd[] = {"bemenu-run", NULL}; +static const char *termcmd[] = {"cage", "-d", "st", NULL}; + +// See `enum wlr_keyboard_modifier` in `<wlr/types/wlr_keyboard.h>` +#define MODKEY WLR_MODIFIER_ALT +// clang-format off +static Shortcut shortcuts[] = { + /* modifier, keysym, function, argument */ + {MODKEY, XKB_KEY_p, spawn, {.v = menucmd}}, + {MODKEY | ShiftMask, XKB_KEY_Return, spawn, {.v = termcmd}}, + {MODKEY | ShiftMask, XKB_KEY_q, quit, {0}}, + { 0, XKB_KEY_XF86AudioPause, spawn, {.v = { "mpc", "toggle", NULL } } }, +// {MODKEY | ShiftMask, XKB_KEY_c, killclient, {0}}, +// {MODKEY, XKB_KEY_j, focusstack, {.i = +1}}, +// {MODKEY, XKB_KEY_k, focusstack, {.i = -1}}, +}; +// clang-format on +#endif /* CONFIG_H */ diff --git a/savedconfig/sys-apps/busybox-1.31.1-r2 b/savedconfig/sys-apps/busybox-1.31.1-r2 @@ -0,0 +1,1188 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.31.1 +# Wed Mar 25 16:32:35 2020 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +CONFIG_DESKTOP=y +CONFIG_EXTRA_COMPAT=y +CONFIG_FEDORA_COMPAT=y +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +CONFIG_FEATURE_COMPRESS_USAGE=y +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +CONFIG_FEATURE_PIDFILE=y +CONFIG_PID_FILE_PATH="/run" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_SHOW_SCRIPT=y +CONFIG_FEATURE_INSTALLER=y +CONFIG_INSTALL_NO_USR=y +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +CONFIG_FEATURE_PREFER_APPLETS=y +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y +CONFIG_PLATFORM_LINUX=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_STACK_OPTIMIZATION_386=y + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +CONFIG_UNIT_TEST=y +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FLOAT_DURATION=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +CONFIG_FEATURE_FAST_TOP=y +CONFIG_FEATURE_ETC_NETWORKS=y +CONFIG_FEATURE_ETC_SERVICES=y +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=255 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +CONFIG_FEATURE_USERNAME_COMPLETION=y +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_WINCH=y +CONFIG_FEATURE_EDITING_ASK_TERMINAL=y +# CONFIG_LOCALE_SUPPORT is not set +CONFIG_UNICODE_SUPPORT=y +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +CONFIG_UNICODE_COMBINING_WCHARS=y +CONFIG_UNICODE_WIDE_WCHARS=y +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +CONFIG_UNICODE_PRESERVE_BROKEN=y +CONFIG_FEATURE_NON_POSIX_CP=y +CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +# CONFIG_MONOTONIC_SYSCALL is not set +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +CONFIG_FEATURE_SEAMLESS_XZ=y +CONFIG_FEATURE_SEAMLESS_LZMA=y +CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_FEATURE_SEAMLESS_GZ=y +CONFIG_FEATURE_SEAMLESS_Z=y +CONFIG_AR=y +CONFIG_FEATURE_AR_LONG_FILENAMES=y +CONFIG_FEATURE_AR_CREATE=y +CONFIG_UNCOMPRESS=y +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +CONFIG_BZIP2=y +CONFIG_BZIP2_SMALL=8 +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +CONFIG_FEATURE_CPIO_O=y +CONFIG_FEATURE_CPIO_P=y +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y +CONFIG_GZIP_FAST=0 +CONFIG_FEATURE_GZIP_LEVELS=y +CONFIG_FEATURE_GZIP_DECOMPRESS=y +CONFIG_LZOP=y +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +CONFIG_LZOP_COMPR_HIGH=y +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_AUTODETECT=y +CONFIG_FEATURE_TAR_FROM=y +CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y +CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y +CONFIG_FEATURE_LZMA_FAST=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_COMM=y +CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_FEATURE_CP_REFLINK=y +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_FEATURE_DATE_NANO=y +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +CONFIG_FEATURE_DF_FANCY=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +CONFIG_EXPAND=y +CONFIG_UNEXPAND=y +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +# CONFIG_FOLD is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +# CONFIG_HOSTID is not set +CONFIG_ID=y +CONFIG_GROUPS=y +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +# CONFIG_LOGNAME is not set +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +# CONFIG_OD is not set +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +CONFIG_SHUF=y +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY=y +CONFIG_SPLIT=y +CONFIG_FEATURE_SPLIT_FANCY=y +CONFIG_STAT=y +CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_FEATURE_STAT_FILESYSTEM=y +CONFIG_STTY=y +CONFIG_SUM=y +CONFIG_SYNC=y +CONFIG_FEATURE_SYNC_FANCY=y +CONFIG_FSYNC=y +CONFIG_TAC=y +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TIMEOUT=y +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_NODEREF=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +# CONFIG_UUDECODE is not set +CONFIG_BASE64=y +# CONFIG_UUENCODE is not set +CONFIG_WC=y +CONFIG_FEATURE_WC_LARGE=y +CONFIG_WHO=y +CONFIG_W=y +CONFIG_USERS=y +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +CONFIG_FGCONSOLE=y +CONFIG_KBD_MODE=y +CONFIG_LOADFONT=y +CONFIG_SETFONT=y +CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +CONFIG_SHOWKEY=y + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +# CONFIG_RUN_PARTS is not set +# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +CONFIG_MINIPS=y +CONFIG_NUKE=y +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y +CONFIG_FEATURE_DIFF_DIR=y +CONFIG_ED=y +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +CONFIG_FEATURE_VI_REGEX_SEARCH=y +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_EXECUTABLE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +CONFIG_FEATURE_FIND_INUM=y +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +CONFIG_FEATURE_FIND_QUIT=y +CONFIG_FEATURE_FIND_DELETE=y +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +CONFIG_FEATURE_FIND_LINKS=y +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_GINIT=y +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +CONFIG_FEATURE_WAIT_FOR_INIT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +CONFIG_FEATURE_INIT_COREDUMPS=y +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +CONFIG_USE_BB_PWD_GRP=y +CONFIG_USE_BB_SHADOW=y +CONFIG_USE_BB_CRYPT=y +CONFIG_USE_BB_CRYPT_SHA=y +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDGROUP=y +CONFIG_FEATURE_ADDUSER_TO_GROUP=y +CONFIG_ADDUSER=y +CONFIG_FEATURE_CHECK_NAMES=y +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +CONFIG_CHPASSWD=y +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +CONFIG_CRYPTPW=y +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +CONFIG_FEATURE_DEL_USER_FROM_GROUP=y +CONFIG_GETTY=y +CONFIG_LOGIN=y +CONFIG_LOGIN_SESSION_AS_CHILD=y +CONFIG_LOGIN_SCRIPTS=y +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY=y +# CONFIG_SULOGIN is not set +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +CONFIG_TUNE2FS=y + +# +# Linux Module Utilities +# +CONFIG_MODPROBE_SMALL=y +CONFIG_DEPMOD=y +CONFIG_INSMOD=y +CONFIG_LSMOD=y +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +CONFIG_MODINFO=y +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y +CONFIG_BLKDISCARD=y +CONFIG_BLKID=y +CONFIG_FEATURE_BLKID_TYPE=y +CONFIG_BLOCKDEV=y +CONFIG_CAL=y +CONFIG_CHRT=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +CONFIG_FEATURE_EJECT_SCSI=y +CONFIG_FALLOCATE=y +CONFIG_FATATTR=y +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +CONFIG_FEATURE_AIX_LABEL=y +CONFIG_FEATURE_SGI_LABEL=y +CONFIG_FEATURE_SUN_LABEL=y +CONFIG_FEATURE_OSF_LABEL=y +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +CONFIG_FINDFS=y +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +CONFIG_FEATURE_HEXDUMP_REVERSE=y +CONFIG_HD=y +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +CONFIG_IONICE=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +CONFIG_FEATURE_LAST_FANCY=y +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +CONFIG_FEATURE_MDEV_RENAME_REGEXP=y +CONFIG_FEATURE_MDEV_EXEC=y +CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y +CONFIG_FEATURE_MDEV_DAEMON=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +CONFIG_MKFS_EXT2=y +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +CONFIG_MKFS_REISER=y +CONFIG_MKDOSFS=y +CONFIG_MKFS_VFAT=y +CONFIG_MKSWAP=y +CONFIG_FEATURE_MKSWAP_UUID=y +CONFIG_MORE=y +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_FAKE=y +CONFIG_FEATURE_MOUNT_VERBOSE=y +CONFIG_FEATURE_MOUNT_HELPERS=y +CONFIG_FEATURE_MOUNT_LABEL=y +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +CONFIG_NOLOGIN=y +CONFIG_NOLOGIN_DEPENDENCIES=y +CONFIG_NSENTER=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +CONFIG_RENICE=y +CONFIG_REV=y +CONFIG_RTCWAKE=y +CONFIG_SCRIPT=y +CONFIG_SCRIPTREPLAY=y +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +CONFIG_FEATURE_SWAPON_DISCARD=y +CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +CONFIG_SWITCH_ROOT=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +CONFIG_UNSHARE=y +CONFIG_WALL=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +CONFIG_FEATURE_MTAB_SUPPORT=y +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +CONFIG_FEATURE_VOLUMEID_BCACHE=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y +CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +CONFIG_FEATURE_VOLUMEID_HFS=y +CONFIG_FEATURE_VOLUMEID_ISO9660=y +CONFIG_FEATURE_VOLUMEID_JFS=y +CONFIG_FEATURE_VOLUMEID_LFS=y +CONFIG_FEATURE_VOLUMEID_LINUXRAID=y +CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y +CONFIG_FEATURE_VOLUMEID_LUKS=y +CONFIG_FEATURE_VOLUMEID_MINIX=y +CONFIG_FEATURE_VOLUMEID_NILFS=y +CONFIG_FEATURE_VOLUMEID_NTFS=y +CONFIG_FEATURE_VOLUMEID_OCFS2=y +CONFIG_FEATURE_VOLUMEID_REISERFS=y +CONFIG_FEATURE_VOLUMEID_ROMFS=y +CONFIG_FEATURE_VOLUMEID_SQUASHFS=y +CONFIG_FEATURE_VOLUMEID_SYSV=y +CONFIG_FEATURE_VOLUMEID_UBIFS=y +CONFIG_FEATURE_VOLUMEID_UDF=y +CONFIG_FEATURE_VOLUMEID_XFS=y + +# +# Miscellaneous Utilities +# +CONFIG_ADJTIMEX=y +CONFIG_BBCONFIG=y +CONFIG_FEATURE_COMPRESS_BBCONFIG=y +CONFIG_BC=y +# CONFIG_DC is not set +CONFIG_FEATURE_DC_BIG=y +# CONFIG_FEATURE_DC_LIBM is not set +CONFIG_FEATURE_BC_INTERACTIVE=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +CONFIG_CHAT=y +CONFIG_FEATURE_CHAT_NOFAIL=y +CONFIG_FEATURE_CHAT_TTY_HIFI=y +CONFIG_FEATURE_CHAT_IMPLICIT_CR=y +CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y +CONFIG_FEATURE_CHAT_SEND_ESCAPES=y +CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y +CONFIG_FEATURE_CHAT_CLR_ABORT=y +CONFIG_CONSPY=y +CONFIG_CROND=y +CONFIG_FEATURE_CROND_D=y +CONFIG_FEATURE_CROND_CALL_SENDMAIL=y +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +# CONFIG_CRONTAB is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +# CONFIG_FBSPLASH is not set +CONFIG_FLASH_ERASEALL=y +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASHCP=y +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y +CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +CONFIG_HEXEDIT=y +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +CONFIG_I2CTRANSFER=y +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +CONFIG_FEATURE_LESS_MARKS=y +CONFIG_FEATURE_LESS_REGEXP=y +CONFIG_FEATURE_LESS_WINCH=y +CONFIG_FEATURE_LESS_ASK_TERMINAL=y +CONFIG_FEATURE_LESS_DASHCMD=y +CONFIG_FEATURE_LESS_LINENUMS=y +CONFIG_FEATURE_LESS_RAW=y +CONFIG_FEATURE_LESS_ENV=y +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +CONFIG_MAN=y +CONFIG_MICROCOM=y +CONFIG_MT=y +CONFIG_NANDWRITE=y +CONFIG_NANDDUMP=y +CONFIG_PARTPROBE=y +CONFIG_RAIDAUTORUN=y +CONFIG_READAHEAD=y +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +CONFIG_RX=y +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +CONFIG_TS=y +CONFIG_TTYSIZE=y +CONFIG_UBIATTACH=y +CONFIG_UBIDETACH=y +CONFIG_UBIMKVOL=y +CONFIG_UBIRMVOL=y +CONFIG_UBIRSVOL=y +CONFIG_UBIUPDATEVOL=y +CONFIG_UBIRENAME=y +CONFIG_VOLNAME=y +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_FEATURE_IPV6=y +CONFIG_FEATURE_UNIX_LOCAL=y +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +CONFIG_VERBOSE_RESOLUTION_ERRORS=y +CONFIG_FEATURE_TLS_SHA1=y +CONFIG_ARP=y +CONFIG_ARPING=y +CONFIG_BRCTL=y +CONFIG_FEATURE_BRCTL_FANCY=y +CONFIG_FEATURE_BRCTL_SHOW=y +# CONFIG_DNSD is not set +CONFIG_ETHER_WAKE=y +CONFIG_FTPD=y +CONFIG_FEATURE_FTPD_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y +CONFIG_FEATURE_FTPD_AUTHENTICATION=y +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +CONFIG_HTTPD=y +CONFIG_FEATURE_HTTPD_RANGES=y +CONFIG_FEATURE_HTTPD_SETUID=y +CONFIG_FEATURE_HTTPD_BASIC_AUTH=y +CONFIG_FEATURE_HTTPD_AUTH_MD5=y +CONFIG_FEATURE_HTTPD_CGI=y +CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y +CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y +CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y +CONFIG_FEATURE_HTTPD_ERROR_PAGES=y +CONFIG_FEATURE_HTTPD_PROXY=y +CONFIG_FEATURE_HTTPD_GZIP=y +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +CONFIG_IFENSLAVE=y +CONFIG_IFPLUGD=y +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +CONFIG_FEATURE_IP_RARE_PROTOCOLS=y +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +CONFIG_NAMEIF=y +CONFIG_FEATURE_NAMEIF_EXTENDED=y +CONFIG_NBDCLIENT=y +CONFIG_NC=y +CONFIG_NETCAT=y +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +CONFIG_NC_110_COMPAT=y +CONFIG_NETSTAT=y +CONFIG_FEATURE_NETSTAT_WIDE=y +CONFIG_FEATURE_NETSTAT_PRG=y +CONFIG_NSLOOKUP=y +CONFIG_FEATURE_NSLOOKUP_BIG=y +CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y +CONFIG_NTPD=y +CONFIG_FEATURE_NTPD_SERVER=y +CONFIG_FEATURE_NTPD_CONF=y +CONFIG_FEATURE_NTP_AUTH=y +CONFIG_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y +CONFIG_PSCAN=y +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +CONFIG_SSL_CLIENT=y +CONFIG_TC=y +CONFIG_FEATURE_TC_INGRESS=y +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +CONFIG_TELNETD=y +CONFIG_FEATURE_TELNETD_STANDALONE=y +CONFIG_FEATURE_TELNETD_INETD_WAIT=y +CONFIG_TFTP=y +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y +CONFIG_FEATURE_TFTP_HPA_COMPAT=y +CONFIG_TFTPD=y +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_TFTP_DEBUG is not set +CONFIG_TLS=y +CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y +CONFIG_FEATURE_TRACEROUTE_VERBOSE=y +CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +CONFIG_FEATURE_WGET_HTTPS=y +CONFIG_FEATURE_WGET_OPENSSL=y +CONFIG_WHOIS=y +CONFIG_ZCIP=y +CONFIG_UDHCPD=y +CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC=y +CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y +CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" +CONFIG_DUMPLEASES=y +CONFIG_DHCPRELAY=y +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC6=y +CONFIG_FEATURE_UDHCPC6_RFC3646=y +CONFIG_FEATURE_UDHCPC6_RFC4704=y +CONFIG_FEATURE_UDHCPC6_RFC4833=y +CONFIG_FEATURE_UDHCPC6_RFC5970=y + +# +# Common options for DHCP applets +# +CONFIG_FEATURE_UDHCP_PORT=y +CONFIG_UDHCP_DEBUG=2 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_FEATURE_UDHCP_RFC3397=y +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# Print Utilities +# +# CONFIG_LPD is not set +CONFIG_LPR=y +CONFIG_LPQ=y + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +CONFIG_POPMAILDIR=y +CONFIG_FEATURE_POPMAILDIR_DELIVERY=y +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +CONFIG_SENDMAIL=y +CONFIG_FEATURE_MIME_CHARSET="us-ascii" + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_IOSTAT=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +CONFIG_MPSTAT=y +CONFIG_NMETER=y +CONFIG_PGREP=y +CONFIG_PKILL=y +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +CONFIG_PMAP=y +CONFIG_POWERTOP=y +CONFIG_FEATURE_POWERTOP_INTERACTIVE=y +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +CONFIG_FEATURE_PS_TIME=y +CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS=y +CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y +CONFIG_PSTREE=y +CONFIG_PWDX=y +# CONFIG_SMEMCAP is not set +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +CONFIG_FEATURE_TOP_SMP_CPU=y +CONFIG_FEATURE_TOP_DECIMALS=y +CONFIG_FEATURE_TOP_SMP_PROCESS=y +CONFIG_FEATURE_TOPMEM=y +CONFIG_UPTIME=y +CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y +CONFIG_WATCH=y +CONFIG_FEATURE_SHOW_THREADS=y + +# +# Runit Utilities +# +CONFIG_CHPST=y +CONFIG_SETUIDGID=y +CONFIG_ENVUIDGID=y +CONFIG_ENVDIR=y +CONFIG_SOFTLIMIT=y +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service" +CONFIG_SVC=y +CONFIG_SVOK=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +# CONFIG_ASH_BASH_SOURCE_CURDIR is not set +CONFIG_ASH_BASH_NOT_FOUND_HOOK=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +CONFIG_ASH_MAIL=y +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +CONFIG_CTTYHACK=y +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_LINENO_VAR is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_COMMAND is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_MATH_BASE=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +CONFIG_FEATURE_SH_STANDALONE=y +CONFIG_FEATURE_SH_NOFORK=y +CONFIG_FEATURE_SH_READ_FRAC=y +CONFIG_FEATURE_SH_HISTFILESIZE=y +CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y + +# +# System Logging Utilities +# +# CONFIG_KLOGD is not set +# CONFIG_FEATURE_KLOGD_KLOGCTL is not set +# CONFIG_LOGGER is not set +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +# CONFIG_SYSLOGD is not set +# CONFIG_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_FEATURE_REMOTE_LOG is not set +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/savedconfig/sys-firmware/ipxe-1.0.0_p20190728 b/savedconfig/sys-firmware/ipxe-1.0.0_p20190728 @@ -0,0 +1,3 @@ +#undef BANNER_TIMEOUT +#define BANNER_TIMEOUT 0 +#define NET_PROTO_IPV6 diff --git a/savedconfig/sys-kernel/linux-firmware-20200316 b/savedconfig/sys-kernel/linux-firmware-20200316 @@ -0,0 +1,2052 @@ +# Remove files that shall not be installed from this list. +3com/typhoon.bin +RTL8192E/boot.img +RTL8192E/main.img +RTL8192E/data.img +TDA7706_OM_v2.5.1_boot.txt +TDA7706_OM_v3.0.2_boot.txt +advansys/38C1600.bin +advansys/3550.bin +advansys/mcode.bin +advansys/38C0800.bin +agere_ap_fw.bin +agere_sta_fw.bin +amd/amd_sev_fam17h_model0xh.sbin +amd-ucode/microcode_amd_fam16h.bin +amd-ucode/microcode_amd_fam17h.bin +amd-ucode/microcode_amd_fam15h.bin.asc +amd-ucode/microcode_amd_fam15h.bin +amd-ucode/microcode_amd.bin.asc +amd-ucode/microcode_amd_fam16h.bin.asc +amd-ucode/microcode_amd_fam17h.bin.asc +amd-ucode/microcode_amd.bin +amdgpu/mullins_pfp.bin +amdgpu/navi10_ta.bin +amdgpu/tahiti_k_smc.bin +amdgpu/polaris10_mec2.bin +amdgpu/tahiti_pfp.bin +amdgpu/vega20_me.bin +amdgpu/kaveri_pfp.bin +amdgpu/kaveri_ce.bin +amdgpu/tahiti_ce.bin +amdgpu/renoir_ce.bin +amdgpu/navi10_ce.bin +amdgpu/kabini_uvd.bin +amdgpu/hawaii_mec.bin +amdgpu/pitcairn_smc.bin +amdgpu/pitcairn_k_smc.bin +amdgpu/raven_pfp.bin +amdgpu/tonga_sdma.bin +amdgpu/vegam_sdma.bin +amdgpu/topaz_rlc.bin +amdgpu/polaris12_mec2_2.bin +amdgpu/navi10_sdma1.bin +amdgpu/renoir_sdma.bin +amdgpu/renoir_asd.bin +amdgpu/verde_pfp.bin +amdgpu/kabini_vce.bin +amdgpu/raven_vcn.bin +amdgpu/stoney_me.bin +amdgpu/picasso_me.bin +amdgpu/polaris11_mc.bin +amdgpu/raven_gpu_info.bin +amdgpu/polaris10_mec.bin +amdgpu/vega12_mec.bin +amdgpu/vegam_me.bin +amdgpu/navi14_pfp_wks.bin +amdgpu/carrizo_sdma1.bin +amdgpu/bonaire_pfp.bin +amdgpu/fiji_pfp.bin +amdgpu/renoir_rlc.bin +amdgpu/polaris11_pfp.bin +amdgpu/vega20_mec.bin +amdgpu/oland_mc.bin +amdgpu/raven2_gpu_info.bin +amdgpu/vega10_vce.bin +amdgpu/carrizo_pfp.bin +amdgpu/polaris10_sdma1.bin +amdgpu/polaris12_vce.bin +amdgpu/navi14_ce_wks.bin +amdgpu/hawaii_mc.bin +amdgpu/hainan_pfp.bin +amdgpu/topaz_sdma1.bin +amdgpu/polaris12_smc.bin +amdgpu/vegam_pfp.bin +amdgpu/navi10_pfp.bin +amdgpu/oland_smc.bin +amdgpu/navi14_pfp.bin +amdgpu/picasso_mec2.bin +amdgpu/hainan_me.bin +amdgpu/stoney_mec.bin +amdgpu/polaris11_sdma1.bin +amdgpu/vega10_smc.bin +amdgpu/tonga_rlc.bin +amdgpu/navi14_sdma.bin +amdgpu/navi14_vcn.bin +amdgpu/topaz_sdma.bin +amdgpu/navi10_vcn.bin +amdgpu/tonga_mc.bin +amdgpu/navi14_sdma1.bin +amdgpu/vega12_sdma.bin +amdgpu/polaris10_k2_smc.bin +amdgpu/topaz_mc.bin +amdgpu/polaris12_sdma1.bin +amdgpu/tonga_sdma1.bin +amdgpu/polaris12_uvd.bin +amdgpu/bonaire_sdma1.bin +amdgpu/navi10_mec2.bin +amdgpu/verde_me.bin +amdgpu/polaris10_smc_sk.bin +amdgpu/fiji_sdma.bin +amdgpu/polaris10_ce_2.bin +amdgpu/polaris12_k_mc.bin +amdgpu/kaveri_mec2.bin +amdgpu/bonaire_mc.bin +amdgpu/vega10_uvd.bin +amdgpu/pitcairn_mc.bin +amdgpu/bonaire_mec.bin +amdgpu/polaris12_ce.bin +amdgpu/vega20_mec2.bin +amdgpu/vega10_sos.bin +amdgpu/vega12_pfp.bin +amdgpu/polaris11_me.bin +amdgpu/kabini_ce.bin +amdgpu/polaris10_pfp.bin +amdgpu/raven2_sdma.bin +amdgpu/carrizo_me.bin +amdgpu/carrizo_mec2.bin +amdgpu/navi14_ce.bin +amdgpu/vega10_acg_smc.bin +amdgpu/hawaii_k_smc.bin +amdgpu/pitcairn_rlc.bin +amdgpu/vega10_ce.bin +amdgpu/polaris11_mec2.bin +amdgpu/raven_mec.bin +amdgpu/topaz_smc.bin +amdgpu/fiji_ce.bin +amdgpu/raven_me.bin +amdgpu/hainan_k_smc.bin +amdgpu/hawaii_pfp.bin +amdgpu/picasso_asd.bin +amdgpu/polaris10_mec2_2.bin +amdgpu/vega10_asd.bin +amdgpu/kaveri_mec.bin +amdgpu/kabini_rlc.bin +amdgpu/vega10_mec2.bin +amdgpu/raven2_asd.bin +amdgpu/renoir_gpu_info.bin +amdgpu/mullins_mec.bin +amdgpu/verde_mc.bin +amdgpu/mullins_ce.bin +amdgpu/tonga_vce.bin +amdgpu/picasso_rlc.bin +amdgpu/pitcairn_me.bin +amdgpu/polaris10_ce.bin +amdgpu/bonaire_me.bin +amdgpu/raven2_rlc.bin +amdgpu/tonga_me.bin +amdgpu/oland_rlc.bin +amdgpu/polaris12_rlc.bin +amdgpu/raven2_ta.bin +amdgpu/raven2_ce.bin +amdgpu/vega10_rlc.bin +amdgpu/verde_k_smc.bin +amdgpu/topaz_me.bin +amdgpu/polaris12_me_2.bin +amdgpu/vega12_sdma1.bin +amdgpu/tonga_smc.bin +amdgpu/polaris12_sdma.bin +amdgpu/polaris11_ce_2.bin +amdgpu/banks_k_2_smc.bin +amdgpu/hainan_mc.bin +amdgpu/stoney_pfp.bin +amdgpu/navi14_mec.bin +amdgpu/navi10_mec.bin +amdgpu/vega12_ce.bin +amdgpu/vegam_mec.bin +amdgpu/navi14_me_wks.bin +amdgpu/oland_me.bin +amdgpu/kabini_sdma1.bin +amdgpu/mullins_sdma.bin +amdgpu/carrizo_mec.bin +amdgpu/hawaii_me.bin +amdgpu/raven_mec2.bin +amdgpu/tonga_uvd.bin +amdgpu/vega20_pfp.bin +amdgpu/vega10_sdma1.bin +amdgpu/polaris11_mec.bin +amdgpu/fiji_mec.bin +amdgpu/vegam_vce.bin +amdgpu/hawaii_ce.bin +amdgpu/hainan_smc.bin +amdgpu/carrizo_sdma.bin +amdgpu/fiji_smc.bin +amdgpu/picasso_pfp.bin +amdgpu/polaris11_smc.bin +amdgpu/oland_ce.bin +amdgpu/vega12_me.bin +amdgpu/fiji_vce.bin +amdgpu/polaris12_mec_2.bin +amdgpu/polaris11_vce.bin +amdgpu/vega12_sos.bin +amdgpu/vega10_pfp.bin +amdgpu/vega20_sdma.bin +amdgpu/polaris12_pfp.bin +amdgpu/vegam_smc.bin +amdgpu/carrizo_vce.bin +amdgpu/navi10_smc.bin +amdgpu/oland_pfp.bin +amdgpu/navi14_smc.bin +amdgpu/raven2_pfp.bin +amdgpu/raven2_mec2.bin +amdgpu/carrizo_uvd.bin +amdgpu/vega12_asd.bin +amdgpu/vega10_sdma.bin +amdgpu/raven2_me.bin +amdgpu/topaz_ce.bin +amdgpu/polaris11_mec_2.bin +amdgpu/stoney_rlc.bin +amdgpu/fiji_uvd.bin +amdgpu/raven2_vcn.bin +amdgpu/polaris11_uvd.bin +amdgpu/tonga_mec.bin +amdgpu/tonga_ce.bin +amdgpu/renoir_mec.bin +amdgpu/vega20_rlc.bin +amdgpu/bonaire_ce.bin +amdgpu/polaris11_me_2.bin +amdgpu/polaris10_me.bin +amdgpu/polaris10_mec_2.bin +amdgpu/pitcairn_ce.bin +amdgpu/polaris11_sdma.bin +amdgpu/polaris10_k_mc.bin +amdgpu/polaris12_ce_2.bin +amdgpu/vegam_uvd.bin +amdgpu/navi14_mec2_wks.bin +amdgpu/mullins_me.bin +amdgpu/picasso_vcn.bin +amdgpu/tahiti_mc.bin +amdgpu/polaris10_rlc.bin +amdgpu/polaris12_mec2.bin +amdgpu/vega12_rlc.bin +amdgpu/tahiti_smc.bin +amdgpu/kabini_sdma.bin +amdgpu/pitcairn_pfp.bin +amdgpu/kaveri_sdma1.bin +amdgpu/topaz_mec.bin +amdgpu/mullins_vce.bin +amdgpu/raven_ta.bin +amdgpu/bonaire_uvd.bin +amdgpu/kaveri_vce.bin +amdgpu/si58_mc.bin +amdgpu/fiji_me.bin +amdgpu/raven_ce.bin +amdgpu/vega20_asd.bin +amdgpu/raven_kicker_rlc.bin +amdgpu/vega10_me.bin +amdgpu/verde_smc.bin +amdgpu/kaveri_uvd.bin +amdgpu/stoney_sdma.bin +amdgpu/hawaii_rlc.bin +amdgpu/navi14_mec_wks.bin +amdgpu/mullins_uvd.bin +amdgpu/polaris11_mec2_2.bin +amdgpu/vega20_sos.bin +amdgpu/raven_sdma.bin +amdgpu/bonaire_vce.bin +amdgpu/navi14_me.bin +amdgpu/hawaii_sdma1.bin +amdgpu/carrizo_ce.bin +amdgpu/kabini_me.bin +amdgpu/bonaire_smc.bin +amdgpu/raven_dmcu.bin +amdgpu/kabini_pfp.bin +amdgpu/polaris11_ce.bin +amdgpu/polaris12_me.bin +amdgpu/polaris12_k_smc.bin +amdgpu/tonga_k_smc.bin +amdgpu/hainan_rlc.bin +amdgpu/oland_k_smc.bin +amdgpu/picasso_rlc_am4.bin +amdgpu/bonaire_sdma.bin +amdgpu/carrizo_rlc.bin +amdgpu/polaris10_mc.bin +amdgpu/tonga_mec2.bin +amdgpu/verde_ce.bin +amdgpu/vega10_gpu_info.bin +amdgpu/vegam_mec2.bin +amdgpu/renoir_pfp.bin +amdgpu/stoney_uvd.bin +amdgpu/fiji_rlc.bin +amdgpu/polaris11_rlc.bin +amdgpu/polaris11_k_mc.bin +amdgpu/polaris10_sdma.bin +amdgpu/tonga_pfp.bin +amdgpu/vega20_uvd.bin +amdgpu/polaris10_me_2.bin +amdgpu/navi14_rlc.bin +amdgpu/fiji_sdma1.bin +amdgpu/vegam_rlc.bin +amdgpu/bonaire_k_smc.bin +amdgpu/navi10_rlc.bin +amdgpu/navi14_gpu_info.bin +amdgpu/raven2_mec.bin +amdgpu/topaz_k_smc.bin +amdgpu/polaris10_k_smc.bin +amdgpu/polaris12_mec.bin +amdgpu/hainan_ce.bin +amdgpu/vega10_mec.bin +amdgpu/polaris11_smc_sk.bin +amdgpu/vega20_vce.bin +amdgpu/vega20_sdma1.bin +amdgpu/stoney_vce.bin +amdgpu/vega20_smc.bin +amdgpu/polaris11_k2_smc.bin +amdgpu/picasso_mec.bin +amdgpu/polaris11_k_smc.bin +amdgpu/renoir_vcn.bin +amdgpu/renoir_mec2.bin +amdgpu/raven_asd.bin +amdgpu/vega12_gpu_info.bin +amdgpu/polaris10_smc.bin +amdgpu/picasso_sdma.bin +amdgpu/hawaii_uvd.bin +amdgpu/picasso_ta.bin +amdgpu/navi14_sos.bin +amdgpu/kaveri_rlc.bin +amdgpu/navi10_sos.bin +amdgpu/kabini_mec.bin +amdgpu/vegam_ce.bin +amdgpu/polaris12_mc.bin +amdgpu/tahiti_rlc.bin +amdgpu/navi14_mec2.bin +amdgpu/picasso_ce.bin +amdgpu/vega12_smc.bin +amdgpu/polaris12_pfp_2.bin +amdgpu/mullins_rlc.bin +amdgpu/stoney_ce.bin +amdgpu/raven_rlc.bin +amdgpu/vega12_vce.bin +amdgpu/polaris10_vce.bin +amdgpu/mullins_sdma1.bin +amdgpu/polaris10_uvd.bin +amdgpu/hawaii_sdma.bin +amdgpu/fiji_mec2.bin +amdgpu/hawaii_smc.bin +amdgpu/verde_rlc.bin +amdgpu/navi10_sdma.bin +amdgpu/polaris10_pfp_2.bin +amdgpu/vega12_uvd.bin +amdgpu/topaz_pfp.bin +amdgpu/fiji_mc.bin +amdgpu/kaveri_sdma.bin +amdgpu/tahiti_me.bin +amdgpu/topaz_mec2.bin +amdgpu/navi10_gpu_info.bin +amdgpu/bonaire_rlc.bin +amdgpu/renoir_me.bin +amdgpu/navi10_me.bin +amdgpu/navi14_asd.bin +amdgpu/navi10_asd.bin +amdgpu/renoir_dmcub.bin +amdgpu/kaveri_me.bin +amdgpu/vega12_mec2.bin +amdgpu/picasso_gpu_info.bin +amdgpu/polaris11_pfp_2.bin +amdgpu/hawaii_vce.bin +amdgpu/vega20_ce.bin +amdgpu/vegam_sdma1.bin +ar3k/ramps_0x01020201_40.dfu +ar3k/30101coex/PS_ASIC_aclLowPri.pst +ar3k/30101coex/PS_ASIC.pst +ar3k/30101coex/ar3kbdaddr.pst +ar3k/30101coex/PS_ASIC_aclHighPri.pst +ar3k/30101coex/RamPatch.txt +ar3k/AthrBT_0x11020100.dfu +ar3k/ramps_0x31010100_40.dfu +ar3k/AthrBT_0x11020000.dfu +ar3k/ramps_0x01020001_26.dfu +ar3k/30000/RamPatch.txt +ar3k/30000/PS_ASIC.pst +ar3k/30000/ar3kbdaddr.pst +ar3k/1020200/RamPatch.txt +ar3k/1020200/PS_ASIC.pst +ar3k/1020200/ar3kbdaddr.pst +ar3k/ramps_0x01020200_26.dfu +ar3k/ramps_0x31010000_40.dfu +ar3k/AthrBT_0x41020000.dfu +ar3k/ramps_0x01020201_26.dfu +ar3k/ramps_0x11020000_40.dfu +ar3k/AthrBT_0x01020200.dfu +ar3k/AthrBT_0x01020001.dfu +ar3k/ramps_0x41020000_40.dfu +ar3k/30101/PS_ASIC.pst +ar3k/30101/RamPatch.txt +ar3k/30101/ar3kbdaddr.pst +ar3k/AthrBT_0x31010000.dfu +ar3k/AthrBT_0x01020201.dfu +ar3k/ramps_0x01020200_40.dfu +ar3k/ramps_0x11020100_40.dfu +ar3k/1020201/RamPatch.txt +ar3k/1020201/PS_ASIC.pst +ar3k/AthrBT_0x31010100.dfu +ar3k/1020201coex/ramps_0x01020201_26_HighPriority.dfu +ar5523.bin +ar7010.fw +ar7010_1_1.fw +ar9170-1.fw +ar9170-2.fw +ar9271.fw +as102_data1_st.hex +as102_data2_st.hex +ath10k/WCN3990/hw1.0/wlanmdsp.mbn +ath10k/WCN3990/hw1.0/notice.txt_wlanmdsp +ath10k/WCN3990/hw1.0/firmware-5.bin +ath10k/QCA9887/hw1.0/firmware-5.bin +ath10k/QCA9887/hw1.0/board.bin +ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9377/hw1.0/firmware-6.bin +ath10k/QCA9377/hw1.0/board.bin +ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt +ath10k/QCA9377/hw1.0/board-2.bin +ath10k/QCA9377/hw1.0/firmware-5.bin +ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA988X/hw2.0/firmware-4.bin +ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA988X/hw2.0/firmware-5.bin +ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt +ath10k/QCA988X/hw2.0/board.bin +ath10k/QCA9984/hw1.0/board-2.bin +ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9984/hw1.0/firmware-5.bin +ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt +ath10k/QCA6174/hw3.0/board.bin +ath10k/QCA6174/hw3.0/firmware-6.bin +ath10k/QCA6174/hw3.0/board-2.bin +ath10k/QCA6174/hw3.0/firmware-4.bin +ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +ath10k/QCA6174/hw2.1/board-2.bin +ath10k/QCA6174/hw2.1/firmware-5.bin +ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt +ath10k/QCA6174/hw2.1/board.bin +ath10k/QCA4019/hw1.0/board-2.bin +ath10k/QCA4019/hw1.0/firmware-5.bin +ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA9888/hw2.0/firmware-5.bin +ath10k/QCA9888/hw2.0/board-2.bin +ath10k/QCA99X0/hw2.0/firmware-5.bin +ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA99X0/hw2.0/board.bin +ath3k-1.fw +ath6k/AR6004/hw1.3/fw-3.bin +ath6k/AR6004/hw1.3/bdata.bin +ath6k/AR6004/hw1.2/bdata.bin +ath6k/AR6004/hw1.2/fw-2.bin +ath6k/AR6003/hw2.0/bdata.WB31.bin +ath6k/AR6003/hw2.0/athwlan.bin.z77 +ath6k/AR6003/hw2.0/data.patch.bin +ath6k/AR6003/hw2.0/bdata.SD32.bin +ath6k/AR6003/hw2.0/bdata.SD31.bin +ath6k/AR6003/hw2.0/otp.bin.z77 +ath6k/AR6003/hw2.1.1/bdata.WB31.bin +ath6k/AR6003/hw2.1.1/data.patch.bin +ath6k/AR6003/hw2.1.1/athwlan.bin +ath6k/AR6003/hw2.1.1/bdata.SD32.bin +ath6k/AR6003/hw2.1.1/bdata.SD31.bin +ath6k/AR6003/hw2.1.1/fw-2.bin +ath6k/AR6003/hw2.1.1/otp.bin +ath6k/AR6003/hw2.1.1/endpointping.bin +ath6k/AR6003/hw2.1.1/fw-3.bin +ath6k/AR6003/hw1.0/bdata.SD31.bin +ath6k/AR6003/hw1.0/data.patch.bin +ath6k/AR6003/hw1.0/athwlan.bin.z77 +ath6k/AR6003/hw1.0/bdata.SD32.bin +ath6k/AR6003/hw1.0/otp.bin.z77 +ath6k/AR6003/hw1.0/bdata.WB31.bin +ath6k/AR6003.1/hw2.1.1/otp.bin +ath6k/AR6003.1/hw2.1.1/athwlan.bin +ath6k/AR6003.1/hw2.1.1/bdata.SD31.bin +ath6k/AR6003.1/hw2.1.1/data.patch.bin +ath6k/AR6003.1/hw2.1.1/bdata.SD32.bin +ath6k/AR6003.1/hw2.1.1/bdata.WB31.bin +ath6k/AR6003.1/hw2.1.1/endpointping.bin +ath6k/AR6002/eeprom.data +ath6k/AR6002/data.patch.hw2_0.bin +ath6k/AR6002/eeprom.bin +ath6k/AR6002/athwlan.bin.z77 +ath9k_htc/htc_9271-1.4.0.fw +ath9k_htc/htc_7010-1.4.0.fw +atmel/wilc1000_ap_fw.bin +atmel/wilc1000_fw.bin +atmel/wilc1000_wifi_firmware.bin +atmel/wilc1000_p2p_fw.bin +atusb/atusb-0.2.dfu +atusb/atusb-0.3.dfu +atusb/rzusb-0.3.bin +av7110/bootcode.bin +bnx2/bnx2-rv2p-09-4.6.15.fw +bnx2/bnx2-mips-09-6.2.1.fw +bnx2/bnx2-mips-06-6.2.1.fw +bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw +bnx2/bnx2-mips-06-6.2.3.fw +bnx2/bnx2-mips-09-5.0.0.j9.fw +bnx2/bnx2-rv2p-09-6.0.17.fw +bnx2/bnx2-mips-09-6.2.1b.fw +bnx2/bnx2-rv2p-09-5.0.0.j10.fw +bnx2/bnx2-rv2p-06-4.6.16.fw +bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw +bnx2/bnx2-mips-09-6.2.1a.fw +bnx2/bnx2-rv2p-06-6.0.15.fw +bnx2/bnx2-mips-06-5.0.0.j6.fw +bnx2/bnx2-mips-09-6.0.17.fw +bnx2/bnx2-mips-09-4.6.17.fw +bnx2/bnx2-rv2p-09-5.0.0.j3.fw +bnx2/bnx2-rv2p-06-5.0.0.j3.fw +bnx2/bnx2-mips-06-6.0.15.fw +bnx2/bnx2-rv2p-09ax-6.0.17.fw +bnx2/bnx2-mips-06-4.6.16.fw +bnx2/bnx2-mips-09-5.0.0.j15.fw +bnx2/bnx2-mips-09-5.0.0.j3.fw +bnx2/bnx2-mips-06-5.0.0.j3.fw +bnx2x/bnx2x-e1h-7.13.1.0.fw +bnx2x/bnx2x-e2-7.0.23.0.fw +bnx2x/bnx2x-e1h-6.0.34.0.fw +bnx2x/bnx2x-e1-7.2.51.0.fw +bnx2x/bnx2x-e1-7.0.29.0.fw +bnx2x/bnx2x-e1-6.2.5.0.fw +bnx2x/bnx2x-e1h-7.8.19.0.fw +bnx2x/bnx2x-e1-6.2.9.0.fw +bnx2x/bnx2x-e1-7.2.16.0.fw +bnx2x/bnx2x-e1h-7.0.20.0.fw +bnx2x/bnx2x-e1h-7.8.2.0.fw +bnx2x/bnx2x-e1-7.8.2.0.fw +bnx2x/bnx2x-e1h-7.2.16.0.fw +bnx2x/bnx2x-e1-7.0.20.0.fw +bnx2x/bnx2x-e1h-6.2.9.0.fw +bnx2x/bnx2x-e1-7.13.1.0.fw +bnx2x/bnx2x-e1h-6.2.5.0.fw +bnx2x/bnx2x-e1-6.0.34.0.fw +bnx2x/bnx2x-e2-7.8.17.0.fw +bnx2x/bnx2x-e1h-7.2.51.0.fw +bnx2x/bnx2x-e1-7.8.19.0.fw +bnx2x/bnx2x-e1h-7.0.29.0.fw +bnx2x/bnx2x-e2-7.12.30.0.fw +bnx2x/bnx2x-e2-6.2.9.0.fw +bnx2x/bnx2x-e1-7.8.17.0.fw +bnx2x/bnx2x-e2-7.8.19.0.fw +bnx2x/bnx2x-e1h-7.13.11.0.fw +bnx2x/bnx2x-e1h-7.0.23.0.fw +bnx2x/bnx2x-e2-7.13.1.0.fw +bnx2x/bnx2x-e1-7.12.30.0.fw +bnx2x/bnx2x-e1h-7.13.15.0.fw +bnx2x/bnx2x-e2-6.0.34.0.fw +bnx2x/bnx2x-e2-7.0.20.0.fw +bnx2x/bnx2x-e1h-7.10.51.0.fw +bnx2x/bnx2x-e2-6.2.5.0.fw +bnx2x/bnx2x-e2-7.13.11.0.fw +bnx2x/bnx2x-e1-7.13.15.0.fw +bnx2x/bnx2x-e1h-7.12.30.0.fw +bnx2x/bnx2x-e2-7.13.15.0.fw +bnx2x/bnx2x-e1-7.13.11.0.fw +bnx2x/bnx2x-e2-7.2.16.0.fw +bnx2x/bnx2x-e2-7.2.51.0.fw +bnx2x/bnx2x-e2-7.8.2.0.fw +bnx2x/bnx2x-e1h-7.8.17.0.fw +bnx2x/bnx2x-e2-7.10.51.0.fw +bnx2x/bnx2x-e2-7.0.29.0.fw +bnx2x/bnx2x-e1-7.10.51.0.fw +bnx2x/bnx2x-e1-7.0.23.0.fw +bnx2x-e1-4.8.53.0.fw +bnx2x-e1-5.2.13.0.fw +bnx2x-e1-5.2.7.0.fw +bnx2x-e1h-4.8.53.0.fw +bnx2x-e1h-5.2.13.0.fw +bnx2x-e1h-5.2.7.0.fw +brcm/brcmfmac4350c2-pcie.bin +brcm/brcmfmac4358-pcie.bin +brcm/bcm4329-fullmac-4.bin +brcm/brcmfmac4354-sdio.bin +brcm/brcmfmac4366c-pcie.bin +brcm/brcmfmac4350-pcie.bin +brcm/brcmfmac4373-sdio.bin +brcm/brcmfmac43430a0-sdio.bin +brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt +brcm/brcmfmac4334-sdio.bin +brcm/brcmfmac43455-sdio.bin +brcm/brcmfmac43362-sdio.bin +brcm/brcmfmac4366b-pcie.bin +brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt +brcm/brcmfmac4373.bin +brcm/brcmfmac43143-sdio.bin +brcm/brcmfmac43241b0-sdio.bin +brcm/brcmfmac4356-pcie.bin +brcm/BCM-0bb4-0306.hcd +brcm/brcmfmac4356-pcie.gpd-win-pocket.txt +brcm/brcmfmac4371-pcie.bin +brcm/brcmfmac43455-sdio.MINIX-NEO Z83-4.txt +brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt +brcm/brcmfmac4335-sdio.bin +brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt +brcm/brcmfmac43143.bin +brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt +brcm/brcmfmac4329-sdio.bin +brcm/brcmfmac43241b4-sdio.bin +brcm/brcmfmac4330-sdio.Prowise-PT301.txt +brcm/brcmfmac4339-sdio.bin +brcm/bcm43xx-0.fw +brcm/brcmfmac43430-sdio.MUR1DX.txt +brcm/brcmfmac43430-sdio.AP6212.txt +brcm/brcmfmac4356-sdio.bin +brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt +brcm/brcmfmac43241b5-sdio.bin +brcm/brcmfmac43430a0-sdio.ONDA-V80 PLUS.txt +brcm/brcmfmac43362-sdio.lemaker,bananapro.txt +brcm/bcm43xx_hdr-0.fw +brcm/brcmfmac43570-pcie.bin +brcm/brcmfmac43340-sdio.meegopad-t08.txt +brcm/brcmfmac43569.bin +brcm/brcmfmac4330-sdio.bin +brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt +brcm/brcmfmac43242a.bin +brcm/brcmfmac43602-pcie.ap.bin +brcm/brcmfmac43602-pcie.bin +brcm/brcmfmac43340-sdio.bin +brcm/brcmfmac43430-sdio.bin +brcm/brcmfmac43236b.bin +cadence/mhdp8546.bin +carl9170-1.fw +cavium/cnn55xx_ae.fw +cavium/cnn55xx_se.fw +cbfw-3.2.1.1.bin +cbfw-3.2.3.0.bin +cbfw-3.2.5.1.bin +cis/PE-200.cis +cis/tamarack.cis +cis/DP83903.cis +cis/NE2K.cis +cis/PCMLM28.cis +cis/PE520.cis +cis/3CCFEM556.cis +cis/3CXEM556.cis +cis/SW_555_SER.cis +cis/MT5634ZLX.cis +cis/COMpad2.cis +cis/SW_7xx_SER.cis +cis/RS-COM-2P.cis +cis/SW_8xx_SER.cis +cis/LA-PCM.cis +cis/COMpad4.cis +cmmb_vega_12mhz.inp +cmmb_venice_12mhz.inp +copy-firmware.sh +ct2fw-3.2.1.1.bin +ct2fw-3.2.3.0.bin +ct2fw-3.2.5.1.bin +ctefx.bin +ctfw-3.2.1.1.bin +ctfw-3.2.3.0.bin +ctfw-3.2.5.1.bin +ctspeq.bin +cxgb3/t3b_psram-1.1.0.bin +cxgb3/t3c_psram-1.1.0.bin +cxgb3/ael2020_twx_edc.bin +cxgb3/ael2005_opt_edc.bin +cxgb3/t3fw-7.0.0.bin +cxgb3/t3fw-7.1.0.bin +cxgb3/ael2005_twx_edc.bin +cxgb3/t3fw-7.10.0.bin +cxgb3/t3fw-7.4.0.bin +cxgb3/t3fw-7.12.0.bin +cxgb4/bcm8483.bin +cxgb4/t5fw-1.24.11.0.bin +cxgb4/t5fw-1.14.4.0.bin +cxgb4/configs/t6-config-hashfilter.txt +cxgb4/configs/t5-config-default.txt +cxgb4/configs/t4-config-default.txt +cxgb4/configs/t5-config-hashfilter.txt +cxgb4/configs/t6-config-default.txt +cxgb4/t4fw-1.24.11.0.bin +cxgb4/t6fw-1.24.11.0.bin +cxgb4/t4fw-1.15.37.0.bin +cxgb4/t5fw-1.15.37.0.bin +cxgb4/aq1202_fw.cld +cxgb4/t4fw-1.14.4.0.bin +dabusb/firmware.fw +dabusb/bitstream.bin +dpaa2/mc/mc_10.18.0_ls1088a.itb +dpaa2/mc/mc_10.16.2_lx2160a.itb +dpaa2/mc/mc_10.16.2_ls2088a.itb +dpaa2/mc/mc_10.14.3_ls1088a.itb +dpaa2/mc/mc_10.10.0_ls1088a.itb +dpaa2/mc/mc_10.14.3_lx2160a.itb +dpaa2/mc/mc_10.10.0_lx2160a.itb +dpaa2/mc/mc_10.18.0_ls2088a.itb +dpaa2/mc/mc_10.18.0_lx2160a.itb +dpaa2/mc/mc_10.16.2_ls1088a.itb +dpaa2/mc/mc_10.14.3_ls2088a.itb +dpaa2/mc/mc_10.10.0_ls2088a.itb +dsp56k/bootstrap.bin +dvb-fe-xc4000-1.4.1.fw +dvb-fe-xc5000-1.6.114.fw +dvb-fe-xc5000c-4.1.30.7.fw +dvb-usb-dib0700-1.20.fw +dvb-usb-it9135-01.fw +dvb-usb-it9135-02.fw +dvb-usb-terratec-h5-drxk.fw +dvb_nova_12mhz.inp +dvb_nova_12mhz_b0.inp +e100/d101s_ucode.bin +e100/d102e_ucode.bin +e100/d101m_ucode.bin +emi26/firmware.fw +emi26/loader.fw +emi26/bitstream.fw +ene-ub6250/sd_init2.bin +ene-ub6250/ms_rdwr.bin +ene-ub6250/sd_rdwr.bin +ene-ub6250/msp_rdwr.bin +ene-ub6250/sd_init1.bin +ene-ub6250/ms_init.bin +f2255usb.bin +go7007/px-m402u.fw +go7007/px-tv402u.fw +go7007/wis-startrek.fw +go7007/s2250-1.fw +go7007/go7007tv.bin +go7007/s2250-2.fw +go7007/go7007fw.bin +go7007/lr192.fw +hfi1_dc8051.fw +hfi1_fabric.fw +hfi1_pcie.fw +hfi1_sbus.fw +htc_7010.fw +htc_9271.fw +i2400m-fw-usb-1.4.sbcf +i2400m-fw-usb-1.5.sbcf +i6050-fw-usb-1.5.sbcf +i915/glk_guc_33.0.0.bin +i915/kbl_guc_ver9_39.bin +i915/skl_huc_ver01_07_1398.bin +i915/skl_guc_ver1.bin +i915/skl_guc_ver6.bin +i915/cnl_dmc_ver1_07.bin +i915/kbl_dmc_ver1.bin +i915/kbl_guc_ver9_14.bin +i915/bxt_guc_ver9_29.bin +i915/bxt_dmc_ver1.bin +i915/bxt_huc_ver01_07_1398.bin +i915/bxt_huc_ver01_8_2893.bin +i915/skl_guc_ver6_1.bin +i915/skl_guc_33.0.0.bin +i915/icl_huc_ver8_4_3238.bin +i915/bxt_dmc_ver1_07.bin +i915/kbl_dmc_ver1_01.bin +i915/icl_huc_9.0.0.bin +i915/tgl_dmc_ver2_06.bin +i915/bxt_guc_ver8_7.bin +i915/cml_guc_33.0.0.bin +i915/skl_dmc_ver1_23.bin +i915/tgl_huc_7.0.12.bin +i915/ehl_guc_33.0.4.bin +i915/bxt_guc_33.0.0.bin +i915/kbl_guc_32.0.3.bin +i915/skl_dmc_ver1.bin +i915/glk_huc_ver03_01_2893.bin +i915/ehl_huc_9.0.0.bin +i915/icl_guc_32.0.3.bin +i915/cnl_dmc_ver1_06.bin +i915/kbl_huc_ver02_00_1810.bin +i915/glk_guc_32.0.3.bin +i915/glk_huc_4.0.0.bin +i915/kbl_huc_4.0.0.bin +i915/icl_dmc_ver1_09.bin +i915/skl_dmc_ver1_27.bin +i915/icl_dmc_ver1_07.bin +i915/glk_dmc_ver1_04.bin +i915/skl_guc_ver9_33.bin +i915/cml_huc_4.0.0.bin +i915/skl_guc_ver4.bin +i915/skl_guc_32.0.3.bin +i915/skl_dmc_ver1_26.bin +i915/tgl_dmc_ver2_04.bin +i915/bxt_huc_2.0.0.bin +i915/tgl_huc_7.0.3.bin +i915/kbl_dmc_ver1_04.bin +i915/skl_huc_2.0.0.bin +i915/tgl_guc_35.2.0.bin +i915/bxt_guc_32.0.3.bin +i915/kbl_guc_33.0.0.bin +i915/icl_guc_33.0.0.bin +imx/sdma/sdma-imx6q.bin +imx/sdma/sdma-imx7d.bin +inside-secure/eip197_minifw/ifpp.bin +inside-secure/eip197_minifw/ipue.bin +intel/ibt-17-1.ddc +intel/ibt-hw-37.7.10-fw-1.80.1.2d.d.bseq +intel/ice/ddp/ice-1.3.4.0.pkg +intel/ibt-19-240-1.ddc +intel/ibt-19-0-0.ddc +intel/ibt-19-32-4.sfi +intel/ibt-12-16.sfi +intel/dsp_fw_glk_v2880.bin +intel/ibt-17-2.sfi +intel/ibt-hw-37.7.bseq +intel/dsp_fw_release_v3402.bin +intel/ibt-11-5.ddc +intel/ibt-18-0-1.ddc +intel/dsp_fw_kbl_v3266.bin +intel/ibt-hw-37.7.10-fw-1.0.1.2d.d.bseq +intel/ibt-19-0-4.sfi +intel/ibt-19-32-0.ddc +intel/ibt-20-1-4.ddc +intel/fw_sst_0f28.bin-48kHz_i2s_master +intel/ibt-17-0-1.sfi +intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq +intel/ibt-20-1-3.ddc +intel/dsp_fw_kbl_v2630.bin +intel/ibt-19-0-1.ddc +intel/ibt-18-2.sfi +intel/irci_irci_ecr-master_20161208_0213_20170112_1500.bin +intel/dsp_fw_release_v969.bin +intel/ibt-17-16-1.sfi +intel/ibt-18-16-1.sfi +intel/IntcSST2.bin +intel/ibt-20-0-3.ddc +intel/ibt-19-32-1.ddc +intel/dsp_fw_cnl_v1191.bin +intel/ibt-18-1.ddc +intel/ibt-19-240-4.sfi +intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq +intel/dsp_fw_kbl_v701.bin +intel/dsp_fw_glk_v1814.bin +intel/ibt-19-16-4.ddc +intel/ibt-hw-37.8.10-fw-22.50.19.14.f.bseq +intel/fw_sst_0f28.bin +intel/dsp_fw_kbl_v1037.bin +intel/ibt-20-1-4.sfi +intel/ibt-20-1-3.sfi +intel/ibt-17-0-1.ddc +intel/ibt-19-0-1.sfi +intel/dsp_fw_kbl_v2042.bin +intel/ibt-18-2.ddc +intel/ibt-17-16-1.ddc +intel/ibt-18-16-1.ddc +intel/fw_sst_0f28_ssp0.bin +intel/ibt-19-32-1.sfi +intel/ibt-20-0-3.sfi +intel/ibt-18-1.sfi +intel/ibt-19-240-4.ddc +intel/fw_sst_22a8.bin +intel/dsp_fw_kbl_v3420.bin +intel/ibt-19-16-4.sfi +intel/ibt-hw-37.8.bseq +intel/dsp_fw_glk_v3366.bin +intel/ibt-hw-37.8.10-fw-1.10.2.27.d.bseq +intel/ibt-17-1.sfi +intel/dsp_fw_kbl_v3402.bin +intel/ibt-19-0-0.sfi +intel/ibt-19-240-1.sfi +intel/ibt-19-32-4.ddc +intel/ibt-12-16.ddc +intel/ibt-17-2.ddc +intel/ibt-hw-37.7.10-fw-1.0.2.3.d.bseq +intel/dsp_fw_glk_v2768.bin +intel/dsp_fw_bxtn_v2219.bin +intel/ibt-18-0-1.sfi +intel/ibt-11-5.sfi +intel/ibt-19-0-4.ddc +intel/dsp_fw_bxtn_v3366.bin +intel/dsp_fw_cnl_v1858.bin +intel/ibt-19-32-0.sfi +isci/isci_firmware.bin +isdbt_nova_12mhz.inp +isdbt_nova_12mhz_b0.inp +isdbt_rio.inp +iwlwifi-100-5.ucode +iwlwifi-1000-3.ucode +iwlwifi-1000-5.ucode +iwlwifi-105-6.ucode +iwlwifi-135-6.ucode +iwlwifi-2000-6.ucode +iwlwifi-2030-6.ucode +iwlwifi-3160-10.ucode +iwlwifi-3160-12.ucode +iwlwifi-3160-13.ucode +iwlwifi-3160-16.ucode +iwlwifi-3160-17.ucode +iwlwifi-3160-7.ucode +iwlwifi-3160-8.ucode +iwlwifi-3160-9.ucode +iwlwifi-3168-21.ucode +iwlwifi-3168-22.ucode +iwlwifi-3168-27.ucode +iwlwifi-3168-29.ucode +iwlwifi-3945-2.ucode +iwlwifi-4965-2.ucode +iwlwifi-5000-1.ucode +iwlwifi-5000-2.ucode +iwlwifi-5000-5.ucode +iwlwifi-5150-2.ucode +iwlwifi-6000-4.ucode +iwlwifi-6000g2a-5.ucode +iwlwifi-6000g2a-6.ucode +iwlwifi-6000g2b-5.ucode +iwlwifi-6000g2b-6.ucode +iwlwifi-6050-4.ucode +iwlwifi-6050-5.ucode +iwlwifi-7260-10.ucode +iwlwifi-7260-12.ucode +iwlwifi-7260-13.ucode +iwlwifi-7260-16.ucode +iwlwifi-7260-17.ucode +iwlwifi-7260-7.ucode +iwlwifi-7260-8.ucode +iwlwifi-7260-9.ucode +iwlwifi-7265-10.ucode +iwlwifi-7265-12.ucode +iwlwifi-7265-13.ucode +iwlwifi-7265-16.ucode +iwlwifi-7265-17.ucode +iwlwifi-7265-8.ucode +iwlwifi-7265-9.ucode +iwlwifi-7265D-10.ucode +iwlwifi-7265D-12.ucode +iwlwifi-7265D-13.ucode +iwlwifi-7265D-16.ucode +iwlwifi-7265D-17.ucode +iwlwifi-7265D-21.ucode +iwlwifi-7265D-22.ucode +iwlwifi-7265D-27.ucode +iwlwifi-7265D-29.ucode +iwlwifi-8000C-13.ucode +iwlwifi-8000C-16.ucode +iwlwifi-8000C-21.ucode +iwlwifi-8000C-22.ucode +iwlwifi-8000C-27.ucode +iwlwifi-8000C-31.ucode +iwlwifi-8000C-34.ucode +iwlwifi-8000C-36.ucode +iwlwifi-8265-21.ucode +iwlwifi-8265-22.ucode +iwlwifi-8265-27.ucode +iwlwifi-8265-31.ucode +iwlwifi-8265-34.ucode +iwlwifi-8265-36.ucode +iwlwifi-9000-pu-b0-jf-b0-33.ucode +iwlwifi-9000-pu-b0-jf-b0-34.ucode +iwlwifi-9000-pu-b0-jf-b0-38.ucode +iwlwifi-9000-pu-b0-jf-b0-41.ucode +iwlwifi-9000-pu-b0-jf-b0-43.ucode +iwlwifi-9000-pu-b0-jf-b0-46.ucode +iwlwifi-9260-th-b0-jf-b0-33.ucode +iwlwifi-9260-th-b0-jf-b0-34.ucode +iwlwifi-9260-th-b0-jf-b0-38.ucode +iwlwifi-9260-th-b0-jf-b0-41.ucode +iwlwifi-9260-th-b0-jf-b0-43.ucode +iwlwifi-9260-th-b0-jf-b0-46.ucode +iwlwifi-Qu-b0-hr-b0-48.ucode +iwlwifi-Qu-b0-jf-b0-48.ucode +iwlwifi-Qu-c0-hr-b0-48.ucode +iwlwifi-Qu-c0-jf-b0-48.ucode +iwlwifi-QuZ-a0-hr-b0-48.ucode +iwlwifi-QuZ-a0-jf-b0-48.ucode +iwlwifi-cc-a0-46.ucode +iwlwifi-cc-a0-48.ucode +kaweth/new_code_fix.bin +kaweth/trigger_code_fix.bin +kaweth/trigger_code.bin +kaweth/new_code.bin +keyspan/usa28x.fw +keyspan/usa49w.fw +keyspan/usa49wlc.fw +keyspan/usa28.fw +keyspan/usa19qw.fw +keyspan/usa28xa.fw +keyspan/usa19w.fw +keyspan/usa28xb.fw +keyspan/usa19qi.fw +keyspan/mpr.fw +keyspan/usa18x.fw +keyspan/usa19.fw +keyspan_pda/keyspan_pda.fw +keyspan_pda/xircom_pgs.fw +lbtf_usb.bin +libertas/usb8682.bin +libertas/sd8686_v8_helper.bin +libertas/gspi8686_v9_helper.bin +libertas/cf8381.bin +libertas/gspi8682.bin +libertas/gspi8688_helper.bin +libertas/lbtf_sdio.bin +libertas/sd8385.bin +libertas/usb8388_v9.bin +libertas/cf8381_helper.bin +libertas/sd8686_v9.bin +libertas/gspi8682_helper.bin +libertas/gspi8686_v9.bin +libertas/gspi8688.bin +libertas/cf8385.bin +libertas/sd8682_helper.bin +libertas/sd8686_v8.bin +libertas/usb8388_olpc.bin +libertas/sd8385_helper.bin +libertas/cf8385_helper.bin +libertas/usb8388_v5.bin +libertas/sd8686_v9_helper.bin +libertas/sd8682.bin +liquidio/lio_23xx_vsw.bin +liquidio/lio_210sv_nic.bin +liquidio/lio_23xx_nic.bin +liquidio/lio_210nv_nic.bin +liquidio/lio_410nv_nic.bin +matrox/g400_warp.fw +matrox/g200_warp.fw +mediatek/mt7615_n9.bin +mediatek/mt7622_n9.bin +mediatek/mt7668pr2h.bin +mediatek/mt7610u.bin +mediatek/mt7622pr2h.bin +mediatek/mt7622_rom_patch.bin +mediatek/mt7662u.bin +mediatek/mt7650e.bin +mediatek/mt7615_cr4.bin +mediatek/mt7615_rom_patch.bin +mediatek/mt8173/vpu_d.bin +mediatek/mt8173/vpu_p.bin +mediatek/mt7610e.bin +mediatek/mt7662u_rom_patch.bin +mellanox/mlxsw_spectrum-13.1620.192.mfa2 +mellanox/mlxsw_spectrum-13.2000.1886.mfa2 +mellanox/mlxsw_spectrum2-29.2000.2308.mfa2 +mellanox/mlxsw_spectrum-13.1530.152.mfa2 +mellanox/mlxsw_spectrum-13.1420.122.mfa2 +mellanox/mlxsw_spectrum-13.1702.6.mfa2 +mellanox/mlxsw_spectrum-13.1703.4.mfa2 +mellanox/mlxsw_spectrum-13.2000.2714.mfa2 +mellanox/mlxsw_spectrum-13.2000.1122.mfa2 +mellanox/mlxsw_spectrum2-29.2000.2714.mfa2 +mellanox/mlxsw_spectrum-13.1910.622.mfa2 +mellanox/mlxsw_spectrum-13.2000.2308.mfa2 +meson/vdec/gxl_mpeg4_5.bin +meson/vdec/gxl_h263.bin +meson/vdec/gxl_h264.bin +meson/vdec/gxl_hevc_mmu.bin +meson/vdec/gxl_mpeg12.bin +meson/vdec/gxl_vp9.bin +meson/vdec/gxm_h264.bin +meson/vdec/g12a_hevc_mmu.bin +meson/vdec/g12a_h264.bin +meson/vdec/gxl_hevc.bin +meson/vdec/sm1_vp9_mmu.bin +meson/vdec/gxl_mjpeg.bin +meson/vdec/sm1_hevc_mmu.bin +meson/vdec/g12a_vp9.bin +meson/vdec/gxbb_h264.bin +microchip/mscc_vsc8574_revb_int8051_29e8.bin +microchip/mscc_vsc8584_revb_int8051_fb48.bin +moxa/moxa-1150.fw +moxa/moxa-1151.fw +moxa/moxa-1451.fw +moxa/moxa-1613.fw +moxa/moxa-1450.fw +moxa/moxa-1131.fw +moxa/moxa-1130.fw +moxa/moxa-1658.fw +moxa/moxa-1250.fw +moxa/moxa-1618.fw +moxa/moxa-1251.fw +moxa/moxa-1653.fw +moxa/moxa-1410.fw +moxa/moxa-1110.fw +mrvl/pcie8997_wlan_v4.bin +mrvl/usb8766_uapsta.bin +mrvl/usb8801_uapsta.bin +mrvl/sd8897_uapsta.bin +mrvl/sd8797_uapsta.bin +mrvl/sdsd8997_combo_v4.bin +mrvl/sd8801_uapsta.bin +mrvl/pcieusb8997_combo_v4.bin +mrvl/pcie8897_uapsta.bin +mrvl/pcieuart8997_combo_v4.bin +mrvl/sd8688_helper.bin +mrvl/sd8787_uapsta.bin +mrvl/usb8897_uapsta.bin +mrvl/usbusb8997_combo_v4.bin +mrvl/sd8688.bin +mrvl/sdsd8977_combo_v2.bin +mrvl/usb8797_uapsta.bin +mrvl/sd8887_uapsta.bin +mt7601u.bin +mt7650.bin +mt7662.bin +mt7662_rom_patch.bin +mts_cdma.fw +mts_edge.fw +mts_gsm.fw +mwl8k/fmimage_8764_ap-1.fw +mwl8k/helper_8687.fw +mwl8k/fmimage_8366.fw +mwl8k/fmimage_8687.fw +mwl8k/helper_8366.fw +mwl8k/fmimage_8366_ap-3.fw +mwl8k/fmimage_8366_ap-2.fw +mwl8k/fmimage_8366_ap-1.fw +mwlwifi/88W8864.bin +mwlwifi/88W8897.bin +myri10ge_eth_big_z8e.dat +myri10ge_eth_z8e.dat +myri10ge_ethp_big_z8e.dat +myri10ge_ethp_z8e.dat +myri10ge_rss_eth_big_z8e.dat +myri10ge_rss_eth_z8e.dat +myri10ge_rss_ethp_big_z8e.dat +myri10ge_rss_ethp_z8e.dat +netronome/nic/nic_AMDA0099-0001_2x25.nffw +netronome/nic/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/nic/nic_AMDA0099-0001_2x10.nffw +netronome/nic/nic_AMDA0081-0001_4x10.nffw +netronome/nic/nic_AMDA0078-0011_1x100.nffw +netronome/nic/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/nic/nic_AMDA0097-0001_2x40.nffw +netronome/nic/nic_AMDA0096-0001_2x10.nffw +netronome/nic/nic_AMDA0058-0012_2x40.nffw +netronome/nic/nic_AMDA0081-0001_1x40.nffw +netronome/nic/nic_AMDA0058-0011_2x40.nffw +netronome/nic/nic_AMDA0097-0001_8x10.nffw +netronome/flower/nic_AMDA0058.nffw +netronome/flower/nic_AMDA0099.nffw +netronome/flower/nic_AMDA0097.nffw +netronome/flower/nic_AMDA0096.nffw +netronome/bpf/nic_AMDA0099-0001_2x10.nffw +netronome/bpf/nic_AMDA0099-0001_2x25.nffw +netronome/bpf/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/bpf/nic_AMDA0081-0001_4x10.nffw +netronome/bpf/nic_AMDA0096-0001_2x10.nffw +netronome/bpf/nic_AMDA0078-0011_1x100.nffw +netronome/bpf/nic_AMDA0097-0001_8x10.nffw +netronome/bpf/nic_AMDA0058-0011_2x40.nffw +netronome/bpf/nic_AMDA0081-0001_1x40.nffw +netronome/bpf/nic_AMDA0058-0012_2x40.nffw +netronome/bpf/nic_AMDA0097-0001_2x40.nffw +netronome/bpf/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/nic-sriov/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/nic-sriov/nic_AMDA0097-0001_2x40.nffw +netronome/nic-sriov/nic_AMDA0081-0001_1x40.nffw +netronome/nic-sriov/nic_AMDA0058-0012_2x40.nffw +netronome/nic-sriov/nic_AMDA0058-0011_2x40.nffw +netronome/nic-sriov/nic_AMDA0097-0001_8x10.nffw +netronome/nic-sriov/nic_AMDA0078-0011_1x100.nffw +netronome/nic-sriov/nic_AMDA0096-0001_2x10.nffw +netronome/nic-sriov/nic_AMDA0081-0001_4x10.nffw +netronome/nic-sriov/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/nic-sriov/nic_AMDA0099-0001_2x25.nffw +netronome/nic-sriov/nic_AMDA0099-0001_2x10.nffw +nvidia/tu116/gr/gpccs_bl.bin +nvidia/tu116/gr/gpccs_data.bin +nvidia/tu116/gr/fecs_inst.bin +nvidia/tu116/gr/sw_bundle_init.bin +nvidia/tu116/gr/sw_ctx.bin +nvidia/tu116/gr/gpccs_sig.bin +nvidia/tu116/gr/sw_method_init.bin +nvidia/tu116/gr/sw_veid_bundle_init.bin +nvidia/tu116/gr/fecs_sig.bin +nvidia/tu116/gr/gpccs_inst.bin +nvidia/tu116/gr/fecs_data.bin +nvidia/tu116/gr/fecs_bl.bin +nvidia/tu116/gr/sw_nonctx.bin +nvidia/tu116/nvdec/scrubber.bin +nvidia/tu116/acr/bl.bin +nvidia/tu116/acr/ucode_ahesasc.bin +nvidia/tu116/acr/ucode_asb.bin +nvidia/tu116/acr/ucode_unload.bin +nvidia/tu116/acr/unload_bl.bin +nvidia/tu116/sec2/sig.bin +nvidia/tu116/sec2/image.bin +nvidia/tu116/sec2/desc.bin +nvidia/gp108/sec2/desc.bin +nvidia/gp108/sec2/sig.bin +nvidia/gp108/sec2/image.bin +nvidia/gp108/acr/bl.bin +nvidia/gp108/acr/ucode_load.bin +nvidia/gp108/acr/ucode_unload.bin +nvidia/gp108/acr/unload_bl.bin +nvidia/gp108/nvdec/scrubber.bin +nvidia/gp108/gr/gpccs_inst.bin +nvidia/gp108/gr/fecs_bl.bin +nvidia/gp108/gr/fecs_inst.bin +nvidia/gp108/gr/gpccs_bl.bin +nvidia/gp108/gr/sw_ctx.bin +nvidia/gp108/gr/gpccs_sig.bin +nvidia/gp108/gr/sw_bundle_init.bin +nvidia/gp108/gr/fecs_sig.bin +nvidia/gp108/gr/sw_method_init.bin +nvidia/gp108/gr/gpccs_data.bin +nvidia/gp108/gr/fecs_data.bin +nvidia/gp108/gr/sw_nonctx.bin +nvidia/gp102/nvdec/scrubber.bin +nvidia/gp102/gr/sw_bundle_init.bin +nvidia/gp102/gr/gpccs_bl.bin +nvidia/gp102/gr/gpccs_sig.bin +nvidia/gp102/gr/gpccs_data.bin +nvidia/gp102/gr/sw_ctx.bin +nvidia/gp102/gr/fecs_inst.bin +nvidia/gp102/gr/sw_nonctx.bin +nvidia/gp102/gr/fecs_data.bin +nvidia/gp102/gr/fecs_bl.bin +nvidia/gp102/gr/sw_method_init.bin +nvidia/gp102/gr/fecs_sig.bin +nvidia/gp102/gr/gpccs_inst.bin +nvidia/gp102/sec2/desc-1.bin +nvidia/gp102/sec2/sig.bin +nvidia/gp102/sec2/sig-1.bin +nvidia/gp102/sec2/image.bin +nvidia/gp102/sec2/image-1.bin +nvidia/gp102/sec2/desc.bin +nvidia/gp102/acr/bl.bin +nvidia/gp102/acr/ucode_load.bin +nvidia/gp102/acr/unload_bl.bin +nvidia/gp102/acr/ucode_unload.bin +nvidia/gm204/acr/ucode_load.bin +nvidia/gm204/acr/bl.bin +nvidia/gm204/acr/ucode_unload.bin +nvidia/gm204/gr/gpccs_sig.bin +nvidia/gm204/gr/gpccs_data.bin +nvidia/gm204/gr/fecs_inst.bin +nvidia/gm204/gr/sw_method_init.bin +nvidia/gm204/gr/gpccs_bl.bin +nvidia/gm204/gr/fecs_bl.bin +nvidia/gm204/gr/fecs_sig.bin +nvidia/gm204/gr/gpccs_inst.bin +nvidia/gm204/gr/sw_nonctx.bin +nvidia/gm204/gr/sw_bundle_init.bin +nvidia/gm204/gr/fecs_data.bin +nvidia/gm204/gr/sw_ctx.bin +nvidia/tegra186/xusb.bin +nvidia/tegra186/vic04_ucode.bin +nvidia/gp10b/pmu/desc.bin +nvidia/gp10b/pmu/image.bin +nvidia/gp10b/pmu/sig.bin +nvidia/gp10b/gr/fecs_data.bin +nvidia/gp10b/gr/gpccs_inst.bin +nvidia/gp10b/gr/sw_ctx.bin +nvidia/gp10b/gr/sw_nonctx.bin +nvidia/gp10b/gr/sw_bundle_init.bin +nvidia/gp10b/gr/fecs_bl.bin +nvidia/gp10b/gr/gpccs_bl.bin +nvidia/gp10b/gr/gpccs_sig.bin +nvidia/gp10b/gr/fecs_sig.bin +nvidia/gp10b/gr/gpccs_data.bin +nvidia/gp10b/gr/fecs_inst.bin +nvidia/gp10b/gr/sw_method_init.bin +nvidia/gp10b/acr/ucode_load.bin +nvidia/gp10b/acr/bl.bin +nvidia/tu102/gr/gpccs_data.bin +nvidia/tu102/gr/fecs_inst.bin +nvidia/tu102/gr/fecs_bl.bin +nvidia/tu102/gr/sw_veid_bundle_init.bin +nvidia/tu102/gr/gpccs_bl.bin +nvidia/tu102/gr/sw_bundle_init.bin +nvidia/tu102/gr/gpccs_sig.bin +nvidia/tu102/gr/sw_method_init.bin +nvidia/tu102/gr/fecs_sig.bin +nvidia/tu102/gr/gpccs_inst.bin +nvidia/tu102/gr/sw_ctx.bin +nvidia/tu102/gr/fecs_data.bin +nvidia/tu102/gr/sw_nonctx.bin +nvidia/tu102/nvdec/scrubber.bin +nvidia/tu102/sec2/image.bin +nvidia/tu102/sec2/desc.bin +nvidia/tu102/sec2/sig.bin +nvidia/tu102/acr/ucode_unload.bin +nvidia/tu102/acr/bl.bin +nvidia/tu102/acr/unload_bl.bin +nvidia/tu102/acr/ucode_asb.bin +nvidia/tu102/acr/ucode_ahesasc.bin +nvidia/tu10x/typec/ccg_primary.cyacd +nvidia/tu10x/typec/ccg_secondary.cyacd +nvidia/tu10x/typec/ccg_boot.cyacd +nvidia/tu106/gr/sw_method_init.bin +nvidia/tu106/gr/sw_veid_bundle_init.bin +nvidia/tu106/gr/gpccs_bl.bin +nvidia/tu106/gr/gpccs_inst.bin +nvidia/tu106/gr/sw_nonctx.bin +nvidia/tu106/gr/fecs_data.bin +nvidia/tu106/gr/gpccs_data.bin +nvidia/tu106/gr/sw_ctx.bin +nvidia/tu106/gr/fecs_inst.bin +nvidia/tu106/gr/sw_bundle_init.bin +nvidia/tu106/gr/fecs_sig.bin +nvidia/tu106/gr/fecs_bl.bin +nvidia/tu106/gr/gpccs_sig.bin +nvidia/tu106/acr/ucode_ahesasc.bin +nvidia/tu106/acr/ucode_unload.bin +nvidia/tu106/acr/unload_bl.bin +nvidia/tu106/acr/bl.bin +nvidia/tu106/acr/ucode_asb.bin +nvidia/tu106/sec2/desc.bin +nvidia/tu106/sec2/image.bin +nvidia/tu106/sec2/sig.bin +nvidia/tu106/nvdec/scrubber.bin +nvidia/tegra124/vic03_ucode.bin +nvidia/tegra124/xusb.bin +nvidia/gp106/sec2/desc.bin +nvidia/gp106/sec2/image-1.bin +nvidia/gp106/sec2/sig.bin +nvidia/gp106/sec2/sig-1.bin +nvidia/gp106/sec2/image.bin +nvidia/gp106/sec2/desc-1.bin +nvidia/gp106/gr/fecs_sig.bin +nvidia/gp106/gr/fecs_inst.bin +nvidia/gp106/gr/sw_bundle_init.bin +nvidia/gp106/gr/gpccs_sig.bin +nvidia/gp106/gr/gpccs_data.bin +nvidia/gp106/gr/gpccs_inst.bin +nvidia/gp106/gr/fecs_bl.bin +nvidia/gp106/gr/fecs_data.bin +nvidia/gp106/gr/gpccs_bl.bin +nvidia/gp106/gr/sw_ctx.bin +nvidia/gp106/gr/sw_nonctx.bin +nvidia/gp106/gr/sw_method_init.bin +nvidia/gp106/nvdec/scrubber.bin +nvidia/gp106/acr/ucode_unload.bin +nvidia/gp106/acr/bl.bin +nvidia/gp106/acr/ucode_load.bin +nvidia/gp106/acr/unload_bl.bin +nvidia/gm200/acr/ucode_unload.bin +nvidia/gm200/acr/bl.bin +nvidia/gm200/acr/ucode_load.bin +nvidia/gm200/gr/fecs_sig.bin +nvidia/gm200/gr/sw_ctx.bin +nvidia/gm200/gr/fecs_data.bin +nvidia/gm200/gr/gpccs_data.bin +nvidia/gm200/gr/sw_nonctx.bin +nvidia/gm200/gr/sw_method_init.bin +nvidia/gm200/gr/gpccs_inst.bin +nvidia/gm200/gr/fecs_inst.bin +nvidia/gm200/gr/sw_bundle_init.bin +nvidia/gm200/gr/gpccs_sig.bin +nvidia/gm200/gr/fecs_bl.bin +nvidia/gm200/gr/gpccs_bl.bin +nvidia/gp104/gr/sw_method_init.bin +nvidia/gp104/gr/gpccs_data.bin +nvidia/gp104/gr/sw_nonctx.bin +nvidia/gp104/gr/fecs_data.bin +nvidia/gp104/gr/fecs_sig.bin +nvidia/gp104/gr/fecs_inst.bin +nvidia/gp104/gr/gpccs_bl.bin +nvidia/gp104/gr/sw_ctx.bin +nvidia/gp104/gr/fecs_bl.bin +nvidia/gp104/gr/sw_bundle_init.bin +nvidia/gp104/gr/gpccs_sig.bin +nvidia/gp104/gr/gpccs_inst.bin +nvidia/gp104/nvdec/scrubber.bin +nvidia/gp104/acr/ucode_unload.bin +nvidia/gp104/acr/bl.bin +nvidia/gp104/acr/ucode_load.bin +nvidia/gp104/acr/unload_bl.bin +nvidia/gp104/sec2/desc-1.bin +nvidia/gp104/sec2/image.bin +nvidia/gp104/sec2/image-1.bin +nvidia/gp104/sec2/desc.bin +nvidia/gp104/sec2/sig-1.bin +nvidia/gp104/sec2/sig.bin +nvidia/gk20a/gpccs_inst.bin +nvidia/gk20a/sw_ctx.bin +nvidia/gk20a/sw_bundle_init.bin +nvidia/gk20a/fecs_inst.bin +nvidia/gk20a/sw_method_init.bin +nvidia/gk20a/fecs_data.bin +nvidia/gk20a/sw_nonctx.bin +nvidia/gk20a/gpccs_data.bin +nvidia/tegra210/vic04_ucode.bin +nvidia/tegra210/xusb.bin +nvidia/gm20b/gr/fecs_inst.bin +nvidia/gm20b/gr/sw_ctx.bin +nvidia/gm20b/gr/gpccs_data.bin +nvidia/gm20b/gr/fecs_bl.bin +nvidia/gm20b/gr/sw_method_init.bin +nvidia/gm20b/gr/fecs_sig.bin +nvidia/gm20b/gr/sw_bundle_init.bin +nvidia/gm20b/gr/sw_nonctx.bin +nvidia/gm20b/gr/fecs_data.bin +nvidia/gm20b/gr/gpccs_inst.bin +nvidia/gm20b/acr/ucode_load.bin +nvidia/gm20b/acr/bl.bin +nvidia/gm20b/pmu/image.bin +nvidia/gm20b/pmu/sig.bin +nvidia/gm20b/pmu/desc.bin +nvidia/tu104/acr/ucode_ahesasc.bin +nvidia/tu104/acr/ucode_unload.bin +nvidia/tu104/acr/unload_bl.bin +nvidia/tu104/acr/ucode_asb.bin +nvidia/tu104/acr/bl.bin +nvidia/tu104/sec2/desc.bin +nvidia/tu104/sec2/image.bin +nvidia/tu104/sec2/sig.bin +nvidia/tu104/gr/sw_ctx.bin +nvidia/tu104/gr/gpccs_bl.bin +nvidia/tu104/gr/sw_nonctx.bin +nvidia/tu104/gr/fecs_data.bin +nvidia/tu104/gr/sw_method_init.bin +nvidia/tu104/gr/gpccs_data.bin +nvidia/tu104/gr/fecs_bl.bin +nvidia/tu104/gr/sw_bundle_init.bin +nvidia/tu104/gr/gpccs_inst.bin +nvidia/tu104/gr/gpccs_sig.bin +nvidia/tu104/gr/fecs_sig.bin +nvidia/tu104/gr/sw_veid_bundle_init.bin +nvidia/tu104/gr/fecs_inst.bin +nvidia/tu104/nvdec/scrubber.bin +nvidia/tegra194/xusb.bin +nvidia/gv100/nvdec/scrubber.bin +nvidia/gv100/gr/gpccs_data.bin +nvidia/gv100/gr/fecs_data.bin +nvidia/gv100/gr/sw_nonctx.bin +nvidia/gv100/gr/sw_method_init.bin +nvidia/gv100/gr/gpccs_bl.bin +nvidia/gv100/gr/sw_bundle_init.bin +nvidia/gv100/gr/fecs_inst.bin +nvidia/gv100/gr/sw_ctx.bin +nvidia/gv100/gr/fecs_bl.bin +nvidia/gv100/gr/fecs_sig.bin +nvidia/gv100/gr/gpccs_sig.bin +nvidia/gv100/gr/gpccs_inst.bin +nvidia/gv100/sec2/desc.bin +nvidia/gv100/sec2/sig.bin +nvidia/gv100/sec2/image.bin +nvidia/gv100/acr/bl.bin +nvidia/gv100/acr/ucode_unload.bin +nvidia/gv100/acr/unload_bl.bin +nvidia/gv100/acr/ucode_load.bin +nvidia/tu117/gr/gpccs_sig.bin +nvidia/tu117/gr/fecs_bl.bin +nvidia/tu117/gr/fecs_sig.bin +nvidia/tu117/gr/gpccs_inst.bin +nvidia/tu117/gr/fecs_inst.bin +nvidia/tu117/gr/sw_method_init.bin +nvidia/tu117/gr/sw_veid_bundle_init.bin +nvidia/tu117/gr/sw_nonctx.bin +nvidia/tu117/gr/gpccs_data.bin +nvidia/tu117/gr/sw_bundle_init.bin +nvidia/tu117/gr/fecs_data.bin +nvidia/tu117/gr/gpccs_bl.bin +nvidia/tu117/gr/sw_ctx.bin +nvidia/tu117/acr/unload_bl.bin +nvidia/tu117/acr/bl.bin +nvidia/tu117/acr/ucode_asb.bin +nvidia/tu117/acr/ucode_unload.bin +nvidia/tu117/acr/ucode_ahesasc.bin +nvidia/tu117/sec2/image.bin +nvidia/tu117/sec2/desc.bin +nvidia/tu117/sec2/sig.bin +nvidia/tu117/nvdec/scrubber.bin +nvidia/gp107/acr/ucode_unload.bin +nvidia/gp107/acr/bl.bin +nvidia/gp107/acr/unload_bl.bin +nvidia/gp107/acr/ucode_load.bin +nvidia/gp107/nvdec/scrubber.bin +nvidia/gp107/gr/gpccs_inst.bin +nvidia/gp107/gr/gpccs_bl.bin +nvidia/gp107/gr/sw_bundle_init.bin +nvidia/gp107/gr/sw_nonctx.bin +nvidia/gp107/gr/fecs_data.bin +nvidia/gp107/gr/sw_ctx.bin +nvidia/gp107/gr/sw_method_init.bin +nvidia/gp107/gr/fecs_inst.bin +nvidia/gp107/gr/fecs_bl.bin +nvidia/gp107/gr/gpccs_sig.bin +nvidia/gp107/gr/gpccs_data.bin +nvidia/gp107/gr/fecs_sig.bin +nvidia/gp107/sec2/sig-1.bin +nvidia/gp107/sec2/image.bin +nvidia/gp107/sec2/desc.bin +nvidia/gp107/sec2/desc-1.bin +nvidia/gp107/sec2/image-1.bin +nvidia/gp107/sec2/sig.bin +nvidia/gm206/acr/bl.bin +nvidia/gm206/acr/ucode_unload.bin +nvidia/gm206/acr/ucode_load.bin +nvidia/gm206/gr/sw_bundle_init.bin +nvidia/gm206/gr/gpccs_data.bin +nvidia/gm206/gr/fecs_inst.bin +nvidia/gm206/gr/gpccs_sig.bin +nvidia/gm206/gr/fecs_sig.bin +nvidia/gm206/gr/fecs_bl.bin +nvidia/gm206/gr/gpccs_bl.bin +nvidia/gm206/gr/sw_nonctx.bin +nvidia/gm206/gr/gpccs_inst.bin +nvidia/gm206/gr/sw_method_init.bin +nvidia/gm206/gr/fecs_data.bin +nvidia/gm206/gr/sw_ctx.bin +nvidia/gp100/gr/sw_bundle_init.bin +nvidia/gp100/gr/sw_nonctx.bin +nvidia/gp100/gr/fecs_data.bin +nvidia/gp100/gr/fecs_sig.bin +nvidia/gp100/gr/gpccs_inst.bin +nvidia/gp100/gr/fecs_bl.bin +nvidia/gp100/gr/gpccs_sig.bin +nvidia/gp100/gr/sw_ctx.bin +nvidia/gp100/gr/fecs_inst.bin +nvidia/gp100/gr/sw_method_init.bin +nvidia/gp100/gr/gpccs_bl.bin +nvidia/gp100/gr/gpccs_data.bin +nvidia/gp100/acr/ucode_load.bin +nvidia/gp100/acr/bl.bin +nvidia/gp100/acr/ucode_unload.bin +phanfw.bin +qat_895xcc.bin +qat_895xcc_mmp.bin +qat_c3xxx.bin +qat_c3xxx_mmp.bin +qat_c62x.bin +qat_c62x_mmp.bin +qca/rampatch_usb_00000302.bin +qca/nvm_00130300.bin +qca/crnv32.bin +qca/rampatch_00130302.bin +qca/nvm_usb_00000302.bin +qca/nvm_00440302_eu.bin +qca/crbtfw21.tlv +qca/rampatch_00440302.bin +qca/nvm_usb_00000201.bin +qca/rampatch_usb_00000200.bin +qca/nvm_00440302.bin +qca/nvm_00440302_i2s_eu.bin +qca/rampatch_usb_00000300.bin +qca/nvm_usb_00000302_eu.bin +qca/NOTICE.txt +qca/nvm_00130302.bin +qca/crnv21.bin +qca/nvm_usb_00000200.bin +qca/rampatch_usb_00000201.bin +qca/crbtfw32.tlv +qca/nvm_usb_00000300.bin +qca/rampatch_00130300.bin +qcom/a530v3_gpmu.fw2 +qcom/a630_sqe.fw +qcom/a300_pfp.fw +qcom/a530_zap.b00 +qcom/venus-5.4/venus.b04 +qcom/venus-5.4/venus.b03 +qcom/venus-5.4/venus.b00 +qcom/venus-5.4/venus.b02 +qcom/venus-5.4/venus.mbn +qcom/venus-5.4/venus.b01 +qcom/venus-5.4/venus.mdt +qcom/venus-1.8/venus.b00 +qcom/venus-1.8/venus.b04 +qcom/venus-1.8/venus.b03 +qcom/venus-1.8/venus.mdt +qcom/venus-1.8/venus.b01 +qcom/venus-1.8/venus.b02 +qcom/a300_pm4.fw +qcom/venus-4.2/venus.mdt +qcom/venus-4.2/venus.b01 +qcom/venus-4.2/venus.b02 +qcom/venus-4.2/venus.b00 +qcom/venus-4.2/venus.b03 +qcom/venus-4.2/venus.b04 +qcom/a530_zap.mdt +qcom/a630_gmu.bin +qcom/sdm845/cdspr.jsn +qcom/sdm845/adsp.mbn +qcom/sdm845/cdsp.mbn +qcom/sdm845/modemuw.jsn +qcom/sdm845/mba.mbn +qcom/sdm845/adspr.jsn +qcom/sdm845/modem.mbn +qcom/sdm845/adspua.jsn +qcom/a530_zap.b01 +qcom/a530_pm4.fw +qcom/venus-5.2/venus.b00 +qcom/venus-5.2/venus.b03 +qcom/venus-5.2/venus.b04 +qcom/venus-5.2/venus.mbn +qcom/venus-5.2/venus.b01 +qcom/venus-5.2/venus.mdt +qcom/venus-5.2/venus.b02 +qcom/a530_pfp.fw +qcom/a530_zap.b02 +qcom/NOTICE.txt +qed/qed_init_values-8.14.6.0.bin +qed/qed_init_values-8.33.12.0.bin +qed/qed_init_values_zipped-8.15.3.0.bin +qed/qed_init_values_zipped-8.42.2.0.bin +qed/qed_init_values-8.37.7.0.bin +qed/qed_init_values_zipped-8.33.1.0.bin +qed/qed_init_values-8.20.0.0.bin +qed/qed_init_values_zipped-8.4.2.0.bin +qed/qed_init_values_zipped-8.37.2.0.bin +qed/qed_init_values_zipped-8.33.11.0.bin +qed/qed_init_values-8.18.9.0.bin +qed/qed_init_values-8.10.9.0.bin +qed/qed_init_values_zipped-8.10.10.0.bin +qed/qed_init_values_zipped-8.10.5.0.bin +qed/qed_init_values-8.40.33.0.bin +qed/qed_init_values_zipped-8.7.3.0.bin +qed/qed_init_values_zipped-8.20.0.0.bin +qed/qed_init_values-8.30.12.0.bin +qed/qed_init_values_zipped-8.37.7.0.bin +ql2100_fw.bin +ql2200_fw.bin +ql2300_fw.bin +ql2322_fw.bin +ql2400_fw.bin +ql2500_fw.bin +qlogic/12160.bin +qlogic/sd7220.fw +qlogic/1040.bin +qlogic/1280.bin +r128/r128_cce.bin +r8a779x_usb3_v1.dlmem +r8a779x_usb3_v2.dlmem +r8a779x_usb3_v3.dlmem +radeon/RV740_smc.bin +radeon/R420_cp.bin +radeon/pitcairn_rlc.bin +radeon/verde_rlc.bin +radeon/PITCAIRN_mc.bin +radeon/hawaii_k_smc.bin +radeon/JUNIPER_smc.bin +radeon/bonaire_sdma1.bin +radeon/bonaire_mec.bin +radeon/HAWAII_mec.bin +radeon/BONAIRE_rlc.bin +radeon/SUMO_me.bin +radeon/tahiti_me.bin +radeon/KAVERI_pfp.bin +radeon/R600_uvd.bin +radeon/kaveri_me.bin +radeon/BARTS_pfp.bin +radeon/CAICOS_pfp.bin +radeon/CAYMAN_smc.bin +radeon/si58_mc.bin +radeon/TAHITI_pfp.bin +radeon/CAYMAN_mc.bin +radeon/hawaii_pfp.bin +radeon/MULLINS_rlc.bin +radeon/hainan_k_smc.bin +radeon/mullins_mec.bin +radeon/kaveri_mec.bin +radeon/HAWAII_sdma.bin +radeon/verde_ce.bin +radeon/OLAND_pfp.bin +radeon/kabini_rlc.bin +radeon/PITCAIRN_pfp.bin +radeon/KAVERI_sdma.bin +radeon/KABINI_ce.bin +radeon/BTC_rlc.bin +radeon/mullins_ce.bin +radeon/OLAND_me.bin +radeon/pitcairn_me.bin +radeon/RV610_pfp.bin +radeon/VERDE_smc.bin +radeon/hainan_ce.bin +radeon/HAWAII_me.bin +radeon/HAWAII_mc2.bin +radeon/bonaire_me.bin +radeon/HAINAN_mc.bin +radeon/TURKS_smc.bin +radeon/RS780_pfp.bin +radeon/RV730_smc.bin +radeon/HAINAN_pfp.bin +radeon/RV710_pfp.bin +radeon/verde_k_smc.bin +radeon/RV710_me.bin +radeon/kabini_sdma1.bin +radeon/mullins_sdma.bin +radeon/VERDE_mc.bin +radeon/REDWOOD_pfp.bin +radeon/SUMO_pfp.bin +radeon/RV635_me.bin +radeon/JUNIPER_me.bin +radeon/pitcairn_smc.bin +radeon/verde_smc.bin +radeon/tahiti_pfp.bin +radeon/kaveri_pfp.bin +radeon/BONAIRE_vce.bin +radeon/mullins_pfp.bin +radeon/JUNIPER_rlc.bin +radeon/R100_cp.bin +radeon/kabini_uvd.bin +radeon/hawaii_mec.bin +radeon/kabini_me.bin +radeon/BONAIRE_smc.bin +radeon/KABINI_sdma.bin +radeon/banks_k_2_smc.bin +radeon/CAYMAN_rlc.bin +radeon/CAYMAN_me.bin +radeon/tahiti_k_smc.bin +radeon/R700_rlc.bin +radeon/RV770_pfp.bin +radeon/R520_cp.bin +radeon/tahiti_mc.bin +radeon/CEDAR_pfp.bin +radeon/SUMO2_pfp.bin +radeon/HAINAN_mc2.bin +radeon/kabini_vce.bin +radeon/CYPRESS_pfp.bin +radeon/KAVERI_mec.bin +radeon/KABINI_rlc.bin +radeon/BONAIRE_ce.bin +radeon/oland_ce.bin +radeon/R600_rlc.bin +radeon/PITCAIRN_me.bin +radeon/RV670_pfp.bin +radeon/bonaire_pfp.bin +radeon/HAWAII_pfp.bin +radeon/BONAIRE_uvd.bin +radeon/KAVERI_ce.bin +radeon/CYPRESS_me.bin +radeon/MULLINS_me.bin +radeon/TAHITI_ce.bin +radeon/RV610_me.bin +radeon/VERDE_me.bin +radeon/PITCAIRN_mc2.bin +radeon/REDWOOD_me.bin +radeon/OLAND_mc2.bin +radeon/hainan_pfp.bin +radeon/VERDE_rlc.bin +radeon/BONAIRE_sdma.bin +radeon/ARUBA_pfp.bin +radeon/TAHITI_mc2.bin +radeon/HAINAN_me.bin +radeon/hawaii_ce.bin +radeon/pitcairn_mc.bin +radeon/kaveri_mec2.bin +radeon/OLAND_mc.bin +radeon/RS780_me.bin +radeon/bonaire_mc.bin +radeon/oland_pfp.bin +radeon/HAWAII_mc.bin +radeon/VERDE_pfp.bin +radeon/hainan_mc.bin +radeon/hainan_rlc.bin +radeon/R600_me.bin +radeon/RV630_pfp.bin +radeon/oland_k_smc.bin +radeon/TURKS_mc.bin +radeon/SUMO_uvd.bin +radeon/ARUBA_rlc.bin +radeon/HAINAN_ce.bin +radeon/TURKS_pfp.bin +radeon/hawaii_me.bin +radeon/RV730_pfp.bin +radeon/RV710_smc.bin +radeon/HAINAN_smc.bin +radeon/bonaire_sdma.bin +radeon/BONAIRE_mc2.bin +radeon/pitcairn_k_smc.bin +radeon/oland_rlc.bin +radeon/RS780_uvd.bin +radeon/VERDE_ce.bin +radeon/RV710_uvd.bin +radeon/REDWOOD_smc.bin +radeon/JUNIPER_pfp.bin +radeon/mullins_rlc.bin +radeon/MULLINS_ce.bin +radeon/hawaii_uvd.bin +radeon/TAHITI_me.bin +radeon/BARTS_mc.bin +radeon/kaveri_rlc.bin +radeon/KAVERI_me.bin +radeon/SUMO2_me.bin +radeon/kabini_mec.bin +radeon/tahiti_rlc.bin +radeon/BONAIRE_me.bin +radeon/oland_me.bin +radeon/TAHITI_vce.bin +radeon/PITCAIRN_ce.bin +radeon/RS690_cp.bin +radeon/CEDAR_me.bin +radeon/RV670_me.bin +radeon/CAICOS_smc.bin +radeon/BARTS_smc.bin +radeon/CAYMAN_pfp.bin +radeon/RV630_me.bin +radeon/TAHITI_smc.bin +radeon/MULLINS_mec.bin +radeon/KABINI_pfp.bin +radeon/kaveri_sdma.bin +radeon/BONAIRE_mec.bin +radeon/CYPRESS_rlc.bin +radeon/hawaii_smc.bin +radeon/R200_cp.bin +radeon/CEDAR_rlc.bin +radeon/kabini_ce.bin +radeon/CAICOS_mc.bin +radeon/hawaii_sdma.bin +radeon/ARUBA_me.bin +radeon/TAHITI_uvd.bin +radeon/hawaii_vce.bin +radeon/PALM_pfp.bin +radeon/R600_pfp.bin +radeon/verde_mc.bin +radeon/HAWAII_rlc.bin +radeon/bonaire_rlc.bin +radeon/OLAND_smc.bin +radeon/PITCAIRN_smc.bin +radeon/hainan_smc.bin +radeon/RS600_cp.bin +radeon/HAINAN_rlc.bin +radeon/RV620_me.bin +radeon/mullins_sdma1.bin +radeon/MULLINS_sdma.bin +radeon/hawaii_mc.bin +radeon/RV620_pfp.bin +radeon/bonaire_ce.bin +radeon/hainan_me.bin +radeon/oland_smc.bin +radeon/HAWAII_ce.bin +radeon/SUMO_rlc.bin +radeon/REDWOOD_rlc.bin +radeon/pitcairn_ce.bin +radeon/TURKS_me.bin +radeon/PALM_me.bin +radeon/mullins_me.bin +radeon/OLAND_ce.bin +radeon/R300_cp.bin +radeon/kabini_sdma.bin +radeon/CYPRESS_uvd.bin +radeon/RV635_pfp.bin +radeon/KABINI_me.bin +radeon/RV770_uvd.bin +radeon/verde_me.bin +radeon/pitcairn_pfp.bin +radeon/verde_pfp.bin +radeon/kaveri_sdma1.bin +radeon/tahiti_smc.bin +radeon/TAHITI_rlc.bin +radeon/kaveri_vce.bin +radeon/bonaire_uvd.bin +radeon/KAVERI_rlc.bin +radeon/mullins_vce.bin +radeon/BONAIRE_pfp.bin +radeon/CAICOS_me.bin +radeon/KABINI_mec.bin +radeon/bonaire_vce.bin +radeon/MULLINS_pfp.bin +radeon/kaveri_uvd.bin +radeon/mullins_uvd.bin +radeon/CYPRESS_smc.bin +radeon/hawaii_rlc.bin +radeon/bonaire_k_smc.bin +radeon/kaveri_ce.bin +radeon/RV770_smc.bin +radeon/hawaii_sdma1.bin +radeon/tahiti_ce.bin +radeon/CEDAR_smc.bin +radeon/BARTS_me.bin +radeon/RV730_me.bin +radeon/RV770_me.bin +radeon/TAHITI_mc.bin +radeon/BONAIRE_mc.bin +radeon/kabini_pfp.bin +radeon/PITCAIRN_rlc.bin +radeon/oland_mc.bin +radeon/OLAND_rlc.bin +radeon/bonaire_smc.bin +radeon/HAWAII_smc.bin +radeon/VERDE_mc2.bin +rockchip/dptx.bin +rp2.fw +rsi/rs9113_wlan_bt_dual_mode.rps +rsi/rs9116_wlan_bt_classic.rps +rsi/rs9113_wlan_qspi.rps +rsi/rs9113_ap_bt_dual_mode.rps +rsi/rs9116_wlan.rps +rsi_91x.fw +rt2561.bin +rt2561s.bin +rt2661.bin +rt2860.bin +rt2870.bin +rt3071.bin +rt3290.bin +rt73.bin +rtl_bt/rtl8822cs_config.bin +rtl_bt/rtl8723bs_fw.bin +rtl_bt/rtl8822b_fw.bin +rtl_bt/rtl8192eu_fw.bin +rtl_bt/rtl8723b_fw.bin +rtl_bt/rtl8723d_fw.bin +rtl_bt/rtl8821c_fw.bin +rtl_bt/rtl8821a_fw.bin +rtl_bt/rtl8812ae_fw.bin +rtl_bt/rtl8723d_config.bin +rtl_bt/rtl8192ee_fw.bin +rtl_bt/rtl8822cs_fw.bin +rtl_bt/rtl8822b_config.bin +rtl_bt/rtl8821c_config.bin +rtl_bt/rtl8723a_fw.bin +rtl_bt/rtl8761a_fw.bin +rtl_bt/rtl8723bs_config-OBDA8723.bin +rtl_bt/rtl8822cu_fw.bin +rtl_bt/rtl8822cu_config.bin +rtl_nic/rtl8168f-1.fw +rtl_nic/rtl8402-1.fw +rtl_nic/rtl8153b-2.fw +rtl_nic/rtl8168f-2.fw +rtl_nic/rtl8168g-2.fw +rtl_nic/rtl8168g-3.fw +rtl_nic/rtl8168g-1.fw +rtl_nic/rtl8153a-2.fw +rtl_nic/rtl8411-2.fw +rtl_nic/rtl8168fp-3.fw +rtl_nic/rtl8168e-2.fw +rtl_nic/rtl8107e-2.fw +rtl_nic/rtl8106e-1.fw +rtl_nic/rtl8168e-3.fw +rtl_nic/rtl8153a-3.fw +rtl_nic/rtl8411-1.fw +rtl_nic/rtl8106e-2.fw +rtl_nic/rtl8168e-1.fw +rtl_nic/rtl8107e-1.fw +rtl_nic/rtl8153a-4.fw +rtl_nic/rtl8168d-1.fw +rtl_nic/rtl8168h-2.fw +rtl_nic/rtl8125a-3.fw +rtl_nic/rtl8105e-1.fw +rtl_nic/rtl8168d-2.fw +rtl_nic/rtl8168h-1.fw +rtlwifi/rtl8723befw.bin +rtlwifi/rtl8192cufw_B.bin +rtlwifi/rtl8822befw.bin +rtlwifi/rtl8812aefw.bin +rtlwifi/rtl8192eu_wowlan.bin +rtlwifi/rtl8723aufw_A.bin +rtlwifi/rtl8192cfwU_B.bin +rtlwifi/rtl8192eefw.bin +rtlwifi/rtl8188eufw.bin +rtlwifi/rtl8821aefw.bin +rtlwifi/rtl8821aefw_29.bin +rtlwifi/rtl8192cfw.bin +rtlwifi/rtl8188efw.bin +rtlwifi/rtl8812aefw_wowlan.bin +rtlwifi/rtl8723bs_nic.bin +rtlwifi/rtl8723bu_ap_wowlan.bin +rtlwifi/rtl8723defw.bin +rtlwifi/rtl8723befw_36.bin +rtlwifi/rtl8723bs_wowlan.bin +rtlwifi/rtl8192cfwU.bin +rtlwifi/rtl8723aufw_B_NoBT.bin +rtlwifi/rtl8712u.bin +rtlwifi/rtl8821aefw_wowlan.bin +rtlwifi/rtl8723bu_nic.bin +rtlwifi/rtl8192cufw_TMSC.bin +rtlwifi/rtl8723bu_wowlan.bin +rtlwifi/rtl8723bs_ap_wowlan.bin +rtlwifi/rtl8192cufw.bin +rtlwifi/rtl8192eu_ap_wowlan.bin +rtlwifi/rtl8723aufw_B.bin +rtlwifi/rtl8192eu_nic.bin +rtlwifi/rtl8723bs_bt.bin +rtlwifi/rtl8723fw.bin +rtlwifi/rtl8192cufw_A.bin +rtlwifi/rtl8192defw.bin +rtlwifi/rtl8723fw_B.bin +rtlwifi/rtl8192sefw.bin +rtw88/rtw8822c_fw.bin +rtw88/rtw8822c_wow_fw.bin +rtw88/rtw8723d_fw.bin +rtw88/README +rtw88/rtw8822b_fw.bin +s5p-mfc-v6-v2.fw +s5p-mfc-v6.fw +s5p-mfc-v7.fw +s5p-mfc-v8.fw +s5p-mfc.fw +sdd_sagrad_1091_1098.bin +slicoss/oasisrcvucode.sys +slicoss/gbdownload.sys +slicoss/oasisdbgdownload.sys +slicoss/oasisdownload.sys +slicoss/gbrcvucode.sys +sms1xxx-hcw-55xxx-dvbt-02.fw +sms1xxx-hcw-55xxx-isdbt-02.fw +sms1xxx-nova-a-dvbt-01.fw +sms1xxx-nova-b-dvbt-01.fw +sms1xxx-stellar-dvbt-01.fw +sxg/saharadownloadB.sys +sxg/saharadbgdownloadB.sys +tdmb_nova_12mhz.inp +tehuti/bdx.bin +ti-connectivity/wl128x-fw-4-plt.bin +ti-connectivity/TIInit_6.2.31.bts +ti-connectivity/wl128x-fw-4-sr.bin +ti-connectivity/wl127x-fw-5-mr.bin +ti-connectivity/wl1251-nvs.bin +ti-connectivity/wl18xx-fw.bin +ti-connectivity/wl127x-fw-3.bin +ti-connectivity/wl18xx-fw-2.bin +ti-connectivity/wl127x-fw-4-plt.bin +ti-connectivity/wl128x-fw-3.bin +ti-connectivity/TIInit_7.2.31.bts +ti-connectivity/wl127x-fw-4-sr.bin +ti-connectivity/wl127x-fw-5-plt.bin +ti-connectivity/wl18xx-fw-4.bin +ti-connectivity/wl128x-fw-5-plt.bin +ti-connectivity/wl18xx-fw-3.bin +ti-connectivity/wl128x-fw-5-mr.bin +ti-connectivity/wl1271-fw.bin +ti-connectivity/TIInit_6.6.15.bts +ti-connectivity/wl127x-fw-5-sr.bin +ti-connectivity/wl128x-fw.bin +ti-connectivity/wl1251-fw.bin +ti-connectivity/wl128x-fw-4-mr.bin +ti-connectivity/wl128x-fw-5-sr.bin +ti-connectivity/wl1271-fw-2.bin +ti-connectivity/wl128x-fw-plt-3.bin +ti-connectivity/wl127x-nvs.bin +ti-connectivity/wl128x-nvs.bin +ti-connectivity/wl127x-fw-plt-3.bin +ti-connectivity/wl1271-fw-ap.bin +ti-connectivity/wl128x-fw-ap.bin +ti-connectivity/wl127x-fw-4-mr.bin +ti-keystone/ks2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin +tigon/tg357766.bin +tigon/tg3_tso5.bin +tigon/tg3.bin +tigon/tg3_tso.bin +tlg2300_firmware.bin +ueagle-atm/DSP9i.bin +ueagle-atm/DSPep.bin +ueagle-atm/CMVep.bin +ueagle-atm/eagleI.fw +ueagle-atm/CMV9i.bin +ueagle-atm/CMVepES.bin +ueagle-atm/CMVepIT.bin +ueagle-atm/adi930.fw +ueagle-atm/CMVepFR04.bin +ueagle-atm/eagleIII.fw +ueagle-atm/eagleII.fw +ueagle-atm/CMVei.bin +ueagle-atm/eagleIV.fw +ueagle-atm/CMV9p.bin +ueagle-atm/DSP9p.bin +ueagle-atm/CMVepFR.bin +ueagle-atm/CMVepES03.bin +ueagle-atm/DSPei.bin +ueagle-atm/CMV4p.bin.v2 +ueagle-atm/CMVepWO.bin +ueagle-atm/CMVeiWO.bin +ueagle-atm/930-fpga.bin +ueagle-atm/CMVepFR10.bin +ueagle-atm/DSP4p.bin +usbdux_firmware.bin +usbduxfast_firmware.bin +usbduxsigma_firmware.bin +v4l-cx231xx-avcore-01.fw +v4l-cx23418-apu.fw +v4l-cx23418-cpu.fw +v4l-cx23418-dig.fw +v4l-cx23885-avcore-01.fw +v4l-cx25840.fw +vntwusb.fw +vxge/X3fw.ncf +vxge/X3fw-pxe.ncf +wil6210.brd +wil6210.fw +wsm_22.bin diff --git a/savedconfig/sys-kernel/linux-firmware-20200421 b/savedconfig/sys-kernel/linux-firmware-20200421 @@ -0,0 +1,2058 @@ +# Remove files that shall not be installed from this list. +3com/typhoon.bin +RTL8192E/boot.img +RTL8192E/data.img +RTL8192E/main.img +TDA7706_OM_v2.5.1_boot.txt +TDA7706_OM_v3.0.2_boot.txt +advansys/mcode.bin +advansys/38C1600.bin +advansys/38C0800.bin +advansys/3550.bin +agere_ap_fw.bin +agere_sta_fw.bin +amd/amd_sev_fam17h_model0xh.sbin +amd-ucode/microcode_amd_fam16h.bin +amd-ucode/microcode_amd_fam17h.bin.asc +amd-ucode/microcode_amd_fam16h.bin.asc +amd-ucode/microcode_amd_fam17h.bin +amd-ucode/microcode_amd_fam15h.bin.asc +amd-ucode/microcode_amd_fam15h.bin +amd-ucode/microcode_amd.bin.asc +amd-ucode/microcode_amd.bin +amdgpu/vega10_uvd.bin +amdgpu/bonaire_mc.bin +amdgpu/picasso_mec2.bin +amdgpu/polaris10_uvd.bin +amdgpu/tonga_vce.bin +amdgpu/tonga_smc.bin +amdgpu/raven2_sdma.bin +amdgpu/raven2_ce.bin +amdgpu/raven2_ta.bin +amdgpu/topaz_sdma.bin +amdgpu/navi10_vcn.bin +amdgpu/bonaire_mec.bin +amdgpu/oland_rlc.bin +amdgpu/navi14_vcn.bin +amdgpu/vega20_mec2.bin +amdgpu/vegam_mec.bin +amdgpu/vega12_ce.bin +amdgpu/vega10_smc.bin +amdgpu/mullins_mec.bin +amdgpu/stoney_mec.bin +amdgpu/vega10_mec2.bin +amdgpu/polaris10_smc.bin +amdgpu/navi14_pfp.bin +amdgpu/hainan_mc.bin +amdgpu/navi10_pfp.bin +amdgpu/polaris10_ce_2.bin +amdgpu/polaris12_k_mc.bin +amdgpu/polaris10_vce.bin +amdgpu/picasso_asd.bin +amdgpu/hainan_pfp.bin +amdgpu/tonga_uvd.bin +amdgpu/mullins_sdma1.bin +amdgpu/hawaii_me.bin +amdgpu/vega10_vce.bin +amdgpu/navi14_sdma1.bin +amdgpu/raven_me.bin +amdgpu/vega20_mec.bin +amdgpu/renoir_rlc.bin +amdgpu/navi14_mec2_wks.bin +amdgpu/polaris11_mec2_2.bin +amdgpu/vega12_mec.bin +amdgpu/topaz_me.bin +amdgpu/verde_k_smc.bin +amdgpu/kabini_ce.bin +amdgpu/polaris10_mec_2.bin +amdgpu/pitcairn_smc.bin +amdgpu/tonga_me.bin +amdgpu/polaris12_mec.bin +amdgpu/picasso_me.bin +amdgpu/pitcairn_k_smc.bin +amdgpu/navi14_ta.bin +amdgpu/polaris10_mec2.bin +amdgpu/pitcairn_me.bin +amdgpu/kabini_vce.bin +amdgpu/renoir_asd.bin +amdgpu/tahiti_k_smc.bin +amdgpu/polaris11_mec_2.bin +amdgpu/picasso_rlc.bin +amdgpu/verde_mc.bin +amdgpu/navi14_ce.bin +amdgpu/polaris11_mc.bin +amdgpu/tonga_sdma.bin +amdgpu/fiji_mec.bin +amdgpu/vegam_sdma.bin +amdgpu/raven_gpu_info.bin +amdgpu/polaris11_rlc.bin +amdgpu/topaz_smc.bin +amdgpu/navi14_pfp_wks.bin +amdgpu/hawaii_mec.bin +amdgpu/raven_mec.bin +amdgpu/carrizo_mec.bin +amdgpu/oland_me.bin +amdgpu/vega10_ce.bin +amdgpu/polaris12_mec_2.bin +amdgpu/kabini_uvd.bin +amdgpu/kaveri_pfp.bin +amdgpu/navi10_sdma1.bin +amdgpu/bonaire_k_smc.bin +amdgpu/raven_kicker_rlc.bin +amdgpu/tahiti_pfp.bin +amdgpu/vega20_pfp.bin +amdgpu/hawaii_mc.bin +amdgpu/polaris11_pfp_2.bin +amdgpu/polaris11_smc_sk.bin +amdgpu/raven_mec2.bin +amdgpu/vega12_sdma1.bin +amdgpu/polaris12_sdma.bin +amdgpu/polaris11_ce_2.bin +amdgpu/polaris12_me_2.bin +amdgpu/navi10_gpu_info.bin +amdgpu/navi10_mec.bin +amdgpu/tonga_rlc.bin +amdgpu/navi14_mec.bin +amdgpu/polaris10_pfp_2.bin +amdgpu/stoney_pfp.bin +amdgpu/hainan_me.bin +amdgpu/oland_smc.bin +amdgpu/polaris10_ce.bin +amdgpu/mullins_pfp.bin +amdgpu/vegam_pfp.bin +amdgpu/polaris11_k2_smc.bin +amdgpu/kabini_sdma1.bin +amdgpu/bonaire_pfp.bin +amdgpu/vega10_rlc.bin +amdgpu/mullins_sdma.bin +amdgpu/vegam_me.bin +amdgpu/polaris10_rlc.bin +amdgpu/raven2_rlc.bin +amdgpu/vega10_sdma1.bin +amdgpu/polaris12_pfp_2.bin +amdgpu/bonaire_me.bin +amdgpu/renoir_sdma.bin +amdgpu/fiji_sdma.bin +amdgpu/mullins_ce.bin +amdgpu/navi10_ce.bin +amdgpu/navi14_sdma.bin +amdgpu/vega12_gpu_info.bin +amdgpu/carrizo_mec2.bin +amdgpu/renoir_ce.bin +amdgpu/polaris11_uvd.bin +amdgpu/tahiti_ce.bin +amdgpu/kaveri_ce.bin +amdgpu/raven2_asd.bin +amdgpu/vega20_me.bin +amdgpu/kabini_rlc.bin +amdgpu/polaris11_k_smc.bin +amdgpu/kaveri_mec.bin +amdgpu/vega10_asd.bin +amdgpu/pitcairn_rlc.bin +amdgpu/navi10_ta.bin +amdgpu/vega10_acg_smc.bin +amdgpu/hawaii_k_smc.bin +amdgpu/topaz_sdma1.bin +amdgpu/polaris12_ce.bin +amdgpu/picasso_gpu_info.bin +amdgpu/raven_pfp.bin +amdgpu/hawaii_pfp.bin +amdgpu/carrizo_pfp.bin +amdgpu/polaris11_me.bin +amdgpu/oland_mc.bin +amdgpu/polaris10_k_smc.bin +amdgpu/fiji_pfp.bin +amdgpu/stoney_me.bin +amdgpu/pitcairn_mc.bin +amdgpu/raven_vcn.bin +amdgpu/polaris11_smc.bin +amdgpu/navi14_gpu_info.bin +amdgpu/kaveri_mec2.bin +amdgpu/verde_pfp.bin +amdgpu/verde_me.bin +amdgpu/topaz_rlc.bin +amdgpu/navi10_mec2.bin +amdgpu/vega12_sdma.bin +amdgpu/topaz_mc.bin +amdgpu/polaris12_pfp.bin +amdgpu/tonga_sdma1.bin +amdgpu/carrizo_me.bin +amdgpu/polaris11_mec2.bin +amdgpu/vega10_gpu_info.bin +amdgpu/tonga_mc.bin +amdgpu/fiji_ce.bin +amdgpu/polaris11_vce.bin +amdgpu/picasso_rlc_am4.bin +amdgpu/hainan_k_smc.bin +amdgpu/vega12_pfp.bin +amdgpu/vega10_sos.bin +amdgpu/polaris12_k_smc.bin +amdgpu/kaveri_sdma1.bin +amdgpu/pitcairn_pfp.bin +amdgpu/si58_mc.bin +amdgpu/navi14_me_wks.bin +amdgpu/fiji_me.bin +amdgpu/raven_dmcu.bin +amdgpu/kabini_pfp.bin +amdgpu/banks_k_2_smc.bin +amdgpu/carrizo_ce.bin +amdgpu/polaris12_mec2_2.bin +amdgpu/fiji_rlc.bin +amdgpu/polaris12_sdma1.bin +amdgpu/raven_sdma.bin +amdgpu/verde_ce.bin +amdgpu/vega20_sos.bin +amdgpu/polaris11_mec.bin +amdgpu/raven_rlc.bin +amdgpu/hawaii_rlc.bin +amdgpu/carrizo_rlc.bin +amdgpu/polaris12_mec2.bin +amdgpu/kaveri_uvd.bin +amdgpu/stoney_ce.bin +amdgpu/tonga_k_smc.bin +amdgpu/oland_k_smc.bin +amdgpu/renoir_mec2.bin +amdgpu/topaz_pfp.bin +amdgpu/hawaii_sdma1.bin +amdgpu/vega20_asd.bin +amdgpu/kaveri_vce.bin +amdgpu/polaris11_sdma1.bin +amdgpu/verde_rlc.bin +amdgpu/polaris11_ce.bin +amdgpu/picasso_mec.bin +amdgpu/fiji_mec2.bin +amdgpu/polaris12_me.bin +amdgpu/tahiti_smc.bin +amdgpu/navi14_mec_wks.bin +amdgpu/vega20_ce.bin +amdgpu/polaris10_sdma1.bin +amdgpu/vega12_rlc.bin +amdgpu/raven2_gpu_info.bin +amdgpu/kaveri_me.bin +amdgpu/polaris12_rlc.bin +amdgpu/navi10_me.bin +amdgpu/renoir_me.bin +amdgpu/topaz_k_smc.bin +amdgpu/tahiti_me.bin +amdgpu/mullins_me.bin +amdgpu/polaris10_k2_smc.bin +amdgpu/vega20_rlc.bin +amdgpu/bonaire_ce.bin +amdgpu/renoir_mec.bin +amdgpu/mullins_rlc.bin +amdgpu/vegam_rlc.bin +amdgpu/navi14_mec2.bin +amdgpu/carrizo_sdma.bin +amdgpu/stoney_rlc.bin +amdgpu/raven2_vcn.bin +amdgpu/vegam_ce.bin +amdgpu/tonga_pfp.bin +amdgpu/vega12_asd.bin +amdgpu/polaris10_smc_sk.bin +amdgpu/polaris11_sdma.bin +amdgpu/polaris10_k_mc.bin +amdgpu/polaris12_ce_2.bin +amdgpu/raven2_pfp.bin +amdgpu/polaris10_me.bin +amdgpu/vegam_sdma1.bin +amdgpu/navi14_smc.bin +amdgpu/polaris10_pfp.bin +amdgpu/polaris11_me_2.bin +amdgpu/hainan_ce.bin +amdgpu/vega12_mec2.bin +amdgpu/navi10_smc.bin +amdgpu/vega10_pfp.bin +amdgpu/vega12_sos.bin +amdgpu/bonaire_rlc.bin +amdgpu/kaveri_sdma.bin +amdgpu/raven_asd.bin +amdgpu/hainan_smc.bin +amdgpu/navi10_sdma.bin +amdgpu/hawaii_sdma.bin +amdgpu/raven2_mec2.bin +amdgpu/carrizo_vce.bin +amdgpu/hawaii_vce.bin +amdgpu/vega20_sdma.bin +amdgpu/tahiti_mc.bin +amdgpu/navi10_asd.bin +amdgpu/navi14_asd.bin +amdgpu/fiji_vce.bin +amdgpu/topaz_mec2.bin +amdgpu/oland_ce.bin +amdgpu/vega10_me.bin +amdgpu/picasso_sdma.bin +amdgpu/vega12_uvd.bin +amdgpu/fiji_smc.bin +amdgpu/picasso_pfp.bin +amdgpu/polaris10_mec2_2.bin +amdgpu/polaris12_uvd.bin +amdgpu/bonaire_sdma1.bin +amdgpu/polaris12_mc.bin +amdgpu/hawaii_smc.bin +amdgpu/topaz_mec.bin +amdgpu/polaris12_vce.bin +amdgpu/navi14_ce_wks.bin +amdgpu/navi14_me.bin +amdgpu/picasso_vcn.bin +amdgpu/renoir_dmcub.bin +amdgpu/vega12_vce.bin +amdgpu/pitcairn_ce.bin +amdgpu/polaris11_pfp.bin +amdgpu/verde_smc.bin +amdgpu/fiji_mc.bin +amdgpu/tonga_ce.bin +amdgpu/picasso_ce.bin +amdgpu/vega12_smc.bin +amdgpu/fiji_uvd.bin +amdgpu/tahiti_rlc.bin +amdgpu/kabini_mec.bin +amdgpu/kaveri_rlc.bin +amdgpu/polaris12_smc.bin +amdgpu/topaz_ce.bin +amdgpu/kabini_me.bin +amdgpu/navi10_sos.bin +amdgpu/picasso_ta.bin +amdgpu/hawaii_uvd.bin +amdgpu/carrizo_uvd.bin +amdgpu/navi14_sos.bin +amdgpu/vega10_sdma.bin +amdgpu/renoir_gpu_info.bin +amdgpu/polaris10_me_2.bin +amdgpu/renoir_vcn.bin +amdgpu/raven_ce.bin +amdgpu/polaris11_k_mc.bin +amdgpu/polaris10_sdma.bin +amdgpu/raven_ta.bin +amdgpu/vega20_smc.bin +amdgpu/stoney_vce.bin +amdgpu/bonaire_uvd.bin +amdgpu/hawaii_ce.bin +amdgpu/mullins_vce.bin +amdgpu/vegam_vce.bin +amdgpu/vega20_vce.bin +amdgpu/kabini_sdma.bin +amdgpu/oland_pfp.bin +amdgpu/carrizo_sdma1.bin +amdgpu/polaris10_mc.bin +amdgpu/vega10_mec.bin +amdgpu/vegam_smc.bin +amdgpu/bonaire_sdma.bin +amdgpu/polaris10_mec.bin +amdgpu/vega12_me.bin +amdgpu/raven2_mec.bin +amdgpu/fiji_sdma1.bin +amdgpu/navi10_rlc.bin +amdgpu/tonga_mec.bin +amdgpu/vega20_sdma1.bin +amdgpu/navi14_rlc.bin +amdgpu/vega20_uvd.bin +amdgpu/raven2_me.bin +amdgpu/bonaire_smc.bin +amdgpu/stoney_uvd.bin +amdgpu/renoir_pfp.bin +amdgpu/bonaire_vce.bin +amdgpu/mullins_uvd.bin +amdgpu/vegam_uvd.bin +amdgpu/tonga_mec2.bin +amdgpu/vegam_mec2.bin +amdgpu/stoney_sdma.bin +amdgpu/hainan_rlc.bin +ar3k/ramps_0x11020100_40.dfu +ar3k/ramps_0x01020200_40.dfu +ar3k/AthrBT_0x41020000.dfu +ar3k/AthrBT_0x11020100.dfu +ar3k/ramps_0x41020000_40.dfu +ar3k/1020201/PS_ASIC.pst +ar3k/1020201/RamPatch.txt +ar3k/ramps_0x01020201_26.dfu +ar3k/ramps_0x11020000_40.dfu +ar3k/AthrBT_0x11020000.dfu +ar3k/30101/RamPatch.txt +ar3k/30101/ar3kbdaddr.pst +ar3k/30101/PS_ASIC.pst +ar3k/AthrBT_0x31010000.dfu +ar3k/ramps_0x01020200_26.dfu +ar3k/ramps_0x31010000_40.dfu +ar3k/AthrBT_0x01020201.dfu +ar3k/30101coex/PS_ASIC_aclLowPri.pst +ar3k/30101coex/ar3kbdaddr.pst +ar3k/30101coex/PS_ASIC.pst +ar3k/30101coex/PS_ASIC_aclHighPri.pst +ar3k/30101coex/RamPatch.txt +ar3k/AthrBT_0x31010100.dfu +ar3k/AthrBT_0x01020200.dfu +ar3k/ramps_0x01020201_40.dfu +ar3k/AthrBT_0x01020001.dfu +ar3k/ramps_0x31010100_40.dfu +ar3k/1020200/RamPatch.txt +ar3k/1020200/ar3kbdaddr.pst +ar3k/1020200/PS_ASIC.pst +ar3k/1020201coex/ramps_0x01020201_26_HighPriority.dfu +ar3k/30000/ar3kbdaddr.pst +ar3k/30000/PS_ASIC.pst +ar3k/30000/RamPatch.txt +ar3k/ramps_0x01020001_26.dfu +ar5523.bin +ar7010.fw +ar7010_1_1.fw +ar9170-1.fw +ar9170-2.fw +ar9271.fw +as102_data1_st.hex +as102_data2_st.hex +ath10k/QCA9888/hw2.0/firmware-5.bin +ath10k/QCA9888/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA9888/hw2.0/board-2.bin +ath10k/QCA99X0/hw2.0/firmware-5.bin +ath10k/QCA99X0/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA99X0/hw2.0/board.bin +ath10k/QCA4019/hw1.0/firmware-5.bin +ath10k/QCA4019/hw1.0/board-2.bin +ath10k/QCA4019/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA6174/hw3.0/board.bin +ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt +ath10k/QCA6174/hw3.0/firmware-4.bin +ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +ath10k/QCA6174/hw3.0/firmware-6.bin +ath10k/QCA6174/hw3.0/board-2.bin +ath10k/QCA6174/hw2.1/board.bin +ath10k/QCA6174/hw2.1/board-2.bin +ath10k/QCA6174/hw2.1/firmware-5.bin +ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt +ath10k/QCA988X/hw2.0/firmware-4.bin +ath10k/QCA988X/hw2.0/firmware-5.bin +ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt +ath10k/QCA988X/hw2.0/board.bin +ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt +ath10k/QCA9984/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9984/hw1.0/board-2.bin +ath10k/QCA9984/hw1.0/firmware-5.bin +ath10k/QCA9377/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9377/hw1.0/firmware-5.bin +ath10k/QCA9377/hw1.0/board-2.bin +ath10k/QCA9377/hw1.0/firmware-6.bin +ath10k/QCA9377/hw1.0/board.bin +ath10k/QCA9377/hw1.0/notice_ath10k_firmware-6.txt +ath10k/QCA9887/hw1.0/board.bin +ath10k/QCA9887/hw1.0/notice_ath10k_firmware-5.txt +ath10k/QCA9887/hw1.0/firmware-5.bin +ath10k/WCN3990/hw1.0/notice.txt_wlanmdsp +ath10k/WCN3990/hw1.0/firmware-5.bin +ath10k/WCN3990/hw1.0/wlanmdsp.mbn +ath3k-1.fw +ath6k/AR6003/hw2.1.1/bdata.SD31.bin +ath6k/AR6003/hw2.1.1/fw-2.bin +ath6k/AR6003/hw2.1.1/otp.bin +ath6k/AR6003/hw2.1.1/fw-3.bin +ath6k/AR6003/hw2.1.1/endpointping.bin +ath6k/AR6003/hw2.1.1/bdata.WB31.bin +ath6k/AR6003/hw2.1.1/athwlan.bin +ath6k/AR6003/hw2.1.1/bdata.SD32.bin +ath6k/AR6003/hw2.1.1/data.patch.bin +ath6k/AR6003/hw2.0/bdata.WB31.bin +ath6k/AR6003/hw2.0/data.patch.bin +ath6k/AR6003/hw2.0/bdata.SD32.bin +ath6k/AR6003/hw2.0/athwlan.bin.z77 +ath6k/AR6003/hw2.0/bdata.SD31.bin +ath6k/AR6003/hw2.0/otp.bin.z77 +ath6k/AR6003/hw1.0/otp.bin.z77 +ath6k/AR6003/hw1.0/data.patch.bin +ath6k/AR6003/hw1.0/bdata.SD32.bin +ath6k/AR6003/hw1.0/bdata.WB31.bin +ath6k/AR6003/hw1.0/athwlan.bin.z77 +ath6k/AR6003/hw1.0/bdata.SD31.bin +ath6k/AR6004/hw1.2/bdata.bin +ath6k/AR6004/hw1.2/fw-2.bin +ath6k/AR6004/hw1.3/fw-3.bin +ath6k/AR6004/hw1.3/bdata.bin +ath6k/AR6002/data.patch.hw2_0.bin +ath6k/AR6002/eeprom.data +ath6k/AR6002/eeprom.bin +ath6k/AR6002/athwlan.bin.z77 +ath6k/AR6003.1/hw2.1.1/data.patch.bin +ath6k/AR6003.1/hw2.1.1/athwlan.bin +ath6k/AR6003.1/hw2.1.1/bdata.SD32.bin +ath6k/AR6003.1/hw2.1.1/bdata.WB31.bin +ath6k/AR6003.1/hw2.1.1/otp.bin +ath6k/AR6003.1/hw2.1.1/bdata.SD31.bin +ath6k/AR6003.1/hw2.1.1/endpointping.bin +ath9k_htc/htc_9271-1.4.0.fw +ath9k_htc/htc_7010-1.4.0.fw +atmel/wilc1000_wifi_firmware.bin +atmel/wilc1000_fw.bin +atmel/wilc1000_p2p_fw.bin +atmel/wilc1000_ap_fw.bin +atusb/atusb-0.3.dfu +atusb/rzusb-0.3.bin +atusb/atusb-0.2.dfu +av7110/bootcode.bin +bnx2/bnx2-mips-06-6.0.15.fw +bnx2/bnx2-mips-09-5.0.0.j9.fw +bnx2/bnx2-rv2p-09-5.0.0.j10.fw +bnx2/bnx2-mips-06-4.6.16.fw +bnx2/bnx2-mips-09-4.6.17.fw +bnx2/bnx2-mips-09-6.0.17.fw +bnx2/bnx2-rv2p-06-4.6.16.fw +bnx2/bnx2-mips-09-5.0.0.j15.fw +bnx2/bnx2-mips-06-5.0.0.j6.fw +bnx2/bnx2-rv2p-09ax-5.0.0.j3.fw +bnx2/bnx2-mips-09-6.2.1b.fw +bnx2/bnx2-rv2p-09-5.0.0.j3.fw +bnx2/bnx2-rv2p-06-5.0.0.j3.fw +bnx2/bnx2-rv2p-06-6.0.15.fw +bnx2/bnx2-mips-09-6.2.1a.fw +bnx2/bnx2-rv2p-09ax-6.0.17.fw +bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw +bnx2/bnx2-mips-06-6.2.3.fw +bnx2/bnx2-rv2p-09-4.6.15.fw +bnx2/bnx2-rv2p-09-6.0.17.fw +bnx2/bnx2-mips-09-6.2.1.fw +bnx2/bnx2-mips-06-6.2.1.fw +bnx2/bnx2-mips-09-5.0.0.j3.fw +bnx2/bnx2-mips-06-5.0.0.j3.fw +bnx2x/bnx2x-e2-7.12.30.0.fw +bnx2x/bnx2x-e1h-7.0.23.0.fw +bnx2x/bnx2x-e1-7.12.30.0.fw +bnx2x/bnx2x-e2-7.2.16.0.fw +bnx2x/bnx2x-e2-7.2.51.0.fw +bnx2x/bnx2x-e2-7.8.2.0.fw +bnx2x/bnx2x-e1h-7.12.30.0.fw +bnx2x/bnx2x-e2-7.0.29.0.fw +bnx2x/bnx2x-e1-7.0.23.0.fw +bnx2x/bnx2x-e2-6.2.9.0.fw +bnx2x/bnx2x-e1-7.8.17.0.fw +bnx2x/bnx2x-e1-7.13.15.0.fw +bnx2x/bnx2x-e2-7.13.11.0.fw +bnx2x/bnx2x-e2-7.8.19.0.fw +bnx2x/bnx2x-e1h-7.10.51.0.fw +bnx2x/bnx2x-e2-7.13.1.0.fw +bnx2x/bnx2x-e2-6.0.34.0.fw +bnx2x/bnx2x-e1-7.13.11.0.fw +bnx2x/bnx2x-e2-7.13.15.0.fw +bnx2x/bnx2x-e2-7.0.20.0.fw +bnx2x/bnx2x-e1h-7.13.11.0.fw +bnx2x/bnx2x-e2-7.10.51.0.fw +bnx2x/bnx2x-e1h-7.8.17.0.fw +bnx2x/bnx2x-e2-6.2.5.0.fw +bnx2x/bnx2x-e1-7.10.51.0.fw +bnx2x/bnx2x-e1h-7.13.15.0.fw +bnx2x/bnx2x-e1-7.8.2.0.fw +bnx2x/bnx2x-e1h-6.0.34.0.fw +bnx2x/bnx2x-e1h-7.13.1.0.fw +bnx2x/bnx2x-e1-7.0.20.0.fw +bnx2x/bnx2x-e1h-7.8.19.0.fw +bnx2x/bnx2x-e1h-6.2.9.0.fw +bnx2x/bnx2x-e1h-6.2.5.0.fw +bnx2x/bnx2x-e1-7.13.1.0.fw +bnx2x/bnx2x-e1-6.0.34.0.fw +bnx2x/bnx2x-e2-7.8.17.0.fw +bnx2x/bnx2x-e1h-7.0.20.0.fw +bnx2x/bnx2x-e1-7.8.19.0.fw +bnx2x/bnx2x-e1h-7.2.16.0.fw +bnx2x/bnx2x-e2-7.0.23.0.fw +bnx2x/bnx2x-e1-7.2.51.0.fw +bnx2x/bnx2x-e1-7.0.29.0.fw +bnx2x/bnx2x-e1-6.2.5.0.fw +bnx2x/bnx2x-e1-6.2.9.0.fw +bnx2x/bnx2x-e1-7.2.16.0.fw +bnx2x/bnx2x-e1h-7.0.29.0.fw +bnx2x/bnx2x-e1h-7.8.2.0.fw +bnx2x/bnx2x-e1h-7.2.51.0.fw +bnx2x-e1-4.8.53.0.fw +bnx2x-e1-5.2.13.0.fw +bnx2x-e1-5.2.7.0.fw +bnx2x-e1h-4.8.53.0.fw +bnx2x-e1h-5.2.13.0.fw +bnx2x-e1h-5.2.7.0.fw +brcm/bcm43xx-0.fw +brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt +brcm/brcmfmac4366c-pcie.bin +brcm/brcmfmac4330-sdio.bin +brcm/brcmfmac43430-sdio.AP6212.txt +brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt +brcm/brcmfmac43430-sdio.MUR1DX.txt +brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt +brcm/brcmfmac43241b0-sdio.bin +brcm/brcmfmac4356-pcie.gpd-win-pocket.txt +brcm/brcmfmac4350c2-pcie.bin +brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt +brcm/brcmfmac43143-sdio.bin +brcm/brcmfmac4366b-pcie.bin +brcm/brcmfmac43362-sdio.bin +brcm/brcmfmac43455-sdio.bin +brcm/brcmfmac4356-sdio.bin +brcm/brcmfmac43569.bin +brcm/brcmfmac43430a0-sdio.bin +brcm/brcmfmac4339-sdio.bin +brcm/brcmfmac43455-sdio.MINIX-NEO Z83-4.txt +brcm/brcmfmac4329-sdio.bin +brcm/brcmfmac43602-pcie.ap.bin +brcm/bcm43xx_hdr-0.fw +brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt +brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt +brcm/brcmfmac4371-pcie.bin +brcm/brcmfmac43340-sdio.meegopad-t08.txt +brcm/brcmfmac4335-sdio.bin +brcm/brcmfmac43241b5-sdio.bin +brcm/brcmfmac4356-pcie.bin +brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt +brcm/brcmfmac43570-pcie.bin +brcm/brcmfmac4334-sdio.bin +brcm/brcmfmac4373-sdio.bin +brcm/brcmfmac43430a0-sdio.ONDA-V80 PLUS.txt +brcm/BCM-0bb4-0306.hcd +brcm/brcmfmac4350-pcie.bin +brcm/brcmfmac4330-sdio.Prowise-PT301.txt +brcm/brcmfmac43242a.bin +brcm/brcmfmac4373.bin +brcm/brcmfmac43236b.bin +brcm/bcm4329-fullmac-4.bin +brcm/brcmfmac4354-sdio.bin +brcm/brcmfmac43430-sdio.bin +brcm/brcmfmac43340-sdio.bin +brcm/brcmfmac4358-pcie.bin +brcm/brcmfmac43241b4-sdio.bin +brcm/brcmfmac43143.bin +brcm/brcmfmac43602-pcie.bin +cadence/mhdp8546.bin +carl9170-1.fw +cavium/cnn55xx_se.fw +cavium/cnn55xx_ae.fw +cbfw-3.2.1.1.bin +cbfw-3.2.3.0.bin +cbfw-3.2.5.1.bin +cis/3CCFEM556.cis +cis/3CXEM556.cis +cis/PE-200.cis +cis/MT5634ZLX.cis +cis/RS-COM-2P.cis +cis/DP83903.cis +cis/PCMLM28.cis +cis/SW_8xx_SER.cis +cis/LA-PCM.cis +cis/COMpad2.cis +cis/SW_555_SER.cis +cis/NE2K.cis +cis/tamarack.cis +cis/COMpad4.cis +cis/SW_7xx_SER.cis +cis/PE520.cis +cmmb_vega_12mhz.inp +cmmb_venice_12mhz.inp +copy-firmware.sh +ct2fw-3.2.1.1.bin +ct2fw-3.2.3.0.bin +ct2fw-3.2.5.1.bin +ctefx.bin +ctfw-3.2.1.1.bin +ctfw-3.2.3.0.bin +ctfw-3.2.5.1.bin +ctspeq.bin +cxgb3/ael2005_opt_edc.bin +cxgb3/t3b_psram-1.1.0.bin +cxgb3/t3fw-7.4.0.bin +cxgb3/t3c_psram-1.1.0.bin +cxgb3/ael2020_twx_edc.bin +cxgb3/t3fw-7.10.0.bin +cxgb3/t3fw-7.0.0.bin +cxgb3/ael2005_twx_edc.bin +cxgb3/t3fw-7.1.0.bin +cxgb3/t3fw-7.12.0.bin +cxgb4/t4fw-1.14.4.0.bin +cxgb4/bcm8483.bin +cxgb4/t6fw-1.24.14.0.bin +cxgb4/configs/t4-config-default.txt +cxgb4/configs/t6-config-default.txt +cxgb4/configs/t5-config-hashfilter.txt +cxgb4/configs/t6-config-hashfilter.txt +cxgb4/configs/t5-config-default.txt +cxgb4/t5fw-1.14.4.0.bin +cxgb4/t5fw-1.24.14.0.bin +cxgb4/aq1202_fw.cld +cxgb4/t5fw-1.15.37.0.bin +cxgb4/t4fw-1.15.37.0.bin +cxgb4/t4fw-1.24.14.0.bin +dabusb/bitstream.bin +dabusb/firmware.fw +dpaa2/mc/mc_10.18.0_lx2160a.itb +dpaa2/mc/mc_10.16.2_ls1088a.itb +dpaa2/mc/mc_10.14.3_ls2088a.itb +dpaa2/mc/mc_10.10.0_ls2088a.itb +dpaa2/mc/mc_10.14.3_lx2160a.itb +dpaa2/mc/mc_10.10.0_lx2160a.itb +dpaa2/mc/mc_10.18.0_ls2088a.itb +dpaa2/mc/mc_10.16.2_ls2088a.itb +dpaa2/mc/mc_10.14.3_ls1088a.itb +dpaa2/mc/mc_10.10.0_ls1088a.itb +dpaa2/mc/mc_10.18.0_ls1088a.itb +dpaa2/mc/mc_10.16.2_lx2160a.itb +dsp56k/bootstrap.bin +dvb-fe-xc4000-1.4.1.fw +dvb-fe-xc5000-1.6.114.fw +dvb-fe-xc5000c-4.1.30.7.fw +dvb-usb-dib0700-1.20.fw +dvb-usb-it9135-01.fw +dvb-usb-it9135-02.fw +dvb-usb-terratec-h5-drxk.fw +dvb_nova_12mhz.inp +dvb_nova_12mhz_b0.inp +e100/d101s_ucode.bin +e100/d102e_ucode.bin +e100/d101m_ucode.bin +emi26/loader.fw +emi26/firmware.fw +emi26/bitstream.fw +ene-ub6250/sd_init2.bin +ene-ub6250/ms_rdwr.bin +ene-ub6250/ms_init.bin +ene-ub6250/msp_rdwr.bin +ene-ub6250/sd_rdwr.bin +ene-ub6250/sd_init1.bin +f2255usb.bin +go7007/go7007fw.bin +go7007/px-m402u.fw +go7007/s2250-2.fw +go7007/wis-startrek.fw +go7007/px-tv402u.fw +go7007/s2250-1.fw +go7007/go7007tv.bin +go7007/lr192.fw +hfi1_dc8051.fw +hfi1_fabric.fw +hfi1_pcie.fw +hfi1_sbus.fw +htc_7010.fw +htc_9271.fw +i2400m-fw-usb-1.4.sbcf +i2400m-fw-usb-1.5.sbcf +i6050-fw-usb-1.5.sbcf +i915/bxt_huc_2.0.0.bin +i915/tgl_huc_7.0.3.bin +i915/cnl_dmc_ver1_06.bin +i915/skl_dmc_ver1_23.bin +i915/tgl_dmc_ver2_06.bin +i915/skl_guc_32.0.3.bin +i915/skl_huc_ver01_07_1398.bin +i915/bxt_guc_32.0.3.bin +i915/skl_dmc_ver1.bin +i915/kbl_dmc_ver1_01.bin +i915/bxt_huc_ver01_07_1398.bin +i915/kbl_guc_33.0.0.bin +i915/icl_guc_33.0.0.bin +i915/tgl_guc_35.2.0.bin +i915/bxt_dmc_ver1_07.bin +i915/skl_huc_2.0.0.bin +i915/skl_guc_ver1.bin +i915/kbl_guc_ver9_14.bin +i915/bxt_guc_ver9_29.bin +i915/glk_guc_32.0.3.bin +i915/skl_guc_ver6.bin +i915/glk_huc_4.0.0.bin +i915/kbl_huc_4.0.0.bin +i915/cnl_dmc_ver1_07.bin +i915/bxt_dmc_ver1.bin +i915/cml_huc_4.0.0.bin +i915/kbl_huc_ver02_00_1810.bin +i915/icl_huc_ver8_4_3238.bin +i915/glk_huc_ver03_01_2893.bin +i915/kbl_dmc_ver1.bin +i915/kbl_guc_ver9_39.bin +i915/icl_huc_9.0.0.bin +i915/kbl_dmc_ver1_04.bin +i915/skl_guc_33.0.0.bin +i915/skl_guc_ver6_1.bin +i915/bxt_guc_33.0.0.bin +i915/tgl_dmc_ver2_04.bin +i915/ehl_huc_9.0.0.bin +i915/kbl_guc_32.0.3.bin +i915/skl_dmc_ver1_26.bin +i915/icl_guc_32.0.3.bin +i915/bxt_guc_ver8_7.bin +i915/cml_guc_33.0.0.bin +i915/ehl_guc_33.0.4.bin +i915/tgl_huc_7.0.12.bin +i915/glk_guc_33.0.0.bin +i915/skl_guc_ver9_33.bin +i915/bxt_huc_ver01_8_2893.bin +i915/skl_guc_ver4.bin +i915/skl_dmc_ver1_27.bin +i915/icl_dmc_ver1_07.bin +i915/glk_dmc_ver1_04.bin +i915/icl_dmc_ver1_09.bin +imx/sdma/sdma-imx6q.bin +imx/sdma/sdma-imx7d.bin +inside-secure/eip197_minifw/ifpp.bin +inside-secure/eip197_minifw/ipue.bin +intel/ibt-19-0-1.ddc +intel/ibt-19-240-4.ddc +intel/ibt-20-1-3.ddc +intel/ibt-17-0-1.sfi +intel/dsp_fw_release_v3402.bin +intel/ibt-20-1-4.ddc +intel/dsp_fw_kbl_v3266.bin +intel/ibt-17-2.sfi +intel/ibt-19-32-0.ddc +intel/ibt-11-5.ddc +intel/ibt-hw-37.8.bseq +intel/dsp_fw_glk_v2880.bin +intel/dsp_fw_kbl_v701.bin +intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq +intel/ibt-20-0-3.ddc +intel/ibt-17-1.ddc +intel/fw_sst_0f28.bin-48kHz_i2s_master +intel/ibt-19-32-4.sfi +intel/ibt-hw-37.8.10-fw-1.10.2.27.d.bseq +intel/dsp_fw_kbl_v1037.bin +intel/ibt-12-16.ddc +intel/ibt-19-32-1.ddc +intel/dsp_fw_glk_v1814.bin +intel/ibt-hw-37.8.10-fw-22.50.19.14.f.bseq +intel/ibt-hw-37.7.10-fw-1.0.1.2d.d.bseq +intel/ibt-19-16-4.ddc +intel/IntcSST2.bin +intel/ibt-19-0-0.ddc +intel/fw_sst_0f28.bin +intel/dsp_fw_cnl_v1191.bin +intel/ibt-18-1.ddc +intel/ibt-18-0-1.ddc +intel/dsp_fw_release_v969.bin +intel/ice/ddp/ice-1.3.4.0.pkg +intel/dsp_fw_kbl_v2630.bin +intel/ibt-19-0-4.sfi +intel/ibt-18-2.sfi +intel/ibt-17-16-1.sfi +intel/ibt-19-240-1.sfi +intel/ibt-18-16-1.sfi +intel/dsp_fw_glk_v3366.bin +intel/ibt-19-32-1.sfi +intel/ibt-hw-37.7.bseq +intel/ibt-12-16.sfi +intel/ibt-hw-37.7.10-fw-1.80.1.2d.d.bseq +intel/dsp_fw_kbl_v3420.bin +intel/fw_sst_22a8.bin +intel/ibt-19-16-4.sfi +intel/ibt-19-0-0.sfi +intel/ibt-hw-37.7.10-fw-1.0.2.3.d.bseq +intel/ibt-18-1.sfi +intel/ibt-18-0-1.sfi +intel/fw_sst_0f28_ssp0.bin +intel/dsp_fw_bxtn_v2219.bin +intel/dsp_fw_kbl_v2042.bin +intel/dsp_fw_bxtn_v3366.bin +intel/ibt-19-240-1.ddc +intel/ibt-17-16-1.ddc +intel/ibt-18-16-1.ddc +intel/ibt-19-0-4.ddc +intel/ibt-18-2.ddc +intel/ibt-19-240-4.sfi +intel/ibt-19-0-1.sfi +intel/ibt-17-0-1.ddc +intel/ibt-20-1-3.sfi +intel/ibt-20-1-4.sfi +intel/dsp_fw_cnl_v1858.bin +intel/ibt-17-2.ddc +intel/ibt-19-32-0.sfi +intel/ibt-11-5.sfi +intel/irci_irci_ecr-master_20161208_0213_20170112_1500.bin +intel/dsp_fw_glk_v2768.bin +intel/ibt-20-0-3.sfi +intel/ibt-hw-37.8.10-fw-1.10.3.11.e.bseq +intel/dsp_fw_kbl_v3402.bin +intel/ibt-17-1.sfi +intel/ibt-19-32-4.ddc +isci/isci_firmware.bin +isdbt_nova_12mhz.inp +isdbt_nova_12mhz_b0.inp +isdbt_rio.inp +iwlwifi-100-5.ucode +iwlwifi-1000-3.ucode +iwlwifi-1000-5.ucode +iwlwifi-105-6.ucode +iwlwifi-135-6.ucode +iwlwifi-2000-6.ucode +iwlwifi-2030-6.ucode +iwlwifi-3160-10.ucode +iwlwifi-3160-12.ucode +iwlwifi-3160-13.ucode +iwlwifi-3160-16.ucode +iwlwifi-3160-17.ucode +iwlwifi-3160-7.ucode +iwlwifi-3160-8.ucode +iwlwifi-3160-9.ucode +iwlwifi-3168-21.ucode +iwlwifi-3168-22.ucode +iwlwifi-3168-27.ucode +iwlwifi-3168-29.ucode +iwlwifi-3945-2.ucode +iwlwifi-4965-2.ucode +iwlwifi-5000-1.ucode +iwlwifi-5000-2.ucode +iwlwifi-5000-5.ucode +iwlwifi-5150-2.ucode +iwlwifi-6000-4.ucode +iwlwifi-6000g2a-5.ucode +iwlwifi-6000g2a-6.ucode +iwlwifi-6000g2b-5.ucode +iwlwifi-6000g2b-6.ucode +iwlwifi-6050-4.ucode +iwlwifi-6050-5.ucode +iwlwifi-7260-10.ucode +iwlwifi-7260-12.ucode +iwlwifi-7260-13.ucode +iwlwifi-7260-16.ucode +iwlwifi-7260-17.ucode +iwlwifi-7260-7.ucode +iwlwifi-7260-8.ucode +iwlwifi-7260-9.ucode +iwlwifi-7265-10.ucode +iwlwifi-7265-12.ucode +iwlwifi-7265-13.ucode +iwlwifi-7265-16.ucode +iwlwifi-7265-17.ucode +iwlwifi-7265-8.ucode +iwlwifi-7265-9.ucode +iwlwifi-7265D-10.ucode +iwlwifi-7265D-12.ucode +iwlwifi-7265D-13.ucode +iwlwifi-7265D-16.ucode +iwlwifi-7265D-17.ucode +iwlwifi-7265D-21.ucode +iwlwifi-7265D-22.ucode +iwlwifi-7265D-27.ucode +iwlwifi-7265D-29.ucode +iwlwifi-8000C-13.ucode +iwlwifi-8000C-16.ucode +iwlwifi-8000C-21.ucode +iwlwifi-8000C-22.ucode +iwlwifi-8000C-27.ucode +iwlwifi-8000C-31.ucode +iwlwifi-8000C-34.ucode +iwlwifi-8000C-36.ucode +iwlwifi-8265-21.ucode +iwlwifi-8265-22.ucode +iwlwifi-8265-27.ucode +iwlwifi-8265-31.ucode +iwlwifi-8265-34.ucode +iwlwifi-8265-36.ucode +iwlwifi-9000-pu-b0-jf-b0-33.ucode +iwlwifi-9000-pu-b0-jf-b0-34.ucode +iwlwifi-9000-pu-b0-jf-b0-38.ucode +iwlwifi-9000-pu-b0-jf-b0-41.ucode +iwlwifi-9000-pu-b0-jf-b0-43.ucode +iwlwifi-9000-pu-b0-jf-b0-46.ucode +iwlwifi-9260-th-b0-jf-b0-33.ucode +iwlwifi-9260-th-b0-jf-b0-34.ucode +iwlwifi-9260-th-b0-jf-b0-38.ucode +iwlwifi-9260-th-b0-jf-b0-41.ucode +iwlwifi-9260-th-b0-jf-b0-43.ucode +iwlwifi-9260-th-b0-jf-b0-46.ucode +iwlwifi-Qu-b0-hr-b0-48.ucode +iwlwifi-Qu-b0-jf-b0-48.ucode +iwlwifi-Qu-c0-hr-b0-48.ucode +iwlwifi-Qu-c0-jf-b0-48.ucode +iwlwifi-QuZ-a0-hr-b0-48.ucode +iwlwifi-QuZ-a0-jf-b0-48.ucode +iwlwifi-cc-a0-46.ucode +iwlwifi-cc-a0-48.ucode +kaweth/new_code.bin +kaweth/new_code_fix.bin +kaweth/trigger_code.bin +kaweth/trigger_code_fix.bin +keyspan/usa49w.fw +keyspan/usa19qi.fw +keyspan/usa49wlc.fw +keyspan/usa28x.fw +keyspan/usa28.fw +keyspan/usa19w.fw +keyspan/usa19.fw +keyspan/mpr.fw +keyspan/usa18x.fw +keyspan/usa28xb.fw +keyspan/usa19qw.fw +keyspan/usa28xa.fw +keyspan_pda/xircom_pgs.fw +keyspan_pda/keyspan_pda.fw +lbtf_usb.bin +libertas/cf8381.bin +libertas/cf8385_helper.bin +libertas/usb8388_v9.bin +libertas/gspi8682_helper.bin +libertas/sd8682_helper.bin +libertas/usb8682.bin +libertas/sd8686_v9.bin +libertas/sd8385_helper.bin +libertas/gspi8688.bin +libertas/sd8686_v9_helper.bin +libertas/sd8686_v8.bin +libertas/gspi8686_v9.bin +libertas/gspi8686_v9_helper.bin +libertas/sd8385.bin +libertas/cf8381_helper.bin +libertas/sd8686_v8_helper.bin +libertas/gspi8682.bin +libertas/usb8388_v5.bin +libertas/sd8682.bin +libertas/usb8388_olpc.bin +libertas/lbtf_sdio.bin +libertas/cf8385.bin +libertas/gspi8688_helper.bin +liquidio/lio_210nv_nic.bin +liquidio/lio_23xx_nic.bin +liquidio/lio_410nv_nic.bin +liquidio/lio_23xx_vsw.bin +liquidio/lio_210sv_nic.bin +matrox/g400_warp.fw +matrox/g200_warp.fw +mediatek/mt8173/vpu_p.bin +mediatek/mt8173/vpu_d.bin +mediatek/mt7622_rom_patch.bin +mediatek/mt7668pr2h.bin +mediatek/mt7622pr2h.bin +mediatek/mt8183/scp.img +mediatek/mt7610e.bin +mediatek/mt7662u_rom_patch.bin +mediatek/mt7663pr2h.bin +mediatek/mt7615_n9.bin +mediatek/mt7622_n9.bin +mediatek/mt7615_rom_patch.bin +mediatek/mt7663_n9_v3.bin +mediatek/mt7662u.bin +mediatek/mt7650e.bin +mediatek/mt7610u.bin +mediatek/mt7615_cr4.bin +mellanox/mlxsw_spectrum-13.2000.2714.mfa2 +mellanox/mlxsw_spectrum-13.2000.1122.mfa2 +mellanox/mlxsw_spectrum-13.2000.2308.mfa2 +mellanox/mlxsw_spectrum-13.1620.192.mfa2 +mellanox/mlxsw_spectrum2-29.2000.2714.mfa2 +mellanox/mlxsw_spectrum-13.1910.622.mfa2 +mellanox/mlxsw_spectrum-13.1530.152.mfa2 +mellanox/mlxsw_spectrum-13.1420.122.mfa2 +mellanox/mlxsw_spectrum2-29.2000.2308.mfa2 +mellanox/mlxsw_spectrum-13.2000.1886.mfa2 +mellanox/mlxsw_spectrum-13.1703.4.mfa2 +mellanox/mlxsw_spectrum-13.1702.6.mfa2 +meson/vdec/g12a_h264.bin +meson/vdec/gxl_h263.bin +meson/vdec/gxl_h264.bin +meson/vdec/gxl_hevc_mmu.bin +meson/vdec/gxbb_h264.bin +meson/vdec/gxl_mpeg4_5.bin +meson/vdec/gxl_vp9.bin +meson/vdec/gxm_h264.bin +meson/vdec/gxl_mpeg12.bin +meson/vdec/gxl_mjpeg.bin +meson/vdec/g12a_hevc_mmu.bin +meson/vdec/sm1_vp9_mmu.bin +meson/vdec/sm1_hevc_mmu.bin +meson/vdec/g12a_vp9.bin +meson/vdec/gxl_hevc.bin +microchip/mscc_vsc8584_revb_int8051_fb48.bin +microchip/mscc_vsc8574_revb_int8051_29e8.bin +moxa/moxa-1110.fw +moxa/moxa-1250.fw +moxa/moxa-1618.fw +moxa/moxa-1251.fw +moxa/moxa-1653.fw +moxa/moxa-1410.fw +moxa/moxa-1451.fw +moxa/moxa-1613.fw +moxa/moxa-1450.fw +moxa/moxa-1131.fw +moxa/moxa-1130.fw +moxa/moxa-1658.fw +moxa/moxa-1150.fw +moxa/moxa-1151.fw +mrvl/usb8797_uapsta.bin +mrvl/sd8688_helper.bin +mrvl/pcie8997_wlan_v4.bin +mrvl/sd8787_uapsta.bin +mrvl/sd8801_uapsta.bin +mrvl/pcieuart8997_combo_v4.bin +mrvl/pcie8897_uapsta.bin +mrvl/usb8897_uapsta.bin +mrvl/sd8887_uapsta.bin +mrvl/sdsd8977_combo_v2.bin +mrvl/sd8897_uapsta.bin +mrvl/sd8688.bin +mrvl/sd8797_uapsta.bin +mrvl/sdsd8997_combo_v4.bin +mrvl/pcieusb8997_combo_v4.bin +mrvl/usb8801_uapsta.bin +mrvl/usb8766_uapsta.bin +mrvl/usbusb8997_combo_v4.bin +mt7601u.bin +mt7650.bin +mt7662.bin +mt7662_rom_patch.bin +mts_cdma.fw +mts_edge.fw +mts_gsm.fw +mwl8k/fmimage_8366_ap-2.fw +mwl8k/fmimage_8366_ap-3.fw +mwl8k/fmimage_8366_ap-1.fw +mwl8k/fmimage_8687.fw +mwl8k/helper_8366.fw +mwl8k/fmimage_8764_ap-1.fw +mwl8k/helper_8687.fw +mwl8k/fmimage_8366.fw +mwlwifi/88W8897.bin +mwlwifi/88W8864.bin +myri10ge_eth_big_z8e.dat +myri10ge_eth_z8e.dat +myri10ge_ethp_big_z8e.dat +myri10ge_ethp_z8e.dat +myri10ge_rss_eth_big_z8e.dat +myri10ge_rss_eth_z8e.dat +myri10ge_rss_ethp_big_z8e.dat +myri10ge_rss_ethp_z8e.dat +netronome/nic-sriov/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/nic-sriov/nic_AMDA0099-0001_2x25.nffw +netronome/nic-sriov/nic_AMDA0099-0001_2x10.nffw +netronome/nic-sriov/nic_AMDA0081-0001_4x10.nffw +netronome/nic-sriov/nic_AMDA0078-0011_1x100.nffw +netronome/nic-sriov/nic_AMDA0096-0001_2x10.nffw +netronome/nic-sriov/nic_AMDA0081-0001_1x40.nffw +netronome/nic-sriov/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/nic-sriov/nic_AMDA0058-0012_2x40.nffw +netronome/nic-sriov/nic_AMDA0097-0001_8x10.nffw +netronome/nic-sriov/nic_AMDA0058-0011_2x40.nffw +netronome/nic-sriov/nic_AMDA0097-0001_2x40.nffw +netronome/flower/nic_AMDA0097.nffw +netronome/flower/nic_AMDA0096.nffw +netronome/flower/nic_AMDA0058.nffw +netronome/flower/nic_AMDA0099.nffw +netronome/bpf/nic_AMDA0097-0001_2x40.nffw +netronome/bpf/nic_AMDA0096-0001_2x10.nffw +netronome/bpf/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/bpf/nic_AMDA0081-0001_1x40.nffw +netronome/bpf/nic_AMDA0058-0012_2x40.nffw +netronome/bpf/nic_AMDA0097-0001_8x10.nffw +netronome/bpf/nic_AMDA0058-0011_2x40.nffw +netronome/bpf/nic_AMDA0099-0001_2x25.nffw +netronome/bpf/nic_AMDA0078-0011_1x100.nffw +netronome/bpf/nic_AMDA0099-0001_2x10.nffw +netronome/bpf/nic_AMDA0081-0001_4x10.nffw +netronome/bpf/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/nic/nic_AMDA0097-0001_4x10_1x40.nffw +netronome/nic/nic_AMDA0097-0001_2x40.nffw +netronome/nic/nic_AMDA0081-0001_1x40.nffw +netronome/nic/nic_AMDA0058-0012_2x40.nffw +netronome/nic/nic_AMDA0097-0001_8x10.nffw +netronome/nic/nic_AMDA0058-0011_2x40.nffw +netronome/nic/nic_AMDA0096-0001_2x10.nffw +netronome/nic/nic_AMDA0099-0001_1x10_1x25.nffw +netronome/nic/nic_AMDA0081-0001_4x10.nffw +netronome/nic/nic_AMDA0099-0001_2x25.nffw +netronome/nic/nic_AMDA0078-0011_1x100.nffw +netronome/nic/nic_AMDA0099-0001_2x10.nffw +nvidia/tegra186/vic04_ucode.bin +nvidia/tegra186/xusb.bin +nvidia/tu104/acr/ucode_ahesasc.bin +nvidia/tu104/acr/ucode_asb.bin +nvidia/tu104/acr/ucode_unload.bin +nvidia/tu104/acr/unload_bl.bin +nvidia/tu104/acr/bl.bin +nvidia/tu104/nvdec/scrubber.bin +nvidia/tu104/gr/fecs_sig.bin +nvidia/tu104/gr/fecs_inst.bin +nvidia/tu104/gr/gpccs_inst.bin +nvidia/tu104/gr/gpccs_sig.bin +nvidia/tu104/gr/sw_bundle_init.bin +nvidia/tu104/gr/fecs_bl.bin +nvidia/tu104/gr/sw_method_init.bin +nvidia/tu104/gr/sw_ctx.bin +nvidia/tu104/gr/gpccs_bl.bin +nvidia/tu104/gr/fecs_data.bin +nvidia/tu104/gr/gpccs_data.bin +nvidia/tu104/gr/sw_nonctx.bin +nvidia/tu104/gr/sw_veid_bundle_init.bin +nvidia/tu104/sec2/sig.bin +nvidia/tu104/sec2/image.bin +nvidia/tu104/sec2/desc.bin +nvidia/tu117/acr/unload_bl.bin +nvidia/tu117/acr/ucode_asb.bin +nvidia/tu117/acr/bl.bin +nvidia/tu117/acr/ucode_unload.bin +nvidia/tu117/acr/ucode_ahesasc.bin +nvidia/tu117/gr/gpccs_data.bin +nvidia/tu117/gr/gpccs_sig.bin +nvidia/tu117/gr/gpccs_bl.bin +nvidia/tu117/gr/fecs_inst.bin +nvidia/tu117/gr/sw_method_init.bin +nvidia/tu117/gr/sw_nonctx.bin +nvidia/tu117/gr/sw_veid_bundle_init.bin +nvidia/tu117/gr/fecs_data.bin +nvidia/tu117/gr/sw_bundle_init.bin +nvidia/tu117/gr/gpccs_inst.bin +nvidia/tu117/gr/fecs_bl.bin +nvidia/tu117/gr/fecs_sig.bin +nvidia/tu117/gr/sw_ctx.bin +nvidia/tu117/sec2/image.bin +nvidia/tu117/sec2/sig.bin +nvidia/tu117/sec2/desc.bin +nvidia/tu117/nvdec/scrubber.bin +nvidia/gv100/nvdec/scrubber.bin +nvidia/gv100/acr/unload_bl.bin +nvidia/gv100/acr/ucode_unload.bin +nvidia/gv100/acr/bl.bin +nvidia/gv100/acr/ucode_load.bin +nvidia/gv100/sec2/image.bin +nvidia/gv100/sec2/desc.bin +nvidia/gv100/sec2/sig.bin +nvidia/gv100/gr/fecs_data.bin +nvidia/gv100/gr/gpccs_data.bin +nvidia/gv100/gr/sw_nonctx.bin +nvidia/gv100/gr/sw_bundle_init.bin +nvidia/gv100/gr/gpccs_bl.bin +nvidia/gv100/gr/gpccs_sig.bin +nvidia/gv100/gr/fecs_sig.bin +nvidia/gv100/gr/fecs_inst.bin +nvidia/gv100/gr/gpccs_inst.bin +nvidia/gv100/gr/sw_ctx.bin +nvidia/gv100/gr/sw_method_init.bin +nvidia/gv100/gr/fecs_bl.bin +nvidia/gp104/gr/sw_nonctx.bin +nvidia/gp104/gr/fecs_data.bin +nvidia/gp104/gr/sw_bundle_init.bin +nvidia/gp104/gr/fecs_bl.bin +nvidia/gp104/gr/gpccs_bl.bin +nvidia/gp104/gr/gpccs_data.bin +nvidia/gp104/gr/sw_ctx.bin +nvidia/gp104/gr/gpccs_inst.bin +nvidia/gp104/gr/gpccs_sig.bin +nvidia/gp104/gr/fecs_inst.bin +nvidia/gp104/gr/fecs_sig.bin +nvidia/gp104/gr/sw_method_init.bin +nvidia/gp104/acr/unload_bl.bin +nvidia/gp104/acr/bl.bin +nvidia/gp104/acr/ucode_unload.bin +nvidia/gp104/acr/ucode_load.bin +nvidia/gp104/sec2/image-1.bin +nvidia/gp104/sec2/desc.bin +nvidia/gp104/sec2/sig.bin +nvidia/gp104/sec2/desc-1.bin +nvidia/gp104/sec2/image.bin +nvidia/gp104/sec2/sig-1.bin +nvidia/gp104/nvdec/scrubber.bin +nvidia/gk20a/fecs_data.bin +nvidia/gk20a/gpccs_inst.bin +nvidia/gk20a/sw_nonctx.bin +nvidia/gk20a/sw_bundle_init.bin +nvidia/gk20a/fecs_inst.bin +nvidia/gk20a/gpccs_data.bin +nvidia/gk20a/sw_method_init.bin +nvidia/gk20a/sw_ctx.bin +nvidia/gm20b/acr/ucode_load.bin +nvidia/gm20b/acr/bl.bin +nvidia/gm20b/gr/gpccs_data.bin +nvidia/gm20b/gr/fecs_bl.bin +nvidia/gm20b/gr/fecs_inst.bin +nvidia/gm20b/gr/sw_method_init.bin +nvidia/gm20b/gr/sw_nonctx.bin +nvidia/gm20b/gr/sw_ctx.bin +nvidia/gm20b/gr/fecs_data.bin +nvidia/gm20b/gr/sw_bundle_init.bin +nvidia/gm20b/gr/gpccs_inst.bin +nvidia/gm20b/gr/fecs_sig.bin +nvidia/gm20b/pmu/desc.bin +nvidia/gm20b/pmu/sig.bin +nvidia/gm20b/pmu/image.bin +nvidia/tegra124/vic03_ucode.bin +nvidia/tegra124/xusb.bin +nvidia/gp100/acr/bl.bin +nvidia/gp100/acr/ucode_unload.bin +nvidia/gp100/acr/ucode_load.bin +nvidia/gp100/gr/sw_method_init.bin +nvidia/gp100/gr/sw_ctx.bin +nvidia/gp100/gr/gpccs_bl.bin +nvidia/gp100/gr/gpccs_data.bin +nvidia/gp100/gr/fecs_data.bin +nvidia/gp100/gr/sw_nonctx.bin +nvidia/gp100/gr/gpccs_inst.bin +nvidia/gp100/gr/fecs_bl.bin +nvidia/gp100/gr/fecs_sig.bin +nvidia/gp100/gr/fecs_inst.bin +nvidia/gp100/gr/sw_bundle_init.bin +nvidia/gp100/gr/gpccs_sig.bin +nvidia/gm206/gr/fecs_inst.bin +nvidia/gm206/gr/fecs_sig.bin +nvidia/gm206/gr/gpccs_inst.bin +nvidia/gm206/gr/gpccs_sig.bin +nvidia/gm206/gr/sw_ctx.bin +nvidia/gm206/gr/sw_method_init.bin +nvidia/gm206/gr/gpccs_data.bin +nvidia/gm206/gr/sw_bundle_init.bin +nvidia/gm206/gr/gpccs_bl.bin +nvidia/gm206/gr/fecs_data.bin +nvidia/gm206/gr/sw_nonctx.bin +nvidia/gm206/gr/fecs_bl.bin +nvidia/gm206/acr/ucode_load.bin +nvidia/gm206/acr/ucode_unload.bin +nvidia/gm206/acr/bl.bin +nvidia/gp107/gr/gpccs_sig.bin +nvidia/gp107/gr/sw_method_init.bin +nvidia/gp107/gr/gpccs_bl.bin +nvidia/gp107/gr/gpccs_data.bin +nvidia/gp107/gr/fecs_inst.bin +nvidia/gp107/gr/fecs_data.bin +nvidia/gp107/gr/sw_nonctx.bin +nvidia/gp107/gr/fecs_bl.bin +nvidia/gp107/gr/sw_ctx.bin +nvidia/gp107/gr/gpccs_inst.bin +nvidia/gp107/gr/sw_bundle_init.bin +nvidia/gp107/gr/fecs_sig.bin +nvidia/gp107/nvdec/scrubber.bin +nvidia/gp107/acr/unload_bl.bin +nvidia/gp107/acr/ucode_load.bin +nvidia/gp107/acr/ucode_unload.bin +nvidia/gp107/acr/bl.bin +nvidia/gp107/sec2/sig.bin +nvidia/gp107/sec2/image.bin +nvidia/gp107/sec2/sig-1.bin +nvidia/gp107/sec2/image-1.bin +nvidia/gp107/sec2/desc.bin +nvidia/gp107/sec2/desc-1.bin +nvidia/tegra210/vic04_ucode.bin +nvidia/tegra210/xusb.bin +nvidia/tu102/nvdec/scrubber.bin +nvidia/tu102/gr/fecs_sig.bin +nvidia/tu102/gr/sw_ctx.bin +nvidia/tu102/gr/sw_bundle_init.bin +nvidia/tu102/gr/gpccs_inst.bin +nvidia/tu102/gr/sw_nonctx.bin +nvidia/tu102/gr/fecs_data.bin +nvidia/tu102/gr/fecs_inst.bin +nvidia/tu102/gr/sw_veid_bundle_init.bin +nvidia/tu102/gr/fecs_bl.bin +nvidia/tu102/gr/gpccs_bl.bin +nvidia/tu102/gr/gpccs_sig.bin +nvidia/tu102/gr/gpccs_data.bin +nvidia/tu102/gr/sw_method_init.bin +nvidia/tu102/acr/ucode_asb.bin +nvidia/tu102/acr/unload_bl.bin +nvidia/tu102/acr/bl.bin +nvidia/tu102/acr/ucode_ahesasc.bin +nvidia/tu102/acr/ucode_unload.bin +nvidia/tu102/sec2/desc.bin +nvidia/tu102/sec2/sig.bin +nvidia/tu102/sec2/image.bin +nvidia/tegra194/xusb.bin +nvidia/tu116/acr/ucode_asb.bin +nvidia/tu116/acr/unload_bl.bin +nvidia/tu116/acr/ucode_ahesasc.bin +nvidia/tu116/acr/ucode_unload.bin +nvidia/tu116/acr/bl.bin +nvidia/tu116/sec2/image.bin +nvidia/tu116/sec2/desc.bin +nvidia/tu116/sec2/sig.bin +nvidia/tu116/gr/sw_veid_bundle_init.bin +nvidia/tu116/gr/gpccs_inst.bin +nvidia/tu116/gr/sw_method_init.bin +nvidia/tu116/gr/gpccs_sig.bin +nvidia/tu116/gr/gpccs_bl.bin +nvidia/tu116/gr/fecs_inst.bin +nvidia/tu116/gr/sw_ctx.bin +nvidia/tu116/gr/sw_nonctx.bin +nvidia/tu116/gr/fecs_data.bin +nvidia/tu116/gr/fecs_sig.bin +nvidia/tu116/gr/fecs_bl.bin +nvidia/tu116/gr/gpccs_data.bin +nvidia/tu116/gr/sw_bundle_init.bin +nvidia/tu116/nvdec/scrubber.bin +nvidia/gm204/acr/ucode_unload.bin +nvidia/gm204/acr/ucode_load.bin +nvidia/gm204/acr/bl.bin +nvidia/gm204/gr/gpccs_bl.bin +nvidia/gm204/gr/gpccs_sig.bin +nvidia/gm204/gr/sw_method_init.bin +nvidia/gm204/gr/gpccs_data.bin +nvidia/gm204/gr/fecs_inst.bin +nvidia/gm204/gr/fecs_bl.bin +nvidia/gm204/gr/gpccs_inst.bin +nvidia/gm204/gr/fecs_data.bin +nvidia/gm204/gr/sw_ctx.bin +nvidia/gm204/gr/sw_nonctx.bin +nvidia/gm204/gr/sw_bundle_init.bin +nvidia/gm204/gr/fecs_sig.bin +nvidia/gp108/nvdec/scrubber.bin +nvidia/gp108/gr/gpccs_inst.bin +nvidia/gp108/gr/fecs_data.bin +nvidia/gp108/gr/fecs_sig.bin +nvidia/gp108/gr/sw_nonctx.bin +nvidia/gp108/gr/sw_bundle_init.bin +nvidia/gp108/gr/gpccs_sig.bin +nvidia/gp108/gr/sw_method_init.bin +nvidia/gp108/gr/gpccs_data.bin +nvidia/gp108/gr/gpccs_bl.bin +nvidia/gp108/gr/fecs_inst.bin +nvidia/gp108/gr/fecs_bl.bin +nvidia/gp108/gr/sw_ctx.bin +nvidia/gp108/sec2/image.bin +nvidia/gp108/sec2/sig.bin +nvidia/gp108/sec2/desc.bin +nvidia/gp108/acr/bl.bin +nvidia/gp108/acr/ucode_unload.bin +nvidia/gp108/acr/ucode_load.bin +nvidia/gp108/acr/unload_bl.bin +nvidia/gp102/nvdec/scrubber.bin +nvidia/gp102/acr/ucode_load.bin +nvidia/gp102/acr/ucode_unload.bin +nvidia/gp102/acr/unload_bl.bin +nvidia/gp102/acr/bl.bin +nvidia/gp102/sec2/desc.bin +nvidia/gp102/sec2/desc-1.bin +nvidia/gp102/sec2/image.bin +nvidia/gp102/sec2/sig-1.bin +nvidia/gp102/sec2/image-1.bin +nvidia/gp102/sec2/sig.bin +nvidia/gp102/gr/fecs_data.bin +nvidia/gp102/gr/fecs_sig.bin +nvidia/gp102/gr/sw_nonctx.bin +nvidia/gp102/gr/gpccs_data.bin +nvidia/gp102/gr/fecs_bl.bin +nvidia/gp102/gr/sw_bundle_init.bin +nvidia/gp102/gr/gpccs_sig.bin +nvidia/gp102/gr/sw_ctx.bin +nvidia/gp102/gr/sw_method_init.bin +nvidia/gp102/gr/fecs_inst.bin +nvidia/gp102/gr/gpccs_bl.bin +nvidia/gp102/gr/gpccs_inst.bin +nvidia/gp10b/pmu/image.bin +nvidia/gp10b/pmu/desc.bin +nvidia/gp10b/pmu/sig.bin +nvidia/gp10b/acr/ucode_load.bin +nvidia/gp10b/acr/bl.bin +nvidia/gp10b/gr/sw_method_init.bin +nvidia/gp10b/gr/fecs_data.bin +nvidia/gp10b/gr/sw_nonctx.bin +nvidia/gp10b/gr/gpccs_data.bin +nvidia/gp10b/gr/gpccs_bl.bin +nvidia/gp10b/gr/fecs_bl.bin +nvidia/gp10b/gr/gpccs_sig.bin +nvidia/gp10b/gr/gpccs_inst.bin +nvidia/gp10b/gr/fecs_sig.bin +nvidia/gp10b/gr/sw_bundle_init.bin +nvidia/gp10b/gr/sw_ctx.bin +nvidia/gp10b/gr/fecs_inst.bin +nvidia/gm200/acr/bl.bin +nvidia/gm200/acr/ucode_load.bin +nvidia/gm200/acr/ucode_unload.bin +nvidia/gm200/gr/fecs_inst.bin +nvidia/gm200/gr/gpccs_bl.bin +nvidia/gm200/gr/sw_method_init.bin +nvidia/gm200/gr/gpccs_sig.bin +nvidia/gm200/gr/gpccs_inst.bin +nvidia/gm200/gr/gpccs_data.bin +nvidia/gm200/gr/sw_ctx.bin +nvidia/gm200/gr/fecs_data.bin +nvidia/gm200/gr/fecs_sig.bin +nvidia/gm200/gr/sw_nonctx.bin +nvidia/gm200/gr/sw_bundle_init.bin +nvidia/gm200/gr/fecs_bl.bin +nvidia/gp106/nvdec/scrubber.bin +nvidia/gp106/gr/sw_nonctx.bin +nvidia/gp106/gr/fecs_bl.bin +nvidia/gp106/gr/fecs_data.bin +nvidia/gp106/gr/gpccs_bl.bin +nvidia/gp106/gr/gpccs_data.bin +nvidia/gp106/gr/sw_bundle_init.bin +nvidia/gp106/gr/sw_ctx.bin +nvidia/gp106/gr/sw_method_init.bin +nvidia/gp106/gr/fecs_sig.bin +nvidia/gp106/gr/gpccs_inst.bin +nvidia/gp106/gr/gpccs_sig.bin +nvidia/gp106/gr/fecs_inst.bin +nvidia/gp106/sec2/desc.bin +nvidia/gp106/sec2/image-1.bin +nvidia/gp106/sec2/sig.bin +nvidia/gp106/sec2/image.bin +nvidia/gp106/sec2/desc-1.bin +nvidia/gp106/sec2/sig-1.bin +nvidia/gp106/acr/unload_bl.bin +nvidia/gp106/acr/bl.bin +nvidia/gp106/acr/ucode_load.bin +nvidia/gp106/acr/ucode_unload.bin +nvidia/tu10x/typec/ccg_boot.cyacd +nvidia/tu10x/typec/ccg_secondary.cyacd +nvidia/tu10x/typec/ccg_primary.cyacd +nvidia/tu106/nvdec/scrubber.bin +nvidia/tu106/gr/sw_method_init.bin +nvidia/tu106/gr/sw_veid_bundle_init.bin +nvidia/tu106/gr/gpccs_data.bin +nvidia/tu106/gr/sw_nonctx.bin +nvidia/tu106/gr/fecs_sig.bin +nvidia/tu106/gr/fecs_data.bin +nvidia/tu106/gr/gpccs_inst.bin +nvidia/tu106/gr/sw_ctx.bin +nvidia/tu106/gr/fecs_inst.bin +nvidia/tu106/gr/gpccs_bl.bin +nvidia/tu106/gr/sw_bundle_init.bin +nvidia/tu106/gr/fecs_bl.bin +nvidia/tu106/gr/gpccs_sig.bin +nvidia/tu106/sec2/desc.bin +nvidia/tu106/sec2/sig.bin +nvidia/tu106/sec2/image.bin +nvidia/tu106/acr/ucode_asb.bin +nvidia/tu106/acr/ucode_ahesasc.bin +nvidia/tu106/acr/unload_bl.bin +nvidia/tu106/acr/bl.bin +nvidia/tu106/acr/ucode_unload.bin +phanfw.bin +qat_895xcc.bin +qat_895xcc_mmp.bin +qat_c3xxx.bin +qat_c3xxx_mmp.bin +qat_c62x.bin +qat_c62x_mmp.bin +qca/rampatch_00130300.bin +qca/htbtfw20.tlv +qca/rampatch_usb_00000201.bin +qca/nvm_usb_00000302.bin +qca/rampatch_usb_00000300.bin +qca/nvm_00440302_eu.bin +qca/nvm_00440302.bin +qca/crnv32.bin +qca/rampatch_usb_00000200.bin +qca/crbtfw21.tlv +qca/nvm_00130302.bin +qca/nvm_usb_00000300.bin +qca/htnv20.bin +qca/rampatch_00440302.bin +qca/nvm_00440302_i2s_eu.bin +qca/nvm_usb_00000302_eu.bin +qca/nvm_usb_00000200.bin +qca/NOTICE.txt +qca/rampatch_00130302.bin +qca/nvm_00130300.bin +qca/crnv21.bin +qca/crbtfw32.tlv +qca/nvm_usb_00000201.bin +qca/rampatch_usb_00000302.bin +qcom/venus-5.4/venus.mdt +qcom/venus-5.4/venus.mbn +qcom/venus-5.4/venus.b01 +qcom/venus-5.4/venus.b02 +qcom/venus-5.4/venus.b00 +qcom/venus-5.4/venus.b03 +qcom/venus-5.4/venus.b04 +qcom/a300_pm4.fw +qcom/a530_zap.b02 +qcom/a630_gmu.bin +qcom/a530_zap.mdt +qcom/a530_zap.b01 +qcom/a530v3_gpmu.fw2 +qcom/a630_sqe.fw +qcom/a300_pfp.fw +qcom/venus-1.8/venus.b02 +qcom/venus-1.8/venus.b01 +qcom/venus-1.8/venus.mdt +qcom/venus-1.8/venus.b03 +qcom/venus-1.8/venus.b04 +qcom/venus-1.8/venus.b00 +qcom/venus-5.2/venus.b00 +qcom/venus-5.2/venus.b03 +qcom/venus-5.2/venus.b04 +qcom/venus-5.2/venus.mdt +qcom/venus-5.2/venus.mbn +qcom/venus-5.2/venus.b01 +qcom/venus-5.2/venus.b02 +qcom/sdm845/adspr.jsn +qcom/sdm845/modem.mbn +qcom/sdm845/a630_zap.mbn +qcom/sdm845/modemuw.jsn +qcom/sdm845/cdsp.mbn +qcom/sdm845/cdspr.jsn +qcom/sdm845/mba.mbn +qcom/sdm845/adsp.mbn +qcom/sdm845/adspua.jsn +qcom/a530_pfp.fw +qcom/venus-4.2/venus.b04 +qcom/venus-4.2/venus.b03 +qcom/venus-4.2/venus.b00 +qcom/venus-4.2/venus.b02 +qcom/venus-4.2/venus.b01 +qcom/venus-4.2/venus.mdt +qcom/NOTICE.txt +qcom/a530_pm4.fw +qcom/a530_zap.b00 +qed/qed_init_values_zipped-8.37.2.0.bin +qed/qed_init_values-8.40.33.0.bin +qed/qed_init_values-8.30.12.0.bin +qed/qed_init_values_zipped-8.10.10.0.bin +qed/qed_init_values_zipped-8.7.3.0.bin +qed/qed_init_values_zipped-8.42.2.0.bin +qed/qed_init_values_zipped-8.15.3.0.bin +qed/qed_init_values_zipped-8.33.1.0.bin +qed/qed_init_values_zipped-8.33.11.0.bin +qed/qed_init_values-8.10.9.0.bin +qed/qed_init_values-8.18.9.0.bin +qed/qed_init_values_zipped-8.20.0.0.bin +qed/qed_init_values_zipped-8.37.7.0.bin +qed/qed_init_values_zipped-8.4.2.0.bin +qed/qed_init_values-8.37.7.0.bin +qed/qed_init_values-8.33.12.0.bin +qed/qed_init_values-8.20.0.0.bin +qed/qed_init_values-8.14.6.0.bin +qed/qed_init_values_zipped-8.10.5.0.bin +ql2100_fw.bin +ql2200_fw.bin +ql2300_fw.bin +ql2322_fw.bin +ql2400_fw.bin +ql2500_fw.bin +qlogic/1280.bin +qlogic/1040.bin +qlogic/sd7220.fw +qlogic/12160.bin +r128/r128_cce.bin +r8a779x_usb3_v1.dlmem +r8a779x_usb3_v2.dlmem +r8a779x_usb3_v3.dlmem +radeon/kabini_rlc.bin +radeon/SUMO_rlc.bin +radeon/kaveri_mec.bin +radeon/pitcairn_me.bin +radeon/OLAND_ce.bin +radeon/TURKS_me.bin +radeon/verde_k_smc.bin +radeon/hawaii_pfp.bin +radeon/KAVERI_pfp.bin +radeon/HAWAII_ce.bin +radeon/oland_smc.bin +radeon/TAHITI_pfp.bin +radeon/CAICOS_pfp.bin +radeon/hainan_me.bin +radeon/CAYMAN_smc.bin +radeon/RV620_me.bin +radeon/bonaire_k_smc.bin +radeon/bonaire_sdma.bin +radeon/RV620_pfp.bin +radeon/hawaii_mc.bin +radeon/REDWOOD_pfp.bin +radeon/HAWAII_mec.bin +radeon/RS600_cp.bin +radeon/CAICOS_me.bin +radeon/RV770_me.bin +radeon/RV730_me.bin +radeon/BARTS_me.bin +radeon/PITCAIRN_mc.bin +radeon/JUNIPER_smc.bin +radeon/bonaire_mec.bin +radeon/oland_mc.bin +radeon/BONAIRE_rlc.bin +radeon/PITCAIRN_smc.bin +radeon/verde_pfp.bin +radeon/RV770_uvd.bin +radeon/KABINI_me.bin +radeon/RV635_pfp.bin +radeon/R100_cp.bin +radeon/VERDE_mc2.bin +radeon/HAINAN_pfp.bin +radeon/OLAND_rlc.bin +radeon/TAHITI_mc.bin +radeon/mullins_sdma1.bin +radeon/MULLINS_rlc.bin +radeon/CEDAR_smc.bin +radeon/R520_cp.bin +radeon/tahiti_ce.bin +radeon/mullins_mec.bin +radeon/HAWAII_sdma.bin +radeon/mullins_ce.bin +radeon/RV770_smc.bin +radeon/kaveri_ce.bin +radeon/bonaire_me.bin +radeon/KAVERI_sdma.bin +radeon/HAWAII_mc2.bin +radeon/verde_me.bin +radeon/RV710_smc.bin +radeon/RV730_pfp.bin +radeon/hawaii_me.bin +radeon/HAWAII_pfp.bin +radeon/BONAIRE_ce.bin +radeon/TURKS_pfp.bin +radeon/HAINAN_ce.bin +radeon/MULLINS_me.bin +radeon/MULLINS_sdma.bin +radeon/ARUBA_rlc.bin +radeon/VERDE_ce.bin +radeon/CYPRESS_me.bin +radeon/RV630_pfp.bin +radeon/KABINI_rlc.bin +radeon/KAVERI_mec.bin +radeon/kabini_vce.bin +radeon/HAINAN_mc2.bin +radeon/hainan_mc.bin +radeon/VERDE_pfp.bin +radeon/hawaii_mec.bin +radeon/RV710_uvd.bin +radeon/RS780_uvd.bin +radeon/kabini_uvd.bin +radeon/SUMO_uvd.bin +radeon/CAYMAN_rlc.bin +radeon/oland_rlc.bin +radeon/tahiti_pfp.bin +radeon/pitcairn_mc.bin +radeon/kaveri_mec2.bin +radeon/JUNIPER_me.bin +radeon/TURKS_mc.bin +radeon/kaveri_pfp.bin +radeon/hawaii_sdma1.bin +radeon/ARUBA_me.bin +radeon/SUMO_me.bin +radeon/si58_mc.bin +radeon/R600_pfp.bin +radeon/verde_mc.bin +radeon/BARTS_smc.bin +radeon/PALM_pfp.bin +radeon/bonaire_mc.bin +radeon/mullins_pfp.bin +radeon/BONAIRE_vce.bin +radeon/JUNIPER_rlc.bin +radeon/BONAIRE_smc.bin +radeon/PITCAIRN_rlc.bin +radeon/R420_cp.bin +radeon/TAHITI_mc2.bin +radeon/KABINI_sdma.bin +radeon/KAVERI_me.bin +radeon/TAHITI_me.bin +radeon/OLAND_smc.bin +radeon/RV630_me.bin +radeon/kaveri_sdma1.bin +radeon/pitcairn_pfp.bin +radeon/RV670_me.bin +radeon/CEDAR_me.bin +radeon/CYPRESS_pfp.bin +radeon/BTC_rlc.bin +radeon/SUMO2_me.bin +radeon/BARTS_mc.bin +radeon/PITCAIRN_me.bin +radeon/bonaire_pfp.bin +radeon/CAICOS_mc.bin +radeon/kabini_ce.bin +radeon/BONAIRE_uvd.bin +radeon/CEDAR_rlc.bin +radeon/RS690_cp.bin +radeon/hainan_pfp.bin +radeon/oland_me.bin +radeon/REDWOOD_me.bin +radeon/JUNIPER_pfp.bin +radeon/CAYMAN_me.bin +radeon/mullins_rlc.bin +radeon/R600_rlc.bin +radeon/oland_ce.bin +radeon/kabini_me.bin +radeon/PITCAIRN_ce.bin +radeon/R300_cp.bin +radeon/R700_rlc.bin +radeon/PITCAIRN_pfp.bin +radeon/verde_smc.bin +radeon/hainan_k_smc.bin +radeon/MULLINS_mec.bin +radeon/TAHITI_ce.bin +radeon/BONAIRE_mec.bin +radeon/kaveri_sdma.bin +radeon/CYPRESS_rlc.bin +radeon/KAVERI_ce.bin +radeon/hawaii_k_smc.bin +radeon/HAINAN_smc.bin +radeon/pitcairn_rlc.bin +radeon/RV670_pfp.bin +radeon/hawaii_sdma.bin +radeon/hainan_rlc.bin +radeon/SUMO2_pfp.bin +radeon/CEDAR_pfp.bin +radeon/tahiti_mc.bin +radeon/bonaire_rlc.bin +radeon/RV770_pfp.bin +radeon/pitcairn_k_smc.bin +radeon/OLAND_mc.bin +radeon/TAHITI_uvd.bin +radeon/mullins_sdma.bin +radeon/kabini_sdma1.bin +radeon/ARUBA_pfp.bin +radeon/HAWAII_rlc.bin +radeon/RS780_me.bin +radeon/hawaii_vce.bin +radeon/oland_k_smc.bin +radeon/VERDE_rlc.bin +radeon/banks_k_2_smc.bin +radeon/OLAND_mc2.bin +radeon/hawaii_smc.bin +radeon/KABINI_pfp.bin +radeon/BONAIRE_mc2.bin +radeon/HAWAII_mc.bin +radeon/TAHITI_smc.bin +radeon/oland_pfp.bin +radeon/CAICOS_smc.bin +radeon/CAYMAN_pfp.bin +radeon/PALM_me.bin +radeon/VERDE_me.bin +radeon/kabini_mec.bin +radeon/RV610_me.bin +radeon/kaveri_rlc.bin +radeon/MULLINS_ce.bin +radeon/hawaii_uvd.bin +radeon/hawaii_ce.bin +radeon/BONAIRE_me.bin +radeon/HAINAN_me.bin +radeon/TAHITI_vce.bin +radeon/REDWOOD_smc.bin +radeon/tahiti_rlc.bin +radeon/kabini_sdma.bin +radeon/BARTS_pfp.bin +radeon/verde_ce.bin +radeon/CYPRESS_uvd.bin +radeon/bonaire_ce.bin +radeon/mullins_me.bin +radeon/kaveri_me.bin +radeon/tahiti_me.bin +radeon/verde_rlc.bin +radeon/bonaire_uvd.bin +radeon/BONAIRE_pfp.bin +radeon/mullins_vce.bin +radeon/RV740_smc.bin +radeon/MULLINS_pfp.bin +radeon/bonaire_vce.bin +radeon/R600_uvd.bin +radeon/mullins_uvd.bin +radeon/CYPRESS_smc.bin +radeon/KABINI_ce.bin +radeon/OLAND_pfp.bin +radeon/HAINAN_rlc.bin +radeon/pitcairn_smc.bin +radeon/tahiti_k_smc.bin +radeon/hainan_smc.bin +radeon/R200_cp.bin +radeon/CAYMAN_mc.bin +radeon/bonaire_smc.bin +radeon/bonaire_sdma1.bin +radeon/VERDE_mc.bin +radeon/RV635_me.bin +radeon/RV710_pfp.bin +radeon/RV730_smc.bin +radeon/HAWAII_smc.bin +radeon/RS780_pfp.bin +radeon/BONAIRE_mc.bin +radeon/kabini_pfp.bin +radeon/SUMO_pfp.bin +radeon/TURKS_smc.bin +radeon/HAINAN_mc.bin +radeon/R600_me.bin +radeon/hawaii_rlc.bin +radeon/HAWAII_me.bin +radeon/RV710_me.bin +radeon/kaveri_uvd.bin +radeon/hainan_ce.bin +radeon/VERDE_smc.bin +radeon/RV610_pfp.bin +radeon/PITCAIRN_mc2.bin +radeon/TAHITI_rlc.bin +radeon/KABINI_mec.bin +radeon/KAVERI_rlc.bin +radeon/kaveri_vce.bin +radeon/OLAND_me.bin +radeon/REDWOOD_rlc.bin +radeon/tahiti_smc.bin +radeon/pitcairn_ce.bin +radeon/BONAIRE_sdma.bin +rockchip/dptx.bin +rp2.fw +rsi/rs9113_ap_bt_dual_mode.rps +rsi/rs9113_wlan_qspi.rps +rsi/rs9113_wlan_bt_dual_mode.rps +rsi/rs9116_wlan.rps +rsi/rs9116_wlan_bt_classic.rps +rsi_91x.fw +rt2561.bin +rt2561s.bin +rt2661.bin +rt2860.bin +rt2870.bin +rt3071.bin +rt3290.bin +rt73.bin +rtl_bt/rtl8822cs_fw.bin +rtl_bt/rtl8821a_fw.bin +rtl_bt/rtl8192ee_fw.bin +rtl_bt/rtl8812ae_fw.bin +rtl_bt/rtl8821c_fw.bin +rtl_bt/rtl8723d_fw.bin +rtl_bt/rtl8723b_fw.bin +rtl_bt/rtl8822b_fw.bin +rtl_bt/rtl8822cs_config.bin +rtl_bt/rtl8822cu_fw.bin +rtl_bt/rtl8723bs_config-OBDA8723.bin +rtl_bt/rtl8822cu_config.bin +rtl_bt/rtl8192eu_fw.bin +rtl_bt/rtl8761a_fw.bin +rtl_bt/rtl8723bs_fw.bin +rtl_bt/rtl8723a_fw.bin +rtl_bt/rtl8723d_config.bin +rtl_bt/rtl8821c_config.bin +rtl_bt/rtl8822b_config.bin +rtl_nic/rtl8168h-1.fw +rtl_nic/rtl8105e-1.fw +rtl_nic/rtl8168d-2.fw +rtl_nic/rtl8125a-3.fw +rtl_nic/rtl8168h-2.fw +rtl_nic/rtl8153a-4.fw +rtl_nic/rtl8168d-1.fw +rtl_nic/rtl8106e-2.fw +rtl_nic/rtl8168e-1.fw +rtl_nic/rtl8107e-1.fw +rtl_nic/rtl8153a-3.fw +rtl_nic/rtl8168e-3.fw +rtl_nic/rtl8168e-2.fw +rtl_nic/rtl8107e-2.fw +rtl_nic/rtl8106e-1.fw +rtl_nic/rtl8153a-2.fw +rtl_nic/rtl8402-1.fw +rtl_nic/rtl8168g-1.fw +rtl_nic/rtl8168g-3.fw +rtl_nic/rtl8168g-2.fw +rtl_nic/rtl8168fp-3.fw +rtl_nic/rtl8168f-2.fw +rtl_nic/rtl8153b-2.fw +rtl_nic/rtl8411-2.fw +rtl_nic/rtl8168f-1.fw +rtl_nic/rtl8411-1.fw +rtlwifi/rtl8192eu_wowlan.bin +rtlwifi/rtl8192cufw_B.bin +rtlwifi/rtl8192cfwU_B.bin +rtlwifi/rtl8723aufw_A.bin +rtlwifi/rtl8723bs_nic.bin +rtlwifi/rtl8712u.bin +rtlwifi/rtl8723bs_wowlan.bin +rtlwifi/rtl8723aufw_B_NoBT.bin +rtlwifi/rtl8192cufw.bin +rtlwifi/rtl8723fw_B.bin +rtlwifi/rtl8723bu_ap_wowlan.bin +rtlwifi/rtl8192sefw.bin +rtlwifi/rtl8192defw.bin +rtlwifi/rtl8812aefw_wowlan.bin +rtlwifi/rtl8822befw.bin +rtlwifi/rtl8188efw.bin +rtlwifi/rtl8812aefw.bin +rtlwifi/rtl8723bu_nic.bin +rtlwifi/rtl8723bu_wowlan.bin +rtlwifi/rtl8723befw_36.bin +rtlwifi/rtl8723befw.bin +rtlwifi/rtl8192cfw.bin +rtlwifi/rtl8723bs_bt.bin +rtlwifi/rtl8192eefw.bin +rtlwifi/rtl8723fw.bin +rtlwifi/rtl8188eufw.bin +rtlwifi/rtl8821aefw_wowlan.bin +rtlwifi/rtl8192cufw_TMSC.bin +rtlwifi/rtl8821aefw_29.bin +rtlwifi/rtl8192eu_nic.bin +rtlwifi/rtl8821aefw.bin +rtlwifi/rtl8723aufw_B.bin +rtlwifi/rtl8192cfwU.bin +rtlwifi/rtl8192cufw_A.bin +rtlwifi/rtl8192eu_ap_wowlan.bin +rtlwifi/rtl8723bs_ap_wowlan.bin +rtlwifi/rtl8723defw.bin +rtw88/rtw8822c_fw.bin +rtw88/README +rtw88/rtw8723d_fw.bin +rtw88/rtw8822c_wow_fw.bin +rtw88/rtw8822b_fw.bin +s5p-mfc-v6-v2.fw +s5p-mfc-v6.fw +s5p-mfc-v7.fw +s5p-mfc-v8.fw +s5p-mfc.fw +sdd_sagrad_1091_1098.bin +slicoss/oasisrcvucode.sys +slicoss/gbdownload.sys +slicoss/oasisdownload.sys +slicoss/oasisdbgdownload.sys +slicoss/gbrcvucode.sys +sms1xxx-hcw-55xxx-dvbt-02.fw +sms1xxx-hcw-55xxx-isdbt-02.fw +sms1xxx-nova-a-dvbt-01.fw +sms1xxx-nova-b-dvbt-01.fw +sms1xxx-stellar-dvbt-01.fw +sxg/saharadbgdownloadB.sys +sxg/saharadownloadB.sys +tdmb_nova_12mhz.inp +tehuti/bdx.bin +ti-connectivity/wl128x-fw-3.bin +ti-connectivity/TIInit_6.2.31.bts +ti-connectivity/wl127x-fw-4-sr.bin +ti-connectivity/wl127x-fw-plt-3.bin +ti-connectivity/wl128x-fw-plt-3.bin +ti-connectivity/wl18xx-fw-4.bin +ti-connectivity/wl18xx-fw-3.bin +ti-connectivity/wl128x-fw-5-mr.bin +ti-connectivity/wl128x-fw-4-sr.bin +ti-connectivity/wl128x-fw.bin +ti-connectivity/wl128x-nvs.bin +ti-connectivity/wl127x-nvs.bin +ti-connectivity/TIInit_7.2.31.bts +ti-connectivity/TIInit_6.6.15.bts +ti-connectivity/wl127x-fw-3.bin +ti-connectivity/wl18xx-fw-2.bin +ti-connectivity/wl127x-fw-5-mr.bin +ti-connectivity/wl1251-fw.bin +ti-connectivity/wl1271-fw-2.bin +ti-connectivity/wl128x-fw-5-plt.bin +ti-connectivity/wl128x-fw-5-sr.bin +ti-connectivity/wl127x-fw-4-mr.bin +ti-connectivity/wl1251-nvs.bin +ti-connectivity/wl127x-fw-5-plt.bin +ti-connectivity/wl1271-fw.bin +ti-connectivity/wl127x-fw-4-plt.bin +ti-connectivity/wl127x-fw-5-sr.bin +ti-connectivity/wl128x-fw-ap.bin +ti-connectivity/wl128x-fw-4-mr.bin +ti-connectivity/wl18xx-fw.bin +ti-connectivity/wl128x-fw-4-plt.bin +ti-connectivity/wl1271-fw-ap.bin +ti-keystone/ks2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin +tigon/tg3_tso5.bin +tigon/tg3.bin +tigon/tg3_tso.bin +tigon/tg357766.bin +tlg2300_firmware.bin +ueagle-atm/CMVeiWO.bin +ueagle-atm/930-fpga.bin +ueagle-atm/CMV4p.bin.v2 +ueagle-atm/adi930.fw +ueagle-atm/CMVepWO.bin +ueagle-atm/CMVepFR04.bin +ueagle-atm/eagleII.fw +ueagle-atm/CMVepFR.bin +ueagle-atm/DSPep.bin +ueagle-atm/DSP9i.bin +ueagle-atm/CMV9i.bin +ueagle-atm/eagleI.fw +ueagle-atm/CMVep.bin +ueagle-atm/CMVepIT.bin +ueagle-atm/eagleIII.fw +ueagle-atm/DSP4p.bin +ueagle-atm/CMVepFR10.bin +ueagle-atm/CMVepES.bin +ueagle-atm/CMV9p.bin +ueagle-atm/eagleIV.fw +ueagle-atm/CMVei.bin +ueagle-atm/DSPei.bin +ueagle-atm/CMVepES03.bin +ueagle-atm/DSP9p.bin +usbdux_firmware.bin +usbduxfast_firmware.bin +usbduxsigma_firmware.bin +v4l-cx231xx-avcore-01.fw +v4l-cx23418-apu.fw +v4l-cx23418-cpu.fw +v4l-cx23418-dig.fw +v4l-cx23885-avcore-01.fw +v4l-cx25840.fw +vntwusb.fw +vxge/X3fw.ncf +vxge/X3fw-pxe.ncf +wil6210.brd +wil6210.fw +wsm_22.bin diff --git a/savedconfig/x11-misc/dmenu-4.8 b/savedconfig/x11-misc/dmenu-4.8 @@ -0,0 +1,23 @@ +/* See LICENSE file for copyright and license details. */ +/* Default settings; can be overriden by command line. */ + +static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ +/* -fn option overrides fonts[0]; default X11 font or font set */ +static const char *fonts[] = { + "monospace:size=10" +}; +static const char *prompt = NULL; /* -p option; prompt to the left of input field */ +static const char *colors[SchemeLast][2] = { + /* fg bg */ + [SchemeNorm] = { "#bbbbbb", "#222222" }, + [SchemeSel] = { "#eeeeee", "#005577" }, + [SchemeOut] = { "#000000", "#00ffff" }, +}; +/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ +static unsigned int lines = 0; + +/* + * Characters not considered part of a word while deleting words + * for example: " /?\"&[]" + */ +static const char worddelimiters[] = " "; diff --git a/savedconfig/x11-misc/slock-1.4 b/savedconfig/x11-misc/slock-1.4 @@ -0,0 +1,12 @@ +/* user and group to drop privileges to */ +static const char *user = "nobody"; +static const char *group = "nogroup"; + +static const char *colorname[NUMCOLS] = { + [INIT] = "black", /* after initialization */ + [INPUT] = "#005577", /* during input */ + [FAILED] = "#CC3333", /* wrong password */ +}; + +/* treat a cleared input like a wrong password (color) */ +static const int failonclear = 1; diff --git a/savedconfig/x11-misc/tabbed-0.6 b/savedconfig/x11-misc/tabbed-0.6 @@ -0,0 +1,48 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static const char font[] = "monospace-9"; +static const char* normbgcolor = "#222222"; +static const char* normfgcolor = "#cccccc"; +static const char* selbgcolor = "#555555"; +static const char* selfgcolor = "#ffffff"; +static const char before[] = "<"; +static const char after[] = ">"; +static const int tabwidth = 200; +static const Bool foreground = True; + +/* + * Where to place a new tab when it is opened. When npisrelative is True, + * then the current position is changed + newposition. If npisrelative + * is False, then newposition is an absolute position. + */ +static int newposition = 0; +static Bool npisrelative = True; + +#define MODKEY Mod1Mask +static Key keys[] = { \ + /* modifier key function argument */ + { MODKEY|ShiftMask, XK_Return, spawn, { 0 } }, + + { MODKEY, XK_j, rotate, { .i = +1 } }, + { MODKEY, XK_k, rotate, { .i = -1 } }, + { MODKEY|ShiftMask, XK_j, movetab, { .i = -1 } }, + { MODKEY|ShiftMask, XK_k, movetab, { .i = +1 } }, + { MODKEY, XK_Tab, rotate, { .i = 0 } }, + + { MODKEY, XK_1, move, { .i = 0 } }, + { MODKEY, XK_2, move, { .i = 1 } }, + { MODKEY, XK_3, move, { .i = 2 } }, + { MODKEY, XK_4, move, { .i = 3 } }, + { MODKEY, XK_5, move, { .i = 4 } }, + { MODKEY, XK_6, move, { .i = 5 } }, + { MODKEY, XK_7, move, { .i = 6 } }, + { MODKEY, XK_8, move, { .i = 7 } }, + { MODKEY, XK_9, move, { .i = 8 } }, + { MODKEY, XK_0, move, { .i = 9 } }, + + { MODKEY, XK_q, killclient, { 0 } }, + + { 0, XK_F11, fullscreen, { 0 } }, +}; + diff --git a/savedconfig/x11-terms/st-0.8.2 b/savedconfig/x11-terms/st-0.8.2 @@ -0,0 +1,480 @@ +/* See LICENSE file for copyright and license details. */ + +/* + * appearance + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +static char *font = "monospace-7"; +static int borderpx = 2; + +/* + * What program is execed by st depends of these precedence rules: + * 1: program passed with -e + * 2: utmp option + * 3: SHELL environment variable + * 4: value of shell in /etc/passwd + * 5: value of shell in config.h + */ +static char *shell = "/bin/sh"; +char *utmp = NULL; +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + +/* identification sequence returned in DA and DECID */ +char *vtiden = "\033[?6c"; + +/* Kerning / character bounding-box multipliers */ +static float cwscale = 1.0; +static float chscale = 1.0; + +/* + * word delimiter string + * + * More advanced example: " `'\"()[]{}" + */ +char *worddelimiters = "   │`'\"()[]{}“”<>‘’\~\;"; + +/* selection timeouts (in milliseconds) */ +static unsigned int doubleclicktimeout = 300; +static unsigned int tripleclicktimeout = 600; + +/* alt screens */ +int allowaltscreen = 1; + +/* frames per second st should at maximum draw to the screen */ +static unsigned int xfps = 120; +static unsigned int actionfps = 30; + +/* + * blinking timeout (set to 0 to disable blinking) for the terminal blinking + * attribute. + */ +static unsigned int blinktimeout = 800; + +/* + * thickness of underline and bar cursors + */ +static unsigned int cursorthickness = 2; + +/* + * bell volume. It must be a value between -100 and 100. Use 0 for disabling + * it + */ +static int bellvolume = 0; + +/* default TERM value */ +char *termname = "st-256color"; + +/* + * spaces per tab + * + * When you are changing this value, don't forget to adapt the »it« value in + * the st.info and appropriately install the st.info in the environment where + * you use this st version. + * + * it#$tabspaces, + * + * Secondly make sure your kernel is not expanding tabs. When running `stty + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by + * running following command: + * + * stty tabs + */ +unsigned int tabspaces = 8; + +/* Terminal colors (16 first used in escape sequence) */ +static const char *colorname[] = { + /* gruvbox dark */ + "#282828", /* hard contrast: #1d2021 / soft contrast: #32302f / normal: #282828 */ + "#cc241d", + "#98971a", + "#d79921", + "#458588", + "#b16286", + "#689d6a", + "#a89984", + "#928374", + "#fb4934", + "#b8bb26", + "#fabd2f", + "#83a598", + "#d3869b", + "#8ec07c", + "#ebdbb2", + + [255] = 0, +}; + +/* Terminal colors for alternate (light) palette */ +static const char *altcolorname[] = { + /* gruvbox light */ + "#fbf1c7", /* hard contrast: #f9f5d7 / soft contrast: #f2e5bc / normal: #fbf1c7 */ + "#cc241d", + "#98971a", + "#d79921", + "#458588", + "#b16286", + "#689d6a", + "#7c6f64", + "#928374", + "#9d0006", + "#79740e", + "#b57614", + "#076678", + "#8f3f71", + "#427b58", + "#3c3836", + + [255] = 0, +}; + + +/* + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +unsigned int defaultfg = 15; +unsigned int defaultbg = 0; +static unsigned int defaultcs = 15; +static unsigned int defaultrcs = 0; + +/* + * Default shape of cursor + * 2: Block ("█") + * 4: Underline ("_") + * 6: Bar ("|") + * 7: Snowman ("☃") + */ +static unsigned int cursorshape = 2; + +/* + * Default columns and rows numbers + */ + +static unsigned int cols = 80; +static unsigned int rows = 24; + +/* + * Default colour and shape of the mouse cursor + */ +static unsigned int mouseshape = XC_xterm; +static unsigned int mousefg = 7; +static unsigned int mousebg = 0; + +/* + * Color used to display font attributes when fontconfig selected a font which + * doesn't match the ones requested. + */ +static unsigned int defaultattr = 11; + +/* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. + */ +static MouseShortcut mshortcuts[] = { + /* button mask string */ + { Button4, XK_ANY_MOD, "\031" }, + { Button5, XK_ANY_MOD, "\005" }, +}; + +/* Internal keyboard shortcuts. */ +#define MODKEY Mod1Mask +#define TERMMOD (ControlMask|ShiftMask) + +static Shortcut shortcuts[] = { + /* mask keysym function argument */ + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, + { ControlMask, XK_Print, toggleprinter, {.i = 0} }, + { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, + { TERMMOD, XK_Prior, zoom, {.f = +1} }, + { TERMMOD, XK_Next, zoom, {.f = -1} }, + { TERMMOD, XK_Home, zoomreset, {.f = 0} }, + { TERMMOD, XK_C, clipcopy, {.i = 0} }, + { TERMMOD, XK_V, clippaste, {.i = 0} }, + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, + { TERMMOD, XK_F6, swapcolors, {.i = 0} }, +}; + +/* + * Special keys (change & recompile st.info accordingly) + * + * Mask value: + * * Use XK_ANY_MOD to match the key no matter modifiers state + * * Use XK_NO_MOD to match the key alone (no modifiers) + * appkey value: + * * 0: no value + * * > 0: keypad application mode enabled + * * = 2: term.numlock = 1 + * * < 0: keypad application mode disabled + * appcursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * crlf value + * * 0: no value + * * > 0: crlf mode is enabled + * * < 0: crlf mode is disabled + * + * Be careful with the order of the definitions because st searches in + * this table sequentially, so any XK_ANY_MOD must be in the last + * position for a key. + */ + +/* + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +static KeySym mappedkeys[] = { -1 }; + +/* + * State bits to ignore when matching key or button events. By default, + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. + */ +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + +/* + * Override mouse-select while mask is active (when MODE_MOUSE is set). + * Note that if you want to use ShiftMask with selmasks, set this to an other + * modifier, set to 0 to not use it. + */ +static uint forceselmod = ShiftMask; + +/* + * This is the huge key array which defines all compatibility to the Linux + * world. Please decide about changes wisely. + */ +static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, + { XK_Up, ControlMask, "\033[1;5A", 0, 0}, + { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, + { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, + { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, + { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, + { XK_Down, ControlMask, "\033[1;5B", 0, 0}, + { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, + { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, + { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, + { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, + { XK_Left, ControlMask, "\033[1;5D", 0, 0}, + { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, + { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, + { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, + { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, + { XK_Right, ControlMask, "\033[1;5C", 0, 0}, + { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, + { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, + { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, + { XK_Return, XK_ANY_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, +}; + +/* + * Selection types' masks. + * Use the same masks as usual. + * Button1Mask is always unset, to make masks match between ButtonPress. + * ButtonRelease and MotionNotify. + * If no match is found, regular selection is used. + */ +static uint selmasks[] = { + [SEL_RECTANGULAR] = Mod1Mask, +}; + +/* + * Printable characters in ASCII, used to estimate the advance width + * of single wide characters. + */ +static char ascii_printable[] = + " !\"#$%&'()*+,-./0123456789:;<=>?" + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" + "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/savedconfig/x11-wm/dwm-6.1-r1 b/savedconfig/x11-wm/dwm-6.1-r1 @@ -0,0 +1,113 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static const char *fonts[] = { + "monospace:size=10" +}; +static const char dmenufont[] = "monospace:size=10"; +static const char normbordercolor[] = "#444444"; +static const char normbgcolor[] = "#222222"; +static const char normfgcolor[] = "#bbbbbb"; +static const char selbordercolor[] = "#005577"; +static const char selbgcolor[] = "#005577"; +static const char selfgcolor[] = "#eeeeee"; +static const unsigned int borderpx = 1; /* border pixel of windows */ +static const unsigned int snap = 32; /* snap pixel */ +static const int showbar = 1; /* 0 means no bar */ +static const int topbar = 1; /* 0 means bottom bar */ + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +static const Rule rules[] = { + /* xprop(1): + * WM_CLASS(STRING) = instance, class + * WM_NAME(STRING) = title + */ + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, +}; + +/* layout(s) */ +static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ +static const int nmaster = 1; /* number of clients in master area */ +static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ + +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* key definitions */ +#define MODKEY Mod1Mask +#define TAGKEYS(KEY,TAG) \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + +/* commands */ +static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ +static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; +static const char *termcmd[] = { "st", NULL }; + +static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY, XK_i, incnmaster, {.i = +1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) + TAGKEYS( XK_4, 3) + TAGKEYS( XK_5, 4) + TAGKEYS( XK_6, 5) + TAGKEYS( XK_7, 6) + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, +}; + +/* button definitions */ +/* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ +static Button buttons[] = { + /* click event mask button function argument */ + { ClkLtSymbol, 0, Button1, setlayout, {0} }, + { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, + { ClkWinTitle, 0, Button2, zoom, {0} }, + { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, + { ClkClientWin, MODKEY, Button1, movemouse, {0} }, + { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, + { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button1, tag, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, +}; + diff --git a/smart-live-rebuild.conf b/smart-live-rebuild.conf @@ -0,0 +1,3 @@ +[smart-live-rebuild] +jobs = 6 +# quickpkg = on