commit 49a2def
hovercats
·
2024-02-20 22:42:22 +0000 UTC
parent 862e875
repo/surf: add surf + mass import deps. got meson building, so freetype-harfbuzz is now used, instead of having them separated. theres still lots of things to clean up and adjust though.
310 files changed,
+10863,
-173
+1,
-1
1@@ -1,4 +1,4 @@
2-freetype
3+freetype-harfbuzz
4 imlib2
5 libX11
6 libXau
+31,
-0
1@@ -0,0 +1,31 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Disable building 'cairo-sphinx'.
7+sed -e "s/\(BUILD_SPHINX_TRUE=\)/\1'#'/" \
8+ -e "s/\(BUILD_SPHINX_FALSE=\)'#'/\1=/" \
9+ configure > _
10+mv -f _ configure
11+
12+# Disable building tests and documentation.
13+sed 's/boilerplate test perf//g;s/src doc/src/g' Makefile.in > _
14+mv -f _ Makefile.in
15+
16+sh ./configure \
17+ --prefix=/ \
18+ --disable-static \
19+ --enable-tee \
20+ --enable-gl \
21+ --enable-egl \
22+ --enable-xlib-xcb \
23+ --enable-xcb \
24+ --enable-xlib-xrender \
25+ --enable-xlib \
26+ --disable-trace \
27+ --disable-valgrind \
28+ --disable-gtk-doc-html \
29+ ax_cv_c_float_words_bigendian=no
30+
31+make
32+make install
+1,
-0
1@@ -0,0 +1 @@
2+33e88a21de1fa52405f3952647b3bfd21d5d9d394e1abbc9ddb050a8ca09e35a74
+10,
-0
1@@ -0,0 +1,10 @@
2+fontconfig
3+freetype-harfbuzz
4+glib
5+libXext
6+libXrender
7+libpng
8+mesa
9+pixman
10+pkgconf make
11+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://cairographics.org/releases/cairo-1.16.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+1.16.0 1
+0,
-63
1@@ -1,63 +0,0 @@
2-cmake
3-________________________________________________________________________________
4-
5-CMake is cross-platform free and open-source software for build automation,
6-testing, packaging and installation of software by using a compiler-independent
7-method. CMake is not a build system but rather it generates another system's
8-build files. It supports directory hierarchies and applications that depend on
9-multiple libraries. It is used in conjunction with native build environments
10-such as Make, Qt Creator, Ninja, Android Studio, Apple's Xcode, and Microsoft
11-Visual Studio. [0]
12-
13-Upstream: https://cmake.org/
14-
15-
16-[000] Index
17-________________________________________________________________________________
18-
19-* Installation ........................................................... [001]
20-* Setup .................................................................. [002]
21-* Usage .................................................................. [003]
22-* References ............................................................. [004]
23-
24-
25-[001] Installation
26-________________________________________________________________________________
27-
28-+------------------------------------------------------------------------------+
29-| |
30-| $ kiss b cmake |
31-| |
32-+------------------------------------------------------------------------------+
33-
34-
35-[002] Setup
36-________________________________________________________________________________
37-
38-Cmake supports to output methods on Linux; 'GNU Makefiles' and 'Ninja' with the
39-former being the default value. These values are set via the CMAKE_GENERATOR
40-environment variable.
41-
42-The distribution recommends this value be set to 'Ninja' as it offers a
43-performance improvement over make and works better with ccache. Set the
44-following environment variable in your .profile or shell runtime file.
45-
46-+------------------------------------------------------------------------------+
47-| |
48-| $ export CMAKE_GENERATOR=Ninja |
49-| |
50-+------------------------------------------------------------------------------+
51-
52-
53-[003] Usage
54-________________________________________________________________________________
55-
56-Refer to the command help output and online documentation. This package does
57-not yet provide manual pages.
58-
59-
60-[004] References
61-________________________________________________________________________________
62-
63-[0] https://en.wikipedia.org/wiki/CMake
64-
+0,
-2
1@@ -1,4 +1,2 @@
2-#bzip2
3 expat
4-#linux-headers make
5 zlib
+1,
-2
1@@ -5,8 +5,7 @@
2 --without-xmlwf \
3 --without-examples \
4 --without-tests \
5- --without-docbook \
6- --disable-shared
7+ --without-docbook
8
9 make
10 make DESTDIR="$1" install
+1,
-1
1@@ -1,3 +1,3 @@
2 expat
3-freetype
4+freetype-harfbuzz
5 pkgconf make
+59,
-0
1@@ -0,0 +1,59 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+
7+build_freetype() (
8+ cd freetype
9+
10+ meson setup \
11+ -Dprefix=/ \
12+ -Ddefault_library=both \
13+ -Dbzip2=disabled \
14+ -Dzlib=disabled \
15+ "$@" \
16+ output
17+
18+ samu -C output
19+ samu -C output install
20+)
21+
22+build_harfbuzz() (
23+ cd harfbuzz
24+
25+# harfbuzz-icu is basically harfbuzz with icu and glib enabled.
26+# this avoids a new package for stuff that can already be enabled here, which
27+# makes much more sense imo. glib remains disabled untill I get to test this
28+# further.
29+kiss list icu >/dev/null 2>&1 || icu_enabled=disabled
30+
31+ meson setup \
32+ -Dprefix=/ \
33+ -Dpkg_config_path="$DESTDIR/lib/pkgconfig" \
34+ -Ddefault_library=both \
35+ -Dglib=disabled \
36+ -Dfreetype=enabled \
37+ -Dgobject=disabled \
38+ -Dcairo=disabled \
39+ -Dbenchmark=disabled \
40+ -Dicu="${icu_enabled:-enabled}" \
41+ -Dtests=disabled \
42+ -Dintrospection=disabled \
43+ output
44+
45+ samu -C output
46+ samu -C output install
47+)
48+
49+# Point Freetype to the Harfbuzz files.
50+export CFLAGS="$CFLAGS -I$DESTDIR/include/harfbuzz"
51+export CFLAGS="$CFLAGS -L$DESTDIR/lib "
52+export PKG_CONFIG_PATH="$DESTDIR/lib/pkgconfig"
53+
54+# Point Harfbuzz to the Freetype files.
55+export CXXFLAGS="$CXXFLAGS -I$DESTDIR/include/freetype2"
56+export CXXFLAGS="$CXXFLAGS -L$DESTDIR/lib"
57+
58+build_freetype -Dharfbuzz=disabled
59+build_harfbuzz
60+build_freetype -Dharfbuzz=enabled --reconfigure
R repo/freetype/checksums =>
repo/freetype-harfbuzz/checksums
+1,
-0
1@@ -1 +1,2 @@
2 8dd2a91dad75886ad3fed8d096b37ccbc82ba12ec863ea97324c07ac184a6ac2a9
3+80670ee07210478e4233cd65cba67f155f3e05596e605cfb529862920cad73bb5e
R repo/freetype/depends =>
repo/freetype-harfbuzz/depends
+4,
-1
1@@ -1,4 +1,6 @@
2+#icu
3 expat
4+icu
5 libX11
6 libXau
7 libXdamage
8@@ -7,8 +9,9 @@ libXfixes
9 libXrender
10 libXxf86vm
11 libdrm
12+libpng
13 libxcb
14 libxshmfence
15-muon make
16+meson make
17 pixman
18 pkgconf make
+131,
-0
1@@ -0,0 +1,131 @@
2+/var/db/kiss/installed/freetype-harfbuzz/version
3+/var/db/kiss/installed/freetype-harfbuzz/sources
4+/var/db/kiss/installed/freetype-harfbuzz/manifest
5+/var/db/kiss/installed/freetype-harfbuzz/depends
6+/var/db/kiss/installed/freetype-harfbuzz/checksums
7+/var/db/kiss/installed/freetype-harfbuzz/build
8+/var/db/kiss/installed/freetype-harfbuzz/
9+/var/db/kiss/installed/
10+/var/db/kiss/
11+/var/db/
12+/var/
13+/usr/lib/pkgconfig/harfbuzz.pc
14+/usr/lib/pkgconfig/harfbuzz-subset.pc
15+/usr/lib/pkgconfig/harfbuzz-icu.pc
16+/usr/lib/pkgconfig/freetype2.pc
17+/usr/lib/pkgconfig/
18+/usr/lib/libharfbuzz.so.0.60822.0
19+/usr/lib/libharfbuzz.so.0
20+/usr/lib/libharfbuzz.so
21+/usr/lib/libharfbuzz.a
22+/usr/lib/libharfbuzz-subset.so.0.60822.0
23+/usr/lib/libharfbuzz-subset.so.0
24+/usr/lib/libharfbuzz-subset.so
25+/usr/lib/libharfbuzz-subset.a
26+/usr/lib/libharfbuzz-icu.so.0.60822.0
27+/usr/lib/libharfbuzz-icu.so.0
28+/usr/lib/libharfbuzz-icu.so
29+/usr/lib/libharfbuzz-icu.a
30+/usr/lib/libfreetype.so.6.20.1
31+/usr/lib/libfreetype.so.6
32+/usr/lib/libfreetype.so
33+/usr/lib/libfreetype.a
34+/usr/lib/cmake/harfbuzz/harfbuzz-config.cmake
35+/usr/lib/cmake/harfbuzz/
36+/usr/lib/cmake/
37+/usr/lib/
38+/usr/include/harfbuzz/hb.h
39+/usr/include/harfbuzz/hb-version.h
40+/usr/include/harfbuzz/hb-unicode.h
41+/usr/include/harfbuzz/hb-subset.h
42+/usr/include/harfbuzz/hb-subset-repacker.h
43+/usr/include/harfbuzz/hb-style.h
44+/usr/include/harfbuzz/hb-shape.h
45+/usr/include/harfbuzz/hb-shape-plan.h
46+/usr/include/harfbuzz/hb-set.h
47+/usr/include/harfbuzz/hb-paint.h
48+/usr/include/harfbuzz/hb-ot.h
49+/usr/include/harfbuzz/hb-ot-var.h
50+/usr/include/harfbuzz/hb-ot-shape.h
51+/usr/include/harfbuzz/hb-ot-name.h
52+/usr/include/harfbuzz/hb-ot-metrics.h
53+/usr/include/harfbuzz/hb-ot-meta.h
54+/usr/include/harfbuzz/hb-ot-math.h
55+/usr/include/harfbuzz/hb-ot-layout.h
56+/usr/include/harfbuzz/hb-ot-font.h
57+/usr/include/harfbuzz/hb-ot-deprecated.h
58+/usr/include/harfbuzz/hb-ot-color.h
59+/usr/include/harfbuzz/hb-map.h
60+/usr/include/harfbuzz/hb-icu.h
61+/usr/include/harfbuzz/hb-ft.h
62+/usr/include/harfbuzz/hb-font.h
63+/usr/include/harfbuzz/hb-features.h
64+/usr/include/harfbuzz/hb-face.h
65+/usr/include/harfbuzz/hb-draw.h
66+/usr/include/harfbuzz/hb-deprecated.h
67+/usr/include/harfbuzz/hb-cplusplus.hh
68+/usr/include/harfbuzz/hb-common.h
69+/usr/include/harfbuzz/hb-buffer.h
70+/usr/include/harfbuzz/hb-blob.h
71+/usr/include/harfbuzz/hb-aat.h
72+/usr/include/harfbuzz/hb-aat-layout.h
73+/usr/include/harfbuzz/
74+/usr/include/freetype2/ft2build.h
75+/usr/include/freetype2/freetype/tttags.h
76+/usr/include/freetype2/freetype/tttables.h
77+/usr/include/freetype2/freetype/ttnameid.h
78+/usr/include/freetype2/freetype/t1tables.h
79+/usr/include/freetype2/freetype/otsvg.h
80+/usr/include/freetype2/freetype/ftwinfnt.h
81+/usr/include/freetype2/freetype/fttypes.h
82+/usr/include/freetype2/freetype/fttrigon.h
83+/usr/include/freetype2/freetype/ftsystem.h
84+/usr/include/freetype2/freetype/ftsynth.h
85+/usr/include/freetype2/freetype/ftstroke.h
86+/usr/include/freetype2/freetype/ftsnames.h
87+/usr/include/freetype2/freetype/ftsizes.h
88+/usr/include/freetype2/freetype/ftrender.h
89+/usr/include/freetype2/freetype/ftpfr.h
90+/usr/include/freetype2/freetype/ftparams.h
91+/usr/include/freetype2/freetype/ftoutln.h
92+/usr/include/freetype2/freetype/ftotval.h
93+/usr/include/freetype2/freetype/ftmoderr.h
94+/usr/include/freetype2/freetype/ftmodapi.h
95+/usr/include/freetype2/freetype/ftmm.h
96+/usr/include/freetype2/freetype/ftmac.h
97+/usr/include/freetype2/freetype/ftlzw.h
98+/usr/include/freetype2/freetype/ftlist.h
99+/usr/include/freetype2/freetype/ftlcdfil.h
100+/usr/include/freetype2/freetype/ftincrem.h
101+/usr/include/freetype2/freetype/ftimage.h
102+/usr/include/freetype2/freetype/ftgzip.h
103+/usr/include/freetype2/freetype/ftgxval.h
104+/usr/include/freetype2/freetype/ftglyph.h
105+/usr/include/freetype2/freetype/ftgasp.h
106+/usr/include/freetype2/freetype/ftfntfmt.h
107+/usr/include/freetype2/freetype/fterrors.h
108+/usr/include/freetype2/freetype/fterrdef.h
109+/usr/include/freetype2/freetype/ftdriver.h
110+/usr/include/freetype2/freetype/ftcolor.h
111+/usr/include/freetype2/freetype/ftcid.h
112+/usr/include/freetype2/freetype/ftchapters.h
113+/usr/include/freetype2/freetype/ftcache.h
114+/usr/include/freetype2/freetype/ftbzip2.h
115+/usr/include/freetype2/freetype/ftbitmap.h
116+/usr/include/freetype2/freetype/ftbdf.h
117+/usr/include/freetype2/freetype/ftbbox.h
118+/usr/include/freetype2/freetype/ftadvanc.h
119+/usr/include/freetype2/freetype/freetype.h
120+/usr/include/freetype2/freetype/config/public-macros.h
121+/usr/include/freetype2/freetype/config/mac-support.h
122+/usr/include/freetype2/freetype/config/integer-types.h
123+/usr/include/freetype2/freetype/config/ftstdlib.h
124+/usr/include/freetype2/freetype/config/ftoption.h
125+/usr/include/freetype2/freetype/config/ftmodule.h
126+/usr/include/freetype2/freetype/config/ftheader.h
127+/usr/include/freetype2/freetype/config/ftconfig.h
128+/usr/include/freetype2/freetype/config/
129+/usr/include/freetype2/freetype/
130+/usr/include/freetype2/
131+/usr/include/
132+/usr/
+2,
-0
1@@ -0,0 +1,2 @@
2+https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.xz freetype
3+https://github.com/harfbuzz/harfbuzz/archive/8.2.2.tar.gz harfbuzz
+1,
-0
1@@ -0,0 +1 @@
2+2.13.2+8.2.2 1
+0,
-15
1@@ -1,15 +0,0 @@
2-#!/bin/sh -e
3-
4-export DESTDIR="$1"
5-
6-muon setup \
7- -Dprefix=/ \
8- -Ddefault_library=static \
9- -Dbzip2=disabled \
10- -Dzlib=disabled \
11- -Dpng=disabled \
12- -Dtests=disabled \
13- build
14-
15-samu -C build
16-muon -C build install
+0,
-1
1@@ -1 +0,0 @@
2-https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.xz
+0,
-1
1@@ -1 +0,0 @@
2-2.13.2 1
+23,
-0
1@@ -0,0 +1,23 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+meson setup \
7+ -Dprefix=/ \
8+ -Dsysconfdir=/etc \
9+ -Dmandir=/share/man \
10+ -Ddebug=false \
11+ -Djpeg=enabled \
12+ -Dpng=enabled \
13+ -Dtiff=disabled \
14+ -Dgtk_doc=false \
15+ -Dman=false \
16+ -Dgio_sniffing=false \
17+ -Dtests=false \
18+ -Dinstalled_tests=false \
19+ -Dbuiltin_loaders=all \
20+ -Dwrap_mode=nofallback \
21+ output
22+
23+samu -C output
24+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+dbbdf280e8ebde20529f4de5d83d7a09d623961aa9065edea22de7a8580c098ff3
+6,
-0
1@@ -0,0 +1,6 @@
2+glib
3+libX11
4+libjpeg-turbo
5+libpng
6+meson make
7+pkgconf make
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/gdk-pixbuf/MAJOR.MINOR/gdk-pixbuf-VERSION.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.10.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+2.42.10 1
+20,
-0
1@@ -0,0 +1,20 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Don't build tests that fail due to `gnutls` not being built with `p11-kit`.
7+sed "/subdir('tests')/d" tls/meson.build > _
8+mv -f _ tls/meson.build
9+
10+meson setup \
11+ -Dprefix=/usr \
12+ -Dsysconfdir=/etc \
13+ -Dlocalstatedir=/var \
14+ -Dlibproxy=disabled \
15+ -Dopenssl=disabled \
16+ -Dgnutls=enabled \
17+ -Dgnome_proxy=disabled \
18+ output
19+
20+samu -C output
21+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+bf9c42eb846bfcb7ea5a09013ce477f3a9b87e71299877054be27aef4b668d2b1d
+4,
-0
1@@ -0,0 +1,4 @@
2+glib
3+gnutls
4+meson make
5+pkgconf make
+1,
-0
1@@ -0,0 +1 @@
2+https://ftp.gnome.org/pub/gnome/sources/glib-networking/2.78/glib-networking-2.78.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+2.78.0 1
+21,
-0
1@@ -0,0 +1,21 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+: > fuzzing/meson.build
7+
8+meson setup \
9+ -Dprefix=/ \
10+ -Dlibexecdir=/lib \
11+ -Dlibmount=disabled \
12+ -Dinstalled_tests=false \
13+ -Dman=false \
14+ -Dtests=false \
15+ -Dlibelf=disabled \
16+ -Dnls=disabled \
17+ build
18+
19+samu -C build
20+samu -C build install
21+
22+rm -rf "$1/bin/gdbus"
+1,
-0
1@@ -0,0 +1 @@
2+e0af02a9064dbf5553026ec7a1171905bf105340b9fa54ef628dbfcaf0f2049d47
+6,
-0
1@@ -0,0 +1,6 @@
2+libffi
3+meson make
4+pcre2
5+pkgconf make
6+python-packaging make
7+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/glib/2.79/glib-2.79.1.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+2.79.1 1
+13,
-0
1@@ -0,0 +1,13 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --disable-nls \
7+ --with-nettle-mini \
8+ --with-included-libtasn1 \
9+ --with-included-unistring \
10+ --enable-static \
11+ --without-p11-kit
12+
13+make
14+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+e89da5395d978b3654775d1ffbd22592056107b7c1988ac202262ab9184bb64376
+2,
-0
1@@ -0,0 +1,2 @@
2+nettle
3+pkgconf make
+1,
-0
1@@ -0,0 +1 @@
2+https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-3.8.3.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+3.8.3 1
+12,
-0
1@@ -0,0 +1,12 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+./configure \
7+ --prefix=/
8+
9+make
10+make install
11+
12+# Remove HTML documentation.
13+rm -rf "$1/share/doc"
+1,
-0
1@@ -0,0 +1 @@
2+7023ada08089bb46d7c000af7a6eaded9b4cf0ec2d1018d28a1a1425a4ec56804a
+1,
-0
1@@ -0,0 +1 @@
2+https://ftp.gnu.org/gnu/gperf/gperf-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+3.1 3
+46,
-0
1@@ -0,0 +1,46 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Some packages in community/ requrire that gtk+3 have atk methods.
7+# So if atk is installed, then we don't patch it out of gtk, just fribidi.
8+if pkg-config --exists atk; then
9+ patch -p1 < 01-no-fribidi.patch
10+else
11+ for p in *.patch; do
12+ patch -p1 < "$p"
13+ done
14+fi
15+
16+# Disable native language support, disable atk-bridge, don't compile schemas.
17+sed -e '/compile_schemas/s/true/false/' \
18+ -e '/ENABLE_NLS/s/1/0/' \
19+ -e "/subdir('po/d" \
20+ -e "/atk-bridge/d" \
21+ meson.build > _
22+mv -f _ meson.build
23+
24+# Remove atk-bridge code.
25+sed '/<atk-bridge.h>/d;/atk_bridge_adaptor_init/d' \
26+ gtk/a11y/gtkaccessibility.c > _
27+mv -f _ gtk/a11y/gtkaccessibility.c
28+
29+meson setup \
30+ -Dprefix=/ \
31+ -Dx11_backend=true \
32+ -Dwayland_backend=false \
33+ -Dxinerama=yes \
34+ -Dprint_backends=file,lpr \
35+ -Dcolord=no \
36+ -Dintrospection=false \
37+ -Ddemos=false \
38+ -Dexamples=false \
39+ -Dtests=false \
40+ output
41+
42+ninja -C output
43+ninja -C output install
44+
45+# We don't compile with librsvg which leads to this utility solely causing
46+# compiler errors for some packages. It has no use at all.
47+rm -f "$1/bin/gtk-encode-symbolic-svg"
+5,
-0
1@@ -0,0 +1,5 @@
2+46777a428699d6e2643a6d4c0929168912b760011706cb95b67807bd777e005fe5
3+8b8bf563e74f720990030791f8e408db6099813a6290c38ab812231dbd10eb0cb8
4+763400831b2abe5eff95609826dc6769ab2a742d68d4ffd0b4a7209a7f1be2cdaa
5+09d6f9e59422724a1fead2bd2103ab0569f823da04e1411a338ae9892bedb2652e
6+05cf248d5d857ac14fd5904671ed53d08f125ebc74f0e81f270fb8186ddb000540
+19,
-0
1@@ -0,0 +1,19 @@
2+cairo
3+fontconfig
4+freetype-harfbuzz
5+gdk-pixbuf
6+glib
7+libXcomposite
8+libXcursor
9+libXdamage
10+libXext
11+libXi
12+libXinerama
13+libXrandr
14+libepoxy
15+libxkbcommon
16+mesa
17+meson make
18+pango
19+pkgconf make
20+python make
+5,
-0
1@@ -0,0 +1,5 @@
2+https://download.gnome.org/sources/gtk+/MAJOR.MINOR/gtk+-VERSION.tar.xz
3+patches/01-no-fribidi.patch
4+patches/02-fix-firefox.patch
5+patches/03-no-accessibility.patch
6+patches/04-no-atk-extra.patch
+124,
-0
1@@ -0,0 +1,124 @@
2+diff --git a/gdk/gdk.c b/gdk/gdk.c
3+index f0869a6..2f3c039 100644
4+--- a/gdk/gdk.c
5++++ b/gdk/gdk.c
6+@@ -44,7 +44,6 @@
7+ #include <string.h>
8+ #include <stdlib.h>
9+
10+-#include <fribidi.h>
11+
12+
13+ /**
14+@@ -1118,17 +1117,6 @@ gdk_disable_multidevice (void)
15+ PangoDirection
16+ gdk_unichar_direction (gunichar ch)
17+ {
18+- FriBidiCharType fribidi_ch_type;
19+-
20+- G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
21+-
22+- fribidi_ch_type = fribidi_get_bidi_type (ch);
23+-
24+- if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
25+- return PANGO_DIRECTION_NEUTRAL;
26+- else if (FRIBIDI_IS_RTL (fribidi_ch_type))
27+- return PANGO_DIRECTION_RTL;
28+- else
29+ return PANGO_DIRECTION_LTR;
30+ }
31+
32+diff --git a/gdk/meson.build b/gdk/meson.build
33+index 4bb1bf2..9270c97 100644
34+--- a/gdk/meson.build
35++++ b/gdk/meson.build
36+@@ -202,7 +202,6 @@ gdk_deps = [
37+ pixbuf_dep,
38+ cairo_dep,
39+ pango_dep,
40+- fribidi_dep,
41+ cairogobj_dep,
42+ glib_dep,
43+ epoxy_dep,
44+diff --git a/gtk/gtkpango.c b/gtk/gtkpango.c
45+index aaac4cc..a76ad57 100644
46+--- a/gtk/gtkpango.c
47++++ b/gtk/gtkpango.c
48+@@ -25,7 +25,6 @@
49+ #include "config.h"
50+ #include "gtkpango.h"
51+ #include <pango/pangocairo.h>
52+-#include <fribidi.h>
53+ #include "gtkintl.h"
54+
55+ #define GTK_TYPE_FILL_LAYOUT_RENDERER (_gtk_fill_layout_renderer_get_type())
56+@@ -1326,17 +1325,6 @@ _gtk_pango_attr_list_merge (PangoAttrList *into,
57+ PangoDirection
58+ _gtk_pango_unichar_direction (gunichar ch)
59+ {
60+- FriBidiCharType fribidi_ch_type;
61+-
62+- G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
63+-
64+- fribidi_ch_type = fribidi_get_bidi_type (ch);
65+-
66+- if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
67+- return PANGO_DIRECTION_NEUTRAL;
68+- else if (FRIBIDI_IS_RTL (fribidi_ch_type))
69+- return PANGO_DIRECTION_RTL;
70+- else
71+ return PANGO_DIRECTION_LTR;
72+ }
73+
74+diff --git a/gtk/meson.build b/gtk/meson.build
75+index 79f4f0d..be51997 100644
76+--- a/gtk/meson.build
77++++ b/gtk/meson.build
78+@@ -836,7 +836,6 @@ gtk_deps = [
79+ pango_dep,
80+ pangoft_dep,
81+ harfbuzz_dep,
82+- fribidi_dep,
83+ cairogobj_dep,
84+ cairo_dep,
85+ fontconfig_dep,
86+diff --git a/meson.build b/meson.build
87+index c599843..967a022 100644
88+--- a/meson.build
89++++ b/meson.build
90+@@ -25,7 +25,6 @@ endif
91+
92+ glib_req = '>= @0@.@1@.@2@'.format(glib_major_req, glib_minor_req, glib_micro_req)
93+ pango_req = '>= 1.41.0'
94+-fribidi_req = '>= 0.19.7'
95+ atk_req = '>= 2.35.1'
96+ at_spi2_atk_req = '>= 2.15.1'
97+ cairo_req = '>= 1.14.0'
98+@@ -404,8 +403,6 @@ endif
99+
100+ pango_dep = dependency('pango', version: pango_req,
101+ fallback : ['pango', 'libpango_dep'])
102+-fribidi_dep = dependency('fribidi', version: fribidi_req,
103+- fallback : ['fribidi', 'libfribidi_dep'])
104+
105+ # Require PangoFT2 if on X11 or wayland
106+ require_pangoft2 = wayland_enabled or x11_enabled
107+@@ -927,8 +924,7 @@ endif
108+
109+ pkgconf.set('GDK_PRIVATE_PACKAGES',
110+ ' '.join(gio_packages + x11_pkgs + wayland_pkgs + cairo_backends +
111+- ['epoxy', epoxy_req] + cloudproviders_packages +
112+- ['fribidi', fribidi_req]))
113++ ['epoxy', epoxy_req] + cloudproviders_packages))
114+
115+ gtk_packages = ' '.join([
116+ atk_dep.name(), atk_req,
117+@@ -941,7 +937,7 @@ pkgconf.set('GTK_PACKAGES', gtk_packages)
118+ # Requires.private
119+ pc_gdk_extra_libs += cairo_libs
120+
121+-gtk_private_packages = atk_pkgs + wayland_pkgs + ['epoxy', epoxy_req, 'fribidi', fribidi_req]
122++gtk_private_packages = atk_pkgs + wayland_pkgs + ['epoxy', epoxy_req]
123+ if wayland_enabled or x11_enabled
124+ gtk_private_packages += ['pangoft2']
125+ endif
+62,
-0
1@@ -0,0 +1,62 @@
2+From f8e2e254c5a6cba2f6cf267bd8c3ce796779a2e8 Mon Sep 17 00:00:00 2001
3+From: Ronan Pigott <rpigott@berkeley.edu>
4+Date: Sun, 22 Aug 2021 01:54:39 -0700
5+Subject: [PATCH] Revert "Revert "wayland: Push NULL buffer when hiding a
6+ GdkWindow""
7+
8+wayland: Push NULL buffer when hiding a GdkWindow
9+
10+This is how windows are hidden in xdg_shell stable.
11+
12+This reverts commit bbcc3ee45643ccdc25bc525b4d7f7daf6b25440a.
13+
14+Closes #4198
15+---
16+ gdk/wayland/gdkwindow-wayland.c | 11 +++++++----
17+ 1 file changed, 7 insertions(+), 4 deletions(-)
18+
19+diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
20+index 2d7c42bd7a..07f77eb596 100644
21+--- a/gdk/wayland/gdkwindow-wayland.c
22++++ b/gdk/wayland/gdkwindow-wayland.c
23+@@ -3286,7 +3286,7 @@ unmap_popups_for_window (GdkWindow *window)
24+ }
25+
26+ static void
27+-gdk_wayland_window_hide_surface (GdkWindow *window)
28++gdk_wayland_window_clear_surface (GdkWindow *window)
29+ {
30+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
31+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
32+@@ -3416,7 +3416,10 @@ gdk_wayland_window_hide_surface (GdkWindow *window)
33+ static void
34+ gdk_wayland_window_hide (GdkWindow *window)
35+ {
36+- gdk_wayland_window_hide_surface (window);
37++ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
38++
39++ wl_surface_attach (impl->display_server.wl_surface, NULL, 0, 0);
40++ wl_surface_commit (impl->display_server.wl_surface);
41+ _gdk_window_clear_update_area (window);
42+ }
43+
44+@@ -3430,7 +3433,7 @@ gdk_window_wayland_withdraw (GdkWindow *window)
45+
46+ g_assert (!GDK_WINDOW_IS_MAPPED (window));
47+
48+- gdk_wayland_window_hide_surface (window);
49++ gdk_wayland_window_clear_surface (window);
50+ }
51+ }
52+
53+@@ -3751,7 +3754,7 @@ gdk_wayland_window_destroy (GdkWindow *window,
54+ */
55+ g_return_if_fail (!foreign_destroy);
56+
57+- gdk_wayland_window_hide_surface (window);
58++ gdk_wayland_window_clear_surface (window);
59+ }
60+
61+ static void
62+--
63+GitLab
+4858,
-0
1@@ -0,0 +1,4858 @@
2+--- a/gtk/a11y/gtkbooleancellaccessible.h
3++++ b/gtk/a11y/gtkbooleancellaccessible.h
4+@@ -22,7 +22,6 @@
5+ #error "Only <gtk/gtk-a11y.h> can be included directly."
6+ #endif
7+
8+-#include <atk/atk.h>
9+ #include <gtk/a11y/gtkrenderercellaccessible.h>
10+
11+ G_BEGIN_DECLS
12+--- a/gtk/a11y/gtkcellaccessible.h
13++++ b/gtk/a11y/gtkcellaccessible.h
14+@@ -22,7 +22,6 @@
15+ #error "Only <gtk/gtk-a11y.h> can be included directly."
16+ #endif
17+
18+-#include <atk/atk.h>
19+ #include <gtk/gtk.h>
20+
21+ G_BEGIN_DECLS
22+@@ -40,14 +39,11 @@
23+
24+ struct _GtkCellAccessible
25+ {
26+- GtkAccessible parent;
27+-
28+ GtkCellAccessiblePrivate *priv;
29+ };
30+
31+ struct _GtkCellAccessibleClass
32+ {
33+- GtkAccessibleClass parent_class;
34+ void (*update_cache) (GtkCellAccessible *cell,
35+ gboolean emit_signal);
36+ };
37+--- a/gtk/a11y/gtkcontaineraccessibleprivate.h
38++++ b/gtk/a11y/gtkcontaineraccessibleprivate.h
39+@@ -23,10 +23,8 @@
40+ G_BEGIN_DECLS
41+
42+ void _gtk_container_accessible_add_child (GtkContainerAccessible *accessible,
43+- AtkObject *child,
44+ gint index);
45+ void _gtk_container_accessible_remove_child (GtkContainerAccessible *accessible,
46+- AtkObject *child,
47+ gint index);
48+ void _gtk_container_accessible_add (GtkWidget *parent,
49+ GtkWidget *child);
50+--- a/gtk/a11y/gtkimagecellaccessible.h
51++++ b/gtk/a11y/gtkimagecellaccessible.h
52+@@ -22,7 +22,6 @@
53+ #error "Only <gtk/gtk-a11y.h> can be included directly."
54+ #endif
55+
56+-#include <atk/atk.h>
57+ #include <gtk/a11y/gtkrenderercellaccessible.h>
58+
59+ G_BEGIN_DECLS
60+--- a/gtk/a11y/gtkrenderercellaccessible.h
61++++ b/gtk/a11y/gtkrenderercellaccessible.h
62+@@ -22,7 +22,6 @@
63+ #error "Only <gtk/gtk-a11y.h> can be included directly."
64+ #endif
65+
66+-#include <atk/atk.h>
67+ #include <gtk/a11y/gtkcellaccessible.h>
68+
69+ G_BEGIN_DECLS
70+@@ -52,9 +51,6 @@
71+
72+ GDK_AVAILABLE_IN_ALL
73+ GType gtk_renderer_cell_accessible_get_type (void);
74+-
75+-GDK_AVAILABLE_IN_ALL
76+-AtkObject *gtk_renderer_cell_accessible_new (GtkCellRenderer * renderer);
77+
78+ G_END_DECLS
79+
80+--- a/gtk/a11y/gtktextcellaccessible.h
81++++ b/gtk/a11y/gtktextcellaccessible.h
82+@@ -22,7 +22,6 @@
83+ #error "Only <gtk/gtk-a11y.h> can be included directly."
84+ #endif
85+
86+-#include <atk/atk.h>
87+ #include <gtk/a11y/gtkrenderercellaccessible.h>
88+
89+ G_BEGIN_DECLS
90+--- a/gtk/a11y/gtktoplevelaccessible.h
91++++ b/gtk/a11y/gtktoplevelaccessible.h
92+@@ -22,8 +22,6 @@
93+ #error "Only <gtk/gtk-a11y.h> can be included directly."
94+ #endif
95+
96+-#include <atk/atk.h>
97+-
98+ G_BEGIN_DECLS
99+
100+ #define GTK_TYPE_TOPLEVEL_ACCESSIBLE (gtk_toplevel_accessible_get_type ())
101+--- a/gtk/a11y/gtkwidgetaccessible.h
102++++ b/gtk/a11y/gtkwidgetaccessible.h
103+@@ -39,15 +39,11 @@
104+
105+ struct _GtkWidgetAccessible
106+ {
107+- GtkAccessible parent;
108+-
109+ GtkWidgetAccessiblePrivate *priv;
110+ };
111+
112+ struct _GtkWidgetAccessibleClass
113+ {
114+- GtkAccessibleClass parent_class;
115+-
116+ /*
117+ * Signal handler for notify signal on GTK widget
118+ */
119+--- a/gtk/deprecated/gtkarrow.c
120++++ b/gtk/deprecated/gtkarrow.c
121+@@ -139,8 +139,6 @@
122+ P_("Amount of space used up by arrow"),
123+ 0.0, 1.0, 0.7,
124+ GTK_PARAM_READABLE));
125+-
126+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ARROW_ACCESSIBLE);
127+ }
128+
129+ static void
130+--- a/gtk/deprecated/gtkcolorsel.c
131++++ b/gtk/deprecated/gtkcolorsel.c
132+@@ -206,10 +206,6 @@
133+ static void default_change_palette_func (GdkScreen *screen,
134+ const GdkColor *colors,
135+ gint n_colors);
136+-static void make_control_relations (AtkObject *atk_obj,
137+- GtkWidget *widget);
138+-static void make_all_relations (AtkObject *atk_obj,
139+- GtkColorSelectionPrivate *priv);
140+
141+ static void hsv_changed (GtkWidget *hsv,
142+ gpointer data);
143+@@ -398,7 +394,6 @@
144+ GtkWidget *picker_image;
145+ gint i, j;
146+ GtkColorSelectionPrivate *priv;
147+- AtkObject *atk_obj;
148+ GList *focus_chain = NULL;
149+
150+ gtk_orientable_set_orientation (GTK_ORIENTABLE (colorsel),
151+@@ -572,14 +567,6 @@
152+ gtk_widget_hide (priv->palette_frame);
153+ }
154+
155+- atk_obj = gtk_widget_get_accessible (priv->triangle_colorsel);
156+- if (GTK_IS_ACCESSIBLE (atk_obj))
157+- {
158+- atk_object_set_name (atk_obj, _("Color Wheel"));
159+- atk_object_set_role (gtk_widget_get_accessible (GTK_WIDGET (colorsel)), ATK_ROLE_COLOR_CHOOSER);
160+- make_all_relations (atk_obj, priv);
161+- }
162+-
163+ gtk_widget_pop_composite_child ();
164+ }
165+
166+@@ -3056,27 +3043,4 @@
167+ change_palette_hook = func;
168+
169+ return old;
170+-}
171+-
172+-static void
173+-make_control_relations (AtkObject *atk_obj,
174+- GtkWidget *widget)
175+-{
176+- AtkObject *obj;
177+-
178+- obj = gtk_widget_get_accessible (widget);
179+- atk_object_add_relationship (atk_obj, ATK_RELATION_CONTROLLED_BY, obj);
180+- atk_object_add_relationship (obj, ATK_RELATION_CONTROLLER_FOR, atk_obj);
181+-}
182+-
183+-static void
184+-make_all_relations (AtkObject *atk_obj,
185+- GtkColorSelectionPrivate *priv)
186+-{
187+- make_control_relations (atk_obj, priv->hue_spinbutton);
188+- make_control_relations (atk_obj, priv->sat_spinbutton);
189+- make_control_relations (atk_obj, priv->val_spinbutton);
190+- make_control_relations (atk_obj, priv->red_spinbutton);
191+- make_control_relations (atk_obj, priv->green_spinbutton);
192+- make_control_relations (atk_obj, priv->blue_spinbutton);
193+ }
194+--- a/gtk/deprecated/gtkcolorseldialog.c
195++++ b/gtk/deprecated/gtkcolorseldialog.c
196+@@ -158,8 +158,6 @@
197+ P_("The help button of the dialog."),
198+ GTK_TYPE_WIDGET,
199+ G_PARAM_READABLE));
200+-
201+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_COLOR_CHOOSER);
202+ }
203+
204+ static void
205+--- a/gtk/deprecated/gtkfontsel.c
206++++ b/gtk/deprecated/gtkfontsel.c
207+@@ -35,8 +35,6 @@
208+ #include <glib/gprintf.h>
209+ #include <string.h>
210+
211+-#include <atk/atk.h>
212+-
213+ #include "gtkbutton.h"
214+ #include "gtkcellrenderertext.h"
215+ #include "gtkentry.h"
216+@@ -335,7 +333,6 @@
217+ GtkListStore *model;
218+ GtkTreeViewColumn *column;
219+ GList *focus_chain = NULL;
220+- AtkObject *atk_obj;
221+
222+ fontsel->priv = gtk_font_selection_get_instance_private (fontsel);
223+ priv = fontsel->priv;
224+@@ -528,47 +525,7 @@
225+
226+ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->size_list)), "changed",
227+ G_CALLBACK (gtk_font_selection_select_size), fontsel);
228+- atk_obj = gtk_widget_get_accessible (priv->size_list);
229+- if (GTK_IS_ACCESSIBLE (atk_obj))
230+- {
231+- /* Accessibility support is enabled.
232+- * Make the label ATK_RELATON_LABEL_FOR for the size list as well.
233+- */
234+- AtkObject *atk_label;
235+- AtkRelationSet *relation_set;
236+- AtkRelation *relation;
237+- AtkObject *obj_array[1];
238+
239+- atk_label = gtk_widget_get_accessible (label);
240+- relation_set = atk_object_ref_relation_set (atk_obj);
241+- relation = atk_relation_set_get_relation_by_type (relation_set, ATK_RELATION_LABELLED_BY);
242+- if (relation)
243+- {
244+- atk_relation_add_target (relation, atk_label);
245+- }
246+- else
247+- {
248+- obj_array[0] = atk_label;
249+- relation = atk_relation_new (obj_array, 1, ATK_RELATION_LABELLED_BY);
250+- atk_relation_set_add (relation_set, relation);
251+- }
252+- g_object_unref (relation_set);
253+-
254+- relation_set = atk_object_ref_relation_set (atk_label);
255+- relation = atk_relation_set_get_relation_by_type (relation_set, ATK_RELATION_LABEL_FOR);
256+- if (relation)
257+- {
258+- atk_relation_add_target (relation, atk_obj);
259+- }
260+- else
261+- {
262+- obj_array[0] = atk_obj;
263+- relation = atk_relation_new (obj_array, 1, ATK_RELATION_LABEL_FOR);
264+- atk_relation_set_add (relation_set, relation);
265+- }
266+- g_object_unref (relation_set);
267+- }
268+-
269+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
270+ gtk_widget_show (vbox);
271+ gtk_box_pack_start (GTK_BOX (fontsel), vbox, FALSE, TRUE, 0);
272+@@ -1651,8 +1608,6 @@
273+ gtk_font_selection_dialog_class_init (GtkFontSelectionDialogClass *klass)
274+ {
275+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
276+-
277+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_FONT_CHOOSER);
278+ }
279+
280+ static void
281+--- a/gtk/deprecated/gtkhsv.c
282++++ b/gtk/deprecated/gtkhsv.c
283+@@ -160,8 +160,6 @@
284+ widget_class->focus = gtk_hsv_focus;
285+ widget_class->grab_broken_event = gtk_hsv_grab_broken;
286+
287+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_COLOR_CHOOSER);
288+-
289+ hsv_class->move = gtk_hsv_move;
290+
291+ hsv_signals[CHANGED] =
292+--- a/gtk/deprecated/gtktearoffmenuitem.c
293++++ b/gtk/deprecated/gtktearoffmenuitem.c
294+@@ -110,8 +110,6 @@
295+ widget_class->get_preferred_height = gtk_tearoff_menu_item_get_preferred_height;
296+ widget_class->parent_set = gtk_tearoff_menu_item_parent_set;
297+
298+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_TEAR_OFF_MENU_ITEM);
299+-
300+ menu_item_class->activate = gtk_tearoff_menu_item_activate;
301+ }
302+
303+--- a/gtk/gtk-autocleanups.h
304++++ b/gtk/gtk-autocleanups.h
305+@@ -21,7 +21,6 @@
306+
307+ #ifndef __GI_SCANNER__
308+
309+-G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkAccessible, g_object_unref)
310+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkActionBar, g_object_unref)
311+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkActionable, g_object_unref)
312+ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkAdjustment, g_object_unref)
313+--- a/gtk/gtk.h
314++++ b/gtk/gtk.h
315+@@ -32,7 +32,6 @@
316+ #include <gtk/gtkaccelgroup.h>
317+ #include <gtk/gtkaccellabel.h>
318+ #include <gtk/gtkaccelmap.h>
319+-#include <gtk/gtkaccessible.h>
320+ #include <gtk/gtkactionable.h>
321+ #include <gtk/gtkactionbar.h>
322+ #include <gtk/gtkadjustment.h>
323+--- a/gtk/gtkaccellabel.c
324++++ b/gtk/gtkaccellabel.c
325+@@ -167,8 +167,6 @@
326+ widget_class->get_preferred_width = gtk_accel_label_get_preferred_width;
327+ widget_class->destroy = gtk_accel_label_destroy;
328+
329+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_ACCEL_LABEL);
330+-
331+ class->signal_quote1 = g_strdup ("<:");
332+ class->signal_quote2 = g_strdup (":>");
333+
334+--- a/gtk/gtkaccessible.c
335++++ b/gtk/gtkaccessible.c
336+@@ -50,177 +50,8 @@
337+ PROP_WIDGET
338+ };
339+
340+-static void gtk_accessible_real_connect_widget_destroyed (GtkAccessible *accessible);
341+
342+-G_DEFINE_TYPE_WITH_PRIVATE (GtkAccessible, gtk_accessible, ATK_TYPE_OBJECT)
343+-
344+-static void
345+-gtk_accessible_set_property (GObject *object,
346+- guint prop_id,
347+- const GValue *value,
348+- GParamSpec *pspec)
349+-{
350+- GtkAccessible *accessible = GTK_ACCESSIBLE (object);
351+-
352+- switch (prop_id)
353+- {
354+- case PROP_WIDGET:
355+- gtk_accessible_set_widget (accessible, g_value_get_object (value));
356+- break;
357+- default:
358+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
359+- break;
360+- }
361+-}
362+-
363+-static void
364+-gtk_accessible_get_property (GObject *object,
365+- guint prop_id,
366+- GValue *value,
367+- GParamSpec *pspec)
368+-{
369+- GtkAccessible *accessible = GTK_ACCESSIBLE (object);
370+- GtkAccessiblePrivate *priv = accessible->priv;
371+-
372+- switch (prop_id)
373+- {
374+- case PROP_WIDGET:
375+- g_value_set_object (value, priv->widget);
376+- break;
377+- default:
378+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
379+- break;
380+- }
381+-}
382+-
383+-static void
384+-gtk_accessible_init (GtkAccessible *accessible)
385+-{
386+- accessible->priv = gtk_accessible_get_instance_private (accessible);
387+-}
388+-
389+-static AtkStateSet *
390+-gtk_accessible_ref_state_set (AtkObject *object)
391+-{
392+- GtkAccessible *accessible = GTK_ACCESSIBLE (object);
393+- AtkStateSet *state_set;
394+-
395+- state_set = ATK_OBJECT_CLASS (gtk_accessible_parent_class)->ref_state_set (object);
396+-
397+- if (accessible->priv->widget == NULL)
398+- atk_state_set_add_state (state_set, ATK_STATE_DEFUNCT);
399+-
400+- return state_set;
401+-}
402+-
403+-static void
404+-gtk_accessible_real_widget_set (GtkAccessible *accessible)
405+-{
406+- atk_object_notify_state_change (ATK_OBJECT (accessible), ATK_STATE_DEFUNCT, FALSE);
407+-}
408+-
409+-static void
410+-gtk_accessible_real_widget_unset (GtkAccessible *accessible)
411+-{
412+- atk_object_notify_state_change (ATK_OBJECT (accessible), ATK_STATE_DEFUNCT, TRUE);
413+-}
414+-
415+-static void
416+-gtk_accessible_dispose (GObject *object)
417+-{
418+- GtkAccessible *accessible = GTK_ACCESSIBLE (object);
419+-
420+- gtk_accessible_set_widget (accessible, NULL);
421+-
422+- G_OBJECT_CLASS (gtk_accessible_parent_class)->dispose (object);
423+-}
424+-
425+-static void
426+-gtk_accessible_class_init (GtkAccessibleClass *klass)
427+-{
428+- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
429+- AtkObjectClass *atkobject_class = ATK_OBJECT_CLASS (klass);
430+-
431+- klass->connect_widget_destroyed = gtk_accessible_real_connect_widget_destroyed;
432+- klass->widget_set = gtk_accessible_real_widget_set;
433+- klass->widget_unset = gtk_accessible_real_widget_unset;
434+-
435+- atkobject_class->ref_state_set = gtk_accessible_ref_state_set;
436+- gobject_class->get_property = gtk_accessible_get_property;
437+- gobject_class->set_property = gtk_accessible_set_property;
438+- gobject_class->dispose = gtk_accessible_dispose;
439+-
440+- g_object_class_install_property (gobject_class,
441+- PROP_WIDGET,
442+- g_param_spec_object ("widget",
443+- P_("Widget"),
444+- P_("The widget referenced by this accessible."),
445+- GTK_TYPE_WIDGET,
446+- G_PARAM_READWRITE));
447+-}
448+-
449+ /**
450+- * gtk_accessible_set_widget:
451+- * @accessible: a #GtkAccessible
452+- * @widget: (allow-none): a #GtkWidget or %NULL to unset
453+- *
454+- * Sets the #GtkWidget corresponding to the #GtkAccessible.
455+- *
456+- * @accessible will not hold a reference to @widget.
457+- * It is the caller’s responsibility to ensure that when @widget
458+- * is destroyed, the widget is unset by calling this function
459+- * again with @widget set to %NULL.
460+- *
461+- * Since: 2.22
462+- */
463+-void
464+-gtk_accessible_set_widget (GtkAccessible *accessible,
465+- GtkWidget *widget)
466+-{
467+- GtkAccessiblePrivate *priv;
468+- GtkAccessibleClass *klass;
469+-
470+- g_return_if_fail (GTK_IS_ACCESSIBLE (accessible));
471+-
472+- priv = accessible->priv;
473+- klass = GTK_ACCESSIBLE_GET_CLASS (accessible);
474+-
475+- if (priv->widget == widget)
476+- return;
477+-
478+- if (priv->widget)
479+- klass->widget_unset (accessible);
480+-
481+- priv->widget = widget;
482+-
483+- if (widget)
484+- klass->widget_set (accessible);
485+-
486+- g_object_notify (G_OBJECT (accessible), "widget");
487+-}
488+-
489+-/**
490+- * gtk_accessible_get_widget:
491+- * @accessible: a #GtkAccessible
492+- *
493+- * Gets the #GtkWidget corresponding to the #GtkAccessible.
494+- * The returned widget does not have a reference added, so
495+- * you do not need to unref it.
496+- *
497+- * Returns: (nullable) (transfer none): pointer to the #GtkWidget
498+- * corresponding to the #GtkAccessible, or %NULL.
499+- *
500+- * Since: 2.22
501+- */
502+-GtkWidget*
503+-gtk_accessible_get_widget (GtkAccessible *accessible)
504+-{
505+- g_return_val_if_fail (GTK_IS_ACCESSIBLE (accessible), NULL);
506+-
507+- return accessible->priv->widget;
508+-}
509+-
510+-/**
511+ * gtk_accessible_connect_widget_destroyed:
512+ * @accessible: a #GtkAccessible
513+ *
514+@@ -242,19 +73,3 @@
515+ class->connect_widget_destroyed (accessible);
516+ }
517+
518+-static void
519+-gtk_accessible_widget_destroyed (GtkWidget *widget,
520+- GtkAccessible *accessible)
521+-{
522+- gtk_accessible_set_widget (accessible, NULL);
523+-}
524+-
525+-static void
526+-gtk_accessible_real_connect_widget_destroyed (GtkAccessible *accessible)
527+-{
528+- GtkAccessiblePrivate *priv = accessible->priv;
529+-
530+- if (priv->widget)
531+- g_signal_connect (priv->widget, "destroy",
532+- G_CALLBACK (gtk_accessible_widget_destroyed), accessible);
533+-}
534+--- a/gtk/gtkaccessible.h
535++++ b/gtk/gtkaccessible.h
536+@@ -22,34 +22,22 @@
537+ #error "Only <gtk/gtk.h> can be included directly."
538+ #endif
539+
540+-#include <atk/atk.h>
541+ #include <gtk/gtkwidget.h>
542+
543+ G_BEGIN_DECLS
544+
545+-#define GTK_TYPE_ACCESSIBLE (gtk_accessible_get_type ())
546+-#define GTK_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ACCESSIBLE, GtkAccessible))
547+-#define GTK_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ACCESSIBLE, GtkAccessibleClass))
548+-#define GTK_IS_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ACCESSIBLE))
549+-#define GTK_IS_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ACCESSIBLE))
550+-#define GTK_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ACCESSIBLE, GtkAccessibleClass))
551+-
552+ typedef struct _GtkAccessible GtkAccessible;
553+ typedef struct _GtkAccessiblePrivate GtkAccessiblePrivate;
554+ typedef struct _GtkAccessibleClass GtkAccessibleClass;
555+
556+ struct _GtkAccessible
557+ {
558+- AtkObject parent;
559+-
560+ /*< private >*/
561+ GtkAccessiblePrivate *priv;
562+ };
563+
564+ struct _GtkAccessibleClass
565+ {
566+- AtkObjectClass parent_class;
567+-
568+ void (*connect_widget_destroyed) (GtkAccessible *accessible);
569+
570+ void (*widget_set) (GtkAccessible *accessible);
571+@@ -58,9 +46,6 @@
572+ void (*_gtk_reserved3) (void);
573+ void (*_gtk_reserved4) (void);
574+ };
575+-
576+-GDK_AVAILABLE_IN_ALL
577+-GType gtk_accessible_get_type (void) G_GNUC_CONST;
578+
579+ GDK_AVAILABLE_IN_ALL
580+ void gtk_accessible_set_widget (GtkAccessible *accessible,
581+--- a/gtk/gtkactionbar.c
582++++ b/gtk/gtkactionbar.c
583+@@ -351,7 +351,6 @@
584+ gtk_widget_class_bind_template_child_private (widget_class, GtkActionBar, box);
585+ gtk_widget_class_bind_template_child_private (widget_class, GtkActionBar, revealer);
586+
587+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_PANEL);
588+ gtk_widget_class_set_css_name (widget_class, "actionbar");
589+ }
590+
591+--- a/gtk/gtkassistant.c
592++++ b/gtk/gtkassistant.c
593+@@ -58,8 +58,6 @@
594+
595+ #include "config.h"
596+
597+-#include <atk/atk.h>
598+-
599+ #include "gtkassistant.h"
600+
601+ #include "gtkbutton.h"
602+@@ -405,8 +403,6 @@
603+ widget_class->unmap = gtk_assistant_unmap;
604+ widget_class->delete_event = gtk_assistant_delete_event;
605+
606+- gtk_widget_class_set_accessible_type (widget_class, _gtk_assistant_accessible_get_type ());
607+-
608+ container_class->add = gtk_assistant_add;
609+ container_class->remove = gtk_assistant_remove;
610+ container_class->set_child_property = gtk_assistant_set_child_property;
611+@@ -2534,76 +2530,9 @@
612+ typedef GtkWindowAccessible GtkAssistantAccessible;
613+ typedef GtkWindowAccessibleClass GtkAssistantAccessibleClass;
614+
615+-G_DEFINE_TYPE (GtkAssistantAccessible, _gtk_assistant_accessible, GTK_TYPE_WINDOW_ACCESSIBLE);
616+-
617+-static gint
618+-gtk_assistant_accessible_get_n_children (AtkObject *accessible)
619+-{
620+- GtkWidget *widget;
621+-
622+- widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
623+- if (widget == NULL)
624+- return 0;
625+-
626+- return g_list_length (GTK_ASSISTANT (widget)->priv->pages) + 2;
627+-}
628+-
629+-static AtkObject *
630+-gtk_assistant_accessible_ref_child (AtkObject *accessible,
631+- gint index)
632+-{
633+- GtkAssistant *assistant;
634+- GtkAssistantPrivate *priv;
635+- GtkWidget *widget, *child;
636+- gint n_pages;
637+- AtkObject *obj;
638+- const gchar *title;
639+-
640+- widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
641+- if (widget == NULL)
642+- return NULL;
643+-
644+- assistant = GTK_ASSISTANT (widget);
645+- priv = assistant->priv;
646+- n_pages = g_list_length (priv->pages);
647+-
648+- if (index < 0)
649+- return NULL;
650+- else if (index < n_pages)
651+- {
652+- GtkAssistantPage *page = g_list_nth_data (priv->pages, index);
653+-
654+- child = page->page;
655+- title = gtk_assistant_get_page_title (assistant, child);
656+- }
657+- else if (index == n_pages)
658+- {
659+- child = priv->action_area;
660+- title = NULL;
661+- }
662+- else if (index == n_pages + 1)
663+- {
664+- child = priv->headerbar;
665+- title = NULL;
666+- }
667+- else
668+- return NULL;
669+-
670+- obj = gtk_widget_get_accessible (child);
671+-
672+- if (title)
673+- atk_object_set_name (obj, title);
674+-
675+- return g_object_ref (obj);
676+-}
677+-
678+ static void
679+ _gtk_assistant_accessible_class_init (GtkAssistantAccessibleClass *klass)
680+ {
681+- AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
682+-
683+- atk_class->get_n_children = gtk_assistant_accessible_get_n_children;
684+- atk_class->ref_child = gtk_assistant_accessible_ref_child;
685+ }
686+
687+ static void
688+--- a/gtk/gtkbox.c
689++++ b/gtk/gtkbox.c
690+@@ -370,7 +370,6 @@
691+
692+ gtk_container_class_install_child_properties (container_class, LAST_CHILD_PROP, child_props);
693+
694+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_FILLER);
695+ gtk_widget_class_set_css_name (widget_class, "box");
696+ }
697+
698+--- a/gtk/gtkbutton.c
699++++ b/gtk/gtkbutton.c
700+@@ -630,7 +630,6 @@
701+ 2,
702+ GTK_PARAM_READABLE | G_PARAM_DEPRECATED));
703+
704+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_BUTTON_ACCESSIBLE);
705+ gtk_widget_class_set_css_name (widget_class, "button");
706+ }
707+
708+--- a/gtk/gtkcalendar.c
709++++ b/gtk/gtkcalendar.c
710+@@ -680,7 +680,6 @@
711+ NULL,
712+ G_TYPE_NONE, 0);
713+
714+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_CALENDAR);
715+ gtk_widget_class_set_css_name (widget_class, "calendar");
716+ }
717+
718+--- a/gtk/gtkcellrenderer.c
719++++ b/gtk/gtkcellrenderer.c
720+@@ -443,8 +443,6 @@
721+
722+ if (GtkCellRenderer_private_offset != 0)
723+ g_type_class_adjust_private_offset (class, &GtkCellRenderer_private_offset);
724+-
725+- gtk_cell_renderer_class_set_accessible_type (class, GTK_TYPE_RENDERER_CELL_ACCESSIBLE);
726+ }
727+
728+ static void
729+@@ -1848,40 +1846,5 @@
730+ state |= GTK_STATE_FLAG_SELECTED;
731+
732+ return state;
733+-}
734+-
735+-/**
736+- * gtk_cell_renderer_class_set_accessible_type:
737+- * @renderer_class: class to set the accessible type for
738+- * @type: The object type that implements the accessible for @widget_class.
739+- * The type must be a subtype of #GtkRendererCellAccessible
740+- *
741+- * Sets the type to be used for creating accessibles for cells rendered by
742+- * cell renderers of @renderer_class. Note that multiple accessibles will
743+- * be created.
744+- *
745+- * This function should only be called from class init functions of cell
746+- * renderers.
747+- **/
748+-void
749+-gtk_cell_renderer_class_set_accessible_type (GtkCellRendererClass *renderer_class,
750+- GType type)
751+-{
752+- GtkCellRendererClassPrivate *priv;
753+-
754+- g_return_if_fail (GTK_IS_CELL_RENDERER_CLASS (renderer_class));
755+- g_return_if_fail (g_type_is_a (type, GTK_TYPE_RENDERER_CELL_ACCESSIBLE));
756+-
757+- priv = renderer_class->priv;
758+-
759+- priv->accessible_type = type;
760+-}
761+-
762+-GType
763+-_gtk_cell_renderer_get_accessible_type (GtkCellRenderer *renderer)
764+-{
765+- g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), GTK_TYPE_RENDERER_CELL_ACCESSIBLE);
766+-
767+- return GTK_CELL_RENDERER_GET_CLASS (renderer)->priv->accessible_type;
768+ }
769+
770+--- a/gtk/gtkcellrendererpixbuf.c
771++++ b/gtk/gtkcellrendererpixbuf.c
772+@@ -282,10 +282,6 @@
773+ P_("The GIcon being displayed"),
774+ G_TYPE_ICON,
775+ GTK_PARAM_READWRITE));
776+-
777+-
778+-
779+- gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_IMAGE_CELL_ACCESSIBLE);
780+ }
781+
782+ static void
783+--- a/gtk/gtkcellrenderertext.c
784++++ b/gtk/gtkcellrenderertext.c
785+@@ -692,8 +692,6 @@
786+ g_signal_set_va_marshaller (text_cell_renderer_signals [EDITED],
787+ G_OBJECT_CLASS_TYPE (object_class),
788+ _gtk_marshal_VOID__STRING_STRINGv);
789+-
790+- gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_TEXT_CELL_ACCESSIBLE);
791+ }
792+
793+ static void
794+--- a/gtk/gtkcellrenderertoggle.c
795++++ b/gtk/gtkcellrenderertoggle.c
796+@@ -196,8 +196,6 @@
797+ NULL,
798+ G_TYPE_NONE, 1,
799+ G_TYPE_STRING);
800+-
801+- gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_BOOLEAN_CELL_ACCESSIBLE);
802+ }
803+
804+ static void
805+--- a/gtk/gtkcheckbutton.c
806++++ b/gtk/gtkcheckbutton.c
807+@@ -253,7 +253,6 @@
808+ INDICATOR_SPACING,
809+ GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
810+
811+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_CHECK_BOX);
812+ gtk_widget_class_set_css_name (widget_class, "checkbutton");
813+ }
814+
815+--- a/gtk/gtkcheckmenuitem.c
816++++ b/gtk/gtkcheckmenuitem.c
817+@@ -271,7 +271,6 @@
818+ NULL,
819+ G_TYPE_NONE, 0);
820+
821+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_CHECK_MENU_ITEM_ACCESSIBLE);
822+ gtk_widget_class_set_css_name (widget_class, "menuitem");
823+ }
824+
825+--- a/gtk/gtkcolorchooserwidget.c
826++++ b/gtk/gtkcolorchooserwidget.c
827+@@ -344,7 +344,6 @@
828+ {
829+ GtkWidget *grid;
830+ GtkWidget *p;
831+- AtkObject *atk_obj;
832+ gint line, pos;
833+ gint i;
834+ gint left, right;
835+@@ -373,11 +372,8 @@
836+ for (i = 0; i < n_colors; i++)
837+ {
838+ p = gtk_color_swatch_new ();
839+- atk_obj = gtk_widget_get_accessible (p);
840+ if (names)
841+ {
842+- atk_object_set_name (atk_obj,
843+- g_dpgettext2 (GETTEXT_PACKAGE, "Color name", names[i]));
844+ }
845+ else
846+ {
847+@@ -385,7 +381,6 @@
848+
849+ name = accessible_color_name (&colors[i]);
850+ text = g_strdup_printf (_("Color: %s"), name);
851+- atk_object_set_name (atk_obj, text);
852+ g_free (text);
853+ g_free (name);
854+ }
855+@@ -513,7 +508,6 @@
856+ GVariant *variant;
857+ GVariantIter iter;
858+ gboolean selected;
859+- AtkObject *atk_obj;
860+ gchar *text, *name;
861+
862+ cc->priv = gtk_color_chooser_widget_get_instance_private (cc);
863+@@ -537,9 +531,6 @@
864+
865+ cc->priv->button = button = gtk_color_swatch_new ();
866+ gtk_widget_set_name (button, "add-color-button");
867+- atk_obj = gtk_widget_get_accessible (button);
868+- atk_object_set_name (atk_obj, _("Custom color"));
869+- atk_object_set_description (atk_obj, _("Create a custom color"));
870+ connect_button_signals (button, cc);
871+ gtk_color_swatch_set_icon (GTK_COLOR_SWATCH (button), "list-add-symbolic");
872+ gtk_color_swatch_set_selectable (GTK_COLOR_SWATCH (button), FALSE);
873+@@ -556,10 +547,8 @@
874+ p = gtk_color_swatch_new ();
875+ gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (p), &color);
876+ gtk_color_swatch_set_can_drop (GTK_COLOR_SWATCH (p), TRUE);
877+- atk_obj = gtk_widget_get_accessible (p);
878+ name = accessible_color_name (&color);
879+ text = g_strdup_printf (_("Custom color %d: %s"), i, name);
880+- atk_object_set_name (atk_obj, text);
881+ g_free (text);
882+ g_free (name);
883+ connect_custom_signals (p, cc);
884+--- a/gtk/gtkcolorplane.c
885++++ b/gtk/gtkcolorplane.c
886+@@ -392,8 +392,6 @@
887+ static void
888+ gtk_color_plane_init (GtkColorPlane *plane)
889+ {
890+- AtkObject *atk_obj;
891+-
892+ plane->priv = gtk_color_plane_get_instance_private (plane);
893+
894+ gtk_widget_set_can_focus (GTK_WIDGET (plane), TRUE);
895+@@ -402,13 +400,6 @@
896+ | GDK_BUTTON_PRESS_MASK
897+ | GDK_BUTTON_RELEASE_MASK
898+ | GDK_POINTER_MOTION_MASK);
899+-
900+- atk_obj = gtk_widget_get_accessible (GTK_WIDGET (plane));
901+- if (GTK_IS_ACCESSIBLE (atk_obj))
902+- {
903+- atk_object_set_name (atk_obj, _("Color Plane"));
904+- atk_object_set_role (atk_obj, ATK_ROLE_COLOR_CHOOSER);
905+- }
906+
907+ plane->priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (plane));
908+ g_signal_connect (plane->priv->drag_gesture, "drag-begin",
909+--- a/gtk/gtkcolorscale.c
910++++ b/gtk/gtkcolorscale.c
911+@@ -200,19 +200,7 @@
912+ scale_set_type (GtkColorScale *scale,
913+ GtkColorScaleType type)
914+ {
915+- AtkObject *atk_obj;
916+-
917+ scale->priv->type = type;
918+-
919+- atk_obj = gtk_widget_get_accessible (GTK_WIDGET (scale));
920+- if (GTK_IS_ACCESSIBLE (atk_obj))
921+- {
922+- if (type == GTK_COLOR_SCALE_HUE)
923+- atk_object_set_name (atk_obj, C_("Color channel", "Hue"));
924+- else if (type == GTK_COLOR_SCALE_ALPHA)
925+- atk_object_set_name (atk_obj, C_("Color channel", "Alpha"));
926+- atk_object_set_role (atk_obj, ATK_ROLE_COLOR_CHOOSER);
927+- }
928+ }
929+
930+ static void
931+--- a/gtk/gtkcolorswatch.c
932++++ b/gtk/gtkcolorswatch.c
933+@@ -725,7 +725,6 @@
934+ g_param_spec_boolean ("has-menu", P_("Has Menu"), P_("Whether the swatch should offer customization"),
935+ TRUE, GTK_PARAM_READWRITE));
936+
937+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_COLOR_SWATCH_ACCESSIBLE);
938+ gtk_widget_class_set_css_name (widget_class, "colorswatch");
939+ }
940+
941+--- a/gtk/gtkcombobox.c
942++++ b/gtk/gtkcombobox.c
943+@@ -1255,7 +1255,6 @@
944+ gtk_widget_class_bind_template_child_internal_private (widget_class, GtkComboBox, arrow);
945+ gtk_widget_class_bind_template_callback (widget_class, gtk_combo_box_button_toggled);
946+
947+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_COMBO_BOX_ACCESSIBLE);
948+ gtk_widget_class_set_css_name (widget_class, "combobox");
949+ }
950+
951+@@ -4639,35 +4638,6 @@
952+ return combo_box->priv->popup_fixed_width;
953+ }
954+
955+-
956+-/**
957+- * gtk_combo_box_get_popup_accessible:
958+- * @combo_box: a #GtkComboBox
959+- *
960+- * Gets the accessible object corresponding to the combo box’s popup.
961+- *
962+- * This function is mostly intended for use by accessibility technologies;
963+- * applications should have little use for it.
964+- *
965+- * Returns: (transfer none): the accessible object corresponding
966+- * to the combo box’s popup.
967+- *
968+- * Since: 2.6
969+- */
970+-AtkObject *
971+-gtk_combo_box_get_popup_accessible (GtkComboBox *combo_box)
972+-{
973+- GtkComboBoxPrivate *priv;
974+-
975+- g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL);
976+-
977+- priv = combo_box->priv;
978+-
979+- if (priv->popup_widget)
980+- return gtk_widget_get_accessible (priv->popup_widget);
981+-
982+- return NULL;
983+-}
984+
985+ /**
986+ * gtk_combo_box_get_row_separator_func: (skip)
987+--- a/gtk/gtkcombobox.h
988++++ b/gtk/gtkcombobox.h
989+@@ -181,8 +181,6 @@
990+ GdkDevice *device);
991+ GDK_AVAILABLE_IN_ALL
992+ void gtk_combo_box_popdown (GtkComboBox *combo_box);
993+-GDK_AVAILABLE_IN_ALL
994+-AtkObject * gtk_combo_box_get_popup_accessible (GtkComboBox *combo_box);
995+
996+ GDK_AVAILABLE_IN_ALL
997+ gint gtk_combo_box_get_id_column (GtkComboBox *combo_box);
998+--- a/gtk/gtkcontainer.c
999++++ b/gtk/gtkcontainer.c
1000+@@ -591,8 +591,6 @@
1001+
1002+ if (GtkContainer_private_offset != 0)
1003+ g_type_class_adjust_private_offset (class, &GtkContainer_private_offset);
1004+-
1005+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_CONTAINER_ACCESSIBLE);
1006+ }
1007+
1008+ static void
1009+@@ -1875,8 +1873,6 @@
1010+ }
1011+
1012+ g_signal_emit (container, container_signals[ADD], 0, widget);
1013+-
1014+- _gtk_container_accessible_add (GTK_WIDGET (container), widget);
1015+ }
1016+
1017+ /**
1018+@@ -1905,8 +1901,6 @@
1019+ g_object_ref (widget);
1020+
1021+ g_signal_emit (container, container_signals[REMOVE], 0, widget);
1022+-
1023+- _gtk_container_accessible_remove (GTK_WIDGET (container), widget);
1024+
1025+ g_object_unref (widget);
1026+ g_object_unref (container);
1027+--- a/gtk/gtkdialog.c
1028++++ b/gtk/gtkdialog.c
1029+@@ -533,8 +533,6 @@
1030+ widget_class->map = gtk_dialog_map;
1031+ widget_class->style_updated = gtk_dialog_style_updated;
1032+
1033+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_DIALOG);
1034+-
1035+ class->close = gtk_dialog_close;
1036+
1037+ /**
1038+--- a/gtk/gtkdrawingarea.c
1039++++ b/gtk/gtkdrawingarea.c
1040+@@ -135,8 +135,6 @@
1041+ widget_class->realize = gtk_drawing_area_realize;
1042+ widget_class->size_allocate = gtk_drawing_area_size_allocate;
1043+ widget_class->style_updated = gtk_drawing_area_style_updated;
1044+-
1045+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_DRAWING_AREA);
1046+ }
1047+
1048+ static void
1049+--- a/gtk/gtkentry.c
1050++++ b/gtk/gtkentry.c
1051+@@ -2125,7 +2125,6 @@
1052+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_semicolon, GDK_CONTROL_MASK,
1053+ "insert-emoji", 0);
1054+
1055+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ENTRY_ACCESSIBLE);
1056+ gtk_widget_class_set_css_name (widget_class, "entry");
1057+ }
1058+
1059+--- a/gtk/gtkentrycompletion.c
1060++++ b/gtk/gtkentrycompletion.c
1061+@@ -2634,30 +2634,12 @@
1062+ set_accessible_relation (GtkWidget *window,
1063+ GtkWidget *entry)
1064+ {
1065+- AtkObject *window_accessible;
1066+- AtkObject *entry_accessible;
1067+-
1068+- window_accessible = gtk_widget_get_accessible (window);
1069+- entry_accessible = gtk_widget_get_accessible (entry);
1070+-
1071+- atk_object_add_relationship (window_accessible,
1072+- ATK_RELATION_POPUP_FOR,
1073+- entry_accessible);
1074+ }
1075+
1076+ static void
1077+ unset_accessible_relation (GtkWidget *window,
1078+ GtkWidget *entry)
1079+ {
1080+- AtkObject *window_accessible;
1081+- AtkObject *entry_accessible;
1082+-
1083+- window_accessible = gtk_widget_get_accessible (window);
1084+- entry_accessible = gtk_widget_get_accessible (entry);
1085+-
1086+- atk_object_remove_relationship (window_accessible,
1087+- ATK_RELATION_POPUP_FOR,
1088+- entry_accessible);
1089+ }
1090+
1091+ static void
1092+--- a/gtk/gtkexpander.c
1093++++ b/gtk/gtkexpander.c
1094+@@ -427,7 +427,6 @@
1095+ NULL,
1096+ G_TYPE_NONE, 0);
1097+
1098+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_EXPANDER_ACCESSIBLE);
1099+ gtk_widget_class_set_css_name (widget_class, "expander");
1100+ }
1101+
1102+--- a/gtk/gtkfilechooserdialog.c
1103++++ b/gtk/gtkfilechooserdialog.c
1104+@@ -265,8 +265,6 @@
1105+ widget_class->unmap = gtk_file_chooser_dialog_unmap;
1106+ widget_class->size_allocate = gtk_file_chooser_dialog_size_allocate;
1107+
1108+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_FILE_CHOOSER);
1109+-
1110+ _gtk_file_chooser_install_properties (gobject_class);
1111+
1112+ /* Bind class to template
1113+--- a/gtk/gtkfilechooserwidget.c
1114++++ b/gtk/gtkfilechooserwidget.c
1115+@@ -8753,7 +8753,6 @@
1116+ gtk_widget_class_bind_template_callback (widget_class, rename_file_rename_clicked);
1117+ gtk_widget_class_bind_template_callback (widget_class, rename_file_end);
1118+
1119+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_FILE_CHOOSER_WIDGET_ACCESSIBLE);
1120+ gtk_widget_class_set_css_name (widget_class, "filechooser");
1121+ }
1122+
1123+@@ -8762,7 +8761,6 @@
1124+ {
1125+ GtkTreeSelection *selection;
1126+ GtkCellRenderer *cell;
1127+- AtkObject *atk_obj;
1128+ GList *cells;
1129+ GFile *file;
1130+
1131+@@ -8818,10 +8816,6 @@
1132+ * that priv->icon_size be already setup.
1133+ */
1134+ set_icon_cell_renderer_fixed_size (impl);
1135+-
1136+- atk_obj = gtk_widget_get_accessible (impl->priv->browse_new_folder_button);
1137+- if (GTK_IS_ACCESSIBLE (atk_obj))
1138+- atk_object_set_name (atk_obj, _("Create Folder"));
1139+
1140+ gtk_popover_set_default_widget (GTK_POPOVER (impl->priv->new_folder_popover), impl->priv->new_folder_create_button);
1141+ gtk_popover_set_default_widget (GTK_POPOVER (impl->priv->rename_file_popover), impl->priv->rename_file_rename_button);
1142+--- a/gtk/gtkflowbox.c
1143++++ b/gtk/gtkflowbox.c
1144+@@ -635,7 +635,6 @@
1145+ G_TYPE_NONE, 0);
1146+ widget_class->activate_signal = child_signals[CHILD_ACTIVATE];
1147+
1148+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_LIST_ITEM);
1149+ gtk_widget_class_set_css_name (widget_class, "flowboxchild");
1150+ }
1151+
1152+@@ -1025,7 +1024,6 @@
1153+ BOX_PRIV (box)->cursor_child = child;
1154+ gtk_widget_grab_focus (GTK_WIDGET (child));
1155+ gtk_widget_queue_draw (GTK_WIDGET (child));
1156+- _gtk_flow_box_accessible_update_cursor (GTK_WIDGET (box), GTK_WIDGET (child));
1157+ }
1158+
1159+ static void
1160+@@ -3645,7 +3643,6 @@
1161+ static void
1162+ gtk_flow_box_selected_children_changed (GtkFlowBox *box)
1163+ {
1164+- _gtk_flow_box_accessible_selection_changed (GTK_WIDGET (box));
1165+ }
1166+
1167+ /* GObject implementation {{{2 */
1168+@@ -4100,7 +4097,6 @@
1169+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_a, GDK_CONTROL_MASK | GDK_SHIFT_MASK,
1170+ "unselect-all", 0);
1171+
1172+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_FLOW_BOX_ACCESSIBLE);
1173+ gtk_widget_class_set_css_name (widget_class, "flowbox");
1174+ }
1175+
1176+--- a/gtk/gtkfontchooserdialog.c
1177++++ b/gtk/gtkfontchooserdialog.c
1178+@@ -22,8 +22,6 @@
1179+ #include <glib/gprintf.h>
1180+ #include <string.h>
1181+
1182+-#include <atk/atk.h>
1183+-
1184+ #include "gtkfontchooserdialog.h"
1185+ #include "gtkfontchooser.h"
1186+ #include "gtkfontchooserwidget.h"
1187+--- a/gtk/gtkfontchooserwidget.c
1188++++ b/gtk/gtkfontchooserwidget.c
1189+@@ -21,8 +21,6 @@
1190+ #include <glib/gprintf.h>
1191+ #include <string.h>
1192+
1193+-#include <atk/atk.h>
1194+-
1195+ #include "gtkfontchooserwidget.h"
1196+ #include "gtkfontchooserwidgetprivate.h"
1197+
1198+--- a/gtk/gtkframe.c
1199++++ b/gtk/gtkframe.c
1200+@@ -282,7 +282,6 @@
1201+
1202+ class->compute_child_allocation = gtk_frame_real_compute_child_allocation;
1203+
1204+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_FRAME_ACCESSIBLE);
1205+ gtk_widget_class_set_css_name (widget_class, "frame");
1206+ }
1207+
1208+--- a/gtk/gtkglarea.c
1209++++ b/gtk/gtkglarea.c
1210+@@ -766,8 +766,6 @@
1211+ widget_class->size_allocate = gtk_gl_area_size_allocate;
1212+ widget_class->draw = gtk_gl_area_draw;
1213+
1214+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_DRAWING_AREA);
1215+-
1216+ /**
1217+ * GtkGLArea:context:
1218+ *
1219+--- a/gtk/gtkheaderbar.c
1220++++ b/gtk/gtkheaderbar.c
1221+@@ -351,7 +351,6 @@
1222+ {
1223+ GtkWidget *button = NULL;
1224+ GtkWidget *image = NULL;
1225+- AtkObject *accessible;
1226+
1227+ if (strcmp (t[j], "icon") == 0 &&
1228+ is_sovereign_window)
1229+@@ -386,10 +385,6 @@
1230+ gtk_widget_set_can_focus (button, FALSE);
1231+ gtk_widget_show_all (button);
1232+
1233+- accessible = gtk_widget_get_accessible (button);
1234+- if (GTK_IS_ACCESSIBLE (accessible))
1235+- atk_object_set_name (accessible, _("Application menu"));
1236+-
1237+ priv->titlebar_icon = image;
1238+ if (!_gtk_header_bar_update_window_icon (bar, window))
1239+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon),
1240+@@ -409,10 +404,6 @@
1241+ gtk_widget_show_all (button);
1242+ g_signal_connect_swapped (button, "clicked",
1243+ G_CALLBACK (gtk_window_iconify), window);
1244+-
1245+- accessible = gtk_widget_get_accessible (button);
1246+- if (GTK_IS_ACCESSIBLE (accessible))
1247+- atk_object_set_name (accessible, _("Minimize"));
1248+ }
1249+ else if (strcmp (t[j], "maximize") == 0 &&
1250+ gtk_window_get_resizable (window) &&
1251+@@ -433,10 +424,6 @@
1252+ gtk_widget_show_all (button);
1253+ g_signal_connect_swapped (button, "clicked",
1254+ G_CALLBACK (_gtk_window_toggle_maximized), window);
1255+-
1256+- accessible = gtk_widget_get_accessible (button);
1257+- if (GTK_IS_ACCESSIBLE (accessible))
1258+- atk_object_set_name (accessible, maximized ? _("Restore") : _("Maximize"));
1259+ }
1260+ else if (strcmp (t[j], "close") == 0 &&
1261+ gtk_window_get_deletable (window))
1262+@@ -452,10 +439,6 @@
1263+ gtk_widget_show_all (button);
1264+ g_signal_connect_swapped (button, "clicked",
1265+ G_CALLBACK (gtk_window_close), window);
1266+-
1267+- accessible = gtk_widget_get_accessible (button);
1268+- if (GTK_IS_ACCESSIBLE (accessible))
1269+- atk_object_set_name (accessible, _("Close"));
1270+ }
1271+
1272+ if (button)
1273+@@ -2118,8 +2101,6 @@
1274+
1275+ g_object_class_install_properties (object_class, LAST_PROP, header_bar_props);
1276+
1277+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_HEADER_BAR_ACCESSIBLE);
1278+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_PANEL);
1279+ gtk_widget_class_set_css_name (widget_class, "headerbar");
1280+ }
1281+
1282+--- a/gtk/gtkiconview.c
1283++++ b/gtk/gtkiconview.c
1284+@@ -965,7 +965,6 @@
1285+ gtk_icon_view_add_move_binding (binding_set, GDK_KEY_KP_Left, 0,
1286+ GTK_MOVEMENT_VISUAL_POSITIONS, -1);
1287+
1288+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_ICON_VIEW_ACCESSIBLE);
1289+ gtk_widget_class_set_css_name (widget_class, "iconview");
1290+ }
1291+
1292+@@ -2125,19 +2124,6 @@
1293+ gtk_icon_view_item_selected_changed (GtkIconView *icon_view,
1294+ GtkIconViewItem *item)
1295+ {
1296+- AtkObject *obj;
1297+- AtkObject *item_obj;
1298+-
1299+- obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
1300+- if (obj != NULL)
1301+- {
1302+- item_obj = atk_object_ref_accessible_child (obj, item->index);
1303+- if (item_obj != NULL)
1304+- {
1305+- atk_object_notify_state_change (item_obj, ATK_STATE_SELECTED, item->selected);
1306+- g_object_unref (item_obj);
1307+- }
1308+- }
1309+ }
1310+
1311+ static void
1312+@@ -2939,8 +2925,6 @@
1313+
1314+ if (icon_view->priv->doing_rubberband)
1315+ gtk_icon_view_update_rubberband (GTK_WIDGET (icon_view));
1316+-
1317+- _gtk_icon_view_accessible_adjustment_changed (icon_view);
1318+ }
1319+ }
1320+
1321+@@ -3238,10 +3222,6 @@
1322+ GtkIconViewItem *item,
1323+ GtkCellRenderer *cursor_cell)
1324+ {
1325+- AtkObject *obj;
1326+- AtkObject *item_obj;
1327+- AtkObject *cursor_item_obj;
1328+-
1329+ /* When hitting this path from keynav, the focus cell is
1330+ * already set, we dont need to notify the atk object
1331+ * but we still need to queue the draw here (in the case
1332+@@ -3253,17 +3233,10 @@
1333+ (cursor_cell == NULL || cursor_cell == gtk_cell_area_get_focus_cell (icon_view->priv->cell_area)))
1334+ return;
1335+
1336+- obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
1337+ if (icon_view->priv->cursor_item != NULL)
1338+ {
1339+ gtk_icon_view_queue_draw_item (icon_view, icon_view->priv->cursor_item);
1340+- if (obj != NULL)
1341+- {
1342+- cursor_item_obj = atk_object_ref_accessible_child (obj, icon_view->priv->cursor_item->index);
1343+- if (cursor_item_obj != NULL)
1344+- atk_object_notify_state_change (cursor_item_obj, ATK_STATE_FOCUSED, FALSE);
1345+ }
1346+- }
1347+ icon_view->priv->cursor_item = item;
1348+
1349+ if (cursor_cell)
1350+@@ -3273,18 +3246,6 @@
1351+ /* Make sure there is a cell in focus initially */
1352+ if (!gtk_cell_area_get_focus_cell (icon_view->priv->cell_area))
1353+ gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD);
1354+- }
1355+-
1356+- /* Notify that accessible focus object has changed */
1357+- item_obj = atk_object_ref_accessible_child (obj, item->index);
1358+-
1359+- if (item_obj != NULL)
1360+- {
1361+- G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
1362+- atk_focus_tracker_notify (item_obj);
1363+- G_GNUC_END_IGNORE_DEPRECATIONS;
1364+- atk_object_notify_state_change (item_obj, ATK_STATE_FOCUSED, TRUE);
1365+- g_object_unref (item_obj);
1366+ }
1367+ }
1368+
1369+--- a/gtk/gtkimage.c
1370++++ b/gtk/gtkimage.c
1371+@@ -402,7 +402,6 @@
1372+
1373+ g_object_class_install_properties (gobject_class, NUM_PROPERTIES, image_props);
1374+
1375+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_IMAGE_ACCESSIBLE);
1376+ gtk_widget_class_set_css_name (widget_class, "image");
1377+ }
1378+
1379+--- a/gtk/gtkinfobar.c
1380++++ b/gtk/gtkinfobar.c
1381+@@ -1276,7 +1276,6 @@
1382+ if (priv->message_type != message_type)
1383+ {
1384+ GtkStyleContext *context;
1385+- AtkObject *atk_obj;
1386+ const char *type_class[] = {
1387+ GTK_STYLE_CLASS_INFO,
1388+ GTK_STYLE_CLASS_WARNING,
1389+@@ -1293,43 +1292,6 @@
1390+ priv->message_type = message_type;
1391+
1392+ gtk_widget_queue_draw (GTK_WIDGET (info_bar));
1393+-
1394+- atk_obj = gtk_widget_get_accessible (GTK_WIDGET (info_bar));
1395+- if (GTK_IS_ACCESSIBLE (atk_obj))
1396+- {
1397+- const char *name = NULL;
1398+-
1399+- atk_object_set_role (atk_obj, ATK_ROLE_INFO_BAR);
1400+-
1401+- switch (message_type)
1402+- {
1403+- case GTK_MESSAGE_INFO:
1404+- name = _("Information");
1405+- break;
1406+-
1407+- case GTK_MESSAGE_QUESTION:
1408+- name = _("Question");
1409+- break;
1410+-
1411+- case GTK_MESSAGE_WARNING:
1412+- name = _("Warning");
1413+- break;
1414+-
1415+- case GTK_MESSAGE_ERROR:
1416+- name = _("Error");
1417+- break;
1418+-
1419+- case GTK_MESSAGE_OTHER:
1420+- break;
1421+-
1422+- default:
1423+- g_warning ("Unknown GtkMessageType %u", message_type);
1424+- break;
1425+- }
1426+-
1427+- if (name)
1428+- atk_object_set_name (atk_obj, name);
1429+- }
1430+
1431+ if (type_class[priv->message_type])
1432+ gtk_style_context_add_class (context, type_class[priv->message_type]);
1433+--- a/gtk/gtklabel.c
1434++++ b/gtk/gtklabel.c
1435+@@ -1194,8 +1194,6 @@
1436+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Enter, 0,
1437+ "activate-current-link", 0);
1438+
1439+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LABEL_ACCESSIBLE);
1440+-
1441+ gtk_widget_class_set_css_name (widget_class, "label");
1442+
1443+ quark_shortcuts_connected = g_quark_from_static_string ("gtk-label-shortcuts-connected");
1444+@@ -2146,12 +2144,9 @@
1445+ return;
1446+ }
1447+
1448+- _gtk_label_accessible_text_deleted (label);
1449+ g_free (priv->text);
1450+ priv->text = str;
1451+
1452+- _gtk_label_accessible_text_inserted (label);
1453+-
1454+ gtk_label_select_region_index (label, 0, 0);
1455+ }
1456+
1457+@@ -2680,7 +2675,6 @@
1458+ {
1459+ gtk_label_ensure_select_info (label);
1460+ priv->select_info->links = g_list_reverse (links);
1461+- _gtk_label_accessible_update_links (label);
1462+ gtk_label_ensure_has_tooltip (label);
1463+ }
1464+
1465+@@ -4818,7 +4812,6 @@
1466+ {
1467+ priv->select_info->selection_anchor = link->start;
1468+ priv->select_info->selection_end = link->start;
1469+- _gtk_label_accessible_focus_link_changed (label);
1470+ break;
1471+ }
1472+ }
1473+@@ -4851,7 +4844,6 @@
1474+ {
1475+ info->selection_anchor = focus_link->start;
1476+ info->selection_end = focus_link->start;
1477+- _gtk_label_accessible_focus_link_changed (label);
1478+ }
1479+ }
1480+ }
1481+@@ -4882,7 +4874,6 @@
1482+ if (!range_is_in_ellipsis (label, link->start, link->end))
1483+ {
1484+ gtk_label_select_region_index (label, link->start, link->start);
1485+- _gtk_label_accessible_focus_link_changed (label);
1486+ return TRUE;
1487+ }
1488+ }
1489+@@ -4897,7 +4888,6 @@
1490+ if (!range_is_in_ellipsis (label, link->start, link->end))
1491+ {
1492+ gtk_label_select_region_index (label, link->start, link->start);
1493+- _gtk_label_accessible_focus_link_changed (label);
1494+ return TRUE;
1495+ }
1496+ }
1497+@@ -4951,7 +4941,6 @@
1498+ focus_link = l->data;
1499+ info->selection_anchor = focus_link->start;
1500+ info->selection_end = focus_link->start;
1501+- _gtk_label_accessible_focus_link_changed (label);
1502+ gtk_widget_queue_draw (widget);
1503+
1504+ return TRUE;
1505+@@ -6732,7 +6721,6 @@
1506+ priv->select_info->links = NULL;
1507+ priv->select_info->active_link = NULL;
1508+
1509+- _gtk_label_accessible_update_links (label);
1510+ }
1511+
1512+ static gboolean
1513+--- a/gtk/gtklevelbar.c
1514++++ b/gtk/gtklevelbar.c
1515+@@ -1136,7 +1136,6 @@
1516+
1517+ g_object_class_install_properties (oclass, LAST_PROPERTY, properties);
1518+
1519+- gtk_widget_class_set_accessible_type (wclass, GTK_TYPE_LEVEL_BAR_ACCESSIBLE);
1520+ gtk_widget_class_set_css_name (wclass, "levelbar");
1521+ }
1522+
1523+--- a/gtk/gtklinkbutton.c
1524++++ b/gtk/gtklinkbutton.c
1525+@@ -209,7 +209,6 @@
1526+ _gtk_marshal_BOOLEAN__VOID,
1527+ G_TYPE_BOOLEAN, 0);
1528+
1529+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LINK_BUTTON_ACCESSIBLE);
1530+ gtk_widget_class_set_css_name (widget_class, "button");
1531+ }
1532+
1533+--- a/gtk/gtklistbox.c
1534++++ b/gtk/gtklistbox.c
1535+@@ -447,8 +447,6 @@
1536+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
1537+ GtkBindingSet *binding_set;
1538+
1539+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LIST_BOX_ACCESSIBLE);
1540+-
1541+ object_class->get_property = gtk_list_box_get_property;
1542+ object_class->set_property = gtk_list_box_set_property;
1543+ object_class->finalize = gtk_list_box_finalize;
1544+@@ -903,7 +901,6 @@
1545+ static void
1546+ gtk_list_box_selected_rows_changed (GtkListBox *box)
1547+ {
1548+- _gtk_list_box_accessible_selection_changed (box);
1549+ }
1550+
1551+ /**
1552+@@ -1559,7 +1556,6 @@
1553+ if (grab_focus)
1554+ gtk_widget_grab_focus (GTK_WIDGET (row));
1555+ gtk_widget_queue_draw (GTK_WIDGET (row));
1556+- _gtk_list_box_accessible_update_cursor (box, row);
1557+ }
1558+
1559+ static GtkListBox *
1560+@@ -3865,8 +3861,6 @@
1561+ {
1562+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
1563+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
1564+-
1565+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LIST_BOX_ROW_ACCESSIBLE);
1566+
1567+ object_class->get_property = gtk_list_box_row_get_property;
1568+ object_class->set_property = gtk_list_box_row_set_property;
1569+--- a/gtk/gtklockbutton.c
1570++++ b/gtk/gtklockbutton.c
1571+@@ -189,12 +189,10 @@
1572+
1573+ case PROP_TEXT_LOCK:
1574+ gtk_label_set_text (GTK_LABEL (priv->label_lock), g_value_get_string (value));
1575+- _gtk_lock_button_accessible_name_changed (button);
1576+ break;
1577+
1578+ case PROP_TEXT_UNLOCK:
1579+ gtk_label_set_text (GTK_LABEL (priv->label_unlock), g_value_get_string (value));
1580+- _gtk_lock_button_accessible_name_changed (button);
1581+ break;
1582+
1583+ case PROP_TOOLTIP_LOCK:
1584+@@ -322,7 +320,6 @@
1585+ gtk_widget_class_bind_template_child_private (widget_class, GtkLockButton, label_unlock);
1586+ gtk_widget_class_bind_template_child_private (widget_class, GtkLockButton, stack);
1587+
1588+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LOCK_BUTTON_ACCESSIBLE);
1589+ gtk_widget_class_set_css_name (widget_class, "button");
1590+ }
1591+
1592+@@ -387,7 +384,6 @@
1593+ gtk_image_set_from_gicon (GTK_IMAGE (priv->image), icon, GTK_ICON_SIZE_MENU);
1594+ gtk_stack_set_visible_child (GTK_STACK (priv->stack),
1595+ allowed ? priv->label_lock : priv->label_unlock);
1596+- _gtk_lock_button_accessible_name_changed (button);
1597+ gtk_widget_set_tooltip_markup (GTK_WIDGET (button), tooltip);
1598+ gtk_widget_set_sensitive (GTK_WIDGET (button), sensitive);
1599+ gtk_widget_set_visible (GTK_WIDGET (button), visible);
1600+--- a/gtk/gtkmain.c
1601++++ b/gtk/gtkmain.c
1602+@@ -131,8 +131,6 @@
1603+ #include "gtkwindowprivate.h"
1604+ #include "gtkwindowgroup.h"
1605+
1606+-#include "a11y/gtkaccessibility.h"
1607+-
1608+ /* Private type definitions
1609+ */
1610+ typedef struct _GtkKeySnooperData GtkKeySnooperData;
1611+@@ -712,7 +710,6 @@
1612+ static void
1613+ default_display_notify_cb (GdkDisplayManager *dm)
1614+ {
1615+- _gtk_accessibility_init ();
1616+ debug_flags[0].display = gdk_display_get_default ();
1617+ }
1618+
1619+@@ -2434,18 +2431,6 @@
1620+ {
1621+ GSList *slist;
1622+ gint return_val = FALSE;
1623+-
1624+- return_val = _gtk_accessibility_key_snooper (grab_widget, (GdkEventKey *) event);
1625+-
1626+- slist = key_snoopers;
1627+- while (slist && !return_val)
1628+- {
1629+- GtkKeySnooperData *data;
1630+-
1631+- data = slist->data;
1632+- slist = slist->next;
1633+- return_val = (*data->func) (grab_widget, (GdkEventKey*) event, data->func_data);
1634+- }
1635+
1636+ return return_val;
1637+ }
1638+--- a/gtk/gtkmenu.c
1639++++ b/gtk/gtkmenu.c
1640+@@ -1090,7 +1090,6 @@
1641+ GTK_TYPE_SCROLL_TYPE,
1642+ GTK_SCROLL_PAGE_DOWN);
1643+
1644+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_ACCESSIBLE);
1645+ gtk_widget_class_set_css_name (widget_class, "menu");
1646+ }
1647+
1648+--- a/gtk/gtkmenubar.c
1649++++ b/gtk/gtkmenubar.c
1650+@@ -275,7 +275,6 @@
1651+ GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
1652+
1653+ gtk_container_class_handle_border_width (container_class);
1654+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_MENU_BAR);
1655+ gtk_widget_class_set_css_name (widget_class, "menubar");
1656+ }
1657+
1658+--- a/gtk/gtkmenubutton.c
1659++++ b/gtk/gtkmenubutton.c
1660+@@ -568,7 +568,6 @@
1661+
1662+ g_object_class_install_properties (gobject_class, LAST_PROP, menu_button_props);
1663+
1664+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_BUTTON_ACCESSIBLE);
1665+ gtk_widget_class_set_css_name (widget_class, "button");
1666+ }
1667+
1668+--- a/gtk/gtkmenuitem.c
1669++++ b/gtk/gtkmenuitem.c
1670+@@ -919,7 +919,6 @@
1671+ 0, G_MAXINT, 12,
1672+ GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
1673+
1674+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_ITEM_ACCESSIBLE);
1675+ gtk_widget_class_set_css_name (widget_class, "menuitem");
1676+
1677+ gtk_container_class_handle_border_width (container_class);
1678+--- a/gtk/gtkmenushell.c
1679++++ b/gtk/gtkmenushell.c
1680+@@ -420,8 +420,6 @@
1681+ P_("A boolean that determines whether the menu grabs the keyboard focus"),
1682+ TRUE,
1683+ GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
1684+-
1685+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_MENU_SHELL_ACCESSIBLE);
1686+ }
1687+
1688+ static GType
1689+--- a/gtk/gtkmessagedialog.c
1690++++ b/gtk/gtkmessagedialog.c
1691+@@ -163,8 +163,6 @@
1692+
1693+ widget_class->style_updated = gtk_message_dialog_style_updated;
1694+
1695+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_ALERT);
1696+-
1697+ gobject_class->constructed = gtk_message_dialog_constructed;
1698+ gobject_class->set_property = gtk_message_dialog_set_property;
1699+ gobject_class->get_property = gtk_message_dialog_get_property;
1700+@@ -372,7 +370,6 @@
1701+ {
1702+ GtkMessageDialogPrivate *priv = dialog->priv;
1703+ const gchar *name = NULL;
1704+- AtkObject *atk_obj;
1705+
1706+ if (priv->message_type == type)
1707+ return;
1708+@@ -403,14 +400,6 @@
1709+ default:
1710+ g_warning ("Unknown GtkMessageType %u", type);
1711+ break;
1712+- }
1713+-
1714+- atk_obj = gtk_widget_get_accessible (GTK_WIDGET (dialog));
1715+- if (GTK_IS_ACCESSIBLE (atk_obj))
1716+- {
1717+- atk_object_set_role (atk_obj, ATK_ROLE_ALERT);
1718+- if (name)
1719+- atk_object_set_name (atk_obj, name);
1720+ }
1721+
1722+ g_object_notify (G_OBJECT (dialog), "message-type");
1723+--- a/gtk/gtkmodelbutton.c
1724++++ b/gtk/gtkmodelbutton.c
1725+@@ -247,15 +247,6 @@
1726+ gtk_css_gadget_set_state (button->gadget, state);
1727+
1728+ gtk_css_gadget_set_state (button->indicator_gadget, indicator_state);
1729+-
1730+- if (button->role == GTK_BUTTON_ROLE_CHECK ||
1731+- button->role == GTK_BUTTON_ROLE_RADIO)
1732+- {
1733+- AtkObject *object = _gtk_widget_peek_accessible (GTK_WIDGET (button));
1734+- if (object)
1735+- atk_object_notify_state_change (object, ATK_STATE_CHECKED,
1736+- (indicator_state & GTK_STATE_FLAG_CHECKED));
1737+- }
1738+ }
1739+
1740+ static void
1741+@@ -310,17 +301,13 @@
1742+ static void
1743+ update_node_name (GtkModelButton *button)
1744+ {
1745+- AtkObject *accessible;
1746+- AtkRole a11y_role;
1747+ const gchar *indicator_name;
1748+ gboolean indicator_visible;
1749+ GtkCssNode *indicator_node;
1750+
1751+- accessible = gtk_widget_get_accessible (GTK_WIDGET (button));
1752+ switch (button->role)
1753+ {
1754+ case GTK_BUTTON_ROLE_NORMAL:
1755+- a11y_role = ATK_ROLE_PUSH_BUTTON;
1756+ if (button->menu_name)
1757+ {
1758+ indicator_name = I_("arrow");
1759+@@ -334,13 +321,11 @@
1760+ break;
1761+
1762+ case GTK_BUTTON_ROLE_CHECK:
1763+- a11y_role = ATK_ROLE_CHECK_BOX;
1764+ indicator_name = I_("check");
1765+ indicator_visible = TRUE;
1766+ break;
1767+
1768+ case GTK_BUTTON_ROLE_RADIO:
1769+- a11y_role = ATK_ROLE_RADIO_BUTTON;
1770+ indicator_name = I_("radio");
1771+ indicator_visible = TRUE;
1772+ break;
1773+@@ -352,8 +337,6 @@
1774+ if (button->iconic)
1775+ indicator_visible = FALSE;
1776+
1777+- atk_object_set_role (accessible, a11y_role);
1778+-
1779+ indicator_node = gtk_css_gadget_get_node (button->indicator_gadget);
1780+ gtk_css_node_set_name (indicator_node, indicator_name);
1781+ gtk_css_node_set_visible (indicator_node, indicator_visible);
1782+@@ -1099,18 +1082,6 @@
1783+ G_OBJECT_CLASS (gtk_model_button_parent_class)->finalize (object);
1784+ }
1785+
1786+-static AtkObject *
1787+-gtk_model_button_get_accessible (GtkWidget *widget)
1788+-{
1789+- AtkObject *object;
1790+-
1791+- object = GTK_WIDGET_CLASS (gtk_model_button_parent_class)->get_accessible (widget);
1792+-
1793+- gtk_model_button_update_state (GTK_MODEL_BUTTON (widget));
1794+-
1795+- return object;
1796+-}
1797+-
1798+ static void
1799+ gtk_model_button_class_init (GtkModelButtonClass *class)
1800+ {
1801+@@ -1132,7 +1103,6 @@
1802+ widget_class->destroy = gtk_model_button_destroy;
1803+ widget_class->state_flags_changed = gtk_model_button_state_flags_changed;
1804+ widget_class->direction_changed = gtk_model_button_direction_changed;
1805+- widget_class->get_accessible = gtk_model_button_get_accessible;
1806+
1807+ button_class->clicked = gtk_model_button_clicked;
1808+
1809+@@ -1276,7 +1246,6 @@
1810+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
1811+ g_object_class_install_properties (object_class, LAST_PROPERTY, properties);
1812+
1813+- gtk_widget_class_set_accessible_role (GTK_WIDGET_CLASS (class), ATK_ROLE_PUSH_BUTTON);
1814+ gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (class), "modelbutton");
1815+ }
1816+
1817+--- a/gtk/gtkmodelmenuitem.c
1818++++ b/gtk/gtkmodelmenuitem.c
1819+@@ -94,35 +94,27 @@
1820+ gtk_model_menu_item_set_action_role (GtkModelMenuItem *item,
1821+ GtkMenuTrackerItemRole role)
1822+ {
1823+- AtkObject *accessible;
1824+- AtkRole a11y_role;
1825+-
1826+ if (role == item->role)
1827+ return;
1828+
1829+ gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (item), role == GTK_MENU_TRACKER_ITEM_ROLE_RADIO);
1830+ gtk_model_menu_item_set_has_indicator (item, role != GTK_MENU_TRACKER_ITEM_ROLE_NORMAL);
1831+
1832+- accessible = gtk_widget_get_accessible (GTK_WIDGET (item));
1833+ switch (role)
1834+ {
1835+ case GTK_MENU_TRACKER_ITEM_ROLE_NORMAL:
1836+- a11y_role = ATK_ROLE_MENU_ITEM;
1837+ break;
1838+
1839+ case GTK_MENU_TRACKER_ITEM_ROLE_CHECK:
1840+- a11y_role = ATK_ROLE_CHECK_MENU_ITEM;
1841+ break;
1842+
1843+ case GTK_MENU_TRACKER_ITEM_ROLE_RADIO:
1844+- a11y_role = ATK_ROLE_RADIO_MENU_ITEM;
1845+ break;
1846+
1847+ default:
1848+ g_assert_not_reached ();
1849+ }
1850+
1851+- atk_object_set_role (accessible, a11y_role);
1852+ g_object_notify (G_OBJECT (item), "action-role");
1853+ }
1854+
1855+@@ -499,8 +491,6 @@
1856+ g_object_class_install_property (object_class, PROP_ACCEL,
1857+ g_param_spec_string ("accel", "accel", "accel", NULL,
1858+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
1859+-
1860+- gtk_widget_class_set_accessible_role (GTK_WIDGET_CLASS (class), ATK_ROLE_MENU_ITEM);
1861+ }
1862+
1863+ GtkWidget *
1864+--- a/gtk/gtknotebook.c
1865++++ b/gtk/gtknotebook.c
1866+@@ -1282,7 +1282,6 @@
1867+
1868+ gtk_container_class_handle_border_width (container_class);
1869+
1870+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_NOTEBOOK_ACCESSIBLE);
1871+ gtk_widget_class_set_css_name (widget_class, "notebook");
1872+ }
1873+
1874+--- a/gtk/gtkpaned.c
1875++++ b/gtk/gtkpaned.c
1876+@@ -692,7 +692,6 @@
1877+ add_move_binding (binding_set, GDK_KEY_End, 0, GTK_SCROLL_END);
1878+ add_move_binding (binding_set, GDK_KEY_KP_End, 0, GTK_SCROLL_END);
1879+
1880+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_PANED_ACCESSIBLE);
1881+ gtk_widget_class_set_css_name (widget_class, "paned");
1882+ }
1883+
1884+--- a/gtk/gtkpango.c
1885++++ b/gtk/gtkpango.c
1886+@@ -233,301 +233,7 @@
1887+ cairo_move_to (cr, current_x, current_y);
1888+ }
1889+
1890+-static AtkAttributeSet *
1891+-add_attribute (AtkAttributeSet *attributes,
1892+- AtkTextAttribute attr,
1893+- const gchar *value)
1894+-{
1895+- AtkAttribute *at;
1896+-
1897+- at = g_new (AtkAttribute, 1);
1898+- at->name = g_strdup (atk_text_attribute_get_name (attr));
1899+- at->value = g_strdup (value);
1900+-
1901+- return g_slist_prepend (attributes, at);
1902+-}
1903+-
1904+ /*
1905+- * _gtk_pango_get_default_attributes:
1906+- * @attributes: a #AtkAttributeSet to add the attributes to
1907+- * @layout: the #PangoLayout from which to get attributes
1908+- *
1909+- * Adds the default text attributes from @layout to @attributes,
1910+- * after translating them from Pango attributes to ATK attributes.
1911+- *
1912+- * This is a convenience function that can be used to implement
1913+- * support for the #AtkText interface in widgets using Pango
1914+- * layouts.
1915+- *
1916+- * Returns: the modified @attributes
1917+- */
1918+-AtkAttributeSet*
1919+-_gtk_pango_get_default_attributes (AtkAttributeSet *attributes,
1920+- PangoLayout *layout)
1921+-{
1922+- PangoContext *context;
1923+- gint i;
1924+- PangoWrapMode mode;
1925+-
1926+- context = pango_layout_get_context (layout);
1927+- if (context)
1928+- {
1929+- PangoLanguage *language;
1930+- PangoFontDescription *font;
1931+-
1932+- language = pango_context_get_language (context);
1933+- if (language)
1934+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_LANGUAGE,
1935+- pango_language_to_string (language));
1936+-
1937+- font = pango_context_get_font_description (context);
1938+- if (font)
1939+- {
1940+- gchar buf[60];
1941+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STYLE,
1942+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STYLE,
1943+- pango_font_description_get_style (font)));
1944+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_VARIANT,
1945+- atk_text_attribute_get_value (ATK_TEXT_ATTR_VARIANT,
1946+- pango_font_description_get_variant (font)));
1947+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STRETCH,
1948+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STRETCH,
1949+- pango_font_description_get_stretch (font)));
1950+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_FAMILY_NAME,
1951+- pango_font_description_get_family (font));
1952+- g_snprintf (buf, 60, "%d", pango_font_description_get_weight (font));
1953+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_WEIGHT, buf);
1954+- g_snprintf (buf, 60, "%i", pango_font_description_get_size (font) / PANGO_SCALE);
1955+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_SIZE, buf);
1956+- }
1957+- }
1958+- if (pango_layout_get_justify (layout))
1959+- {
1960+- i = 3;
1961+- }
1962+- else
1963+- {
1964+- PangoAlignment align;
1965+-
1966+- align = pango_layout_get_alignment (layout);
1967+- if (align == PANGO_ALIGN_LEFT)
1968+- i = 0;
1969+- else if (align == PANGO_ALIGN_CENTER)
1970+- i = 2;
1971+- else /* PANGO_ALIGN_RIGHT */
1972+- i = 1;
1973+- }
1974+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_JUSTIFICATION,
1975+- atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, i));
1976+- mode = pango_layout_get_wrap (layout);
1977+- if (mode == PANGO_WRAP_WORD)
1978+- i = 2;
1979+- else /* PANGO_WRAP_CHAR */
1980+- i = 1;
1981+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_WRAP_MODE,
1982+- atk_text_attribute_get_value (ATK_TEXT_ATTR_WRAP_MODE, i));
1983+-
1984+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STRIKETHROUGH,
1985+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STRIKETHROUGH, 0));
1986+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_UNDERLINE,
1987+- atk_text_attribute_get_value (ATK_TEXT_ATTR_UNDERLINE, 0));
1988+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_RISE, "0");
1989+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_SCALE, "1");
1990+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_BG_FULL_HEIGHT, "0");
1991+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, "0");
1992+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, "0");
1993+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, "0");
1994+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_EDITABLE,
1995+- atk_text_attribute_get_value (ATK_TEXT_ATTR_EDITABLE, 0));
1996+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_INVISIBLE,
1997+- atk_text_attribute_get_value (ATK_TEXT_ATTR_INVISIBLE, 0));
1998+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_INDENT, "0");
1999+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_RIGHT_MARGIN, "0");
2000+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_LEFT_MARGIN, "0");
2001+-
2002+- return attributes;
2003+-}
2004+-
2005+-/*
2006+- * _gtk_pango_get_run_attributes:
2007+- * @attributes: a #AtkAttributeSet to add attributes to
2008+- * @layout: the #PangoLayout to get the attributes from
2009+- * @offset: the offset at which the attributes are wanted
2010+- * @start_offset: return location for the starting offset
2011+- * of the current run
2012+- * @end_offset: return location for the ending offset of the
2013+- * current run
2014+- *
2015+- * Finds the “run” around index (i.e. the maximal range of characters
2016+- * where the set of applicable attributes remains constant) and
2017+- * returns the starting and ending offsets for it.
2018+- *
2019+- * The attributes for the run are added to @attributes, after
2020+- * translating them from Pango attributes to ATK attributes.
2021+- *
2022+- * This is a convenience function that can be used to implement
2023+- * support for the #AtkText interface in widgets using Pango
2024+- * layouts.
2025+- *
2026+- * Returns: the modified #AtkAttributeSet
2027+- */
2028+-AtkAttributeSet *
2029+-_gtk_pango_get_run_attributes (AtkAttributeSet *attributes,
2030+- PangoLayout *layout,
2031+- gint offset,
2032+- gint *start_offset,
2033+- gint *end_offset)
2034+-{
2035+- PangoAttrIterator *iter;
2036+- PangoAttrList *attr;
2037+- PangoAttrString *pango_string;
2038+- PangoAttrInt *pango_int;
2039+- PangoAttrColor *pango_color;
2040+- PangoAttrLanguage *pango_lang;
2041+- PangoAttrFloat *pango_float;
2042+- gint index, start_index, end_index;
2043+- gboolean is_next;
2044+- glong len;
2045+- const gchar *text;
2046+- gchar *value;
2047+-
2048+- text = pango_layout_get_text (layout);
2049+- len = g_utf8_strlen (text, -1);
2050+-
2051+- /* Grab the attributes of the PangoLayout, if any */
2052+- attr = pango_layout_get_attributes (layout);
2053+-
2054+- if (attr == NULL)
2055+- {
2056+- *start_offset = 0;
2057+- *end_offset = len;
2058+- return attributes;
2059+- }
2060+-
2061+- iter = pango_attr_list_get_iterator (attr);
2062+- /* Get invariant range offsets */
2063+- /* If offset out of range, set offset in range */
2064+- if (offset > len)
2065+- offset = len;
2066+- else if (offset < 0)
2067+- offset = 0;
2068+-
2069+- index = g_utf8_offset_to_pointer (text, offset) - text;
2070+- pango_attr_iterator_range (iter, &start_index, &end_index);
2071+- is_next = TRUE;
2072+- while (is_next)
2073+- {
2074+- if (index >= start_index && index < end_index)
2075+- {
2076+- *start_offset = g_utf8_pointer_to_offset (text, text + start_index);
2077+- if (end_index == G_MAXINT) /* Last iterator */
2078+- end_index = len;
2079+-
2080+- *end_offset = g_utf8_pointer_to_offset (text, text + end_index);
2081+- break;
2082+- }
2083+- is_next = pango_attr_iterator_next (iter);
2084+- pango_attr_iterator_range (iter, &start_index, &end_index);
2085+- }
2086+-
2087+- /* Get attributes */
2088+- pango_string = (PangoAttrString*) pango_attr_iterator_get (iter, PANGO_ATTR_FAMILY);
2089+- if (pango_string != NULL)
2090+- {
2091+- value = g_strdup_printf ("%s", pango_string->value);
2092+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_FAMILY_NAME, value);
2093+- g_free (value);
2094+- }
2095+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_STYLE);
2096+- if (pango_int != NULL)
2097+- {
2098+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STYLE,
2099+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STYLE, pango_int->value));
2100+- }
2101+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_WEIGHT);
2102+- if (pango_int != NULL)
2103+- {
2104+- value = g_strdup_printf ("%i", pango_int->value);
2105+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_WEIGHT, value);
2106+- g_free (value);
2107+- }
2108+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_VARIANT);
2109+- if (pango_int != NULL)
2110+- {
2111+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_VARIANT,
2112+- atk_text_attribute_get_value (ATK_TEXT_ATTR_VARIANT, pango_int->value));
2113+- }
2114+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_STRETCH);
2115+- if (pango_int != NULL)
2116+- {
2117+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STRETCH,
2118+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STRETCH, pango_int->value));
2119+- }
2120+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_SIZE);
2121+- if (pango_int != NULL)
2122+- {
2123+- value = g_strdup_printf ("%i", pango_int->value / PANGO_SCALE);
2124+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_SIZE, value);
2125+- g_free (value);
2126+- }
2127+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_UNDERLINE);
2128+- if (pango_int != NULL)
2129+- {
2130+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_UNDERLINE,
2131+- atk_text_attribute_get_value (ATK_TEXT_ATTR_UNDERLINE, pango_int->value));
2132+- }
2133+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_STRIKETHROUGH);
2134+- if (pango_int != NULL)
2135+- {
2136+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_STRIKETHROUGH,
2137+- atk_text_attribute_get_value (ATK_TEXT_ATTR_STRIKETHROUGH, pango_int->value));
2138+- }
2139+- pango_int = (PangoAttrInt*) pango_attr_iterator_get (iter, PANGO_ATTR_RISE);
2140+- if (pango_int != NULL)
2141+- {
2142+- value = g_strdup_printf ("%i", pango_int->value);
2143+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_RISE, value);
2144+- g_free (value);
2145+- }
2146+- pango_lang = (PangoAttrLanguage*) pango_attr_iterator_get (iter, PANGO_ATTR_LANGUAGE);
2147+- if (pango_lang != NULL)
2148+- {
2149+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_LANGUAGE,
2150+- pango_language_to_string (pango_lang->value));
2151+- }
2152+- pango_float = (PangoAttrFloat*) pango_attr_iterator_get (iter, PANGO_ATTR_SCALE);
2153+- if (pango_float != NULL)
2154+- {
2155+- value = g_strdup_printf ("%g", pango_float->value);
2156+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_SCALE, value);
2157+- g_free (value);
2158+- }
2159+- pango_color = (PangoAttrColor*) pango_attr_iterator_get (iter, PANGO_ATTR_FOREGROUND);
2160+- if (pango_color != NULL)
2161+- {
2162+- value = g_strdup_printf ("%u,%u,%u",
2163+- pango_color->color.red,
2164+- pango_color->color.green,
2165+- pango_color->color.blue);
2166+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_FG_COLOR, value);
2167+- g_free (value);
2168+- }
2169+- pango_color = (PangoAttrColor*) pango_attr_iterator_get (iter, PANGO_ATTR_BACKGROUND);
2170+- if (pango_color != NULL)
2171+- {
2172+- value = g_strdup_printf ("%u,%u,%u",
2173+- pango_color->color.red,
2174+- pango_color->color.green,
2175+- pango_color->color.blue);
2176+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
2177+- g_free (value);
2178+- }
2179+- pango_attr_iterator_destroy (iter);
2180+-
2181+- return attributes;
2182+-}
2183+-
2184+-/*
2185+ * _gtk_pango_move_chars:
2186+ * @layout: a #PangoLayout
2187+ * @offset: a character offset in @layout
2188+@@ -793,7 +499,6 @@
2189+
2190+ static void
2191+ pango_layout_get_line_before (PangoLayout *layout,
2192+- AtkTextBoundary boundary_type,
2193+ gint offset,
2194+ gint *start_offset,
2195+ gint *end_offset)
2196+@@ -818,23 +523,7 @@
2197+ /* Found line for offset */
2198+ if (prev_line)
2199+ {
2200+- switch (boundary_type)
2201+- {
2202+- case ATK_TEXT_BOUNDARY_LINE_START:
2203+- end_index = start_index;
2204+- start_index = prev_line->start_index;
2205+- break;
2206+- case ATK_TEXT_BOUNDARY_LINE_END:
2207+- if (prev_prev_line)
2208+- start_index = prev_prev_line->start_index + prev_prev_line->length;
2209+- else
2210+- start_index = 0;
2211+- end_index = prev_line->start_index + prev_line->length;
2212+- break;
2213+- default:
2214+- g_assert_not_reached();
2215+ }
2216+- }
2217+ else
2218+ start_index = end_index = 0;
2219+
2220+@@ -860,7 +549,6 @@
2221+
2222+ static void
2223+ pango_layout_get_line_at (PangoLayout *layout,
2224+- AtkTextBoundary boundary_type,
2225+ gint offset,
2226+ gint *start_offset,
2227+ gint *end_offset)
2228+@@ -882,21 +570,6 @@
2229+
2230+ if (index >= start_index && index <= end_index)
2231+ {
2232+- /* Found line for offset */
2233+- switch (boundary_type)
2234+- {
2235+- case ATK_TEXT_BOUNDARY_LINE_START:
2236+- if (pango_layout_iter_next_line (iter))
2237+- end_index = pango_layout_iter_get_line (iter)->start_index;
2238+- break;
2239+- case ATK_TEXT_BOUNDARY_LINE_END:
2240+- if (prev_line)
2241+- start_index = prev_line->start_index + prev_line->length;
2242+- break;
2243+- default:
2244+- g_assert_not_reached();
2245+- }
2246+-
2247+ found = TRUE;
2248+ break;
2249+ }
2250+@@ -918,7 +591,6 @@
2251+
2252+ static void
2253+ pango_layout_get_line_after (PangoLayout *layout,
2254+- AtkTextBoundary boundary_type,
2255+ gint offset,
2256+ gint *start_offset,
2257+ gint *end_offset)
2258+@@ -944,23 +616,7 @@
2259+ if (pango_layout_iter_next_line (iter))
2260+ {
2261+ line = pango_layout_iter_get_line (iter);
2262+- switch (boundary_type)
2263+- {
2264+- case ATK_TEXT_BOUNDARY_LINE_START:
2265+- start_index = line->start_index;
2266+- if (pango_layout_iter_next_line (iter))
2267+- end_index = pango_layout_iter_get_line (iter)->start_index;
2268+- else
2269+- end_index = start_index + line->length;
2270+- break;
2271+- case ATK_TEXT_BOUNDARY_LINE_END:
2272+- start_index = end_index;
2273+- end_index = line->start_index + line->length;
2274+- break;
2275+- default:
2276+- g_assert_not_reached();
2277+ }
2278+- }
2279+ else
2280+ start_index = end_index;
2281+
2282+@@ -986,23 +642,17 @@
2283+ /*
2284+ * _gtk_pango_get_text_before:
2285+ * @layout: a #PangoLayout
2286+- * @boundary_type: a #AtkTextBoundary
2287+ * @offset: a character offset in @layout
2288+ * @start_offset: return location for the start of the returned text
2289+ * @end_offset: return location for the end of the return text
2290+ *
2291+ * Gets a slice of the text from @layout before @offset.
2292+ *
2293+- * The @boundary_type determines the size of the returned slice of
2294+- * text. For the exact semantics of this function, see
2295+- * atk_text_get_text_before_offset().
2296+- *
2297+ * Returns: a newly allocated string containing a slice of text
2298+ * from layout. Free with g_free().
2299+ */
2300+ gchar *
2301+ _gtk_pango_get_text_before (PangoLayout *layout,
2302+- AtkTextBoundary boundary_type,
2303+ gint offset,
2304+ gint *start_offset,
2305+ gint *end_offset)
2306+@@ -1026,56 +676,6 @@
2307+ start = offset;
2308+ end = start;
2309+
2310+- switch (boundary_type)
2311+- {
2312+- case ATK_TEXT_BOUNDARY_CHAR:
2313+- start = _gtk_pango_move_chars (layout, start, -1);
2314+- break;
2315+-
2316+- case ATK_TEXT_BOUNDARY_WORD_START:
2317+- if (!attrs[start].is_word_start)
2318+- start = _gtk_pango_move_words (layout, start, -1);
2319+- end = start;
2320+- start = _gtk_pango_move_words (layout, start, -1);
2321+- break;
2322+-
2323+- case ATK_TEXT_BOUNDARY_WORD_END:
2324+- if (_gtk_pango_is_inside_word (layout, start) &&
2325+- !attrs[start].is_word_start)
2326+- start = _gtk_pango_move_words (layout, start, -1);
2327+- while (!attrs[start].is_word_end && start > 0)
2328+- start = _gtk_pango_move_chars (layout, start, -1);
2329+- end = start;
2330+- start = _gtk_pango_move_words (layout, start, -1);
2331+- while (!attrs[start].is_word_end && start > 0)
2332+- start = _gtk_pango_move_chars (layout, start, -1);
2333+- break;
2334+-
2335+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
2336+- if (!attrs[start].is_sentence_start)
2337+- start = _gtk_pango_move_sentences (layout, start, -1);
2338+- end = start;
2339+- start = _gtk_pango_move_sentences (layout, start, -1);
2340+- break;
2341+-
2342+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
2343+- if (_gtk_pango_is_inside_sentence (layout, start) &&
2344+- !attrs[start].is_sentence_start)
2345+- start = _gtk_pango_move_sentences (layout, start, -1);
2346+- while (!attrs[start].is_sentence_end && start > 0)
2347+- start = _gtk_pango_move_chars (layout, start, -1);
2348+- end = start;
2349+- start = _gtk_pango_move_sentences (layout, start, -1);
2350+- while (!attrs[start].is_sentence_end && start > 0)
2351+- start = _gtk_pango_move_chars (layout, start, -1);
2352+- break;
2353+-
2354+- case ATK_TEXT_BOUNDARY_LINE_START:
2355+- case ATK_TEXT_BOUNDARY_LINE_END:
2356+- pango_layout_get_line_before (layout, boundary_type, offset, &start, &end);
2357+- break;
2358+- }
2359+-
2360+ *start_offset = start;
2361+ *end_offset = end;
2362+
2363+@@ -1087,23 +687,17 @@
2364+ /*
2365+ * _gtk_pango_get_text_after:
2366+ * @layout: a #PangoLayout
2367+- * @boundary_type: a #AtkTextBoundary
2368+ * @offset: a character offset in @layout
2369+ * @start_offset: return location for the start of the returned text
2370+ * @end_offset: return location for the end of the return text
2371+ *
2372+ * Gets a slice of the text from @layout after @offset.
2373+ *
2374+- * The @boundary_type determines the size of the returned slice of
2375+- * text. For the exact semantics of this function, see
2376+- * atk_text_get_text_after_offset().
2377+- *
2378+ * Returns: a newly allocated string containing a slice of text
2379+ * from layout. Free with g_free().
2380+ */
2381+ gchar *
2382+ _gtk_pango_get_text_after (PangoLayout *layout,
2383+- AtkTextBoundary boundary_type,
2384+ gint offset,
2385+ gint *start_offset,
2386+ gint *end_offset)
2387+@@ -1127,62 +721,6 @@
2388+ start = offset;
2389+ end = start;
2390+
2391+- switch (boundary_type)
2392+- {
2393+- case ATK_TEXT_BOUNDARY_CHAR:
2394+- start = _gtk_pango_move_chars (layout, start, 1);
2395+- end = start;
2396+- end = _gtk_pango_move_chars (layout, end, 1);
2397+- break;
2398+-
2399+- case ATK_TEXT_BOUNDARY_WORD_START:
2400+- if (_gtk_pango_is_inside_word (layout, end))
2401+- end = _gtk_pango_move_words (layout, end, 1);
2402+- while (!attrs[end].is_word_start && end < n_attrs - 1)
2403+- end = _gtk_pango_move_chars (layout, end, 1);
2404+- start = end;
2405+- if (end < n_attrs - 1)
2406+- {
2407+- end = _gtk_pango_move_words (layout, end, 1);
2408+- while (!attrs[end].is_word_start && end < n_attrs - 1)
2409+- end = _gtk_pango_move_chars (layout, end, 1);
2410+- }
2411+- break;
2412+-
2413+- case ATK_TEXT_BOUNDARY_WORD_END:
2414+- end = _gtk_pango_move_words (layout, end, 1);
2415+- start = end;
2416+- if (end < n_attrs - 1)
2417+- end = _gtk_pango_move_words (layout, end, 1);
2418+- break;
2419+-
2420+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
2421+- if (_gtk_pango_is_inside_sentence (layout, end))
2422+- end = _gtk_pango_move_sentences (layout, end, 1);
2423+- while (!attrs[end].is_sentence_start && end < n_attrs - 1)
2424+- end = _gtk_pango_move_chars (layout, end, 1);
2425+- start = end;
2426+- if (end < n_attrs - 1)
2427+- {
2428+- end = _gtk_pango_move_sentences (layout, end, 1);
2429+- while (!attrs[end].is_sentence_start && end < n_attrs - 1)
2430+- end = _gtk_pango_move_chars (layout, end, 1);
2431+- }
2432+- break;
2433+-
2434+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
2435+- end = _gtk_pango_move_sentences (layout, end, 1);
2436+- start = end;
2437+- if (end < n_attrs - 1)
2438+- end = _gtk_pango_move_sentences (layout, end, 1);
2439+- break;
2440+-
2441+- case ATK_TEXT_BOUNDARY_LINE_START:
2442+- case ATK_TEXT_BOUNDARY_LINE_END:
2443+- pango_layout_get_line_after (layout, boundary_type, offset, &start, &end);
2444+- break;
2445+- }
2446+-
2447+ *start_offset = start;
2448+ *end_offset = end;
2449+
2450+@@ -1194,23 +732,17 @@
2451+ /*
2452+ * _gtk_pango_get_text_at:
2453+ * @layout: a #PangoLayout
2454+- * @boundary_type: a #AtkTextBoundary
2455+ * @offset: a character offset in @layout
2456+ * @start_offset: return location for the start of the returned text
2457+ * @end_offset: return location for the end of the return text
2458+ *
2459+ * Gets a slice of the text from @layout at @offset.
2460+ *
2461+- * The @boundary_type determines the size of the returned slice of
2462+- * text. For the exact semantics of this function, see
2463+- * atk_text_get_text_after_offset().
2464+- *
2465+ * Returns: a newly allocated string containing a slice of text
2466+ * from layout. Free with g_free().
2467+ */
2468+ gchar *
2469+ _gtk_pango_get_text_at (PangoLayout *layout,
2470+- AtkTextBoundary boundary_type,
2471+ gint offset,
2472+ gint *start_offset,
2473+ gint *end_offset)
2474+@@ -1233,54 +765,6 @@
2475+
2476+ start = offset;
2477+ end = start;
2478+-
2479+- switch (boundary_type)
2480+- {
2481+- case ATK_TEXT_BOUNDARY_CHAR:
2482+- end = _gtk_pango_move_chars (layout, end, 1);
2483+- break;
2484+-
2485+- case ATK_TEXT_BOUNDARY_WORD_START:
2486+- if (!attrs[start].is_word_start)
2487+- start = _gtk_pango_move_words (layout, start, -1);
2488+- if (_gtk_pango_is_inside_word (layout, end))
2489+- end = _gtk_pango_move_words (layout, end, 1);
2490+- while (!attrs[end].is_word_start && end < n_attrs - 1)
2491+- end = _gtk_pango_move_chars (layout, end, 1);
2492+- break;
2493+-
2494+- case ATK_TEXT_BOUNDARY_WORD_END:
2495+- if (_gtk_pango_is_inside_word (layout, start) &&
2496+- !attrs[start].is_word_start)
2497+- start = _gtk_pango_move_words (layout, start, -1);
2498+- while (!attrs[start].is_word_end && start > 0)
2499+- start = _gtk_pango_move_chars (layout, start, -1);
2500+- end = _gtk_pango_move_words (layout, end, 1);
2501+- break;
2502+-
2503+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
2504+- if (!attrs[start].is_sentence_start)
2505+- start = _gtk_pango_move_sentences (layout, start, -1);
2506+- if (_gtk_pango_is_inside_sentence (layout, end))
2507+- end = _gtk_pango_move_sentences (layout, end, 1);
2508+- while (!attrs[end].is_sentence_start && end < n_attrs - 1)
2509+- end = _gtk_pango_move_chars (layout, end, 1);
2510+- break;
2511+-
2512+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
2513+- if (_gtk_pango_is_inside_sentence (layout, start) &&
2514+- !attrs[start].is_sentence_start)
2515+- start = _gtk_pango_move_sentences (layout, start, -1);
2516+- while (!attrs[start].is_sentence_end && start > 0)
2517+- start = _gtk_pango_move_chars (layout, start, -1);
2518+- end = _gtk_pango_move_sentences (layout, end, 1);
2519+- break;
2520+-
2521+- case ATK_TEXT_BOUNDARY_LINE_START:
2522+- case ATK_TEXT_BOUNDARY_LINE_END:
2523+- pango_layout_get_line_at (layout, boundary_type, offset, &start, &end);
2524+- break;
2525+- }
2526+
2527+ *start_offset = start;
2528+ *end_offset = end;
2529+--- a/gtk/gtkpango.h
2530++++ b/gtk/gtkpango.h
2531+@@ -27,7 +27,6 @@
2532+
2533+
2534+ #include <pango/pangocairo.h>
2535+-#include <atk/atk.h>
2536+
2537+ G_BEGIN_DECLS
2538+
2539+@@ -35,15 +34,6 @@
2540+ PangoLayout *layout);
2541+
2542+
2543+-AtkAttributeSet *_gtk_pango_get_default_attributes (AtkAttributeSet *attributes,
2544+- PangoLayout *layout);
2545+-
2546+-AtkAttributeSet *_gtk_pango_get_run_attributes (AtkAttributeSet *attributes,
2547+- PangoLayout *layout,
2548+- gint offset,
2549+- gint *start_offset,
2550+- gint *end_offset);
2551+-
2552+ gint _gtk_pango_move_chars (PangoLayout *layout,
2553+ gint offset,
2554+ gint count);
2555+@@ -64,17 +54,14 @@
2556+
2557+
2558+ gchar *_gtk_pango_get_text_before (PangoLayout *layout,
2559+- AtkTextBoundary boundary_type,
2560+ gint offset,
2561+ gint *start_offset,
2562+ gint *end_offset);
2563+ gchar *_gtk_pango_get_text_at (PangoLayout *layout,
2564+- AtkTextBoundary boundary_type,
2565+ gint offset,
2566+ gint *start_offset,
2567+ gint *end_offset);
2568+ gchar *_gtk_pango_get_text_after (PangoLayout *layout,
2569+- AtkTextBoundary boundary_type,
2570+ gint offset,
2571+ gint *start_offset,
2572+ gint *end_offset);
2573+--- a/gtk/gtkpathbar.c
2574++++ b/gtk/gtkpathbar.c
2575+@@ -1550,7 +1550,6 @@ make_directory_button (GtkPathBar *path_bar,
2576+ gboolean current_dir,
2577+ gboolean file_is_hidden)
2578+ {
2579+- AtkObject *atk_obj;
2580+ GtkWidget *child = NULL;
2581+ ButtonData *button_data;
2582+
2583+@@ -1559,7 +1558,6 @@ make_directory_button (GtkPathBar *path_bar,
2584+ button_data = g_new0 (ButtonData, 1);
2585+ button_data->type = find_button_type (path_bar, file, root_file);
2586+ button_data->button = gtk_toggle_button_new ();
2587+- atk_obj = gtk_widget_get_accessible (button_data->button);
2588+ gtk_widget_set_focus_on_click (button_data->button, FALSE);
2589+ gtk_widget_add_events (button_data->button, GDK_SCROLL_MASK);
2590+
2591+@@ -1569,7 +1567,6 @@ make_directory_button (GtkPathBar *path_bar,
2592+ button_data->image = gtk_image_new ();
2593+ child = button_data->image;
2594+ button_data->label = NULL;
2595+- atk_object_set_name (atk_obj, _("File System Root"));
2596+ break;
2597+ case HOME_BUTTON:
2598+ case DESKTOP_BUTTON:
2599+--- a/gtk/gtkpopover.c
2600++++ b/gtk/gtkpopover.c
2601+@@ -1835,7 +1835,6 @@
2602+ G_TYPE_NONE, 0);
2603+
2604+ quark_widget_popovers = g_quark_from_static_string ("gtk-quark-widget-popovers");
2605+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_POPOVER_ACCESSIBLE);
2606+ gtk_widget_class_set_css_name (widget_class, "popover");
2607+ }
2608+
2609+--- a/gtk/gtkprogressbar.c
2610++++ b/gtk/gtkprogressbar.c
2611+@@ -427,7 +427,6 @@
2612+ 1, G_MAXINT, MIN_VERTICAL_BAR_HEIGHT,
2613+ G_PARAM_READWRITE|G_PARAM_DEPRECATED));
2614+
2615+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_PROGRESS_BAR_ACCESSIBLE);
2616+ gtk_widget_class_set_css_name (widget_class, "progressbar");
2617+ }
2618+
2619+--- a/gtk/gtkradiobutton.c
2620++++ b/gtk/gtkradiobutton.c
2621+@@ -216,7 +216,6 @@
2622+ NULL,
2623+ G_TYPE_NONE, 0);
2624+
2625+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_RADIO_BUTTON_ACCESSIBLE);
2626+ gtk_widget_class_set_css_name (widget_class, "radiobutton");
2627+ }
2628+
2629+--- a/gtk/gtkradiomenuitem.c
2630++++ b/gtk/gtkradiomenuitem.c
2631+@@ -407,8 +407,6 @@
2632+
2633+ widget_class->destroy = gtk_radio_menu_item_destroy;
2634+
2635+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_RADIO_MENU_ITEM_ACCESSIBLE);
2636+-
2637+ menu_item_class->activate = gtk_radio_menu_item_activate;
2638+
2639+ /**
2640+--- a/gtk/gtkrange.c
2641++++ b/gtk/gtkrange.c
2642+@@ -657,8 +657,6 @@
2643+ P_("Arrow scaling with regard to scroll button size"),
2644+ 0.0, 1.0, 0.5,
2645+ GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
2646+-
2647+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_RANGE_ACCESSIBLE);
2648+ }
2649+
2650+ static void
2651+--- a/gtk/gtkscale.c
2652++++ b/gtk/gtkscale.c
2653+@@ -944,7 +944,6 @@
2654+ add_slider_binding (binding_set, GDK_KEY_KP_End, 0,
2655+ GTK_SCROLL_END);
2656+
2657+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SCALE_ACCESSIBLE);
2658+ gtk_widget_class_set_css_name (widget_class, "scale");
2659+ }
2660+
2661+--- a/gtk/gtkscalebutton.c
2662++++ b/gtk/gtkscalebutton.c
2663+@@ -343,7 +343,6 @@
2664+ gtk_widget_class_bind_template_callback (widget_class, cb_scale_value_changed);
2665+ gtk_widget_class_bind_template_callback (widget_class, cb_popup_mapped);
2666+
2667+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SCALE_BUTTON_ACCESSIBLE);
2668+ gtk_widget_class_set_css_name (widget_class, "button");
2669+ }
2670+
2671+--- a/gtk/gtkscrollbar.c
2672++++ b/gtk/gtkscrollbar.c
2673+@@ -145,7 +145,6 @@
2674+ FALSE,
2675+ GTK_PARAM_READABLE));
2676+
2677+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_SCROLL_BAR);
2678+ gtk_widget_class_set_css_name (widget_class, "scrollbar");
2679+ }
2680+
2681+--- a/gtk/gtkscrolledwindow.c
2682++++ b/gtk/gtkscrolledwindow.c
2683+@@ -896,7 +896,6 @@
2684+ add_tab_bindings (binding_set, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD);
2685+ add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
2686+
2687+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SCROLLED_WINDOW_ACCESSIBLE);
2688+ gtk_widget_class_set_css_name (widget_class, "scrolledwindow");
2689+ }
2690+
2691+--- a/gtk/gtksearchentry.c
2692++++ b/gtk/gtksearchentry.c
2693+@@ -358,17 +358,11 @@
2694+ static void
2695+ gtk_search_entry_init (GtkSearchEntry *entry)
2696+ {
2697+- AtkObject *atk_obj;
2698+-
2699+ g_object_set (entry,
2700+ "primary-icon-name", "edit-find-symbolic",
2701+ "primary-icon-activatable", FALSE,
2702+ "primary-icon-sensitive", FALSE,
2703+ NULL);
2704+-
2705+- atk_obj = gtk_widget_get_accessible (GTK_WIDGET (entry));
2706+- if (GTK_IS_ACCESSIBLE (atk_obj))
2707+- atk_object_set_name (atk_obj, _("Search"));
2708+
2709+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (entry)), "search");
2710+ }
2711+--- a/gtk/gtkseparator.c
2712++++ b/gtk/gtkseparator.c
2713+@@ -211,7 +211,6 @@
2714+
2715+ g_object_class_override_property (object_class, PROP_ORIENTATION, "orientation");
2716+
2717+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_SEPARATOR);
2718+ gtk_widget_class_set_css_name (widget_class, "separator");
2719+ }
2720+
2721+--- a/gtk/gtkseparatormenuitem.c
2722++++ b/gtk/gtkseparatormenuitem.c
2723+@@ -58,7 +58,6 @@
2724+
2725+ GTK_MENU_ITEM_CLASS (class)->get_label = gtk_separator_menu_item_get_label;
2726+
2727+- gtk_widget_class_set_accessible_role (GTK_WIDGET_CLASS (class), ATK_ROLE_SEPARATOR);
2728+ gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (class), "separator");
2729+ }
2730+
2731+--- a/gtk/gtkspinbutton.c
2732++++ b/gtk/gtkspinbutton.c
2733+@@ -592,7 +592,6 @@
2734+ add_spin_binding (binding_set, GDK_KEY_Page_Up, GDK_CONTROL_MASK, GTK_SCROLL_END);
2735+ add_spin_binding (binding_set, GDK_KEY_Page_Down, GDK_CONTROL_MASK, GTK_SCROLL_START);
2736+
2737+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SPIN_BUTTON_ACCESSIBLE);
2738+ gtk_widget_class_set_css_name (widget_class, "spinbutton");
2739+ }
2740+
2741+--- a/gtk/gtkspinner.c
2742++++ b/gtk/gtkspinner.c
2743+@@ -223,7 +223,6 @@
2744+ FALSE,
2745+ GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
2746+
2747+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SPINNER_ACCESSIBLE);
2748+ gtk_widget_class_set_css_name (widget_class, "spinner");
2749+ }
2750+
2751+--- a/gtk/gtkstack.c
2752++++ b/gtk/gtkstack.c
2753+@@ -559,7 +559,6 @@
2754+
2755+ gtk_container_class_install_child_properties (container_class, LAST_CHILD_PROP, stack_child_props);
2756+
2757+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_STACK_ACCESSIBLE);
2758+ gtk_widget_class_set_css_name (widget_class, "stack");
2759+ }
2760+
2761+@@ -1118,10 +1117,6 @@
2762+ gtk_widget_set_child_visible (priv->visible_child->widget, FALSE);
2763+ }
2764+ }
2765+-
2766+- gtk_stack_accessible_update_visible_child (stack,
2767+- priv->visible_child ? priv->visible_child->widget : NULL,
2768+- child_info ? child_info->widget : NULL);
2769+
2770+ priv->visible_child = child_info;
2771+
2772+--- a/gtk/gtkstatusbar.c
2773++++ b/gtk/gtkstatusbar.c
2774+@@ -187,7 +187,6 @@
2775+ gtk_widget_class_bind_template_child_private (widget_class, GtkStatusbar, frame);
2776+ gtk_widget_class_bind_template_child_private (widget_class, GtkStatusbar, label);
2777+
2778+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_STATUSBAR_ACCESSIBLE);
2779+ gtk_widget_class_set_css_name (widget_class, "statusbar");
2780+ }
2781+
2782+--- a/gtk/gtkstylecontext.c
2783++++ b/gtk/gtkstylecontext.c
2784+@@ -3079,63 +3079,6 @@
2785+ return gtk_css_style_get_pango_attributes (gtk_style_context_lookup_style (context));
2786+ }
2787+
2788+-static AtkAttributeSet *
2789+-add_attribute (AtkAttributeSet *attributes,
2790+- AtkTextAttribute attr,
2791+- const gchar *value)
2792+-{
2793+- AtkAttribute *at;
2794+-
2795+- at = g_new (AtkAttribute, 1);
2796+- at->name = g_strdup (atk_text_attribute_get_name (attr));
2797+- at->value = g_strdup (value);
2798+-
2799+- return g_slist_prepend (attributes, at);
2800+-}
2801+-
2802+-/*
2803+- * _gtk_style_context_get_attributes:
2804+- * @attributes: a #AtkAttributeSet to add attributes to
2805+- * @context: the #GtkStyleContext to get attributes from
2806+- * @flags: the state to use with @context
2807+- *
2808+- * Adds the foreground and background color from @context to
2809+- * @attributes, after translating them to ATK attributes.
2810+- *
2811+- * This is a convenience function that can be used in
2812+- * implementing the #AtkText interface in widgets.
2813+- *
2814+- * Returns: the modified #AtkAttributeSet
2815+- */
2816+-AtkAttributeSet *
2817+-_gtk_style_context_get_attributes (AtkAttributeSet *attributes,
2818+- GtkStyleContext *context,
2819+- GtkStateFlags flags)
2820+-{
2821+- GdkRGBA color;
2822+- gchar *value;
2823+-
2824+-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
2825+- gtk_style_context_get_background_color (context, flags, &color);
2826+-G_GNUC_END_IGNORE_DEPRECATIONS
2827+- value = g_strdup_printf ("%u,%u,%u",
2828+- (guint) ceil (color.red * 65536 - color.red),
2829+- (guint) ceil (color.green * 65536 - color.green),
2830+- (guint) ceil (color.blue * 65536 - color.blue));
2831+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
2832+- g_free (value);
2833+-
2834+- gtk_style_context_get_color (context, flags, &color);
2835+- value = g_strdup_printf ("%u,%u,%u",
2836+- (guint) ceil (color.red * 65536 - color.red),
2837+- (guint) ceil (color.green * 65536 - color.green),
2838+- (guint) ceil (color.blue * 65536 - color.blue));
2839+- attributes = add_attribute (attributes, ATK_TEXT_ATTR_FG_COLOR, value);
2840+- g_free (value);
2841+-
2842+- return attributes;
2843+-}
2844+-
2845+ cairo_pattern_t *
2846+ gtk_gradient_resolve_for_context (GtkGradient *gradient,
2847+ GtkStyleContext *context)
2848+--- a/gtk/gtkstylecontext.h
2849++++ b/gtk/gtkstylecontext.h
2850+@@ -26,7 +26,6 @@
2851+ #include <gtk/gtkcsssection.h>
2852+ #include <gtk/gtkstyleprovider.h>
2853+ #include <gtk/gtktypes.h>
2854+-#include <atk/atk.h>
2855+
2856+ G_BEGIN_DECLS
2857+
2858+--- a/gtk/gtkstylecontextprivate.h
2859++++ b/gtk/gtkstylecontextprivate.h
2860+@@ -72,11 +72,6 @@
2861+
2862+ PangoAttrList *_gtk_style_context_get_pango_attributes (GtkStyleContext *context);
2863+
2864+-/* Accessibility support */
2865+-AtkAttributeSet *_gtk_style_context_get_attributes (AtkAttributeSet *attributes,
2866+- GtkStyleContext *context,
2867+- GtkStateFlags flags);
2868+-
2869+ G_END_DECLS
2870+
2871+ #endif /* __GTK_STYLE_CONTEXT_PRIVATE_H__ */
2872+--- a/gtk/gtkswitch.c
2873++++ b/gtk/gtkswitch.c
2874+@@ -1008,9 +1008,6 @@
2875+ g_object_class_override_property (gobject_class, PROP_ACTION_NAME, "action-name");
2876+ g_object_class_override_property (gobject_class, PROP_ACTION_TARGET, "action-target");
2877+
2878+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SWITCH_ACCESSIBLE);
2879+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_TOGGLE_BUTTON);
2880+-
2881+ gtk_widget_class_set_css_name (widget_class, "switch");
2882+ }
2883+
2884+@@ -1120,7 +1117,6 @@
2885+
2886+ if (priv->is_active != is_active)
2887+ {
2888+- AtkObject *accessible;
2889+ gboolean handled;
2890+
2891+ priv->is_active = is_active;
2892+@@ -1133,9 +1129,6 @@
2893+ g_signal_emit (sw, signals[STATE_SET], 0, is_active, &handled);
2894+
2895+ g_object_notify_by_pspec (G_OBJECT (sw), switch_props[PROP_ACTIVE]);
2896+-
2897+- accessible = gtk_widget_get_accessible (GTK_WIDGET (sw));
2898+- atk_object_notify_state_change (accessible, ATK_STATE_CHECKED, priv->is_active);
2899+
2900+ gtk_widget_queue_allocate (GTK_WIDGET (sw));
2901+ }
2902+--- a/gtk/gtktextbuffer.c
2903++++ b/gtk/gtktextbuffer.c
2904+@@ -4478,7 +4478,6 @@
2905+
2906+ void
2907+ _gtk_text_buffer_get_text_before (GtkTextBuffer *buffer,
2908+- AtkTextBoundary boundary_type,
2909+ GtkTextIter *position,
2910+ GtkTextIter *start,
2911+ GtkTextIter *end)
2912+@@ -4487,103 +4486,10 @@
2913+
2914+ *start = *position;
2915+ *end = *start;
2916+-
2917+- switch (boundary_type)
2918+- {
2919+- case ATK_TEXT_BOUNDARY_CHAR:
2920+- gtk_text_iter_backward_char (start);
2921+- break;
2922+-
2923+- case ATK_TEXT_BOUNDARY_WORD_START:
2924+- if (!gtk_text_iter_starts_word (start))
2925+- gtk_text_iter_backward_word_start (start);
2926+- *end = *start;
2927+- gtk_text_iter_backward_word_start (start);
2928+- break;
2929+-
2930+- case ATK_TEXT_BOUNDARY_WORD_END:
2931+- if (gtk_text_iter_inside_word (start) &&
2932+- !gtk_text_iter_starts_word (start))
2933+- gtk_text_iter_backward_word_start (start);
2934+- while (!gtk_text_iter_ends_word (start))
2935+- {
2936+- if (!gtk_text_iter_backward_char (start))
2937+- break;
2938+- }
2939+- *end = *start;
2940+- gtk_text_iter_backward_word_start (start);
2941+- while (!gtk_text_iter_ends_word (start))
2942+- {
2943+- if (!gtk_text_iter_backward_char (start))
2944+- break;
2945+- }
2946+- break;
2947+-
2948+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
2949+- if (!gtk_text_iter_starts_sentence (start))
2950+- gtk_text_iter_backward_sentence_start (start);
2951+- *end = *start;
2952+- gtk_text_iter_backward_sentence_start (start);
2953+- break;
2954+-
2955+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
2956+- if (gtk_text_iter_inside_sentence (start) &&
2957+- !gtk_text_iter_starts_sentence (start))
2958+- gtk_text_iter_backward_sentence_start (start);
2959+- while (!gtk_text_iter_ends_sentence (start))
2960+- {
2961+- if (!gtk_text_iter_backward_char (start))
2962+- break;
2963+- }
2964+- *end = *start;
2965+- gtk_text_iter_backward_sentence_start (start);
2966+- while (!gtk_text_iter_ends_sentence (start))
2967+- {
2968+- if (!gtk_text_iter_backward_char (start))
2969+- break;
2970+- }
2971+- break;
2972+-
2973+- case ATK_TEXT_BOUNDARY_LINE_START:
2974+- line_number = gtk_text_iter_get_line (start);
2975+- if (line_number == 0)
2976+- {
2977+- gtk_text_buffer_get_iter_at_offset (buffer, start, 0);
2978+- }
2979+- else
2980+- {
2981+- gtk_text_iter_backward_line (start);
2982+- gtk_text_iter_forward_line (start);
2983+- }
2984+- *end = *start;
2985+- gtk_text_iter_backward_line (start);
2986+- break;
2987+-
2988+- case ATK_TEXT_BOUNDARY_LINE_END:
2989+- line_number = gtk_text_iter_get_line (start);
2990+- if (line_number == 0)
2991+- {
2992+- gtk_text_buffer_get_iter_at_offset (buffer, start, 0);
2993+- *end = *start;
2994+- }
2995+- else
2996+- {
2997+- gtk_text_iter_backward_line (start);
2998+- *end = *start;
2999+- while (!gtk_text_iter_ends_line (start))
3000+- {
3001+- if (!gtk_text_iter_backward_char (start))
3002+- break;
3003+- }
3004+- gtk_text_iter_forward_to_line_end (end);
3005+- }
3006+- break;
3007+- }
3008+ }
3009+
3010+ void
3011+ _gtk_text_buffer_get_text_at (GtkTextBuffer *buffer,
3012+- AtkTextBoundary boundary_type,
3013+ GtkTextIter *position,
3014+ GtkTextIter *start,
3015+ GtkTextIter *end)
3016+@@ -4592,187 +4498,16 @@
3017+
3018+ *start = *position;
3019+ *end = *start;
3020+-
3021+- switch (boundary_type)
3022+- {
3023+- case ATK_TEXT_BOUNDARY_CHAR:
3024+- gtk_text_iter_forward_char (end);
3025+- break;
3026+-
3027+- case ATK_TEXT_BOUNDARY_WORD_START:
3028+- if (!gtk_text_iter_starts_word (start))
3029+- gtk_text_iter_backward_word_start (start);
3030+- if (gtk_text_iter_inside_word (end))
3031+- gtk_text_iter_forward_word_end (end);
3032+- while (!gtk_text_iter_starts_word (end))
3033+- {
3034+- if (!gtk_text_iter_forward_char (end))
3035+- break;
3036+- }
3037+- break;
3038+-
3039+- case ATK_TEXT_BOUNDARY_WORD_END:
3040+- if (gtk_text_iter_inside_word (start) &&
3041+- !gtk_text_iter_starts_word (start))
3042+- gtk_text_iter_backward_word_start (start);
3043+- while (!gtk_text_iter_ends_word (start))
3044+- {
3045+- if (!gtk_text_iter_backward_char (start))
3046+- break;
3047+- }
3048+- gtk_text_iter_forward_word_end (end);
3049+- break;
3050+-
3051+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
3052+- if (!gtk_text_iter_starts_sentence (start))
3053+- gtk_text_iter_backward_sentence_start (start);
3054+- if (gtk_text_iter_inside_sentence (end))
3055+- gtk_text_iter_forward_sentence_end (end);
3056+- while (!gtk_text_iter_starts_sentence (end))
3057+- {
3058+- if (!gtk_text_iter_forward_char (end))
3059+- break;
3060+- }
3061+- break;
3062+-
3063+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
3064+- if (gtk_text_iter_inside_sentence (start) &&
3065+- !gtk_text_iter_starts_sentence (start))
3066+- gtk_text_iter_backward_sentence_start (start);
3067+- while (!gtk_text_iter_ends_sentence (start))
3068+- {
3069+- if (!gtk_text_iter_backward_char (start))
3070+- break;
3071+- }
3072+- gtk_text_iter_forward_sentence_end (end);
3073+- break;
3074+-
3075+- case ATK_TEXT_BOUNDARY_LINE_START:
3076+- line_number = gtk_text_iter_get_line (start);
3077+- if (line_number == 0)
3078+- {
3079+- gtk_text_buffer_get_iter_at_offset (buffer, start, 0);
3080+- }
3081+- else
3082+- {
3083+- gtk_text_iter_backward_line (start);
3084+- gtk_text_iter_forward_line (start);
3085+- }
3086+- gtk_text_iter_forward_line (end);
3087+- break;
3088+-
3089+- case ATK_TEXT_BOUNDARY_LINE_END:
3090+- line_number = gtk_text_iter_get_line (start);
3091+- if (line_number == 0)
3092+- {
3093+- gtk_text_buffer_get_iter_at_offset (buffer, start, 0);
3094+- }
3095+- else
3096+- {
3097+- gtk_text_iter_backward_line (start);
3098+- gtk_text_iter_forward_line (start);
3099+- }
3100+- while (!gtk_text_iter_ends_line (start))
3101+- {
3102+- if (!gtk_text_iter_backward_char (start))
3103+- break;
3104+- }
3105+- gtk_text_iter_forward_to_line_end (end);
3106+- break;
3107+- }
3108+ }
3109+
3110+ void
3111+ _gtk_text_buffer_get_text_after (GtkTextBuffer *buffer,
3112+- AtkTextBoundary boundary_type,
3113+ GtkTextIter *position,
3114+ GtkTextIter *start,
3115+ GtkTextIter *end)
3116+ {
3117+ *start = *position;
3118+ *end = *start;
3119+-
3120+- switch (boundary_type)
3121+- {
3122+- case ATK_TEXT_BOUNDARY_CHAR:
3123+- gtk_text_iter_forward_char (start);
3124+- gtk_text_iter_forward_chars (end, 2);
3125+- break;
3126+-
3127+- case ATK_TEXT_BOUNDARY_WORD_START:
3128+- if (gtk_text_iter_inside_word (end))
3129+- gtk_text_iter_forward_word_end (end);
3130+- while (!gtk_text_iter_starts_word (end))
3131+- {
3132+- if (!gtk_text_iter_forward_char (end))
3133+- break;
3134+- }
3135+- *start = *end;
3136+- if (!gtk_text_iter_is_end (end))
3137+- {
3138+- gtk_text_iter_forward_word_end (end);
3139+- while (!gtk_text_iter_starts_word (end))
3140+- {
3141+- if (!gtk_text_iter_forward_char (end))
3142+- break;
3143+- }
3144+- }
3145+- break;
3146+-
3147+- case ATK_TEXT_BOUNDARY_WORD_END:
3148+- gtk_text_iter_forward_word_end (end);
3149+- *start = *end;
3150+- if (!gtk_text_iter_is_end (end))
3151+- gtk_text_iter_forward_word_end (end);
3152+- break;
3153+-
3154+- case ATK_TEXT_BOUNDARY_SENTENCE_START:
3155+- if (gtk_text_iter_inside_sentence (end))
3156+- gtk_text_iter_forward_sentence_end (end);
3157+- while (!gtk_text_iter_starts_sentence (end))
3158+- {
3159+- if (!gtk_text_iter_forward_char (end))
3160+- break;
3161+- }
3162+- *start = *end;
3163+- if (!gtk_text_iter_is_end (end))
3164+- {
3165+- gtk_text_iter_forward_sentence_end (end);
3166+- while (!gtk_text_iter_starts_sentence (end))
3167+- {
3168+- if (!gtk_text_iter_forward_char (end))
3169+- break;
3170+- }
3171+- }
3172+- break;
3173+-
3174+- case ATK_TEXT_BOUNDARY_SENTENCE_END:
3175+- gtk_text_iter_forward_sentence_end (end);
3176+- *start = *end;
3177+- if (!gtk_text_iter_is_end (end))
3178+- gtk_text_iter_forward_sentence_end (end);
3179+- break;
3180+-
3181+- case ATK_TEXT_BOUNDARY_LINE_START:
3182+- gtk_text_iter_forward_line (end);
3183+- *start = *end;
3184+- gtk_text_iter_forward_line (end);
3185+- break;
3186+-
3187+- case ATK_TEXT_BOUNDARY_LINE_END:
3188+- gtk_text_iter_forward_line (start);
3189+- *end = *start;
3190+- if (!gtk_text_iter_is_end (start))
3191+- {
3192+- while (!gtk_text_iter_ends_line (start))
3193+- {
3194+- if (!gtk_text_iter_backward_char (start))
3195+- break;
3196+- }
3197+- gtk_text_iter_forward_to_line_end (end);
3198+- }
3199+- break;
3200+- }
3201+ }
3202+
3203+ static GtkTextTag *
3204+--- a/gtk/gtktextbufferprivate.h
3205++++ b/gtk/gtktextbufferprivate.h
3206+@@ -35,17 +35,14 @@
3207+ GtkTextTag *tag);
3208+
3209+ void _gtk_text_buffer_get_text_before (GtkTextBuffer *buffer,
3210+- AtkTextBoundary boundary_type,
3211+ GtkTextIter *position,
3212+ GtkTextIter *start,
3213+ GtkTextIter *end);
3214+ void _gtk_text_buffer_get_text_at (GtkTextBuffer *buffer,
3215+- AtkTextBoundary boundary_type,
3216+ GtkTextIter *position,
3217+ GtkTextIter *start,
3218+ GtkTextIter *end);
3219+ void _gtk_text_buffer_get_text_after (GtkTextBuffer *buffer,
3220+- AtkTextBoundary boundary_type,
3221+ GtkTextIter *position,
3222+ GtkTextIter *start,
3223+ GtkTextIter *end);
3224+--- a/gtk/gtktextview.c
3225++++ b/gtk/gtktextview.c
3226+@@ -1706,7 +1706,6 @@
3227+ "move-focus", 1,
3228+ GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_BACKWARD);
3229+
3230+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TEXT_VIEW_ACCESSIBLE);
3231+ gtk_widget_class_set_css_name (widget_class, "textview");
3232+
3233+ quark_text_selection_data = g_quark_from_static_string ("gtk-text-view-text-selection-data");
3234+@@ -2016,7 +2015,6 @@
3235+ gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_NONE);
3236+ }
3237+
3238+- _gtk_text_view_accessible_set_buffer (text_view, old_buffer);
3239+ if (old_buffer)
3240+ g_object_unref (old_buffer);
3241+
3242+--- a/gtk/gtktogglebutton.c
3243++++ b/gtk/gtktogglebutton.c
3244+@@ -222,7 +222,6 @@
3245+ NULL,
3246+ G_TYPE_NONE, 0);
3247+
3248+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TOGGLE_BUTTON_ACCESSIBLE);
3249+ gtk_widget_class_set_css_name (widget_class, "button");
3250+ }
3251+
3252+--- a/gtk/gtktoolbar.c
3253++++ b/gtk/gtktoolbar.c
3254+@@ -413,8 +413,6 @@
3255+ widget_class->style_updated = gtk_toolbar_style_updated;
3256+ widget_class->focus = gtk_toolbar_focus;
3257+
3258+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_TOOL_BAR);
3259+-
3260+ /* need to override the base class function via override_class_handler,
3261+ * because the signal slot is not available in GtkWidgetClass
3262+ */
3263+--- a/gtk/gtktoolbutton.c
3264++++ b/gtk/gtktoolbutton.c
3265+@@ -1193,7 +1193,6 @@
3266+ {
3267+ gchar *old_label;
3268+ gchar *elided_label;
3269+- AtkObject *accessible;
3270+
3271+ g_return_if_fail (GTK_IS_TOOL_BUTTON (button));
3272+
3273+@@ -1205,8 +1204,6 @@
3274+ if (label)
3275+ {
3276+ elided_label = _gtk_toolbar_elide_underscores (label);
3277+- accessible = gtk_widget_get_accessible (GTK_WIDGET (button->priv->button));
3278+- atk_object_set_name (accessible, elided_label);
3279+ g_free (elided_label);
3280+ }
3281+
3282+--- a/gtk/gtktooltipwindow.c
3283++++ b/gtk/gtktooltipwindow.c
3284+@@ -64,7 +64,6 @@
3285+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
3286+
3287+ gtk_widget_class_set_css_name (widget_class, I_("tooltip"));
3288+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_TOOL_TIP);
3289+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/ui/gtktooltipwindow.ui");
3290+
3291+ gtk_widget_class_bind_template_child (widget_class, GtkTooltipWindow, box);
3292+--- a/gtk/gtktreeselection.c
3293++++ b/gtk/gtktreeselection.c
3294+@@ -1638,12 +1638,10 @@
3295+ if (!GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED))
3296+ {
3297+ GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SELECTED);
3298+- _gtk_tree_view_accessible_add_state (priv->tree_view, tree, node, GTK_CELL_RENDERER_SELECTED);
3299+ }
3300+ else
3301+ {
3302+ GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_SELECTED);
3303+- _gtk_tree_view_accessible_remove_state (priv->tree_view, tree, node, GTK_CELL_RENDERER_SELECTED);
3304+ }
3305+
3306+ _gtk_tree_view_queue_draw_node (priv->tree_view, tree, node, NULL);
3307+--- a/gtk/gtktreeview.c
3308++++ b/gtk/gtktreeview.c
3309+@@ -1811,7 +1811,6 @@
3310+
3311+ gtk_binding_entry_add_signal (binding_set, GDK_KEY_F, GDK_CONTROL_MASK, "start-interactive-search", 0);
3312+
3313+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_TREE_VIEW_ACCESSIBLE);
3314+ gtk_widget_class_set_css_name (widget_class, "treeview");
3315+ }
3316+
3317+@@ -9029,8 +9028,6 @@
3318+ if (tree == NULL)
3319+ goto done;
3320+
3321+- _gtk_tree_view_accessible_changed (tree_view, tree, node);
3322+-
3323+ if (tree_view->priv->fixed_height_mode
3324+ && tree_view->priv->fixed_height >= 0)
3325+ {
3326+@@ -9159,8 +9156,6 @@
3327+ tmpnode = _gtk_rbtree_insert_after (tree, tmpnode, height, FALSE);
3328+ }
3329+
3330+- _gtk_tree_view_accessible_add (tree_view, tree, tmpnode);
3331+-
3332+ done:
3333+ if (height > 0)
3334+ {
3335+@@ -9223,12 +9218,10 @@
3336+ if (has_child)
3337+ {
3338+ GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_PARENT);
3339+- _gtk_tree_view_accessible_add_state (tree_view, tree, node, GTK_CELL_RENDERER_EXPANDABLE);
3340+ }
3341+ else
3342+ {
3343+ GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_PARENT);
3344+- _gtk_tree_view_accessible_remove_state (tree_view, tree, node, GTK_CELL_RENDERER_EXPANDABLE);
3345+ }
3346+
3347+ if (has_child && tree_view->priv->is_list)
3348+@@ -9378,15 +9371,10 @@
3349+ if (tree_view->priv->tree == tree)
3350+ tree_view->priv->tree = NULL;
3351+
3352+- _gtk_tree_view_accessible_remove_state (tree_view,
3353+- tree->parent_tree, tree->parent_node,
3354+- GTK_CELL_RENDERER_EXPANDED);
3355+- _gtk_tree_view_accessible_remove (tree_view, tree, NULL);
3356+ _gtk_rbtree_remove (tree);
3357+ }
3358+ else
3359+ {
3360+- _gtk_tree_view_accessible_remove (tree_view, tree, node);
3361+ _gtk_rbtree_remove_node (tree, node);
3362+ }
3363+
3364+@@ -9460,8 +9448,6 @@
3365+
3366+ _gtk_rbtree_reorder (tree, new_order, len);
3367+
3368+- _gtk_tree_view_accessible_reorder (tree_view);
3369+-
3370+ gtk_widget_queue_draw (GTK_WIDGET (tree_view));
3371+
3372+ gtk_tree_view_dy_to_top_row (tree_view);
3373+@@ -10293,9 +10279,6 @@
3374+
3375+ tree_view->priv->focus_column = column;
3376+
3377+- _gtk_tree_view_accessible_update_focus_column (tree_view,
3378+- old_column,
3379+- column);
3380+ }
3381+
3382+
3383+@@ -11593,7 +11576,6 @@
3384+ {
3385+ tree_view->priv->tree = _gtk_rbtree_new ();
3386+ gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE);
3387+- _gtk_tree_view_accessible_add (tree_view, tree_view->priv->tree, NULL);
3388+ }
3389+ gtk_tree_path_free (path);
3390+
3391+@@ -12145,8 +12127,6 @@
3392+ gtk_widget_queue_resize (GTK_WIDGET (tree_view));
3393+ }
3394+
3395+- _gtk_tree_view_accessible_remove_column (tree_view, column, position);
3396+-
3397+ g_object_unref (column);
3398+ g_signal_emit (tree_view, tree_view_signals[COLUMNS_CHANGED], 0);
3399+
3400+@@ -12217,8 +12197,6 @@
3401+ gtk_widget_queue_resize (GTK_WIDGET (tree_view));
3402+ }
3403+
3404+- _gtk_tree_view_accessible_add_column (tree_view, column, position);
3405+-
3406+ g_signal_emit (tree_view, tree_view_signals[COLUMNS_CHANGED], 0);
3407+
3408+ return tree_view->priv->n_columns;
3409+@@ -12436,8 +12414,6 @@
3410+ gtk_tree_view_size_allocate_columns (GTK_WIDGET (tree_view), NULL);
3411+ }
3412+
3413+- _gtk_tree_view_accessible_reorder_column (tree_view, column);
3414+-
3415+ g_signal_emit (tree_view, tree_view_signals[COLUMNS_CHANGED], 0);
3416+ }
3417+
3418+@@ -12910,11 +12886,6 @@
3419+ gtk_tree_path_get_depth (path) + 1,
3420+ open_all);
3421+
3422+- _gtk_tree_view_accessible_add (tree_view, node->children, NULL);
3423+- _gtk_tree_view_accessible_add_state (tree_view,
3424+- tree, node,
3425+- GTK_CELL_RENDERER_EXPANDED);
3426+-
3427+ install_presize_handler (tree_view);
3428+
3429+ g_signal_emit (tree_view, tree_view_signals[ROW_EXPANDED], 0, &iter, path);
3430+@@ -13061,11 +13032,6 @@
3431+ /* Stop a pending double click */
3432+ gtk_event_controller_reset (GTK_EVENT_CONTROLLER (tree_view->priv->multipress_gesture));
3433+
3434+- _gtk_tree_view_accessible_remove (tree_view, node->children, NULL);
3435+- _gtk_tree_view_accessible_remove_state (tree_view,
3436+- tree, node,
3437+- GTK_CELL_RENDERER_EXPANDED);
3438+-
3439+ _gtk_rbtree_remove (node->children);
3440+
3441+ if (cursor_changed)
3442+@@ -13284,10 +13250,6 @@
3443+ {
3444+ if (!(flags & CURSOR_INVALID) && tree_view->priv->cursor_node)
3445+ {
3446+- _gtk_tree_view_accessible_remove_state (tree_view,
3447+- tree_view->priv->cursor_tree,
3448+- tree_view->priv->cursor_node,
3449+- GTK_CELL_RENDERER_FOCUSED);
3450+ _gtk_tree_view_queue_draw_node (tree_view,
3451+ tree_view->priv->cursor_tree,
3452+ tree_view->priv->cursor_node,
3453+@@ -13352,10 +13314,6 @@
3454+ NULL);
3455+ }
3456+
3457+- _gtk_tree_view_accessible_add_state (tree_view,
3458+- tree_view->priv->cursor_tree,
3459+- tree_view->priv->cursor_node,
3460+- GTK_CELL_RENDERER_FOCUSED);
3461+ }
3462+
3463+ if (!gtk_widget_in_destruction (GTK_WIDGET (tree_view)))
3464+--- a/gtk/gtktreeviewcolumn.c
3465++++ b/gtk/gtktreeviewcolumn.c
3466+@@ -1889,12 +1889,6 @@
3467+ if (priv->visible)
3468+ _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE);
3469+
3470+- if (priv->tree_view)
3471+- {
3472+- _gtk_tree_view_accessible_toggle_visibility (GTK_TREE_VIEW (priv->tree_view),
3473+- tree_column);
3474+- }
3475+-
3476+ gtk_tree_view_column_update_button (tree_column);
3477+ g_object_notify_by_pspec (G_OBJECT (tree_column), tree_column_props[PROP_VISIBLE]);
3478+ }
3479+--- a/gtk/gtkviewport.c
3480++++ b/gtk/gtkviewport.c
3481+@@ -390,8 +390,6 @@
3482+ widget_class->get_preferred_height_for_width = gtk_viewport_get_preferred_height_for_width;
3483+ widget_class->queue_draw_region = gtk_viewport_queue_draw_region;
3484+
3485+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_VIEWPORT);
3486+-
3487+ container_class->remove = gtk_viewport_remove;
3488+ container_class->add = gtk_viewport_add;
3489+ gtk_container_class_handle_border_width (container_class);
3490+--- a/gtk/gtkvolumebutton.c
3491++++ b/gtk/gtkvolumebutton.c
3492+@@ -183,10 +183,6 @@
3493+ GtkWidget *widget = GTK_WIDGET (button);
3494+
3495+ gtk_widget_init_template (widget);
3496+-
3497+- /* The atk action description is not supported by GtkBuilder */
3498+- atk_action_set_description (ATK_ACTION (gtk_widget_get_accessible (GTK_WIDGET (widget))),
3499+- 1, _("Adjusts the volume"));
3500+ }
3501+
3502+ /**
3503+@@ -220,10 +216,7 @@
3504+ GtkAdjustment *adjustment;
3505+ gdouble val;
3506+ char *str;
3507+- AtkImage *image;
3508+
3509+- image = ATK_IMAGE (gtk_widget_get_accessible (button));
3510+-
3511+ adjustment = gtk_scale_button_get_adjustment (scale_button);
3512+ val = gtk_scale_button_get_value (scale_button);
3513+
3514+@@ -250,7 +243,6 @@
3515+ }
3516+
3517+ gtk_tooltip_set_text (tooltip, str);
3518+- atk_image_set_image_description (image, str);
3519+ g_free (str);
3520+
3521+ return TRUE;
3522+--- a/gtk/gtkwidget.c
3523++++ b/gtk/gtkwidget.c
3524+@@ -496,8 +496,6 @@
3525+ struct _GtkWidgetClassPrivate
3526+ {
3527+ GtkWidgetTemplate *template;
3528+- GType accessible_type;
3529+- AtkRole accessible_role;
3530+ const char *css_name;
3531+ };
3532+
3533+@@ -738,9 +736,6 @@
3534+ GtkStateFlags old_state);
3535+ static void gtk_widget_real_queue_draw_region (GtkWidget *widget,
3536+ const cairo_region_t *region);
3537+-static AtkObject* gtk_widget_real_get_accessible (GtkWidget *widget);
3538+-static void gtk_widget_accessible_interface_init (AtkImplementorIface *iface);
3539+-static AtkObject* gtk_widget_ref_accessible (AtkImplementor *implementor);
3540+ static void gtk_widget_invalidate_widget_windows (GtkWidget *widget,
3541+ cairo_region_t *region);
3542+ static GdkScreen * gtk_widget_get_screen_unchecked (GtkWidget *widget);
3543+@@ -878,13 +873,6 @@
3544+ NULL, /* value_table */
3545+ };
3546+
3547+- const GInterfaceInfo accessibility_info =
3548+- {
3549+- (GInterfaceInitFunc) gtk_widget_accessible_interface_init,
3550+- (GInterfaceFinalizeFunc) NULL,
3551+- NULL /* interface data */
3552+- };
3553+-
3554+ const GInterfaceInfo buildable_info =
3555+ {
3556+ (GInterfaceInitFunc) gtk_widget_buildable_interface_init,
3557+@@ -900,8 +888,6 @@
3558+ GtkWidget_private_offset =
3559+ g_type_add_instance_private (widget_type, sizeof (GtkWidgetPrivate));
3560+
3561+- g_type_add_interface_static (widget_type, ATK_TYPE_IMPLEMENTOR,
3562+- &accessibility_info) ;
3563+ g_type_add_interface_static (widget_type, GTK_TYPE_BUILDABLE,
3564+ &buildable_info) ;
3565+ }
3566+@@ -1106,11 +1092,6 @@
3567+
3568+ klass->show_help = gtk_widget_real_show_help;
3569+
3570+- /* Accessibility support */
3571+- klass->priv->accessible_type = GTK_TYPE_ACCESSIBLE;
3572+- klass->priv->accessible_role = ATK_ROLE_INVALID;
3573+- klass->get_accessible = gtk_widget_real_get_accessible;
3574+-
3575+ klass->adjust_size_request = gtk_widget_real_adjust_size_request;
3576+ klass->adjust_baseline_request = gtk_widget_real_adjust_baseline_request;
3577+ klass->adjust_size_allocation = gtk_widget_real_adjust_size_allocation;
3578+@@ -3722,7 +3703,6 @@
3579+ 1, G_MAXINT, 20,
3580+ GTK_PARAM_READABLE));
3581+
3582+- gtk_widget_class_set_accessible_type (klass, GTK_TYPE_WIDGET_ACCESSIBLE);
3583+ gtk_widget_class_set_css_name (klass, "widget");
3584+ }
3585+
3586+@@ -12332,13 +12312,6 @@
3587+ }
3588+ }
3589+
3590+- if (priv->accessible)
3591+- {
3592+- gtk_accessible_set_widget (GTK_ACCESSIBLE (priv->accessible), NULL);
3593+- g_object_unref (priv->accessible);
3594+- priv->accessible = NULL;
3595+- }
3596+-
3597+ /* wipe accelerator closures (keep order) */
3598+ g_object_set_qdata (G_OBJECT (widget), quark_accel_path, NULL);
3599+ g_object_set_qdata (G_OBJECT (widget), quark_accel_closures, NULL);
3600+@@ -12371,8 +12344,6 @@
3601+
3602+ g_free (priv->name);
3603+
3604+- g_clear_object (&priv->accessible);
3605+-
3606+ gtk_widget_clear_path (widget);
3607+
3608+ gtk_css_widget_node_widget_destroyed (GTK_CSS_WIDGET_NODE (priv->cssnode));
3609+@@ -13420,191 +13391,7 @@
3610+ gtk_requisition_copy,
3611+ gtk_requisition_free)
3612+
3613+-/**
3614+- * gtk_widget_class_set_accessible_type:
3615+- * @widget_class: class to set the accessible type for
3616+- * @type: The object type that implements the accessible for @widget_class
3617+- *
3618+- * Sets the type to be used for creating accessibles for widgets of
3619+- * @widget_class. The given @type must be a subtype of the type used for
3620+- * accessibles of the parent class.
3621+- *
3622+- * This function should only be called from class init functions of widgets.
3623+- *
3624+- * Since: 3.2
3625+- **/
3626+-void
3627+-gtk_widget_class_set_accessible_type (GtkWidgetClass *widget_class,
3628+- GType type)
3629+-{
3630+- GtkWidgetClassPrivate *priv;
3631+-
3632+- g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class));
3633+- g_return_if_fail (g_type_is_a (type, widget_class->priv->accessible_type));
3634+-
3635+- priv = widget_class->priv;
3636+-
3637+- priv->accessible_type = type;
3638+- /* reset this - honoring the type's role is better. */
3639+- priv->accessible_role = ATK_ROLE_INVALID;
3640+-}
3641+-
3642+-/**
3643+- * gtk_widget_class_set_accessible_role:
3644+- * @widget_class: class to set the accessible role for
3645+- * @role: The role to use for accessibles created for @widget_class
3646+- *
3647+- * Sets the default #AtkRole to be set on accessibles created for
3648+- * widgets of @widget_class. Accessibles may decide to not honor this
3649+- * setting if their role reporting is more refined. Calls to
3650+- * gtk_widget_class_set_accessible_type() will reset this value.
3651+- *
3652+- * In cases where you want more fine-grained control over the role of
3653+- * accessibles created for @widget_class, you should provide your own
3654+- * accessible type and use gtk_widget_class_set_accessible_type()
3655+- * instead.
3656+- *
3657+- * If @role is #ATK_ROLE_INVALID, the default role will not be changed
3658+- * and the accessible’s default role will be used instead.
3659+- *
3660+- * This function should only be called from class init functions of widgets.
3661+- *
3662+- * Since: 3.2
3663+- **/
3664+-void
3665+-gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,
3666+- AtkRole role)
3667+-{
3668+- GtkWidgetClassPrivate *priv;
3669+-
3670+- g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class));
3671+-
3672+- priv = widget_class->priv;
3673+-
3674+- priv->accessible_role = role;
3675+-}
3676+-
3677+-/**
3678+- * _gtk_widget_peek_accessible:
3679+- * @widget: a #GtkWidget
3680+- *
3681+- * Gets the accessible for @widget, if it has been created yet.
3682+- * Otherwise, this function returns %NULL. If the @widget’s implementation
3683+- * does not use the default way to create accessibles, %NULL will always be
3684+- * returned.
3685+- *
3686+- * Returns: (nullable): the accessible for @widget or %NULL if none has been
3687+- * created yet.
3688+- **/
3689+-AtkObject *
3690+-_gtk_widget_peek_accessible (GtkWidget *widget)
3691+-{
3692+- return widget->priv->accessible;
3693+-}
3694+-
3695+-/**
3696+- * gtk_widget_get_accessible:
3697+- * @widget: a #GtkWidget
3698+- *
3699+- * Returns the accessible object that describes the widget to an
3700+- * assistive technology.
3701+- *
3702+- * If accessibility support is not available, this #AtkObject
3703+- * instance may be a no-op. Likewise, if no class-specific #AtkObject
3704+- * implementation is available for the widget instance in question,
3705+- * it will inherit an #AtkObject implementation from the first ancestor
3706+- * class for which such an implementation is defined.
3707+- *
3708+- * The documentation of the
3709+- * [ATK](http://developer.gnome.org/atk/stable/)
3710+- * library contains more information about accessible objects and their uses.
3711+- *
3712+- * Returns: (transfer none): the #AtkObject associated with @widget
3713+- */
3714+-AtkObject*
3715+-gtk_widget_get_accessible (GtkWidget *widget)
3716+-{
3717+- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
3718+-
3719+- return GTK_WIDGET_GET_CLASS (widget)->get_accessible (widget);
3720+-}
3721+-
3722+-static AtkObject*
3723+-gtk_widget_real_get_accessible (GtkWidget *widget)
3724+-{
3725+- AtkObject* accessible;
3726+-
3727+- accessible = widget->priv->accessible;
3728+-
3729+- if (!accessible)
3730+- {
3731+- GtkWidgetClass *widget_class;
3732+- GtkWidgetClassPrivate *priv;
3733+- AtkObjectFactory *factory;
3734+- AtkRegistry *default_registry;
3735+-
3736+- widget_class = GTK_WIDGET_GET_CLASS (widget);
3737+- priv = widget_class->priv;
3738+-
3739+- if (priv->accessible_type == GTK_TYPE_ACCESSIBLE)
3740+- {
3741+- default_registry = atk_get_default_registry ();
3742+- factory = atk_registry_get_factory (default_registry,
3743+- G_TYPE_FROM_INSTANCE (widget));
3744+- accessible = atk_object_factory_create_accessible (factory, G_OBJECT (widget));
3745+-
3746+- if (priv->accessible_role != ATK_ROLE_INVALID)
3747+- atk_object_set_role (accessible, priv->accessible_role);
3748+-
3749+- widget->priv->accessible = accessible;
3750+- }
3751+- else
3752+- {
3753+- accessible = g_object_new (priv->accessible_type,
3754+- "widget", widget,
3755+- NULL);
3756+- if (priv->accessible_role != ATK_ROLE_INVALID)
3757+- atk_object_set_role (accessible, priv->accessible_role);
3758+-
3759+- widget->priv->accessible = accessible;
3760+-
3761+- atk_object_initialize (accessible, widget);
3762+-
3763+- /* Set the role again, since we don't want a role set
3764+- * in some parent initialize() function to override
3765+- * our own.
3766+- */
3767+- if (priv->accessible_role != ATK_ROLE_INVALID)
3768+- atk_object_set_role (accessible, priv->accessible_role);
3769+- }
3770+-
3771+- }
3772+-
3773+- return accessible;
3774+-}
3775+-
3776+ /*
3777+- * Initialize a AtkImplementorIface instance’s virtual pointers as
3778+- * appropriate to this implementor’s class (GtkWidget).
3779+- */
3780+-static void
3781+-gtk_widget_accessible_interface_init (AtkImplementorIface *iface)
3782+-{
3783+- iface->ref_accessible = gtk_widget_ref_accessible;
3784+-}
3785+-
3786+-static AtkObject*
3787+-gtk_widget_ref_accessible (AtkImplementor *implementor)
3788+-{
3789+- AtkObject *accessible;
3790+-
3791+- accessible = gtk_widget_get_accessible (GTK_WIDGET (implementor));
3792+- if (accessible)
3793+- g_object_ref (accessible);
3794+- return accessible;
3795+-}
3796+-
3797+-/*
3798+ * Expand flag management
3799+ */
3800+
3801+@@ -14072,9 +13859,6 @@
3802+ GSList *l;
3803+ GType internal_child_type = 0;
3804+
3805+- if (strcmp (childname, "accessible") == 0)
3806+- return G_OBJECT (gtk_widget_get_accessible (GTK_WIDGET (buildable)));
3807+-
3808+ /* Find a widget type which has declared an automated child as internal by
3809+ * the name 'childname', if any.
3810+ */
3811+@@ -14122,44 +13906,10 @@
3812+ g_object_set_property (G_OBJECT (buildable), name, value);
3813+ }
3814+
3815+-typedef struct
3816+-{
3817+- gchar *action_name;
3818+- GString *description;
3819+- gchar *context;
3820+- gboolean translatable;
3821+-} AtkActionData;
3822+-
3823+-typedef struct
3824+-{
3825+- gchar *target;
3826+- AtkRelationType type;
3827+- gint line;
3828+- gint col;
3829+-} AtkRelationData;
3830+-
3831+ static void
3832+-free_action (AtkActionData *data, gpointer user_data)
3833+-{
3834+- g_free (data->action_name);
3835+- g_string_free (data->description, TRUE);
3836+- g_free (data->context);
3837+- g_slice_free (AtkActionData, data);
3838+-}
3839+-
3840+-static void
3841+-free_relation (AtkRelationData *data, gpointer user_data)
3842+-{
3843+- g_free (data->target);
3844+- g_slice_free (AtkRelationData, data);
3845+-}
3846+-
3847+-static void
3848+ gtk_widget_buildable_parser_finished (GtkBuildable *buildable,
3849+ GtkBuilder *builder)
3850+ {
3851+- GSList *atk_relations;
3852+-
3853+ if (g_object_get_qdata (G_OBJECT (buildable), quark_builder_has_default))
3854+ {
3855+ gtk_widget_grab_default (GTK_WIDGET (buildable));
3856+@@ -14171,37 +13921,6 @@
3857+ gtk_widget_grab_focus (GTK_WIDGET (buildable));
3858+ g_object_steal_qdata (G_OBJECT (buildable), quark_builder_has_focus);
3859+ }
3860+-
3861+- atk_relations = g_object_get_qdata (G_OBJECT (buildable),
3862+- quark_builder_atk_relations);
3863+- if (atk_relations)
3864+- {
3865+- AtkObject *accessible;
3866+- AtkRelationSet *relation_set;
3867+- GSList *l;
3868+- GObject *target;
3869+- AtkObject *target_accessible;
3870+-
3871+- accessible = gtk_widget_get_accessible (GTK_WIDGET (buildable));
3872+- relation_set = atk_object_ref_relation_set (accessible);
3873+-
3874+- for (l = atk_relations; l; l = l->next)
3875+- {
3876+- AtkRelationData *relation = (AtkRelationData*)l->data;
3877+-
3878+- target = _gtk_builder_lookup_object (builder, relation->target, relation->line, relation->col);
3879+- if (!target)
3880+- continue;
3881+- target_accessible = gtk_widget_get_accessible (GTK_WIDGET (target));
3882+- g_assert (target_accessible != NULL);
3883+-
3884+- atk_relation_set_add_relation_by_type (relation_set, relation->type, target_accessible);
3885+- }
3886+- g_object_unref (relation_set);
3887+-
3888+- g_slist_free_full (atk_relations, (GDestroyNotify) free_relation);
3889+- g_object_steal_qdata (G_OBJECT (buildable), quark_builder_atk_relations);
3890+- }
3891+ }
3892+
3893+ typedef struct
3894+@@ -14211,125 +13930,6 @@
3895+ GSList *relations;
3896+ } AccessibilitySubParserData;
3897+
3898+-static void
3899+-accessibility_start_element (GMarkupParseContext *context,
3900+- const gchar *element_name,
3901+- const gchar **names,
3902+- const gchar **values,
3903+- gpointer user_data,
3904+- GError **error)
3905+-{
3906+- AccessibilitySubParserData *data = (AccessibilitySubParserData*)user_data;
3907+-
3908+- if (strcmp (element_name, "relation") == 0)
3909+- {
3910+- gchar *target = NULL;
3911+- gchar *type = NULL;
3912+- AtkRelationData *relation;
3913+- AtkRelationType relation_type;
3914+-
3915+- if (!_gtk_builder_check_parent (data->builder, context, "accessibility", error))
3916+- return;
3917+-
3918+- if (!g_markup_collect_attributes (element_name, names, values, error,
3919+- G_MARKUP_COLLECT_STRING, "target", &target,
3920+- G_MARKUP_COLLECT_STRING, "type", &type,
3921+- G_MARKUP_COLLECT_INVALID))
3922+- {
3923+- _gtk_builder_prefix_error (data->builder, context, error);
3924+- return;
3925+- }
3926+-
3927+- relation_type = atk_relation_type_for_name (type);
3928+- if (relation_type == ATK_RELATION_NULL)
3929+- {
3930+- g_set_error (error,
3931+- GTK_BUILDER_ERROR,
3932+- GTK_BUILDER_ERROR_INVALID_VALUE,
3933+- "No such relation type: '%s'", type);
3934+- _gtk_builder_prefix_error (data->builder, context, error);
3935+- return;
3936+- }
3937+-
3938+- relation = g_slice_new (AtkRelationData);
3939+- relation->target = g_strdup (target);
3940+- relation->type = relation_type;
3941+-
3942+- data->relations = g_slist_prepend (data->relations, relation);
3943+- }
3944+- else if (strcmp (element_name, "action") == 0)
3945+- {
3946+- const gchar *action_name;
3947+- const gchar *description = NULL;
3948+- const gchar *msg_context = NULL;
3949+- gboolean translatable = FALSE;
3950+- AtkActionData *action;
3951+-
3952+- if (!_gtk_builder_check_parent (data->builder, context, "accessibility", error))
3953+- return;
3954+-
3955+- if (!g_markup_collect_attributes (element_name, names, values, error,
3956+- G_MARKUP_COLLECT_STRING, "action_name", &action_name,
3957+- G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "description", &description,
3958+- G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "comments", NULL,
3959+- G_MARKUP_COLLECT_STRING|G_MARKUP_COLLECT_OPTIONAL, "context", &msg_context,
3960+- G_MARKUP_COLLECT_BOOLEAN|G_MARKUP_COLLECT_OPTIONAL, "translatable", &translatable,
3961+- G_MARKUP_COLLECT_INVALID))
3962+- {
3963+- _gtk_builder_prefix_error (data->builder, context, error);
3964+- return;
3965+- }
3966+-
3967+- action = g_slice_new (AtkActionData);
3968+- action->action_name = g_strdup (action_name);
3969+- action->description = g_string_new (description);
3970+- action->context = g_strdup (msg_context);
3971+- action->translatable = translatable;
3972+-
3973+- data->actions = g_slist_prepend (data->actions, action);
3974+- }
3975+- else if (strcmp (element_name, "accessibility") == 0)
3976+- {
3977+- if (!_gtk_builder_check_parent (data->builder, context, "object", error))
3978+- return;
3979+-
3980+- if (!g_markup_collect_attributes (element_name, names, values, error,
3981+- G_MARKUP_COLLECT_INVALID, NULL, NULL,
3982+- G_MARKUP_COLLECT_INVALID))
3983+- _gtk_builder_prefix_error (data->builder, context, error);
3984+- }
3985+- else
3986+- {
3987+- _gtk_builder_error_unhandled_tag (data->builder, context,
3988+- "GtkWidget", element_name,
3989+- error);
3990+- }
3991+-}
3992+-
3993+-static void
3994+-accessibility_text (GMarkupParseContext *context,
3995+- const gchar *text,
3996+- gsize text_len,
3997+- gpointer user_data,
3998+- GError **error)
3999+-{
4000+- AccessibilitySubParserData *data = (AccessibilitySubParserData*)user_data;
4001+-
4002+- if (strcmp (g_markup_parse_context_get_element (context), "action") == 0)
4003+- {
4004+- AtkActionData *action = data->actions->data;
4005+-
4006+- g_string_append_len (action->description, text, text_len);
4007+- }
4008+-}
4009+-
4010+-static const GMarkupParser accessibility_parser =
4011+- {
4012+- accessibility_start_element,
4013+- NULL,
4014+- accessibility_text,
4015+- };
4016+-
4017+ typedef struct
4018+ {
4019+ GObject *object;
4020+@@ -14492,19 +14092,6 @@
4021+ return TRUE;
4022+ }
4023+
4024+- if (strcmp (tagname, "accessibility") == 0)
4025+- {
4026+- AccessibilitySubParserData *data;
4027+-
4028+- data = g_slice_new0 (AccessibilitySubParserData);
4029+- data->builder = builder;
4030+-
4031+- *parser = accessibility_parser;
4032+- *parser_data = data;
4033+-
4034+- return TRUE;
4035+- }
4036+-
4037+ if (strcmp (tagname, "style") == 0)
4038+ {
4039+ StyleParserData *data;
4040+@@ -14577,62 +14164,6 @@
4041+ toplevel = _gtk_widget_get_toplevel (GTK_WIDGET (accel_data->object));
4042+
4043+ _gtk_widget_buildable_finish_accelerator (GTK_WIDGET (buildable), toplevel, user_data);
4044+- }
4045+- else if (strcmp (tagname, "accessibility") == 0)
4046+- {
4047+- AccessibilitySubParserData *a11y_data;
4048+-
4049+- a11y_data = (AccessibilitySubParserData*)user_data;
4050+-
4051+- if (a11y_data->actions)
4052+- {
4053+- AtkObject *accessible;
4054+- AtkAction *action;
4055+- gint i, n_actions;
4056+- GSList *l;
4057+-
4058+- accessible = gtk_widget_get_accessible (GTK_WIDGET (buildable));
4059+-
4060+- if (ATK_IS_ACTION (accessible))
4061+- {
4062+- action = ATK_ACTION (accessible);
4063+- n_actions = atk_action_get_n_actions (action);
4064+-
4065+- for (l = a11y_data->actions; l; l = l->next)
4066+- {
4067+- AtkActionData *action_data = (AtkActionData*)l->data;
4068+-
4069+- for (i = 0; i < n_actions; i++)
4070+- if (strcmp (atk_action_get_name (action, i),
4071+- action_data->action_name) == 0)
4072+- break;
4073+-
4074+- if (i < n_actions)
4075+- {
4076+- const gchar *description;
4077+-
4078+- if (action_data->translatable && action_data->description->len)
4079+- description = _gtk_builder_parser_translate (gtk_builder_get_translation_domain (builder),
4080+- action_data->context,
4081+- action_data->description->str);
4082+- else
4083+- description = action_data->description->str;
4084+-
4085+- atk_action_set_description (action, i, description);
4086+- }
4087+- }
4088+- }
4089+- else
4090+- g_warning ("accessibility action on a widget that does not implement AtkAction");
4091+-
4092+- g_slist_free_full (a11y_data->actions, (GDestroyNotify) free_action);
4093+- }
4094+-
4095+- if (a11y_data->relations)
4096+- g_object_set_qdata (G_OBJECT (buildable), quark_builder_atk_relations,
4097+- a11y_data->relations);
4098+-
4099+- g_slice_free (AccessibilitySubParserData, a11y_data);
4100+ }
4101+ else if (strcmp (tagname, "style") == 0)
4102+ {
4103+--- a/gtk/gtkwidget.h
4104++++ b/gtk/gtkwidget.h
4105+@@ -33,7 +33,6 @@
4106+ #include <gtk/gtkaccelgroup.h>
4107+ #include <gtk/gtkborder.h>
4108+ #include <gtk/gtktypes.h>
4109+-#include <atk/atk.h>
4110+
4111+ G_BEGIN_DECLS
4112+
4113+@@ -305,8 +304,6 @@
4114+ * @popup_menu: Signal emitted whenever a widget should pop up a
4115+ * context menu.
4116+ * @show_help:
4117+- * @get_accessible: Returns the accessible object that describes the
4118+- * widget to an assistive technology.
4119+ * @screen_changed: Signal emitted when the screen of a widget has
4120+ * changed.
4121+ * @can_activate_accel: Signal allows applications and derived widgets
4122+@@ -549,8 +546,6 @@
4123+
4124+ /* accessibility support
4125+ */
4126+- AtkObject * (* get_accessible) (GtkWidget *widget);
4127+-
4128+ void (* screen_changed) (GtkWidget *widget,
4129+ GdkScreen *previous_screen);
4130+ gboolean (* can_activate_accel) (GtkWidget *widget,
4131+@@ -1055,16 +1050,6 @@
4132+ GDK_AVAILABLE_IN_ALL
4133+ void gtk_widget_set_support_multidevice (GtkWidget *widget,
4134+ gboolean support_multidevice);
4135+-
4136+-/* Accessibility support */
4137+-GDK_AVAILABLE_IN_3_2
4138+-void gtk_widget_class_set_accessible_type (GtkWidgetClass *widget_class,
4139+- GType type);
4140+-GDK_AVAILABLE_IN_3_2
4141+-void gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,
4142+- AtkRole role);
4143+-GDK_AVAILABLE_IN_ALL
4144+-AtkObject* gtk_widget_get_accessible (GtkWidget *widget);
4145+
4146+
4147+ /* Margin and alignment */
4148+--- a/gtk/gtkwidgetprivate.h
4149++++ b/gtk/gtkwidgetprivate.h
4150+@@ -158,8 +158,6 @@
4151+ GtkWidget *parent;
4152+
4153+ GList *event_controllers;
4154+-
4155+- AtkObject *accessible;
4156+ };
4157+
4158+ GtkCssNode * gtk_widget_get_css_node (GtkWidget *widget);
4159+@@ -212,8 +210,6 @@
4160+
4161+ const gchar* _gtk_widget_get_accel_path (GtkWidget *widget,
4162+ gboolean *locked);
4163+-
4164+-AtkObject * _gtk_widget_peek_accessible (GtkWidget *widget);
4165+
4166+ void _gtk_widget_set_has_default (GtkWidget *widget,
4167+ gboolean has_default);
4168+--- a/gtk/gtkwindow.c
4169++++ b/gtk/gtkwindow.c
4170+@@ -60,7 +60,6 @@
4171+ #include "gtkheaderbarprivate.h"
4172+ #include "gtkpopoverprivate.h"
4173+ #include "a11y/gtkwindowaccessible.h"
4174+-#include "a11y/gtkcontaineraccessibleprivate.h"
4175+ #include "gtkapplicationprivate.h"
4176+ #include "gtkgestureprivate.h"
4177+ #include "inspector/init.h"
4178+@@ -1270,7 +1269,6 @@
4179+ add_tab_bindings (binding_set, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
4180+ add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
4181+
4182+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_WINDOW_ACCESSIBLE);
4183+ gtk_widget_class_set_css_name (widget_class, "window");
4184+ }
4185+
4186+@@ -12478,7 +12476,6 @@
4187+ {
4188+ GtkWindowPrivate *priv;
4189+ GtkWindowPopover *data;
4190+- AtkObject *accessible;
4191+
4192+ g_return_if_fail (GTK_IS_WINDOW (window));
4193+ g_return_if_fail (GTK_IS_WIDGET (popover));
4194+@@ -12501,10 +12498,6 @@
4195+ popover_realize (popover, data, window);
4196+
4197+ gtk_widget_set_parent (popover, GTK_WIDGET (window));
4198+-
4199+- accessible = gtk_widget_get_accessible (GTK_WIDGET (window));
4200+- _gtk_container_accessible_add_child (GTK_CONTAINER_ACCESSIBLE (accessible),
4201+- gtk_widget_get_accessible (popover), -1);
4202+ }
4203+
4204+ void
4205+@@ -12513,7 +12506,6 @@
4206+ {
4207+ GtkWindowPrivate *priv;
4208+ GtkWindowPopover *data;
4209+- AtkObject *accessible;
4210+
4211+ g_return_if_fail (GTK_IS_WINDOW (window));
4212+ g_return_if_fail (GTK_IS_WIDGET (popover));
4213+@@ -12535,9 +12527,6 @@
4214+
4215+ priv->popovers = g_list_remove (priv->popovers, data);
4216+
4217+- accessible = gtk_widget_get_accessible (GTK_WIDGET (window));
4218+- _gtk_container_accessible_remove_child (GTK_CONTAINER_ACCESSIBLE (accessible),
4219+- gtk_widget_get_accessible (popover), -1);
4220+ popover_destroy (data);
4221+ g_object_unref (popover);
4222+ }
4223+--- a/gtk/inspector/misc-info.c
4224++++ b/gtk/inspector/misc-info.c
4225+@@ -68,12 +68,6 @@
4226+ GtkWidget *framerate;
4227+ GtkWidget *framecount_row;
4228+ GtkWidget *framecount;
4229+- GtkWidget *accessible_role_row;
4230+- GtkWidget *accessible_role;
4231+- GtkWidget *accessible_name_row;
4232+- GtkWidget *accessible_name;
4233+- GtkWidget *accessible_description_row;
4234+- GtkWidget *accessible_description;
4235+ GtkWidget *mapped_row;
4236+ GtkWidget *mapped;
4237+ GtkWidget *realized_row;
4238+@@ -337,8 +331,6 @@
4239+
4240+ if (GTK_IS_WIDGET (sl->priv->object))
4241+ {
4242+- AtkObject *accessible;
4243+- AtkRole role;
4244+ GList *list, *l;
4245+
4246+ gtk_container_forall (GTK_CONTAINER (sl->priv->mnemonic_label), (GtkCallback)gtk_widget_destroy, NULL);
4247+@@ -359,11 +351,6 @@
4248+
4249+ gtk_widget_set_visible (sl->priv->tick_callback, gtk_widget_has_tick_callback (GTK_WIDGET (sl->priv->object)));
4250+
4251+- accessible = ATK_OBJECT (gtk_widget_get_accessible (GTK_WIDGET (sl->priv->object)));
4252+- role = atk_object_get_role (accessible);
4253+- gtk_label_set_text (GTK_LABEL (sl->priv->accessible_role), atk_role_get_name (role));
4254+- gtk_label_set_text (GTK_LABEL (sl->priv->accessible_name), atk_object_get_name (accessible));
4255+- gtk_label_set_text (GTK_LABEL (sl->priv->accessible_description), atk_object_get_description (accessible));
4256+ gtk_widget_set_visible (sl->priv->mapped, gtk_widget_get_mapped (GTK_WIDGET (sl->priv->object)));
4257+ gtk_widget_set_visible (sl->priv->realized, gtk_widget_get_realized (GTK_WIDGET (sl->priv->object)));
4258+ gtk_widget_set_visible (sl->priv->is_toplevel, gtk_widget_is_toplevel (GTK_WIDGET (sl->priv->object)));
4259+@@ -454,9 +441,6 @@
4260+ gtk_widget_show (sl->priv->clip_area_row);
4261+ gtk_widget_show (sl->priv->mnemonic_label_row);
4262+ gtk_widget_show (sl->priv->tick_callback_row);
4263+- gtk_widget_show (sl->priv->accessible_role_row);
4264+- gtk_widget_show (sl->priv->accessible_name_row);
4265+- gtk_widget_show (sl->priv->accessible_description_row);
4266+ gtk_widget_show (sl->priv->mapped_row);
4267+ gtk_widget_show (sl->priv->realized_row);
4268+ gtk_widget_show (sl->priv->is_toplevel_row);
4269+@@ -478,9 +462,6 @@
4270+ gtk_widget_hide (sl->priv->baseline_row);
4271+ gtk_widget_hide (sl->priv->clip_area_row);
4272+ gtk_widget_hide (sl->priv->tick_callback_row);
4273+- gtk_widget_hide (sl->priv->accessible_role_row);
4274+- gtk_widget_hide (sl->priv->accessible_name_row);
4275+- gtk_widget_hide (sl->priv->accessible_description_row);
4276+ gtk_widget_hide (sl->priv->mapped_row);
4277+ gtk_widget_hide (sl->priv->realized_row);
4278+ gtk_widget_hide (sl->priv->is_toplevel_row);
4279+@@ -642,12 +623,6 @@
4280+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, framecount);
4281+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, framerate_row);
4282+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, framerate);
4283+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role_row);
4284+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role);
4285+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_name_row);
4286+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_name);
4287+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_description_row);
4288+- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_description);
4289+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped_row);
4290+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped);
4291+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, realized_row);
4292+--- a/gtk/meson.build
4293++++ b/gtk/meson.build
4294+@@ -1,5 +1,4 @@
4295+ subdir('deprecated')
4296+-subdir('a11y')
4297+ subdir('inspector')
4298+
4299+ gtk_cargs = [
4300+@@ -32,7 +31,6 @@
4301+ 'gtkaccelgroup.c',
4302+ 'gtkaccellabel.c',
4303+ 'gtkaccelmap.c',
4304+- 'gtkaccessible.c',
4305+ 'gtkactionbar.c',
4306+ 'gtkactionhelper.c',
4307+ 'gtkadjustment.c',
4308+@@ -396,12 +394,10 @@
4309+ 'gtk.h',
4310+ 'gtk-autocleanups.h',
4311+ 'gtkx-autocleanups.h',
4312+- 'gtk-a11y.h',
4313+ 'gtkaboutdialog.h',
4314+ 'gtkaccelgroup.h',
4315+ 'gtkaccellabel.h',
4316+ 'gtkaccelmap.h',
4317+- 'gtkaccessible.h',
4318+ 'gtkactionable.h',
4319+ 'gtkactionbar.h',
4320+ 'gtkadjustment.h',
4321+@@ -761,7 +757,7 @@
4322+ gtkmarshal_h = gtkmarshalers[1]
4323+
4324+ gtktypebuiltins = gnome.mkenums('gtktypebuiltins',
4325+- sources: gtk_public_headers + gtk_deprecated_headers + a11y_headers,
4326++ sources: gtk_public_headers + gtk_deprecated_headers,
4327+ c_template: 'gtktypebuiltins.c.template',
4328+ h_template: 'gtktypebuiltins.h.template',
4329+ install_dir: join_paths(gtk_includedir, 'gtk-3.0/gtk'),
4330+@@ -820,7 +816,6 @@
4331+ gtk_dbus_src,
4332+ gtk_deprecated_sources,
4333+ inspector_sources,
4334+- a11y_sources,
4335+ gtkresources,
4336+ gtkmarshalers,
4337+ gtkprivatetypebuiltins,
4338+@@ -840,7 +835,6 @@
4339+ cairo_dep,
4340+ fontconfig_dep,
4341+ pixbuf_dep,
4342+- atk_dep,
4343+ epoxy_dep,
4344+ libm,
4345+ ]
4346+@@ -896,8 +890,6 @@
4347+ )
4348+ gtk_res = import('windows').compile_resources(gtk_rc)
4349+ gtk_sources += gtk_res
4350+-else
4351+- gtk_deps += [ atkbridge_dep, ]
4352+ endif
4353+
4354+ if quartz_enabled
4355+@@ -991,15 +983,12 @@
4356+ gtk_gir_public_headers,
4357+ gtk_deprecated_headers,
4358+ gtk_sources,
4359+- a11y_headers,
4360+- a11y_sources,
4361+ gtktypebuiltins_h,
4362+ gtkversion,
4363+ ]
4364+
4365+- gtk_gir_includes = [gdk_gir[0], 'Atk-1.0']
4366+- gtk_gir_extra_args = gir_args + ['-DGTK_COMPILATION',
4367+- '--c-include=gtk/gtk-a11y.h']
4368++ gtk_gir_includes = gdk_gir[0]
4369++ gtk_gir_extra_args = gir_args + ['-DGTK_COMPILATION']
4370+ if x11_enabled
4371+ gtk_gir_includes += ['xlib-2.0']
4372+ gtk_gir_extra_args += ['--c-include=gtk/gtkx.h']
4373+--- a/gtk/ui/gtkcoloreditor.ui
4374++++ b/gtk/ui/gtkcoloreditor.ui
4375+@@ -84,11 +84,6 @@
4376+ <property name="visible">1</property>
4377+ <property name="can-focus">1</property>
4378+ <property name="invisible-char">•</property>
4379+- <child internal-child="accessible">
4380+- <object class="AtkObject" id="entry-atkobject">
4381+- <property name="AtkObject::accessible-name" translatable="yes">Color Name</property>
4382+- </object>
4383+- </child>
4384+ <signal name="activate" handler="entry_apply" swapped="no"/>
4385+ <signal name="focus-out-event" handler="entry_focus_out" swapped="no"/>
4386+ <signal name="notify::text" handler="entry_text_changed" swapped="no"/>
4387+@@ -191,11 +186,6 @@
4388+ <property name="width-chars">2</property>
4389+ <property name="max-width-chars">2</property>
4390+ <property name="climb-rate">1</property>
4391+- <child internal-child="accessible">
4392+- <object class="AtkObject" id="a_entry-atkobject">
4393+- <property name="AtkObject::accessible-name" translatable="yes">Alpha</property>
4394+- </object>
4395+- </child>
4396+ <signal name="key-press-event" handler="popup_key_press" swapped="no"/>
4397+ </object>
4398+ <packing>
4399+@@ -238,11 +228,6 @@
4400+ <property name="width-chars">2</property>
4401+ <property name="max-width-chars">2</property>
4402+ <property name="climb-rate">1</property>
4403+- <child internal-child="accessible">
4404+- <object class="AtkObject" id="h_entry-atkobject">
4405+- <property name="AtkObject::accessible-name" translatable="yes">Hue</property>
4406+- </object>
4407+- </child>
4408+ <signal name="key-press-event" handler="popup_key_press" swapped="no"/>
4409+ </object>
4410+ <packing>
4411+@@ -296,11 +281,6 @@
4412+ <property name="width-chars">2</property>
4413+ <property name="max-width-chars">2</property>
4414+ <property name="climb-rate">1</property>
4415+- <child internal-child="accessible">
4416+- <object class="AtkObject" id="s_entry-atkobject">
4417+- <property name="AtkObject::accessible-name" translatable="yes">Saturation</property>
4418+- </object>
4419+- </child>
4420+ <signal name="key-press-event" handler="popup_key_press" swapped="no"/>
4421+ </object>
4422+ <packing>
4423+@@ -315,11 +295,6 @@
4424+ <property name="width-chars">2</property>
4425+ <property name="max-width-chars">2</property>
4426+ <property name="climb-rate">1</property>
4427+- <child internal-child="accessible">
4428+- <object class="AtkObject" id="v_entry-atkobject">
4429+- <property name="AtkObject::accessible-name" translatable="yes">Value</property>
4430+- </object>
4431+- </child>
4432+ <signal name="key-press-event" handler="popup_key_press" swapped="no"/>
4433+ </object>
4434+ <packing>
4435+--- a/gtk/ui/gtkfilechooserdialog.ui
4436++++ b/gtk/ui/gtkfilechooserdialog.ui
4437+@@ -27,11 +27,6 @@
4438+ <signal name="file-activated" handler="file_chooser_widget_file_activated" swapped="no"/>
4439+ <signal name="response-requested" handler="file_chooser_widget_response_requested" swapped="no"/>
4440+ <signal name="selection-changed" handler="file_chooser_widget_selection_changed" swapped="no"/>
4441+- <child internal-child="accessible">
4442+- <object class="AtkObject">
4443+- <property name="AtkObject::accessible-name" translatable="yes">File Chooser Widget</property>
4444+- </object>
4445+- </child>
4446+ </object>
4447+ <packing>
4448+ <property name="expand">1</property>
4449+--- a/gtk/ui/gtkfilechooserwidget.ui
4450++++ b/gtk/ui/gtkfilechooserwidget.ui
4451+@@ -17,11 +17,6 @@
4452+ <property name="hscrollbar-policy">never</property>
4453+ <property name="local-only">1</property>
4454+ <property name="show-other-locations">1</property>
4455+- <child internal-child="accessible">
4456+- <object class="AtkObject">
4457+- <property name="AtkObject::accessible-name" translatable="yes">Places</property>
4458+- </object>
4459+- </child>
4460+ <style>
4461+ <class name="sidebar"/>
4462+ </style>
4463+@@ -42,11 +37,6 @@
4464+ <object class="GtkRevealer" id="browse_header_revealer">
4465+ <property name="visible">1</property>
4466+ <property name="hexpand">1</property>
4467+- <child internal-child="accessible">
4468+- <object class="AtkObject">
4469+- <property name="AtkObject::accessible-name" translatable="yes">Browse Header Revealer</property>
4470+- </object>
4471+- </child>
4472+ <child>
4473+ <object class="GtkBox">
4474+ <property name="visible">1</property>
4475+@@ -60,21 +50,11 @@
4476+ <object class="GtkStack" id="browse_header_stack">
4477+ <property name="visible">1</property>
4478+ <property name="transition-type">crossfade</property>
4479+- <child internal-child="accessible">
4480+- <object class="AtkObject">
4481+- <property name="AtkObject::accessible-name" translatable="yes">Browse Header Stack</property>
4482+- </object>
4483+- </child>
4484+ <child>
4485+ <object class="GtkBox">
4486+ <property name="visible">1</property>
4487+ <property name="spacing">6</property>
4488+ <property name="border-width">6</property>
4489+- <child internal-child="accessible">
4490+- <object class="AtkObject">
4491+- <property name="AtkObject::accessible-name" translatable="yes">PathBar Layer</property>
4492+- </object>
4493+- </child>
4494+ <child>
4495+ <object class="GtkPathBar" id="browse_path_bar">
4496+ <property name="visible">True</property>
4497+@@ -116,12 +96,7 @@
4498+ <property name="no-show-all">1</property>
4499+ <property name="spacing">6</property>
4500+ <property name="border-width">6</property>
4501+- <child internal-child="accessible">
4502+- <object class="AtkObject">
4503+- <property name="AtkObject::accessible-name" translatable="yes">Location Layer</property>
4504+ </object>
4505+- </child>
4506+- </object>
4507+ <packing>
4508+ <property name="name">location</property>
4509+ </packing>
4510+@@ -132,11 +107,6 @@
4511+ <property name="no-show-all">1</property>
4512+ <property name="spacing">6</property>
4513+ <property name="border-width">6</property>
4514+- <child internal-child="accessible">
4515+- <object class="AtkObject">
4516+- <property name="AtkObject::accessible-name" translatable="yes">Search Layer</property>
4517+- </object>
4518+- </child>
4519+ <child type="center">
4520+ <object class="GtkSearchEntry" id="search_entry">
4521+ <property name="visible">1</property>
4522+@@ -194,11 +164,6 @@
4523+ <property name="visible">1</property>
4524+ <property name="has-tooltip">1</property>
4525+ <property name="enable-search">0</property>
4526+- <child internal-child="accessible">
4527+- <object class="AtkObject" id="browse_files_tree_view-atkobject">
4528+- <property name="AtkObject::accessible-name" translatable="yes">Files</property>
4529+- </object>
4530+- </child>
4531+ <signal name="button-press-event" handler="list_button_press_event_cb" swapped="no"/>
4532+ <signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/>
4533+ <signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
4534+--- a/gtk/ui/gtkpathbar.ui
4535++++ b/gtk/ui/gtkpathbar.ui
4536+@@ -6,11 +6,6 @@
4537+ <property name="can-focus">1</property>
4538+ <property name="receives-default">1</property>
4539+ <property name="focus-on-click">0</property>
4540+- <child internal-child="accessible">
4541+- <object class="AtkObject" id="down_slider_button-atkobject">
4542+- <property name="AtkObject::accessible-name" translatable="yes">Down Path</property>
4543+- </object>
4544+- </child>
4545+ <signal name="button-press-event" handler="gtk_path_bar_slider_button_press" swapped="no"/>
4546+ <signal name="button-release-event" handler="gtk_path_bar_slider_button_release" swapped="no"/>
4547+ <signal name="focus-out-event" handler="gtk_path_bar_slider_down_defocus" swapped="no"/>
4548+@@ -31,11 +26,6 @@
4549+ <property name="can-focus">1</property>
4550+ <property name="receives-default">1</property>
4551+ <property name="focus-on-click">0</property>
4552+- <child internal-child="accessible">
4553+- <object class="AtkObject" id="up_slider_button-atkobject">
4554+- <property name="AtkObject::accessible-name" translatable="yes">Up Path</property>
4555+- </object>
4556+- </child>
4557+ <signal name="button-press-event" handler="gtk_path_bar_slider_button_press" swapped="no"/>
4558+ <signal name="button-release-event" handler="gtk_path_bar_slider_button_release" swapped="no"/>
4559+ <signal name="focus-out-event" handler="gtk_path_bar_slider_up_defocus" swapped="no"/>
4560+--- a/gtk/ui/gtkprintunixdialog.ui
4561++++ b/gtk/ui/gtkprintunixdialog.ui
4562+@@ -182,9 +182,6 @@
4563+ <attributes>
4564+ <attribute name="weight" value="bold"/>
4565+ </attributes>
4566+- <accessibility>
4567+- <relation type="label-for" target="range_table"/>
4568+- </accessibility>
4569+ </object>
4570+ <packing>
4571+ <property name="fill">0</property>
4572+@@ -271,22 +268,12 @@
4573+ e.g. 1–3, 7, 11</property>
4574+ <property name="invisible-char">•</property>
4575+ <property name="activates-default">1</property>
4576+- <child internal-child="accessible">
4577+- <object class="AtkObject" id="page_range_entry-atkobject">
4578+- <property name="AtkObject::accessible-name" translatable="yes">Pages</property>
4579+- <property name="AtkObject::accessible-description" translatable="yes">Specify one or more page ranges,
4580+- e.g. 1–3, 7, 11</property>
4581+- </object>
4582+- </child>
4583+ </object>
4584+ <packing>
4585+ <property name="left-attach">1</property>
4586+ <property name="top-attach">3</property>
4587+ </packing>
4588+ </child>
4589+- <accessibility>
4590+- <relation type="labelled-by" target="label_widget1"/>
4591+- </accessibility>
4592+ </object>
4593+ <packing>
4594+ <property name="fill">0</property>
4595+@@ -312,9 +299,6 @@
4596+ <attributes>
4597+ <attribute name="weight" value="bold"/>
4598+ </attributes>
4599+- <accessibility>
4600+- <relation type="label-for" target="grid1"/>
4601+- </accessibility>
4602+ </object>
4603+ <packing>
4604+ <property name="fill">0</property>
4605+@@ -397,9 +381,6 @@
4606+ <property name="height">2</property>
4607+ </packing>
4608+ </child>
4609+- <accessibility>
4610+- <relation type="labelled-by" target="label_widget2"/>
4611+- </accessibility>
4612+ </object>
4613+ <packing>
4614+ <property name="fill">0</property>
4615+@@ -453,9 +434,6 @@
4616+ <attributes>
4617+ <attribute name="weight" value="bold"/>
4618+ </attributes>
4619+- <accessibility>
4620+- <relation type="label-for" target="grid2"/>
4621+- </accessibility>
4622+ </object>
4623+ <packing>
4624+ <property name="fill">0</property>
4625+@@ -622,9 +600,6 @@
4626+ <property name="top-attach">4</property>
4627+ </packing>
4628+ </child>
4629+- <accessibility>
4630+- <relation type="labelled-by" target="label_widget3"/>
4631+- </accessibility>
4632+ </object>
4633+ <packing>
4634+ <property name="fill">0</property>
4635+@@ -650,9 +625,6 @@
4636+ <attributes>
4637+ <attribute name="weight" value="bold"/>
4638+ </attributes>
4639+- <accessibility>
4640+- <relation type="label-for" target="grid3"/>
4641+- </accessibility>
4642+ </object>
4643+ <packing>
4644+ <property name="fill">0</property>
4645+@@ -802,9 +774,6 @@
4646+ <property name="top-attach">4</property>
4647+ </packing>
4648+ </child>
4649+- <accessibility>
4650+- <relation type="labelled-by" target="label_widget4"/>
4651+- </accessibility>
4652+ </object>
4653+ <packing>
4654+ <property name="fill">0</property>
4655+@@ -877,9 +846,6 @@
4656+ <attributes>
4657+ <attribute name="weight" value="bold"/>
4658+ </attributes>
4659+- <accessibility>
4660+- <relation type="label-for" target="grid5"/>
4661+- </accessibility>
4662+ </object>
4663+ <packing>
4664+ <property name="fill">0</property>
4665+@@ -939,9 +905,6 @@
4666+ <property name="top-attach">1</property>
4667+ </packing>
4668+ </child>
4669+- <accessibility>
4670+- <relation type="labelled-by" target="label_widget5"/>
4671+- </accessibility>
4672+ </object>
4673+ <packing>
4674+ <property name="fill">0</property>
4675+@@ -968,9 +931,6 @@
4676+ <attributes>
4677+ <attribute name="weight" value="bold"/>
4678+ </attributes>
4679+- <accessibility>
4680+- <relation type="label-for" target="grid6"/>
4681+- </accessibility>
4682+ </object>
4683+ <packing>
4684+ <property name="fill">0</property>
4685+@@ -1031,13 +991,6 @@
4686+ e.g. 15∶30, 2∶35 pm, 14∶15∶20, 11∶46∶30 am, 4 pm</property>
4687+ <property name="invisible-char">•</property>
4688+ <property name="invisible-char-set">1</property>
4689+- <child internal-child="accessible">
4690+- <object class="AtkObject" id="print_at_entry-atkobject">
4691+- <property name="AtkObject::accessible-name" translatable="yes">Time of print</property>
4692+- <property name="AtkObject::accessible-description" translatable="yes">Specify the time of print,
4693+- e.g. 15∶30, 2∶35 pm, 14∶15∶20, 11∶46∶30 am, 4 pm</property>
4694+- </object>
4695+- </child>
4696+ <signal name="changed" handler="update_print_at_option" object="GtkPrintUnixDialog" swapped="yes"/>
4697+ </object>
4698+ <packing>
4699+@@ -1064,9 +1017,6 @@
4700+ <property name="width">2</property>
4701+ </packing>
4702+ </child>
4703+- <accessibility>
4704+- <relation type="labelled-by" target="label_widget6"/>
4705+- </accessibility>
4706+ </object>
4707+ <packing>
4708+ <property name="fill">0</property>
4709+@@ -1093,9 +1043,6 @@
4710+ <attributes>
4711+ <attribute name="weight" value="bold"/>
4712+ </attributes>
4713+- <accessibility>
4714+- <relation type="label-for" target="grid7"/>
4715+- </accessibility>
4716+ </object>
4717+ <packing>
4718+ <property name="fill">0</property>
4719+@@ -1155,9 +1102,6 @@
4720+ <property name="top-attach">1</property>
4721+ </packing>
4722+ </child>
4723+- <accessibility>
4724+- <relation type="labelled-by" target="label_widget7"/>
4725+- </accessibility>
4726+ </object>
4727+ <packing>
4728+ <property name="fill">0</property>
4729+--- a/gtk/ui/gtkvolumebutton.ui
4730++++ b/gtk/ui/gtkvolumebutton.ui
4731+@@ -19,32 +19,14 @@
4732+ audio-volume-high
4733+ audio-volume-low
4734+ audio-volume-medium</property>
4735+- <child internal-child="accessible">
4736+- <object class="AtkObject" id="GtkVolumeButton-atkobject">
4737+- <property name="AtkObject::accessible-name" translatable="yes">Volume</property>
4738+- <property name="AtkObject::accessible-description" translatable="yes">Turns volume up or down</property>
4739+- </object>
4740+- </child>
4741+ <signal name="query-tooltip" handler="cb_query_tooltip" swapped="no"/>
4742+ <signal name="value-changed" handler="cb_value_changed" swapped="no"/>
4743+ <child internal-child="plus_button">
4744+ <object class="GtkButton" id="scalebutton-plus_button1">
4745+- <child internal-child="accessible">
4746+- <object class="AtkObject" id="scalebutton-plus_button1-atkobject">
4747+- <property name="AtkObject::accessible-name" translatable="yes">Volume Up</property>
4748+- <property name="AtkObject::accessible-description" translatable="yes">Increases the volume</property>
4749+ </object>
4750+ </child>
4751+- </object>
4752+- </child>
4753+ <child internal-child="minus_button">
4754+ <object class="GtkButton" id="scalebutton-minus_button1">
4755+- <child internal-child="accessible">
4756+- <object class="AtkObject" id="scalebutton-minus_button1-atkobject">
4757+- <property name="AtkObject::accessible-name" translatable="yes">Volume Down</property>
4758+- <property name="AtkObject::accessible-description" translatable="yes">Decreases the volume</property>
4759+- </object>
4760+- </child>
4761+ </object>
4762+ </child>
4763+ </template>
4764+--- a/meson.build
4765++++ b/meson.build
4766+@@ -25,8 +25,6 @@
4767+
4768+ glib_req = '>= @0@.@1@.@2@'.format(glib_major_req, glib_minor_req, glib_micro_req)
4769+ pango_req = '>= 1.41.0'
4770+-atk_req = '>= 2.35.1'
4771+-at_spi2_atk_req = '>= 2.15.1'
4772+ cairo_req = '>= 1.14.0'
4773+ gdk_pixbuf_req = '>= 2.30.0'
4774+ introspection_req = '>= 1.39.0'
4775+@@ -289,7 +287,7 @@
4776+ test_cflags = [
4777+ '-fno-strict-aliasing',
4778+ '-Wpointer-arith',
4779+- '-Wimplicit-function-declaration',
4780++ '-Werror=implicit-function-declaration',
4781+ '-Wformat=2',
4782+ '-Wformat-security',
4783+ '-Wnested-externs',
4784+@@ -354,7 +352,6 @@
4785+ confinc = include_directories('.')
4786+ gdkinc = include_directories('gdk')
4787+ gtkinc = include_directories('gtk')
4788+-libgailutilinc = include_directories('libgail-util')
4789+ testinc = include_directories('tests')
4790+
4791+ # Dependencies
4792+@@ -449,8 +446,6 @@
4793+ fallback : ['gdk-pixbuf', 'gdkpixbuf_dep'])
4794+ epoxy_dep = dependency('epoxy', version: epoxy_req,
4795+ fallback: ['libepoxy', 'libepoxy_dep'])
4796+-atk_dep = dependency('atk', version: atk_req,
4797+- fallback : ['atk', 'libatk_dep'])
4798+
4799+ # Update once Meson can have deps declared in a declarative manner or can
4800+ # find deps properly with CMake again
4801+@@ -459,7 +454,6 @@
4802+ iso_codes_dep = dependency('iso-codes', required: false)
4803+
4804+ fontconfig_dep = [] # only used in x11 backend
4805+-atkbridge_dep = [] # only used in x11 backend
4806+
4807+ if os_win32
4808+ platform_gio_dep = giowin32_dep
4809+@@ -548,8 +542,6 @@
4810+ cdata.set('HAVE_HARFBUZZ', harfbuzz_dep.found() ? 1 : false)
4811+ cdata.set('HAVE_PANGOFT', pangoft_dep.found() ? 1 : false)
4812+
4813+-atk_pkgs = ['atk']
4814+-
4815+ wayland_pkgs = []
4816+ if wayland_enabled
4817+ wlclientdep = dependency('wayland-client', version: wayland_req)
4818+@@ -579,7 +571,6 @@
4819+ xfixes_dep = dependency('xfixes', required: false)
4820+ xcomposite_dep = dependency('xcomposite', required: false)
4821+ fontconfig_dep = dependency('fontconfig', fallback: ['fontconfig', 'fontconfig_dep'])
4822+- atkbridge_dep = dependency('atk-bridge-2.0', version: at_spi2_atk_req)
4823+
4824+ backend_immodules += ['xim']
4825+
4826+@@ -598,8 +589,6 @@
4827+ x11_pkgs += ['xdamage']
4828+ endif
4829+
4830+- atk_pkgs += ['atk-bridge-2.0']
4831+-
4832+ cdata.set('HAVE_XDAMAGE', xdamage_dep.found() ? 1 : false)
4833+ cdata.set('HAVE_XCURSOR', xcursor_dep.found() ? 1 : false)
4834+ cdata.set('HAVE_XCOMPOSITE', xcomposite_dep.found() ? 1 : false)
4835+@@ -866,7 +855,6 @@
4836+ subdir('gdk')
4837+ subdir('gtk')
4838+ subdir('modules')
4839+-subdir('libgail-util')
4840+ if get_option('demos')
4841+ subdir('demos')
4842+ endif
4843+@@ -928,7 +916,6 @@
4844+ ['epoxy', epoxy_req] + cloudproviders_packages))
4845+
4846+ gtk_packages = ' '.join([
4847+- atk_dep.name(), atk_req,
4848+ cairo_packages,
4849+ pixbuf_dep.name(), gdk_pixbuf_req,
4850+ 'gio-2.0', glib_req,
4851+@@ -938,7 +925,7 @@
4852+ # Requires.private
4853+ pc_gdk_extra_libs += cairo_libs
4854+
4855+-gtk_private_packages = atk_pkgs + wayland_pkgs + ['epoxy', epoxy_req]
4856++gtk_private_packages = wayland_pkgs + ['epoxy', epoxy_req]
4857+ if wayland_enabled or x11_enabled
4858+ gtk_private_packages += ['pangoft2']
4859+ endif
+82,
-0
1@@ -0,0 +1,82 @@
2+--- a/gtk/a11y/gtkplugaccessible.h
3++++ b/gtk/a11y/gtkplugaccessible.h
4+@@ -24,48 +24,4 @@
5+
6+ #include <gtk/a11y/gtkwindowaccessible.h>
7+
8+-#if ATK_CHECK_VERSION(2,35,1)
9+-
10+-#define GTK_HAVE_ATK_PLUG_SET_CHILD
11+-
12+-G_BEGIN_DECLS
13+-
14+-#define GTK_TYPE_PLUG_ACCESSIBLE (gtk_plug_accessible_get_type ())
15+-#define GTK_PLUG_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PLUG_ACCESSIBLE, GtkPlugAccessible))
16+-#define GTK_PLUG_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PLUG_ACCESSIBLE, GtkPlugAccessibleClass))
17+-#define GTK_IS_PLUG_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PLUG_ACCESSIBLE))
18+-#define GTK_IS_PLUG_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PLUG_ACCESSIBLE))
19+-#define GTK_PLUG_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PLUG_ACCESSIBLE, GtkPlugAccessibleClass))
20+-
21+-typedef struct _GtkPlugAccessible GtkPlugAccessible;
22+-typedef struct _GtkPlugAccessibleClass GtkPlugAccessibleClass;
23+-typedef struct _GtkPlugAccessiblePrivate GtkPlugAccessiblePrivate;
24+-
25+-/**
26+- * GtkPlugAccessible:
27+- *
28+- * Since: 3.24.30
29+- */
30+-struct _GtkPlugAccessible
31+-{
32+- GtkWindowAccessible parent;
33+-
34+- GtkPlugAccessiblePrivate *priv;
35+-};
36+-
37+-struct _GtkPlugAccessibleClass
38+-{
39+- GtkWindowAccessibleClass parent_class;
40+-};
41+-
42+-GDK_AVAILABLE_IN_ALL
43+-GType gtk_plug_accessible_get_type (void);
44+-
45+-GDK_AVAILABLE_IN_ALL
46+-gchar *gtk_plug_accessible_get_id (GtkPlugAccessible *plug);
47+-
48+-G_END_DECLS
49+-
50+-#endif /* ATK_CHECK_VERSION(2,35,1) */
51+-
52+ #endif /* __GTK_PLUG_ACCESSIBLE_H__ */
53+--- a/gtk/gtkplug.c
54++++ b/gtk/gtkplug.c
55+@@ -178,8 +178,6 @@ gtk_plug_class_init (GtkPlugClass *class)
56+ widget_class->unmap = gtk_plug_unmap;
57+ widget_class->focus = gtk_plug_focus;
58+
59+- gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_PANEL);
60+-
61+ container_class->check_resize = gtk_plug_check_resize;
62+
63+ window_class->set_focus = gtk_plug_set_focus;
64+diff --git a/gtk/gtksocket.c b/gtk/gtksocket.c
65+index ffdaf8bee4..18b3d5563d 100644
66+--- a/gtk/gtksocket.c
67++++ b/gtk/gtksocket.c
68+@@ -271,7 +271,6 @@ gtk_socket_class_init (GtkSocketClass *class)
69+ G_TYPE_BOOLEAN, 0);
70+
71+
72+- gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SOCKET_ACCESSIBLE);
73+ }
74+
75+ static void
76+@@ -1432,7 +1431,6 @@ _gtk_socket_accessible_embed (GtkWidget *socket, GdkWindow *window)
77+ return;
78+ }
79+
80+- gtk_socket_accessible_embed (GTK_SOCKET_ACCESSIBLE (gtk_widget_get_accessible (socket)), (gchar*) data);
81+ XFree (data);
82+
83+ return;
+3,
-0
1@@ -0,0 +1,3 @@
2+#!/bin/sh -e
3+
4+glib-compile-schemas /usr/share/glib-2.0/schemas/
+5,
-0
1@@ -0,0 +1,5 @@
2+https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.41.tar.xz
3+patches/01-no-fribidi.patch
4+patches/02-fix-firefox.patch
5+patches/03-no-accessibility.patch
6+patches/04-no-atk-extra.patch
+1,
-0
1@@ -0,0 +1 @@
2+3.24.41 1
+19,
-0
1@@ -0,0 +1,19 @@
2+#!/bin/sh -e
3+
4+# Change the order for checking installed compilers as
5+# the ccache clang symlink might exist, but clang might not be installed.
6+sed 's/clang gcc cc/cc clang gcc/g' icu4c/source/configure > _
7+mv -f _ icu4c/source/configure
8+sed 's/clang++ g++ c++/c++ clang++ g++/g' icu4c/source/configure > _
9+mv -f _ icu4c/source/configure
10+
11+# license installation seems to give us a symolic link loop, which breaks the install
12+sed '/LICENSE/d' icu4c/source/Makefile.in > _
13+mv -f _ icu4c/source/Makefile.in
14+
15+sh icu4c/source/configure \
16+ --prefix=/ \
17+ --sbindir=/bin
18+
19+make
20+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+927feda0b91cfd3600a46b58a4a99492dbc38ed47ceea58d7c1ba9bdfcc3f0222f
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/unicode-org/icu/archive/refs/tags/release-74-2.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+74.2 1
+1,
-1
1@@ -1 +1 @@
2-0664010014af50e8a7077148cf58c1fa57d5c3137bc899977d307396757304cef7
3+a520a54a086dd165fd608d4f30eb3c91dfb3a9c9bd328f4028fc30c514903de103
+1,
-1
1@@ -2,7 +2,7 @@
2 # both formats by uncommenting giflib and tiff.
3 # giflib
4 # tiff
5-freetype
6+freetype-harfbuzz
7 libXext
8 libjpeg-turbo
9 libpng
+1,
-1
1@@ -1 +1 @@
2-https://fossies.org/linux/misc/imlib2-1.12.1.tar.gz
3+https://fossies.org/linux/misc/imlib2-1.12.2.tar.xz
+1,
-1
1@@ -1 +1 @@
2-1.12.1 1
3+1.12.2 1
+1,
-2
1@@ -10,8 +10,7 @@ TMPDIR="$1/tmp"
2 --mandir=/share/man \
3 --localstatedir=/var \
4 --without-xmlto \
5- --disable-specs \
6- --disable-shared
7+ --disable-specs
8
9 make
10 make install
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+TMPDIR="$1/tmp"
7+
8+./configure \
9+ --prefix=/ \
10+ --sysconfdir=/etc \
11+ --mandir=//share/man \
12+ --localstatedir=/var \
13+ --without-xmlto \
14+ --disable-specs \
15+ --disable-shared \
16+ --enable-static
17+
18+make
19+make install
20+
21+# Some X11 packages install to //share.
22+! [ -d "$1//share/pkgconfig" ] || {
23+ mkdir -p "$1//lib"
24+ mv -f "$1//share/pkgconfig" "$1//lib"
25+}
26+
27+# We need to keep this around.
28+! [ -d "$1//share/aclocal" ] || {
29+ mkdir -p "$TMPDIR"
30+ mv -f "$1//share/aclocal" "$TMPDIR"
31+}
32+
33+# Restore kept directories.
34+! [ -d "$TMPDIR" ] || {
35+ mv -f "$TMPDIR/"* "$1//share"
36+ rm -rf "$TMPDIR"
37+}
+1,
-0
1@@ -0,0 +1 @@
2+78c2f6093f3d4b18cd716b896b91d496cf7d41b1d48365e48a09e9abdce50384fc
+3,
-0
1@@ -0,0 +1,3 @@
2+libXfixes
3+pkgconf make
4+xorgproto make
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/PACKAGE-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/libXcomposite-0.4.6.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+0.4.6 1
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+TMPDIR="$1/tmp"
7+
8+./configure \
9+ --prefix=/ \
10+ --sysconfdir=/etc \
11+ --mandir=/share/man \
12+ --localstatedir=/var \
13+ --without-xmlto \
14+ --disable-specs \
15+ --disable-shared \
16+ --enable-static
17+
18+make
19+make install
20+
21+# Some X11 packages install to /share.
22+! [ -d "$1/share/pkgconfig" ] || {
23+ mkdir -p "$1/lib"
24+ mv -f "$1/share/pkgconfig" "$1/lib"
25+}
26+
27+# We need to keep this around.
28+! [ -d "$1/share/aclocal" ] || {
29+ mkdir -p "$TMPDIR"
30+ mv -f "$1/share/aclocal" "$TMPDIR"
31+}
32+
33+# Restore kept directories.
34+! [ -d "$TMPDIR" ] || {
35+ mv -f "$TMPDIR/"* "$1/share"
36+ rm -rf "$TMPDIR"
37+}
+1,
-0
1@@ -0,0 +1 @@
2+26a322123196adc8c5a09514d565b907b34cca67fe0824e09367efd65e75cf7d05
+4,
-0
1@@ -0,0 +1,4 @@
2+libXfixes
3+libXrender
4+pkgconf make
5+xorgproto make
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/PACKAGE-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/libXcursor-1.2.1.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.2.1 1
+1,
-2
1@@ -10,8 +10,7 @@ TMPDIR="$1/tmp"
2 --mandir=/share/man \
3 --localstatedir=/var \
4 --without-xmlto \
5- --disable-specs \
6- --disable-shared
7+ --disable-specs
8
9 make
10 make install
+5,
-3
1@@ -5,12 +5,14 @@ export DESTDIR="$1"
2 TMPDIR="$1/tmp"
3
4 ./configure \
5- --prefix=/usr \
6+ --prefix=/ \
7 --sysconfdir=/etc \
8- --mandir=/usr/share/man \
9+ --mandir=/share/man \
10 --localstatedir=/var \
11 --without-xmlto \
12- --disable-specs
13+ --disable-specs \
14+ --disable-shared \
15+ --enable-static
16
17 make
18 make install
+1,
-1
1@@ -1,4 +1,4 @@
2-freetype
3+freetype-harfbuzz
4 libfontenc
5 pkgconf make
6 xorgproto make
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+TMPDIR="$1/tmp"
7+
8+./configure \
9+ --prefix=/ \
10+ --sysconfdir=/etc \
11+ --mandir=/share/man \
12+ --localstatedir=/var \
13+ --without-xmlto \
14+ --disable-specs \
15+ --disable-shared \
16+ --enable-static
17+
18+make
19+make install
20+
21+# Some X11 packages install to /share.
22+! [ -d "$1/share/pkgconfig" ] || {
23+ mkdir -p "$1/lib"
24+ mv -f "$1/share/pkgconfig" "$1/lib"
25+}
26+
27+# We need to keep this around.
28+! [ -d "$1/share/aclocal" ] || {
29+ mkdir -p "$TMPDIR"
30+ mv -f "$1/share/aclocal" "$TMPDIR"
31+}
32+
33+# Restore kept directories.
34+! [ -d "$TMPDIR" ] || {
35+ mv -f "$TMPDIR/"* "$1/share"
36+ rm -rf "$TMPDIR"
37+}
+1,
-0
1@@ -0,0 +1 @@
2+bcff239c6139ed140d45ed4358d430a910152929f7ecf9557db7eec454e268066d
+5,
-0
1@@ -0,0 +1,5 @@
2+fontconfig make
3+freetype-harfubuzz make
4+libXrender make
5+pkgconf make
6+xorgproto make
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/PACKAGE-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/libXft-2.3.8.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+2.3.8 1
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+TMPDIR="$1/tmp"
7+
8+./configure \
9+ --prefix=/ \
10+ --sysconfdir=/etc \
11+ --mandir=/share/man \
12+ --localstatedir=/var \
13+ --without-xmlto \
14+ --disable-specs \
15+ --disable-shared \
16+ --enable-static
17+
18+make
19+make install
20+
21+# Some X11 packages install to /share.
22+! [ -d "$1/share/pkgconfig" ] || {
23+ mkdir -p "$1/lib"
24+ mv -f "$1/share/pkgconfig" "$1/lib"
25+}
26+
27+# We need to keep this around.
28+! [ -d "$1/share/aclocal" ] || {
29+ mkdir -p "$TMPDIR"
30+ mv -f "$1/share/aclocal" "$TMPDIR"
31+}
32+
33+# Restore kept directories.
34+! [ -d "$TMPDIR" ] || {
35+ mv -f "$TMPDIR/"* "$1/share"
36+ rm -rf "$TMPDIR"
37+}
+1,
-0
1@@ -0,0 +1 @@
2+4275827cb3012d07b89cc7eacf695c15850a6df065228eae33bc5cef5ceba15bf6
+3,
-0
1@@ -0,0 +1,3 @@
2+libXext
3+pkgconf make
4+xorgproto
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/PACKAGE-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/libXinerama-1.1.5.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.1.5 1
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+TMPDIR="$1/tmp"
7+
8+./configure \
9+ --prefix=/ \
10+ --sysconfdir=/etc \
11+ --mandir=/share/man \
12+ --localstatedir=/var \
13+ --without-xmlto \
14+ --disable-specs \
15+ --disable-shared \
16+ --enable-static
17+
18+make
19+make install
20+
21+# Some X11 packages install to /share.
22+! [ -d "$1/share/pkgconfig" ] || {
23+ mkdir -p "$1/lib"
24+ mv -f "$1/share/pkgconfig" "$1/lib"
25+}
26+
27+# We need to keep this around.
28+! [ -d "$1/share/aclocal" ] || {
29+ mkdir -p "$TMPDIR"
30+ mv -f "$1/share/aclocal" "$TMPDIR"
31+}
32+
33+# Restore kept directories.
34+! [ -d "$TMPDIR" ] || {
35+ mv -f "$TMPDIR/"* "$1/share"
36+ rm -rf "$TMPDIR"
37+}
+1,
-0
1@@ -0,0 +1 @@
2+6611045d6721e4bb1041b8b0daf2b531a1a084f68af736ac6bc0ebb5d63ff780ea
+4,
-0
1@@ -0,0 +1,4 @@
2+libXext
3+libXrender
4+pkgconf make
5+xorgproto make
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/PACKAGE-VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/lib/libXrandr-1.5.4.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.5.4 1
+2,
-2
1@@ -2,7 +2,7 @@
2
3 export DESTDIR="$1"
4
5-muon setup \
6+meson setup \
7 -Dprefix=/ \
8 -Dintel=disabled \
9 -Dnouveau=disabled \
10@@ -14,4 +14,4 @@ muon setup \
11 build
12
13 samu -C build
14-muon -C build install
15+samu -C build install
+1,
-1
1@@ -1,4 +1,4 @@
2 libpciaccess
3 #linux-headers make
4-muon make
5+meson make
6 pkgconf make
+42,
-0
1@@ -0,0 +1,42 @@
2+libelf
3+________________________________________________________________________________
4+
5+NOTE: The libelf implementation is one component of elfutils of which the
6+ following information is about.
7+
8+elfutils is a collection of utilities and libraries to read, create and modify
9+ELF binary files, find and handle DWARF debug data, symbols, thread state and
10+stacktraces for processes and core files on GNU/Linux. [0]
11+
12+Upstream: https://sourceware.org/elfutils/
13+
14+
15+[000] Index
16+________________________________________________________________________________
17+
18+* Installation ........................................................... [001]
19+* Usage .................................................................. [002]
20+* References ............................................................. [003]
21+
22+
23+[001] Installation
24+________________________________________________________________________________
25+
26++------------------------------------------------------------------------------+
27+| |
28+| $ kiss b libelf |
29+| |
30++------------------------------------------------------------------------------+
31+
32+
33+[002] Usage
34+________________________________________________________________________________
35+
36+Refer to the manual pages for more information.
37+
38+
39+[003] References
40+________________________________________________________________________________
41+
42+[0] https://sourceware.org/elfutils/
43+
+29,
-0
1@@ -0,0 +1,29 @@
2+#!/bin/sh -e
3+
4+patch -p1 < musl.patch
5+
6+# Build sometimes forces -Werror.
7+export CFLAGS="$CFLAGS -Wno-error"
8+
9+sh ./configure \
10+ --prefix=/ \
11+ --disable-symbol-versioning \
12+ --disable-debuginfod \
13+ --disable-libdebuginfod \
14+ --disable-nls \
15+ ac_cv_c99=yes # Override check for Clang.
16+
17+# Utility functions that need argp and fts, not strictly necessary
18+# for the library to function
19+:>libdwfl/argp-std.c
20+:>libdwfl/linux-kernel-modules.c
21+
22+# Useless stuff
23+printf '%s\n' "all:" "install:" > src/Makefile
24+
25+# linux-lts will error out on unknown type name for Relr
26+sed '/Relr/d' libelf/gelf.h > _
27+mv -f _ libelf/gelf.h
28+
29+make
30+make DESTDIR="$1" install
+2,
-0
1@@ -0,0 +1,2 @@
2+f3449fb0ddb3c114f4e24689ab505542f0bad9ee84f92ff8beced7e1ccbf57c6e1
3+ca809d922b60ed548f7ce36bba97d6b0620d602a9bf31164022e1d805cfc83fb03
+2,
-0
1@@ -0,0 +1,2 @@
2+pkgconf make
3+zlib
+56,
-0
1@@ -0,0 +1,56 @@
2+/var/db/kiss/installed/libelf/version
3+/var/db/kiss/installed/libelf/sources
4+/var/db/kiss/installed/libelf/patches/musl.patch
5+/var/db/kiss/installed/libelf/patches/
6+/var/db/kiss/installed/libelf/manifest
7+/var/db/kiss/installed/libelf/depends
8+/var/db/kiss/installed/libelf/checksums
9+/var/db/kiss/installed/libelf/build
10+/var/db/kiss/installed/libelf/README
11+/var/db/kiss/installed/libelf/
12+/var/db/kiss/installed/
13+/var/db/kiss/
14+/var/db/
15+/var/
16+/usr/share/man/man3/elf_update.3
17+/usr/share/man/man3/elf_getdata.3
18+/usr/share/man/man3/elf_clone.3
19+/usr/share/man/man3/elf_begin.3
20+/usr/share/man/man3/
21+/usr/share/man/man1/eu-srcfiles.1
22+/usr/share/man/man1/eu-readelf.1
23+/usr/share/man/man1/eu-elfclassify.1
24+/usr/share/man/man1/
25+/usr/share/man/
26+/usr/share/
27+/usr/lib/pkgconfig/libelf.pc
28+/usr/lib/pkgconfig/libdw.pc
29+/usr/lib/pkgconfig/
30+/usr/lib/libelf.so.1
31+/usr/lib/libelf.so
32+/usr/lib/libelf.a
33+/usr/lib/libelf-0.190.so
34+/usr/lib/libdw.so.1
35+/usr/lib/libdw.so
36+/usr/lib/libdw.a
37+/usr/lib/libdw-0.190.so
38+/usr/lib/libasm.so.1
39+/usr/lib/libasm.so
40+/usr/lib/libasm.a
41+/usr/lib/libasm-0.190.so
42+/usr/lib/
43+/usr/include/nlist.h
44+/usr/include/libelf.h
45+/usr/include/gelf.h
46+/usr/include/elfutils/version.h
47+/usr/include/elfutils/libdwfl.h
48+/usr/include/elfutils/libdwelf.h
49+/usr/include/elfutils/libdw.h
50+/usr/include/elfutils/libasm.h
51+/usr/include/elfutils/known-dwarf.h
52+/usr/include/elfutils/elf-knowledge.h
53+/usr/include/elfutils/
54+/usr/include/dwarf.h
55+/usr/include/
56+/usr/bin/
57+/usr/
+59,
-0
1@@ -0,0 +1,59 @@
2+diff --git a/configure b/configure
3+index 562d9f4..8c45cc1 100755
4+--- a/configure
5++++ b/configure
6+@@ -8880,7 +8880,7 @@ LIBS="$saved_LIBS"
7+ case "$ac_cv_search_argp_parse" in
8+ no) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
9+ printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
10+-as_fn_error $? "failed to find argp_parse
11++: $? "failed to find argp_parse
12+ See \`config.log' for more details" "$LINENO" 5; } ;;
13+ -l*) argp_LDADD="$ac_cv_search_argp_parse" ;;
14+ *) argp_LDADD= ;;
15+@@ -8951,7 +8951,7 @@ LIBS="$saved_LIBS"
16+ case "$ac_cv_search_fts_close" in
17+ no) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
18+ printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
19+-as_fn_error $? "failed to find fts_close
20++: $? "failed to find fts_close
21+ See \`config.log' for more details" "$LINENO" 5; } ;;
22+ -l*) fts_LIBS="$ac_cv_search_fts_close" ;;
23+ *) fts_LIBS= ;;
24+@@ -9022,7 +9022,7 @@ LIBS="$saved_LIBS"
25+ case "$ac_cv_search__obstack_free" in
26+ no) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
27+ printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
28+-as_fn_error $? "failed to find _obstack_free
29++: $? "failed to find _obstack_free
30+ See \`config.log' for more details" "$LINENO" 5; } ;;
31+ -l*) obstack_LIBS="$ac_cv_search__obstack_free" ;;
32+ *) obstack_LIBS= ;;
33+diff --git a/lib/Makefile.in b/lib/Makefile.in
34+index e84bc45..1f3be35 100644
35+--- a/lib/Makefile.in
36++++ b/lib/Makefile.in
37+@@ -117,8 +117,8 @@ libeu_a_AR = $(AR) $(ARFLAGS)
38+ libeu_a_LIBADD =
39+ am_libeu_a_OBJECTS = xasprintf.$(OBJEXT) xstrdup.$(OBJEXT) \
40+ xstrndup.$(OBJEXT) xmalloc.$(OBJEXT) next_prime.$(OBJEXT) \
41+- crc32.$(OBJEXT) crc32_file.$(OBJEXT) color.$(OBJEXT) \
42+- error.$(OBJEXT) printversion.$(OBJEXT)
43++ crc32.$(OBJEXT) crc32_file.$(OBJEXT) \
44++ error.$(OBJEXT)
45+ libeu_a_OBJECTS = $(am_libeu_a_OBJECTS)
46+ AM_V_P = $(am__v_P_@AM_V@)
47+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
48+@@ -409,10 +409,10 @@ textrel_check = if $(READELF) -d $@ | grep -F -q TEXTREL; then $(textrel_found);
49+ noinst_LIBRARIES = libeu.a
50+ libeu_a_SOURCES = xasprintf.c xstrdup.c xstrndup.c xmalloc.c next_prime.c \
51+ crc32.c crc32_file.c \
52+- color.c error.c printversion.c
53++ color.c
54+
55+ noinst_HEADERS = fixedsizehash.h libeu.h system.h dynamicsizehash.h list.h \
56+- eu-config.h color.h printversion.h bpf.h \
57++ eu-config.h bpf.h \
58+ atomics.h stdatomic-fbsd.h dynamicsizehash_concurrent.h
59+
60+ EXTRA_DIST = dynamicsizehash.c dynamicsizehash_concurrent.c
+2,
-0
1@@ -0,0 +1,2 @@
2+https://sourceware.org/elfutils/ftp/0.190/elfutils-0.190.tar.bz2
3+patches/musl.patch
+1,
-0
1@@ -0,0 +1 @@
2+0.190 2
+17,
-0
1@@ -0,0 +1,17 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Disable building tests.
7+: > test/meson.build
8+
9+meson setup \
10+ -Dprefix=/ \
11+ -Dsysconfdir=/etc \
12+ -Dmandir=/usr/share/man \
13+ -Dpkg_config_path=/lib/pkgconfig \
14+ -Dx11=true \
15+ output
16+
17+samu -C output
18+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+df74575d2a4ca65bf98d15ed6357cb066b6369704137e53b5e1d35b6d582657e12
+3,
-0
1@@ -0,0 +1,3 @@
2+libX11 make
3+mesa make
4+meson make
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/anholt/libepoxy/archive/VERSION.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/anholt/libepoxy/archive/1.5.10.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.5.10 1
+0,
-1
1@@ -3,7 +3,6 @@
2 ./configure \
3 --prefix=/ \
4 --disable-exec-static-tramp \
5- --disable-shared \
6 --enable-static
7
8 make
+15,
-0
1@@ -0,0 +1,15 @@
2+#!/bin/sh -e
3+
4+# Missing includes...
5+sed '/^#ifdef USE_JENT/a #include <fcntl.h>\n#include <limits.h>' \
6+ random/rndjent.c > _
7+mv -f _ random/rndjent.c
8+
9+./configure \
10+ --prefix=/ \
11+ --sysconfdir=/etc \
12+ --mandir=/share/man \
13+ --localstatedir=/var
14+
15+make
16+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+d87cb6843d1cbee907f15ab1d14e3fb5d6979ca5e7567d0898c43800507593176e
+1,
-0
1@@ -0,0 +1 @@
2+libgpg-error
+1,
-0
1@@ -0,0 +1 @@
2+https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.3.tar.bz2
+1,
-0
1@@ -0,0 +1 @@
2+1.10.3 1
+10,
-0
1@@ -0,0 +1,10 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --sysconfdir=/etc \
7+ --mandir=/share/man \
8+ --localstatedir=/var
9+
10+make
11+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+192f7986cf23f753085f607ca7950707683a74cf7dabf867896128feeeb782ea19
+1,
-0
1@@ -0,0 +1 @@
2+https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.47.tar.bz2
+1,
-0
1@@ -0,0 +1 @@
2+1.47 1
+0,
-55
1@@ -1,55 +0,0 @@
2-libjpeg-turbo
3-________________________________________________________________________________
4-
5-libjpeg-turbo is a fork of libjpeg that uses SIMD instructions to accelerate
6-baseline JPEG encoding and decoding. Many projects are now using libjpeg-turbo
7-instead of libjpeg, including popular Linux distributions (Fedora, Debian,
8-Mageia, openSUSE, ...), Mozilla, and Chrome. Apart from performance, some
9-projects have chosen to use libjpeg-turbo because it allows them to retain
10-backward ABI compatibility with the older libjpeg v6b release. libjpeg v7, v8
11-and v9 broke ABI compatibility with prior releases. [0]
12-
13-Upstream: https://libjpeg-turbo.org/
14-
15-
16-[000] Index
17-________________________________________________________________________________
18-
19-* Installation ........................................................... [001]
20-* Usage .................................................................. [002]
21-* References ............................................................. [003]
22-
23-
24-[001] Installation
25-________________________________________________________________________________
26-
27-+------------------------------------------------------------------------------+
28-| |
29-| $ kiss b libjpeg-turbo |
30-| |
31-+------------------------------------------------------------------------------+
32-
33-
34-[002] Usage
35-________________________________________________________________________________
36-
37-+--------------+---------------------------------------------------------------+
38-| Tool | Purpose |
39-+--------------+---------------------------------------------------------------+
40-| | |
41-| wrjpgcom | Insert text comments into a JPEG file. |
42-| rdjpgcom | Display text comments from a JPEG file. |
43-| jpegtran | Lossless transformation of JPEG files. |
44-| djpeg | Decompress a JPEG file to an image file. |
45-| cjpeg | Compress a JPEG file to an image file. |
46-| | |
47-+--------------+---------------------------------------------------------------+
48-
49-Refer to the manual pages and command help output for more information.
50-
51-
52-[003] References
53-________________________________________________________________________________
54-
55-[0] https://en.wikipedia.org/wiki/Libjpeg#libjpeg-turbo
56-
+3,
-0
1@@ -7,6 +7,9 @@ patch -p1 < no-docs.patch
2 cmake -B build \
3 -DCMAKE_INSTALL_PREFIX=/ \
4 -DCMAKE_INSTALL_LIBDIR=/lib \
5+ -DCMAKE_INSTALL_BINDIR=/bin \
6+ -DCMAKE_INSTALL_INCLUDEDIR=/bin \
7+ -DCMAKE_INSTALL_MANDIR=/share \
8 -DCMAKE_SHARED_LIBS=False \
9 -DCMAKE_STATIC_LIBS=True \
10 -DCMAKE_BUILD_TYPE=Release \
+10,
-0
1@@ -0,0 +1,10 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --disable-examples \
7+ --disable-python-bindings \
8+ --enable-lib-only
9+
10+make
11+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+10b0d4e14db85112588ee969bf3590c67cfcc97855b2372b8b78778b9a4eb22480
+1,
-0
1@@ -0,0 +1 @@
2+python
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/nghttp2/nghttp2/releases/download/vVERSION/nghttp2-VERSION.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/nghttp2/nghttp2/releases/download/v1.59.0/nghttp2-1.59.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+1.59.0 1
+2,
-2
1@@ -4,10 +4,10 @@ patch -p1 < lfs64.patch
2
3 export DESTDIR="$1"
4
5-muon setup \
6+meson setup \
7 -Dprefix=/ \
8 -Ddefault_library=static \
9 build
10
11 samu -C build
12-muon -C build install
13+samu -C build install
+1,
-2
1@@ -1,3 +1,2 @@
2-muon make
3-#samurai make
4+meson make
5 zlib
+7,
-0
1@@ -0,0 +1,7 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/
6+
7+make
8+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+75520a5e4ef205ad5fcb236075182c9e7aeb4f3122ebdb32854a14f49dc5267695
+2,
-0
1@@ -0,0 +1,2 @@
2+icu
3+python make
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+0.21.5 1
+35,
-0
1@@ -0,0 +1,35 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Remove subprojects folder to avoid cloning them via git.
7+rm -rf subprojects/
8+
9+# Disable nls.
10+sed "/subdir('po')/d" meson.build > _
11+mv -f _ meson.build
12+
13+# Enable gobject-introspection if it is installed.
14+pkg-config --exists gobject-introspection-1.0 && gi=en
15+
16+# Needed to make the build succeed.
17+export CFLAGS="$CFLAGS -w"
18+export CXXFLAGS="$CXXFLAGS -w"
19+
20+meson setup \
21+ -Dprefix=/ \
22+ -Dsysconfdir=/etc \
23+ -Dlocalstatedir=/var \
24+ -Dtests=false \
25+ -Ddocs=disabled \
26+ -Dtls_check=false \
27+ -Dvapi=disabled \
28+ -Dgssapi=disabled \
29+ -Dbrotli=disabled \
30+ -Dsysprof=disabled \
31+ -Dpkcs11_tests=disabled \
32+ -Dintrospection="${gi:-dis}abled" \
33+ output
34+
35+samu -C output
36+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+eb3427e1db6dbf5a4a6ba8201659538c4217b825b1626491d0728b6ca694c3cb45
+8,
-0
1@@ -0,0 +1,8 @@
2+glib
3+glib-networking
4+libnghttp2
5+libpsl
6+libxml2
7+meson make
8+pkgconf make
9+sqlite
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/libsoup/MAJOR.MINOR/libsoup-VERSION.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/libsoup/3.4/libsoup-3.4.4.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+3.4.4 1
+11,
-0
1@@ -0,0 +1,11 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --disable-tiff \
7+ --enable-libwebpmux \
8+ --enable-libwebpdemux \
9+ --enable-libwebpdecoder
10+
11+make
12+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+da08f0f73f67b9fb52cf8285b909400aa5b32afc6f3cd4c718e57cd31a16bce512
+2,
-0
1@@ -0,0 +1,2 @@
2+libjpeg-turbo
3+libpng
+1,
-0
1@@ -0,0 +1 @@
2+https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.3.2 1
+16,
-0
1@@ -0,0 +1,16 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+meson setup \
7+ -Dprefix=/ \
8+ -Dlibexecdir=/usr/lib \
9+ -Ddefault_library=static \
10+ -Denable-docs=false \
11+ -Denable-wayland=false \
12+ -Denable-xkbregistry=false \
13+ -Dpkg_config_path=/lib/pkgconfig \
14+ output
15+
16+samu -C output
17+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+ce9e2187d72a7d689110caa9bf84aee27bcc7f23317ea72df6c7620ebdc57ad900
+2,
-0
1@@ -0,0 +1,2 @@
2+meson make
3+pkgconf make
+1,
-0
1@@ -0,0 +1 @@
2+https://xkbcommon.org/download/libxkbcommon-1.6.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+1.6.0 1
+11,
-0
1@@ -0,0 +1,11 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --with-threads \
7+ --with-history \
8+ --without-python \
9+ --without-icu
10+
11+make
12+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+326c3a05dcfe647ef4e1def8aa7f8d7d96b0a2f2f9f2ddac2b982fc1e485a9264e
+1,
-0
1@@ -0,0 +1 @@
2+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.5.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+2.11.5 1
+11,
-0
1@@ -0,0 +1,11 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --without-python \
7+ --without-debugger \
8+ --without-debug \
9+ --without-crypto
10+
11+make
12+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+51a7dfbbbc90eb66d78659d66889f34cea7c1b31eb6246af916335e37e1e3787d9
+2,
-0
1@@ -0,0 +1,2 @@
2+libxml2
3+pkgconf make
+1,
-0
1@@ -0,0 +1 @@
2+https://fossies.org/linux/www/libxslt-1.1.38.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+1.1.38 2
+7,
-0
1@@ -0,0 +1,7 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/
6+
7+make
8+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+64cd0f69eb55904fdf4a6f20d46d565ab2433ae494e76edbdf835a25b57c98d9c7
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+0.2.5 1
+36,
-0
1@@ -0,0 +1,36 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+# Fix issues with musl and firefox.
7+# https://bugs.freedesktop.org/show_bug.cgi?id=35268
8+# https://github.com/mesa3d/mesa/commit/9f37c9903b87f86a533bfaffa72f0ecb285b02b2
9+# https://gitlab.freedesktop.org/mesa/mesa/-/issues/966
10+sed "/pre_args += '-DUSE_ELF_TLS'/d" meson.build > _
11+mv -f _ meson.build
12+
13+# To prevent the need for users to fork the mesa package to add
14+# libglvnd support, the below code checks for its availability
15+# and enables it if present. ie: install glvnd, rebuild mesa.
16+! kiss list libglvnd >/dev/null 2>&1 || glvnd_enabled=true
17+
18+meson setup \
19+ -Dprefix=/ \
20+ -Dsysconfdir=/etc \
21+ -Dmandir=/share/man \
22+ -Dlocalstatedir=/var \
23+ -Dbuildtype=release \
24+ -Dglx-read-only-text=true \
25+ -Dplatforms=x11 \
26+ -Dglx=auto \
27+ -Dgallium-drivers=swrast \
28+ -Degl=enabled \
29+ -Dvalgrind=false \
30+ -Dzstd=disabled \
31+ -Dvulkan-drivers='' \
32+ -Dglvnd="${glvnd_enabled:-false}" \
33+ -Db_colorout=never \
34+ output
35+
36+samu -C output
37+samu -C output install
+1,
-0
1@@ -0,0 +1 @@
2+04121cd0de429adfba0d63bafba28b9479acd942f30553e8d43fe9f0c9e54c0e0c
+17,
-0
1@@ -0,0 +1,17 @@
2+expat
3+libX11
4+libXdamage
5+libXext
6+libXrandr
7+libXrender
8+libXxf86vm
9+libdrm
10+#libelf
11+libxcb
12+libxshmfence
13+meson make
14+pkgconf make
15+python make
16+python-mako make
17+xorgproto
18+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://archive.mesa3d.org/mesa-23.3.5.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+23.3.5 1
+15,
-0
1@@ -0,0 +1,15 @@
2+#!/bin/sh -e
3+
4+python packaging/create_zipapp.py \
5+ --outfile meson \
6+ --compress
7+
8+chmod 755 meson
9+chmod 655 man/meson.1
10+
11+mkdir -p \
12+ "$1/bin" \
13+ "$1/share/man/man1"
14+
15+cp -f meson "$1/bin"
16+cp -f man/meson.1 "$1/share/man/man1"
+1,
-0
1@@ -0,0 +1 @@
2+18c84ea9485a1d0b48a5c7d007fa849bfcefbd644717b7f9aae2cff4a044c6dcb8
+1,
-0
1@@ -0,0 +1 @@
2+python
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/mesonbuild/meson/archive/1.3.1.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.3.1 1
+1,
-1
1@@ -21,4 +21,4 @@ muon setup \
2 build
3
4 samu -C build
5-muon -C build install
6+muon -C build install
+0,
-1
1@@ -1,2 +1 @@
2 pkgconf make
3-#samurai make
+10,
-0
1@@ -0,0 +1,10 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --enable-static \
7+ --enable-mini-gmp \
8+ --disable-documentation
9+
10+make
11+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393e0
+1,
-0
1@@ -0,0 +1 @@
2+http://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+3.9.1 1
+24,
-0
1@@ -0,0 +1,24 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+for p in *.patch; do
7+ patch -p1 < "$p"
8+done
9+
10+# Disable download of missing (optional) dependencies
11+# during the build. This cannot be turned off otherwise.
12+rm -rf subprojects
13+
14+: > tests/meson.build
15+: > examples/meson.build
16+: > docs/meson.build
17+
18+meson setup \
19+ -Dprefix=/ \
20+ -Dgtk_doc=false \
21+ -Dintrospection=disabled \
22+ output
23+
24+samu -C output
25+samu -C output install
+2,
-0
1@@ -0,0 +1,2 @@
2+28a53dc462649e1b41b0f8c50315ecb8cb9afbfe010817d87fed9e09a6d8e4ce2d
3+afad7fce3afe98072131cf4b97ec0d00340ea316812df9ae78c1d785121583c063
+8,
-0
1@@ -0,0 +1,8 @@
2+cairo
3+fontconfig
4+freetype-harfbuzz
5+glib
6+libXft
7+libXrender
8+meson make
9+pkgconf make
+2,
-0
1@@ -0,0 +1,2 @@
2+https://github.com/GNOME/pango/archive/VERSION.tar.gz
3+patches/no-fribidi.patch
+237,
-0
1@@ -0,0 +1,237 @@
2+diff --git a/meson.build b/meson.build
3+index 50ec14b..f45dd6a 100644
4+--- a/meson.build
5++++ b/meson.build
6+@@ -200,7 +200,6 @@ endif
7+ pango_deps = []
8+
9+ glib_req_version = '>= 2.62'
10+-fribidi_req_version = '>= 1.0.6'
11+ libthai_req_version = '>= 0.1.9'
12+ harfbuzz_req_version = '>= 2.6.0'
13+ fontconfig_req_version = '>= 2.13.0'
14+@@ -217,10 +216,6 @@ gobject_dep = dependency('gobject-2.0', version: glib_req_version)
15+ gio_dep = dependency('gio-2.0', version: glib_req_version)
16+ pango_deps += [glib_dep, gobject_dep, gio_dep]
17+
18+-fribidi_dep = dependency('fribidi', version: fribidi_req_version,
19+- default_options: ['docs=false'])
20+-pango_deps += fribidi_dep
21+-
22+ thai_dep = dependency('libthai', version: libthai_req_version, required: get_option('libthai'))
23+ if thai_dep.found()
24+ pango_conf.set('HAVE_LIBTHAI', 1)
25+diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c
26+index 4277dc1..73d3476 100644
27+--- a/pango/pango-bidi-type.c
28++++ b/pango/pango-bidi-type.c
29+@@ -23,14 +23,21 @@
30+
31+ #include <string.h>
32+
33+-#include <fribidi.h>
34+-
35+ #undef PANGO_DISABLE_DEPRECATED
36+
37+ #include "pango-bidi-type.h"
38+ #include "pango-utils.h"
39+ #include "pango-utils-private.h"
40+
41++typedef uint32_t FriBidiChar;
42++typedef uint32_t FriBidiCharType;
43++typedef uint32_t FriBidiBracketType;
44++typedef int FriBidiStrIndex;
45++typedef int FriBidiParType;
46++typedef signed char FriBidiLevel;
47++
48++#define FRIBIDI_PAR_LTR (0x00000010L | 0x00000100L)
49++
50+ /**
51+ * pango_bidi_type_for_unichar:
52+ * @ch: a Unicode character
53+@@ -49,41 +56,7 @@
54+ PangoBidiType
55+ pango_bidi_type_for_unichar (gunichar ch)
56+ {
57+- FriBidiCharType fribidi_ch_type;
58+-
59+- G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
60+-
61+- fribidi_ch_type = fribidi_get_bidi_type (ch);
62+-
63+- switch (fribidi_ch_type)
64+- {
65+- case FRIBIDI_TYPE_LTR: return PANGO_BIDI_TYPE_L;
66+- case FRIBIDI_TYPE_LRE: return PANGO_BIDI_TYPE_LRE;
67+- case FRIBIDI_TYPE_LRO: return PANGO_BIDI_TYPE_LRO;
68+- case FRIBIDI_TYPE_RTL: return PANGO_BIDI_TYPE_R;
69+- case FRIBIDI_TYPE_AL: return PANGO_BIDI_TYPE_AL;
70+- case FRIBIDI_TYPE_RLE: return PANGO_BIDI_TYPE_RLE;
71+- case FRIBIDI_TYPE_RLO: return PANGO_BIDI_TYPE_RLO;
72+- case FRIBIDI_TYPE_PDF: return PANGO_BIDI_TYPE_PDF;
73+- case FRIBIDI_TYPE_EN: return PANGO_BIDI_TYPE_EN;
74+- case FRIBIDI_TYPE_ES: return PANGO_BIDI_TYPE_ES;
75+- case FRIBIDI_TYPE_ET: return PANGO_BIDI_TYPE_ET;
76+- case FRIBIDI_TYPE_AN: return PANGO_BIDI_TYPE_AN;
77+- case FRIBIDI_TYPE_CS: return PANGO_BIDI_TYPE_CS;
78+- case FRIBIDI_TYPE_NSM: return PANGO_BIDI_TYPE_NSM;
79+- case FRIBIDI_TYPE_BN: return PANGO_BIDI_TYPE_BN;
80+- case FRIBIDI_TYPE_BS: return PANGO_BIDI_TYPE_B;
81+- case FRIBIDI_TYPE_SS: return PANGO_BIDI_TYPE_S;
82+- case FRIBIDI_TYPE_WS: return PANGO_BIDI_TYPE_WS;
83+- case FRIBIDI_TYPE_ON: return PANGO_BIDI_TYPE_ON;
84+- case FRIBIDI_TYPE_LRI: return PANGO_BIDI_TYPE_LRI;
85+- case FRIBIDI_TYPE_RLI: return PANGO_BIDI_TYPE_RLI;
86+- case FRIBIDI_TYPE_FSI: return PANGO_BIDI_TYPE_FSI;
87+- case FRIBIDI_TYPE_PDI: return PANGO_BIDI_TYPE_PDI;
88+- case _FRIBIDI_TYPE_SENTINEL:
89+- default:
90+- return PANGO_BIDI_TYPE_ON;
91+- }
92++ return PANGO_BIDI_TYPE_L;
93+ }
94+
95+ /* Some bidi-related functions */
96+@@ -136,38 +109,14 @@ pango_log2vis_fill_embedding_levels (const gchar *text,
97+ {
98+ glong i;
99+ const gchar *p;
100+- FriBidiParType fribidi_base_dir;
101+ FriBidiCharType *bidi_types;
102+ FriBidiCharType bidi_types_[64];
103+ FriBidiBracketType *bracket_types;
104+ FriBidiBracketType bracket_types_[64];
105+- FriBidiLevel max_level;
106+- FriBidiCharType ored_types = 0;
107+- FriBidiCharType anded_strongs = FRIBIDI_TYPE_RLE;
108+
109+ G_STATIC_ASSERT (sizeof (FriBidiLevel) == sizeof (guint8));
110+ G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
111+
112+- switch (*pbase_dir)
113+- {
114+- case PANGO_DIRECTION_LTR:
115+- case PANGO_DIRECTION_TTB_RTL:
116+- fribidi_base_dir = FRIBIDI_PAR_LTR;
117+- break;
118+- case PANGO_DIRECTION_RTL:
119+- case PANGO_DIRECTION_TTB_LTR:
120+- fribidi_base_dir = FRIBIDI_PAR_RTL;
121+- break;
122+- case PANGO_DIRECTION_WEAK_RTL:
123+- fribidi_base_dir = FRIBIDI_PAR_WRTL;
124+- break;
125+- case PANGO_DIRECTION_WEAK_LTR:
126+- case PANGO_DIRECTION_NEUTRAL:
127+- default:
128+- fribidi_base_dir = FRIBIDI_PAR_WLTR;
129+- break;
130+- }
131+-
132+ if (n_chars < 64)
133+ {
134+ bidi_types = bidi_types_;
135+@@ -181,20 +130,11 @@ pango_log2vis_fill_embedding_levels (const gchar *text,
136+
137+ for (i = 0, p = text; p < text + length; p = g_utf8_next_char(p), i++)
138+ {
139+- gunichar ch = g_utf8_get_char (p);
140+- FriBidiCharType char_type = fribidi_get_bidi_type (ch);
141+-
142+ if (i == n_chars)
143+ break;
144+
145+- bidi_types[i] = char_type;
146+- ored_types |= char_type;
147+- if (FRIBIDI_IS_STRONG (char_type))
148+- anded_strongs &= char_type;
149+- if (G_UNLIKELY(bidi_types[i] == FRIBIDI_TYPE_ON))
150+- bracket_types[i] = fribidi_get_bracket (ch);
151+- else
152+- bracket_types[i] = FRIBIDI_NO_BRACKET;
153++ bidi_types[i] = FRIBIDI_PAR_LTR;
154++ bracket_types[i] = 0;
155+ }
156+
157+ /* Short-circuit (malloc-expensive) FriBidi call for unidirectional
158+@@ -211,59 +151,14 @@ pango_log2vis_fill_embedding_levels (const gchar *text,
159+ * o base_dir doesn't have an RTL taste.
160+ * o there are letters, and base_dir is weak.
161+ */
162+- if (!FRIBIDI_IS_ISOLATE (ored_types) &&
163+- !FRIBIDI_IS_RTL (ored_types) &&
164+- !FRIBIDI_IS_ARABIC (ored_types) &&
165+- (!FRIBIDI_IS_RTL (fribidi_base_dir) ||
166+- (FRIBIDI_IS_WEAK (fribidi_base_dir) &&
167+- FRIBIDI_IS_LETTER (ored_types))
168+- ))
169+- {
170+- /* all LTR */
171+- fribidi_base_dir = FRIBIDI_PAR_LTR;
172+ memset (embedding_levels_list, 0, n_chars);
173+- goto resolved;
174+- }
175+- /* The case that all resolved levels will be RTL is much more complex.
176+- * No isolates, no numbers, all strongs are RTL, and one of
177+- * the following:
178+- *
179+- * o base_dir has an RTL taste (may be weak).
180+- * o there are letters, and base_dir is weak.
181+- */
182+- else if (!FRIBIDI_IS_ISOLATE (ored_types) &&
183+- !FRIBIDI_IS_NUMBER (ored_types) &&
184+- FRIBIDI_IS_RTL (anded_strongs) &&
185+- (FRIBIDI_IS_RTL (fribidi_base_dir) ||
186+- (FRIBIDI_IS_WEAK (fribidi_base_dir) &&
187+- FRIBIDI_IS_LETTER (ored_types))
188+- ))
189+- {
190+- /* all RTL */
191+- fribidi_base_dir = FRIBIDI_PAR_RTL;
192+- memset (embedding_levels_list, 1, n_chars);
193+- goto resolved;
194+- }
195+-
196+-
197+- max_level = fribidi_get_par_embedding_levels_ex (bidi_types, bracket_types, n_chars,
198+- &fribidi_base_dir,
199+- (FriBidiLevel*)embedding_levels_list);
200+-
201+- if (G_UNLIKELY(max_level == 0))
202+- {
203+- /* fribidi_get_par_embedding_levels() failed. */
204+- memset (embedding_levels_list, 0, length);
205+- }
206+-
207+-resolved:
208+ if (n_chars >= 64)
209+ {
210+ g_free (bidi_types);
211+ g_free (bracket_types);
212+ }
213+
214+- *pbase_dir = (fribidi_base_dir == FRIBIDI_PAR_LTR) ? PANGO_DIRECTION_LTR : PANGO_DIRECTION_RTL;
215++ *pbase_dir = PANGO_DIRECTION_LTR;
216+ }
217+
218+ /**
219+@@ -285,18 +180,7 @@ resolved:
220+ PangoDirection
221+ pango_unichar_direction (gunichar ch)
222+ {
223+- FriBidiCharType fribidi_ch_type;
224+-
225+- G_STATIC_ASSERT (sizeof (FriBidiChar) == sizeof (gunichar));
226+-
227+- fribidi_ch_type = fribidi_get_bidi_type (ch);
228+-
229+- if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
230+- return PANGO_DIRECTION_NEUTRAL;
231+- else if (FRIBIDI_IS_RTL (fribidi_ch_type))
232+- return PANGO_DIRECTION_RTL;
233+- else
234+- return PANGO_DIRECTION_LTR;
235++ return PANGO_DIRECTION_LTR;
236+ }
237+
238+
+2,
-0
1@@ -0,0 +1,2 @@
2+https://github.com/GNOME/pango/archive/1.51.1.tar.gz
3+patches/no-fribidi.patch
+1,
-0
1@@ -0,0 +1 @@
2+1.51.1 1
+11,
-0
1@@ -0,0 +1,11 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --enable-pcre2-16 \
7+ --enable-pcre2-32 \
8+ --enable-pcre2grep-libz \
9+ --enable-jit
10+
11+make
12+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+1e4a9560c8ea165725e920962467e14b3a627a08c29267bb79470f521527e14a59
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.bz2
+1,
-0
1@@ -0,0 +1 @@
2+10.42 1
+49,
-0
1@@ -0,0 +1,49 @@
2+#!/bin/sh -e
3+
4+export BUILD_ZLIB=0
5+export BUILD_BZIP2=0
6+export LDFLAGS="$LDFLAGS -pthread"
7+export CFLAGS="$CFLAGS -DNO_POSIX_2008_LOCALE -D_GNU_SOURCE"
8+
9+./Configure \
10+ -des \
11+ -Dprefix=/ \
12+ -Dvendorprefix=/ \
13+ -Dusevendorprefix \
14+ -Duseshrplib \
15+ -Dusesoname \
16+ -Dusethreads \
17+ -Dinc_version_list=none \
18+ -Dd_sockaddr_in6=define \
19+ -Dcccdlflags=-fPIC \
20+ -Dccflags="$CFLAGS" \
21+ -Dlddlflags="-shared $LDFLAGS" \
22+ -Dldflags="$LDFLAGS" \
23+ -Doptimize="-Wall $CFLAGS" \
24+ -Dcc="$CC" \
25+ -Dar="$AR" \
26+ -Dnm="$NM" \
27+ -Dranlib="$RANLIB" \
28+ -Dman1dir=/share/man/man1 \
29+ -Dman3dir=/share/man/man3 \
30+ -Dinstallman1dir=/share/man/man1 \
31+ -Dinstallman3dir=/share/man/man3 \
32+ -Dman1ext=1 \
33+ -Dman3ext=3pm \
34+ -Dperl_static_inline="static __inline__" \
35+ -Dd_static_inline
36+
37+make
38+make install
39+
40+# Remove all unneeded files.
41+find "$1" -name \*.pod -exec rm -f {} +
42+find "$1" -name .packlist -exec rm -f {} +
43+find "$1" -name README\* -exec rm -f {} +
44+find "$1" -name TODO\* -exec rm -f {} +
45+find "$1" -name Change\* -exec rm -f {} +
46+find "$1" -name \*.bs -exec rm -f {} +
47+find "$1" -name \*.0 -type f -exec rm -f {} +
48+
49+# Fix permissions.
50+find "$1/lib" -type f -exec chmod 644 {} \;
+1,
-0
1@@ -0,0 +1 @@
2+0ff7c7aae1dbe717559d6d1d4ce668f6a4a2c3f657afe887ef0b73b3be6a312d66
+1,
-0
1@@ -0,0 +1 @@
2+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://www.cpan.org/src/5.0/perl-5.38.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+5.38.0 1
+3,
-3
1@@ -2,11 +2,11 @@
2
3 export DESTDIR="$1"
4
5-muon setup \
6- -Dprefix=/usr \
7+meson setup \
8+ -Dprefix=/ \
9 -Dgtk=disabled \
10 -Ddefault_library=static \
11 output
12
13 samu -C output
14-muon -C output install
15+samu -C output install
+1,
-1
1@@ -1 +1 @@
2-muon make
3+meson make
+8,
-0
1@@ -0,0 +1,8 @@
2+#!/bin/sh -e
3+
4+rm -rf flit_core/flit_core/vendor/
5+python flit_core/build_dists.py
6+
7+python -m installer -d "$1" "flit_core/dist/flit_core-$2-py3-none-any.whl"
8+
9+rm -rf "$1/lib/python3*/site-packages/flit_core/tests"
+1,
-0
1@@ -0,0 +1 @@
2+a14e806578da1abff5ef9b5a31e948e3e74391e171e4b8a70acd4dc5348aa2f83e
+2,
-0
1@@ -0,0 +1,2 @@
2+python
3+python-installer make
+36,
-0
1@@ -0,0 +1,36 @@
2+/var/db/kiss/installed/python-flit-core/version
3+/var/db/kiss/installed/python-flit-core/sources
4+/var/db/kiss/installed/python-flit-core/manifest
5+/var/db/kiss/installed/python-flit-core/depends
6+/var/db/kiss/installed/python-flit-core/checksums
7+/var/db/kiss/installed/python-flit-core/build
8+/var/db/kiss/installed/python-flit-core/
9+/var/db/kiss/installed/
10+/var/db/kiss/
11+/var/db/
12+/var/
13+/usr/lib/python3.11/site-packages/flit_core/wheel.py
14+/usr/lib/python3.11/site-packages/flit_core/versionno.py
15+/usr/lib/python3.11/site-packages/flit_core/sdist.py
16+/usr/lib/python3.11/site-packages/flit_core/config.py
17+/usr/lib/python3.11/site-packages/flit_core/common.py
18+/usr/lib/python3.11/site-packages/flit_core/buildapi.py
19+/usr/lib/python3.11/site-packages/flit_core/__pycache__/wheel.cpython-311.pyc
20+/usr/lib/python3.11/site-packages/flit_core/__pycache__/versionno.cpython-311.pyc
21+/usr/lib/python3.11/site-packages/flit_core/__pycache__/sdist.cpython-311.pyc
22+/usr/lib/python3.11/site-packages/flit_core/__pycache__/config.cpython-311.pyc
23+/usr/lib/python3.11/site-packages/flit_core/__pycache__/common.cpython-311.pyc
24+/usr/lib/python3.11/site-packages/flit_core/__pycache__/buildapi.cpython-311.pyc
25+/usr/lib/python3.11/site-packages/flit_core/__pycache__/__init__.cpython-311.pyc
26+/usr/lib/python3.11/site-packages/flit_core/__pycache__/
27+/usr/lib/python3.11/site-packages/flit_core/__init__.py
28+/usr/lib/python3.11/site-packages/flit_core/
29+/usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info/WHEEL
30+/usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info/RECORD
31+/usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info/METADATA
32+/usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info/LICENSE
33+/usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info/
34+/usr/lib/python3.11/site-packages/
35+/usr/lib/python3.11/
36+/usr/lib/
37+/usr/
+1,
-0
1@@ -0,0 +1 @@
2+https://files.pythonhosted.org/packages/source/f/flit/flit-3.9.0.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+3.9.0 1
+13,
-0
1@@ -0,0 +1,13 @@
2+#!/bin/sh -e
3+
4+patch -p1 < default-bytecode-levels.patch
5+
6+sitedir="$(python3 -c 'import site;print(site.getsitepackages()[0])')"
7+
8+mkdir -p "$1/$sitedir"
9+cp -pR gpep517 "$1/$sitedir"
10+python -m compileall "$1/$sitedir"
11+
12+mkdir -p "$1/bin"
13+cp gpep517.bin "$1/bin/gpep517"
14+chmod 755 "$1/bin/gpep517"
+3,
-0
1@@ -0,0 +1,3 @@
2+1b667c868cac2666242d3f655619286e2da926667f407ef992fba29caa80d80fe9
3+482b3562a2d6a9b273e8e2049bc29136643cad5002495cff0e1169c53ea8b6eb2b
4+236459f14ba3e57226f6c21df619d2ad6198b9d68a5af131c05f98faff05a167d2
+1,
-0
1@@ -0,0 +1 @@
2+python
1@@ -0,0 +1,6 @@
2+#!/usr/bin/python
3+# -*- coding: utf-8 -*-
4+import sys
5+from gpep517.__main__ import main
6+if __name__ == "__main__":
7+ sys.exit(main())
+30,
-0
1@@ -0,0 +1,30 @@
2+/var/db/kiss/installed/python-gpep517/version
3+/var/db/kiss/installed/python-gpep517/sources
4+/var/db/kiss/installed/python-gpep517/patches/default-bytecode-levels.patch
5+/var/db/kiss/installed/python-gpep517/patches/
6+/var/db/kiss/installed/python-gpep517/manifest
7+/var/db/kiss/installed/python-gpep517/files/gpep517.bin
8+/var/db/kiss/installed/python-gpep517/files/
9+/var/db/kiss/installed/python-gpep517/depends
10+/var/db/kiss/installed/python-gpep517/checksums
11+/var/db/kiss/installed/python-gpep517/build
12+/var/db/kiss/installed/python-gpep517/
13+/var/db/kiss/installed/
14+/var/db/kiss/
15+/var/db/
16+/var/
17+/usr/lib/python3.11/site-packages/gpep517/qa.py
18+/usr/lib/python3.11/site-packages/gpep517/__pycache__/qa.cpython-311.pyc
19+/usr/lib/python3.11/site-packages/gpep517/__pycache__/__main__.cpython-311.pyc
20+/usr/lib/python3.11/site-packages/gpep517/__pycache__/__init__.cpython-311.pyc
21+/usr/lib/python3.11/site-packages/gpep517/__pycache__/
22+/usr/lib/python3.11/site-packages/gpep517/__main__.py.orig
23+/usr/lib/python3.11/site-packages/gpep517/__main__.py
24+/usr/lib/python3.11/site-packages/gpep517/__init__.py
25+/usr/lib/python3.11/site-packages/gpep517/
26+/usr/lib/python3.11/site-packages/
27+/usr/lib/python3.11/
28+/usr/lib/
29+/usr/bin/gpep517
30+/usr/bin/
31+/usr/
1@@ -0,0 +1,16 @@
2+diff --git a/gpep517/__main__.py b/gpep517/__main__.py
3+index d519c75..2dc0b49 100644
4+--- a/gpep517/__main__.py
5++++ b/gpep517/__main__.py
6+@@ -350,9 +350,9 @@ def add_install_args(parser):
7+ f"(default: {sys.executable})")
8+ group.add_argument("--optimize",
9+ type=parse_optimize_arg,
10+- default=[],
11++ default=[0],
12+ help="Comma-separated list of optimization levels "
13+- "to compile bytecode for (default: none), pass 'all' "
14++ "to compile bytecode for (default: 0), 0s 'all' "
15+ "to enable all known optimization levels (currently: "
16+ f"{', '.join(str(x) for x in ALL_OPT_LEVELS)})")
17+
+3,
-0
1@@ -0,0 +1,3 @@
2+https://github.com/mgorny/gpep517/archive/v15/gpep517-v15.tar.gz
3+files/gpep517.bin
4+patches/default-bytecode-levels.patch
+1,
-0
1@@ -0,0 +1 @@
2+15 1
+11,
-0
1@@ -0,0 +1,11 @@
2+#!/bin/sh -e
3+
4+sitedir="$(python3 -c 'import site;print(site.getsitepackages()[0])')"
5+
6+unzip -d build "installer-$2-py3-none-any.whl"
7+
8+(cd build; patch -p1 < default-bytecode-levels.patch)
9+
10+mkdir -p "$1/$sitedir"
11+cp -pR build/installer* "$1/$sitedir"
12+python -m compileall "$1/$sitedir"
+2,
-0
1@@ -0,0 +1,2 @@
2+72790531eb73009974eca65759a7088ed1398cd009b85e5a243d1ea22102179bbc
3+8d93b38e8b441cfac476787bd834230c9dfb59f23ab6a4927ea127e07ad0a2543a
+2,
-0
1@@ -0,0 +1,2 @@
2+python
3+unzip make
1@@ -0,0 +1,26 @@
2+the previous default of 0, 1 causes opt-1 bytecode to also be generated,
3+which is not used without passing `-O` to `python3` anyway, and doubles
4+the size of the resulting package
5+
6+diff --git a/installer/__main__.py b/installer/__main__.py
7+index 51014b9..2a389e8 100644
8+--- a/installer/__main__.py
9++++ b/installer/__main__.py
10+@@ -36,7 +36,7 @@ def _get_main_parser() -> argparse.ArgumentParser:
11+ metavar="level",
12+ type=int,
13+ choices=[0, 1, 2],
14+- help="generate bytecode for the specified optimization level(s) (default=0, 1)",
15++ help="generate bytecode for the specified optimization level(s) (default=0)",
16+ )
17+ parser.add_argument(
18+ "--no-compile-bytecode",
19+@@ -81,7 +81,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None:
20+ if args.no_compile_bytecode:
21+ bytecode_levels = []
22+ elif not bytecode_levels:
23+- bytecode_levels = [0, 1]
24++ bytecode_levels = [0]
25+
26+ with WheelFile.open(args.wheel) as source:
27+ destination = SchemeDictionaryDestination(
+2,
-0
1@@ -0,0 +1,2 @@
2+https://files.pythonhosted.org/packages/py3/i/installer/installer-0.7.0-py3-none-any.whl
3+patches/default-bytecode-levels.patch build
+1,
-0
1@@ -0,0 +1 @@
2+0.7.0 1
+6,
-0
1@@ -0,0 +1,6 @@
2+#!/bin/sh -e
3+
4+python3 setup.py build
5+python3 setup.py install \
6+ --prefix= \
7+ --root="$1"
+1,
-0
1@@ -0,0 +1 @@
2+3609266a8bfbb7f788f12b0b6b78838720348a4c07792c885eaf4827aaaefc8b03
+2,
-0
1@@ -0,0 +1,2 @@
2+python
3+python-markupsafe
+1,
-0
1@@ -0,0 +1 @@
2+https://files.pythonhosted.org/packages/source/M/Mako/Mako-1.3.2.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+1.3.2 1
+6,
-0
1@@ -0,0 +1,6 @@
2+#!/bin/sh -e
3+
4+python3 setup.py build
5+python3 setup.py install \
6+ --prefix= \
7+ --root="$1"
+1,
-0
1@@ -0,0 +1 @@
2+68bb64c58e1c26d8f046a370a78bac148e85e131ce0aff6464cec226b1d613a933
+1,
-0
1@@ -0,0 +1 @@
2+python
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/pallets/markupsafe/archive/refs/tags/2.1.5.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+2.1.5 1
+4,
-0
1@@ -0,0 +1,4 @@
2+#!/bin/sh -e
3+
4+gpep517 build-wheel --wheel-dir .dist --output-fd 3 3>&1 >&2
5+python -m installer -d "$1" .dist/*.whl
+1,
-0
1@@ -0,0 +1 @@
2+8d1b229ed8d16fc54dc5d22058875790114f6ab6ce9387368481f813e39342d8ba
+3,
-0
1@@ -0,0 +1,3 @@
2+python
3+python-flit-core make
4+python-gpep517 make
+53,
-0
1@@ -0,0 +1,53 @@
2+/var/db/kiss/installed/python-packaging/version
3+/var/db/kiss/installed/python-packaging/sources
4+/var/db/kiss/installed/python-packaging/manifest
5+/var/db/kiss/installed/python-packaging/depends
6+/var/db/kiss/installed/python-packaging/checksums
7+/var/db/kiss/installed/python-packaging/build
8+/var/db/kiss/installed/python-packaging/
9+/var/db/kiss/installed/
10+/var/db/kiss/
11+/var/db/
12+/var/
13+/usr/lib/python3.11/site-packages/packaging/version.py
14+/usr/lib/python3.11/site-packages/packaging/utils.py
15+/usr/lib/python3.11/site-packages/packaging/tags.py
16+/usr/lib/python3.11/site-packages/packaging/specifiers.py
17+/usr/lib/python3.11/site-packages/packaging/requirements.py
18+/usr/lib/python3.11/site-packages/packaging/py.typed
19+/usr/lib/python3.11/site-packages/packaging/metadata.py
20+/usr/lib/python3.11/site-packages/packaging/markers.py
21+/usr/lib/python3.11/site-packages/packaging/_tokenizer.py
22+/usr/lib/python3.11/site-packages/packaging/_structures.py
23+/usr/lib/python3.11/site-packages/packaging/_parser.py
24+/usr/lib/python3.11/site-packages/packaging/_musllinux.py
25+/usr/lib/python3.11/site-packages/packaging/_manylinux.py
26+/usr/lib/python3.11/site-packages/packaging/_elffile.py
27+/usr/lib/python3.11/site-packages/packaging/__pycache__/version.cpython-311.pyc
28+/usr/lib/python3.11/site-packages/packaging/__pycache__/utils.cpython-311.pyc
29+/usr/lib/python3.11/site-packages/packaging/__pycache__/tags.cpython-311.pyc
30+/usr/lib/python3.11/site-packages/packaging/__pycache__/specifiers.cpython-311.pyc
31+/usr/lib/python3.11/site-packages/packaging/__pycache__/requirements.cpython-311.pyc
32+/usr/lib/python3.11/site-packages/packaging/__pycache__/metadata.cpython-311.pyc
33+/usr/lib/python3.11/site-packages/packaging/__pycache__/markers.cpython-311.pyc
34+/usr/lib/python3.11/site-packages/packaging/__pycache__/_tokenizer.cpython-311.pyc
35+/usr/lib/python3.11/site-packages/packaging/__pycache__/_structures.cpython-311.pyc
36+/usr/lib/python3.11/site-packages/packaging/__pycache__/_parser.cpython-311.pyc
37+/usr/lib/python3.11/site-packages/packaging/__pycache__/_musllinux.cpython-311.pyc
38+/usr/lib/python3.11/site-packages/packaging/__pycache__/_manylinux.cpython-311.pyc
39+/usr/lib/python3.11/site-packages/packaging/__pycache__/_elffile.cpython-311.pyc
40+/usr/lib/python3.11/site-packages/packaging/__pycache__/__init__.cpython-311.pyc
41+/usr/lib/python3.11/site-packages/packaging/__pycache__/
42+/usr/lib/python3.11/site-packages/packaging/__init__.py
43+/usr/lib/python3.11/site-packages/packaging/
44+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/WHEEL
45+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/RECORD
46+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/METADATA
47+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/LICENSE.BSD
48+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/LICENSE.APACHE
49+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/LICENSE
50+/usr/lib/python3.11/site-packages/packaging-23.2.dist-info/
51+/usr/lib/python3.11/site-packages/
52+/usr/lib/python3.11/
53+/usr/lib/
54+/usr/
+1,
-0
1@@ -0,0 +1 @@
2+https://github.com/pypa/packaging/archive/23.2/python-packaging-23.2.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+23.2 1
+1,
-1
1@@ -1,5 +1,5 @@
2 47bb72ced6c29652399875b77b953ccda570f9d51ed966a27c680cd4428b9e7da1
3-9360e2b3668ebb095f4898f0e8c567b1a5c34f43e36dc6a020f6ca418019de328c
4+c382aa92212e6b0497375e2dc1504bf5c4f06e9f4eb9aa13a2eb6f4efcd3c834c7
5 0af9d6cc044d43fbe3f98a316802e4a4cd6d35d3606a4c5b6d5c135da6342d316d
6 396477ecc3d3244653804674429e0013d6bc631fec52d2ef33d0d4546b681715df
7 c4b318c0f2cbcdc0da0c1ee452b78266ec10a9e0ed4a36d630a81d73853e31cb3c
+0,
-1
1@@ -1,4 +1,3 @@
2-#bzip2
3 libffi
4 libressl
5 pkgconf make
+10,
-0
1@@ -0,0 +1,10 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --enable-shared \
7+ --enable-static \
8+ --disable-rpath
9+
10+make
11+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+ce1ee7c81f2fc3664c67423a1a1fe11a897af4dc529c7007297461ec7a2905d26c
+4,
-0
1@@ -0,0 +1,4 @@
2+libffi make
3+libressl
4+libyaml make
5+zlib
+1,
-0
1@@ -0,0 +1 @@
2+https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.xz
+1,
-0
1@@ -0,0 +1 @@
2+3.3.0 1
+12,
-0
1@@ -0,0 +1,12 @@
2+#!/bin/sh -e
3+
4+for p in *.patch; do
5+ patch -p1 < "$p"
6+done
7+
8+# force use webkit 4.1
9+sed 's/4.0/4.1/g' config.mk > _
10+mv -f _ config.mk
11+
12+make
13+make DESTDIR="$1" PREFIX=/ install
+7,
-0
1@@ -0,0 +1,7 @@
2+6095a698544d69f413e277d4b97913a738fcca4bea7885b325c6fef6fc9c6840b9
3+a65498dae604effe2781f3d3cf707fe7081df338c9e5aee1b6b7dafd2bf7d9d938
4+84a76a3dc9e5551c9f248c52df02bc403642b2e1b37dfe57044ea7765e19834c21
5+9b7ed8a6af0ae71701d36438af99cb5a4bd7b39f1266dcfa18edc410009935fe33
6+34c332ffd3ce2cc543c07e76ba1b27454c189023e53165b3843764762b22b9f186
7+d9489a73af424f8e0651756ab45bc5477a220b301fa4658413dc763bf8f48bd5c8
8+7b2580e3ad50da24b93d5a6cc248377084582f431782f8c1866181337b704f96ca
+3,
-0
1@@ -0,0 +1,3 @@
2+pkgconf make
3+webkit2gtk
4+xprop
1@@ -0,0 +1,230 @@
2+From 9e58d334893f059a1bc4fb45bba79debeef211af Mon Sep 17 00:00:00 2001
3+From: hovercats <hovercatswithlasereyes@protonmail.com>
4+Date: Tue, 29 Aug 2023 22:56:07 +0200
5+Subject: [PATCH 1/4] remove the need for gcr
6+
7+---
8+ Makefile | 2 +-
9+ arg.h | 48 --------------------------------------
10+ config.def.h | 1 -
11+ config.mk | 4 ++--
12+ surf.1 | 3 ---
13+ surf.c | 66 +++++++++++++++++++++++++++++-----------------------
14+ 6 files changed, 40 insertions(+), 84 deletions(-)
15+ delete mode 100644 arg.h
16+
17+diff --git a/Makefile b/Makefile
18+index 1edf820..e071a91 100644
19+--- a/Makefile
20++++ b/Makefile
21+@@ -22,7 +22,7 @@ options:
22+ surf: $(OBJ)
23+ $(CC) $(SURFLDFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
24+
25+-$(OBJ) $(WOBJ): config.h common.h config.mk
26++$(OBJ) $(WOBJ): config.h config.mk
27+
28+ config.h:
29+ cp config.def.h $@
30+diff --git a/arg.h b/arg.h
31+deleted file mode 100644
32+index ba3fb3f..0000000
33+--- a/arg.h
34++++ /dev/null
35+@@ -1,48 +0,0 @@
36+-/*
37+- * Copy me if you can.
38+- * by 20h
39+- */
40+-
41+-#ifndef ARG_H__
42+-#define ARG_H__
43+-
44+-extern char *argv0;
45+-
46+-/* use main(int argc, char *argv[]) */
47+-#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
48+- argv[0] && argv[0][0] == '-'\
49+- && argv[0][1];\
50+- argc--, argv++) {\
51+- char argc_;\
52+- char **argv_;\
53+- int brk_;\
54+- if (argv[0][1] == '-' && argv[0][2] == '\0') {\
55+- argv++;\
56+- argc--;\
57+- break;\
58+- }\
59+- for (brk_ = 0, argv[0]++, argv_ = argv;\
60+- argv[0][0] && !brk_;\
61+- argv[0]++) {\
62+- if (argv_ != argv)\
63+- break;\
64+- argc_ = argv[0][0];\
65+- switch (argc_)
66+-#define ARGEND }\
67+- }
68+-
69+-#define ARGC() argc_
70+-
71+-#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
72+- ((x), abort(), (char *)0) :\
73+- (brk_ = 1, (argv[0][1] != '\0')?\
74+- (&argv[0][1]) :\
75+- (argc--, argv++, argv[0])))
76+-
77+-#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\
78+- (char *)0 :\
79+- (brk_ = 1, (argv[0][1] != '\0')?\
80+- (&argv[0][1]) :\
81+- (argc--, argv++, argv[0])))
82+-
83+-#endif
84+diff --git a/config.def.h b/config.def.h
85+index ef44721..2745e79 100644
86+--- a/config.def.h
87++++ b/config.def.h
88+@@ -163,7 +163,6 @@ static Key keys[] = {
89+ { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .i = -1 } },
90+
91+ { MODKEY|GDK_SHIFT_MASK, GDK_KEY_p, print, { 0 } },
92+- { MODKEY, GDK_KEY_t, showcert, { 0 } },
93+
94+ { MODKEY|GDK_SHIFT_MASK, GDK_KEY_a, togglecookiepolicy, { 0 } },
95+ { 0, GDK_KEY_F11, togglefullscreen, { 0 } },
96+diff --git a/config.mk b/config.mk
97+index 2eb9fb0..6e51980 100644
98+--- a/config.mk
99++++ b/config.mk
100+@@ -12,8 +12,8 @@ LIBDIR = $(LIBPREFIX)/surf
101+ X11INC = `pkg-config --cflags x11`
102+ X11LIB = `pkg-config --libs x11`
103+
104+-GTKINC = `pkg-config --cflags gtk+-3.0 gcr-3 webkit2gtk-4.0`
105+-GTKLIB = `pkg-config --libs gtk+-3.0 gcr-3 webkit2gtk-4.0`
106++GTKINC = `pkg-config --cflags gtk+-3.0 webkit2gtk-4.0`
107++GTKLIB = `pkg-config --libs gtk+-3.0 webkit2gtk-4.0`
108+ WEBEXTINC = `pkg-config --cflags webkit2gtk-4.0 webkit2gtk-web-extension-4.0 gio-2.0`
109+ WEBEXTLIBS = `pkg-config --libs webkit2gtk-4.0 webkit2gtk-web-extension-4.0 gio-2.0`
110+
111+diff --git a/surf.1 b/surf.1
112+index 496afb9..78e8f9c 100644
113+--- a/surf.1
114++++ b/surf.1
115+@@ -194,9 +194,6 @@ Reloads the website without using the cache.
116+ .B Ctrl\-y
117+ Copies current URI to primary selection.
118+ .TP
119+-.B Ctrl\-t
120+-Display the current TLS certificate in a popup window.
121+-.TP
122+ .B Ctrl\-Shift\-a
123+ Toggle through the the
124+ .I cookie policies\fR.
125+diff --git a/surf.c b/surf.c
126+index af0fa74..9186fc7 100644
127+--- a/surf.c
128++++ b/surf.c
129+@@ -6,7 +6,6 @@
130+ #include <sys/socket.h>
131+ #include <sys/types.h>
132+ #include <sys/wait.h>
133+-#include <glib.h>
134+ #include <inttypes.h>
135+ #include <libgen.h>
136+ #include <limits.h>
137+@@ -24,15 +23,49 @@
138+ #include <glib/gstdio.h>
139+ #include <gtk/gtk.h>
140+ #include <gtk/gtkx.h>
141+-#include <gcr/gcr.h>
142+ #include <JavaScriptCore/JavaScript.h>
143+ #include <webkit2/webkit2.h>
144+ #include <X11/X.h>
145+ #include <X11/Xatom.h>
146+ #include <glib.h>
147+
148+-#include "arg.h"
149+-#include "common.h"
150++/* use main(int argc, char *argv[]) */
151++#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
152++ argv[0] && argv[0][0] == '-'\
153++ && argv[0][1];\
154++ argc--, argv++) {\
155++ char argc_;\
156++ char **argv_;\
157++ int brk_;\
158++ if (argv[0][1] == '-' && argv[0][2] == '\0') {\
159++ argv++;\
160++ argc--;\
161++ break;\
162++ }\
163++ for (brk_ = 0, argv[0]++, argv_ = argv;\
164++ argv[0][0] && !brk_;\
165++ argv[0]++) {\
166++ if (argv_ != argv)\
167++ break;\
168++ argc_ = argv[0][0];\
169++ switch (argc_)
170++#define ARGEND }\
171++ }
172++#define ARGC() argc_
173++
174++#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
175++ ((x), abort(), (char *)0) :\
176++ (brk_ = 1, (argv[0][1] != '\0')?\
177++ (&argv[0][1]) :\
178++ (argc--, argv++, argv[0])))
179++
180++#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\
181++ (char *)0 :\
182++ (brk_ = 1, (argv[0][1] != '\0')?\
183++ (&argv[0][1]) :\
184++ (argc--, argv++, argv[0])))
185++
186++#define MSGBUFSZ 8
187+
188+ #define LENGTH(x) (sizeof(x) / sizeof(x[0]))
189+ #define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK))
190+@@ -142,7 +175,6 @@ typedef struct {
191+ } SiteSpecific;
192+
193+ /* Surf */
194+-static void die(const char *errstr, ...);
195+ static void usage(void);
196+ static void setup(void);
197+ static void sigchld(int unused);
198+@@ -1800,30 +1832,6 @@ print(Client *c, const Arg *a)
199+ GTK_WINDOW(c->win));
200+ }
201+
202+-void
203+-showcert(Client *c, const Arg *a)
204+-{
205+- GTlsCertificate *cert = c->failedcert ? c->failedcert : c->cert;
206+- GcrCertificate *gcrt;
207+- GByteArray *crt;
208+- GtkWidget *win;
209+- GcrCertificateWidget *wcert;
210+-
211+- if (!cert)
212+- return;
213+-
214+- g_object_get(cert, "certificate", &crt, NULL);
215+- gcrt = gcr_simple_certificate_new(crt->data, crt->len);
216+- g_byte_array_unref(crt);
217+-
218+- win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
219+- wcert = gcr_certificate_widget_new(gcrt);
220+- g_object_unref(gcrt);
221+-
222+- gtk_container_add(GTK_CONTAINER(win), GTK_WIDGET(wcert));
223+- gtk_widget_show_all(win);
224+-}
225+-
226+ void
227+ clipboard(Client *c, const Arg *a)
228+ {
229+--
230+2.42.0
231+
1@@ -0,0 +1,33 @@
2+From f79c9427db7f671362dbae79ca03d0b149cb8037 Mon Sep 17 00:00:00 2001
3+From: hovercats <hovercatswithlasereyes@protonmail.com>
4+Date: Tue, 29 Aug 2023 22:58:53 +0200
5+Subject: [PATCH 2/4] set cache/cookiedir to /tmp, and the rest to ~/etc/surf
6+
7+---
8+ config.def.h | 10 +++++-----
9+ 1 file changed, 5 insertions(+), 5 deletions(-)
10+
11+diff --git a/config.def.h b/config.def.h
12+index 2745e79..71d5890 100644
13+--- a/config.def.h
14++++ b/config.def.h
15+@@ -1,11 +1,11 @@
16+ /* modifier 0 means no modifier */
17+ static int surfuseragent = 1; /* Append Surf version to default WebKit user agent */
18+ static char *fulluseragent = ""; /* Or override the whole user agent string */
19+-static char *scriptfile = "~/.surf/script.js";
20+-static char *styledir = "~/.surf/styles/";
21+-static char *certdir = "~/.surf/certificates/";
22+-static char *cachedir = "~/.surf/cache/";
23+-static char *cookiefile = "~/.surf/cookies.txt";
24++static char *scriptfile = "~/etc/surf/script.js";
25++static char *styledir = "~/etc/surf/styles/";
26++static char *certdir = "~/etc/surf/certificates/";
27++static char *cachedir = "/tmp/cache/";
28++static char *cookiefile = "/tmp/cookies.txt";
29+
30+ /* Webkit default features */
31+ /* Highest priority value will be used.
32+--
33+2.42.0
34+
1@@ -0,0 +1,67 @@
2+From 678b2e7872358e7e67be0780d58456e356c15a17 Mon Sep 17 00:00:00 2001
3+From: hovercats <hovercatswithlasereyes@protonmail.com>
4+Date: Sun, 3 Dec 2023 16:44:06 +0100
5+Subject: [PATCH] add quit hotkey
6+
7+---
8+ config.def.h | 2 ++
9+ surf.1 | 3 +++
10+ surf.c | 8 ++++++++
11+ 3 files changed, 13 insertions(+)
12+
13+diff --git a/config.def.h b/config.def.h
14+index ef44721..57f78d7 100644
15+--- a/config.def.h
16++++ b/config.def.h
17+@@ -134,6 +134,8 @@ static Key keys[] = {
18+
19+ { 0, GDK_KEY_Escape, stop, { 0 } },
20+ { MODKEY, GDK_KEY_c, stop, { 0 } },
21++
22++ { MODKEY, GDK_KEY_q, quit, { 0 } },
23+
24+ { MODKEY|GDK_SHIFT_MASK, GDK_KEY_r, reload, { .i = 1 } },
25+ { MODKEY, GDK_KEY_r, reload, { .i = 0 } },
26+diff --git a/surf.1 b/surf.1
27+index 496afb9..a42be2f 100644
28+--- a/surf.1
29++++ b/surf.1
30+@@ -134,6 +134,9 @@ which surf should use.
31+ .B Escape
32+ Stops loading current page or stops download.
33+ .TP
34++.B Ctrl\-q
35++Close surf.
36++.TP
37+ .B Ctrl\-h
38+ Walks back the history.
39+ .TP
40+diff --git a/surf.c b/surf.c
41+index af0fa74..16f28f4 100644
42+--- a/surf.c
43++++ b/surf.c
44+@@ -228,6 +228,7 @@ static void scrollv(Client *c, const Arg *a);
45+ static void scrollh(Client *c, const Arg *a);
46+ static void navigate(Client *c, const Arg *a);
47+ static void stop(Client *c, const Arg *a);
48++static void quit(Client *c, const Arg *a);
49+ static void toggle(Client *c, const Arg *a);
50+ static void togglefullscreen(Client *c, const Arg *a);
51+ static void togglecookiepolicy(Client *c, const Arg *a);
52+@@ -1900,6 +1901,13 @@ stop(Client *c, const Arg *a)
53+ webkit_web_view_stop_loading(c->view);
54+ }
55+
56++void
57++quit(Client *c, const Arg *a)
58++{
59++ cleanup();
60++ exit(0);
61++}
62++
63+ void
64+ toggle(Client *c, const Arg *a)
65+ {
66+--
67+2.43.0
68+
1@@ -0,0 +1,84 @@
2+From 444ac633cedab97d6227b63665fa43a65aebca70 Mon Sep 17 00:00:00 2001
3+From: hovercats <hovercatswithlasereyes@protonmail.com>
4+Date: Tue, 29 Aug 2023 23:34:53 +0200
5+Subject: [PATCH 4/4] apply searchengines patch
6+
7+---
8+ config.def.h | 6 ++++++
9+ surf.c | 22 +++++++++++++++++++++-
10+ 2 files changed, 27 insertions(+), 1 deletion(-)
11+
12+diff --git a/config.def.h b/config.def.h
13+index a6a4692..6c26c34 100644
14+--- a/config.def.h
15++++ b/config.def.h
16+@@ -7,6 +7,12 @@ static char *certdir = "~/etc/surf/certificates/";
17+ static char *cachedir = "/tmp/cache/";
18+ static char *cookiefile = "/tmp/cookies.txt";
19+
20++static SearchEngine searchengines[] = {
21++ { " ", "https://duckduckgo.com/?q=%s" },
22++ { "yt ", "https://yewtu.be/search?q=%s" },
23++
24++};
25++
26+ /* Webkit default features */
27+ /* Highest priority value will be used.
28+ * Default parameters are priority 0
29+diff --git a/surf.c b/surf.c
30+index 7abb207..f0e361f 100644
31+--- a/surf.c
32++++ b/surf.c
33+@@ -162,6 +162,11 @@ typedef struct {
34+ unsigned int stopevent;
35+ } Button;
36+
37++typedef struct {
38++ char *token;
39++ char *uri;
40++} SearchEngine;
41++
42+ typedef struct {
43+ const char *uri;
44+ Parameter config[ParameterLast];
45+@@ -248,6 +253,7 @@ static void webprocessterminated(WebKitWebView *v,
46+ Client *c);
47+ static void closeview(WebKitWebView *v, Client *c);
48+ static void destroywin(GtkWidget* w, Client *c);
49++static gchar *parseuri(const gchar *uri);
50+
51+ /* Hotkeys */
52+ static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
53+@@ -609,7 +615,7 @@ loaduri(Client *c, const Arg *a)
54+ url = g_strdup_printf("file://%s", path);
55+ free(path);
56+ } else {
57+- url = g_strdup_printf("http://%s", uri);
58++ url = parseuri(uri);
59+ }
60+ if (apath != uri)
61+ free(apath);
62+@@ -1809,6 +1815,20 @@ destroywin(GtkWidget* w, Client *c)
63+ gtk_main_quit();
64+ }
65+
66++gchar *
67++parseuri(const gchar *uri)
68++{
69++ guint i;
70++
71++ for (i = 0; i < LENGTH(searchengines); i++) {
72++ if (g_str_has_prefix(uri, searchengines[i].token))
73++ return g_strdup_printf(searchengines[i].uri,
74++ uri + strlen(searchengines[i].token));
75++ }
76++
77++ return g_strdup_printf("http://%s", uri);
78++}
79++
80+ void
81+ pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
82+ {
83+--
84+2.42.0
85+
1@@ -0,0 +1,67 @@
2+From a6a8878bb6a203b589d559025b94a78214f22878 Mon Sep 17 00:00:00 2001
3+From: Olivier Moreau <m242@protonmail.com>
4+Date: Sun, 12 Jan 2020 11:23:11 +0000
5+Subject: [PATCH] Added choice between PRIMARY and CLIPBOARD Gtk selections, as
6+ a config option
7+
8+---
9+ config.def.h | 1 +
10+ surf.c | 11 +++++++++--
11+ 2 files changed, 10 insertions(+), 2 deletions(-)
12+
13+diff --git a/config.def.h b/config.def.h
14+index 34265f6..03bbe2b 100644
15+--- a/config.def.h
16++++ b/config.def.h
17+@@ -48,6 +48,7 @@ static Parameter defconfig[ParameterLast] = {
18+ [Style] = { { .i = 1 }, },
19+ [WebGL] = { { .i = 0 }, },
20+ [ZoomLevel] = { { .f = 1.0 }, },
21++ [ClipboardNotPrimary] = { { .i = 1 }, },
22+ };
23+
24+ static UriParameters uriparams[] = {
25+diff --git a/surf.c b/surf.c
26+index 2b54e3c..b8a9b2f 100644
27+--- a/surf.c
28++++ b/surf.c
29+@@ -82,6 +82,7 @@ typedef enum {
30+ Style,
31+ WebGL,
32+ ZoomLevel,
33++ ClipboardNotPrimary,
34+ ParameterLast
35+ } ParamName;
36+
37+@@ -291,6 +292,7 @@ static ParamName loadcommitted[] = {
38+ SpellLanguages,
39+ Style,
40+ ZoomLevel,
41++ ClipboardNotPrimary,
42+ ParameterLast
43+ };
44+
45+@@ -1816,13 +1818,18 @@ showcert(Client *c, const Arg *a)
46+ void
47+ clipboard(Client *c, const Arg *a)
48+ {
49++ /* User defined choice of selection, see config.h */
50++ GdkAtom selection = GDK_SELECTION_PRIMARY;
51++ if (curconfig[ClipboardNotPrimary].val.i > 0)
52++ selection = GDK_SELECTION_CLIPBOARD;
53++
54+ if (a->i) { /* load clipboard uri */
55+ gtk_clipboard_request_text(gtk_clipboard_get(
56+- GDK_SELECTION_PRIMARY),
57++ selection),
58+ pasteuri, c);
59+ } else { /* copy uri */
60+ gtk_clipboard_set_text(gtk_clipboard_get(
61+- GDK_SELECTION_PRIMARY), c->targeturi
62++ selection), c->targeturi
63+ ? c->targeturi : geturi(c), -1);
64+ }
65+ }
66+--
67+2.24.1
68+
1@@ -0,0 +1,69 @@
2+From cd4785280b4c02d1c71ea30d9278fea8f8bdca65 Mon Sep 17 00:00:00 2001
3+From: hovercats <hovercatswithlasereyes@protonmail.com>
4+Date: Sun, 3 Dec 2023 16:36:54 +0100
5+Subject: [PATCH] add bookmarking using bmks
6+
7+---
8+ config.def.h | 18 ++++++++++++++++++
9+ surf.1 | 9 +++++++++
10+ 2 files changed, 27 insertions(+)
11+
12+diff --git a/config.def.h b/config.def.h
13+index 8057e88..99dbf50 100644
14+--- a/config.def.h
15++++ b/config.def.h
16+@@ -81,6 +81,20 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
17+ } \
18+ }
19+
20++/* bookmarks, need bmks script */
21++#define BM_PICK(p, q) { .v = (char *[]){ "/bin/sh", "-c", \
22++ "prop=\"$(bmks)\" &&" \
23++ "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
24++ p, q, winid, NULL } }
25++
26++#define BM_ADD { .v = (char *[]){ "/bin/sh", "-c", \
27++ "bmks a \"$(xprop -id $0 _SURF_URI | cut -d '\"' -f 2)\"", \
28++ winid, NULL } }
29++
30++#define BM_DEL { .v = (char *[]){ "/bin/sh", "-c", \
31++ "bmks d", \
32++ winid, NULL } }
33++
34+ /* DOWNLOAD(URI, referer) */
35+ #define DOWNLOAD(u, r) { \
36+ .v = (const char *[]){ "st", "-e", "/bin/sh", "-c",\
37+@@ -139,6 +153,10 @@ static Key keys[] = {
38+ { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
39+ { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
40+
41++ { MODKEY, GDK_KEY_o, spawn, BM_PICK("_SURF_URI", "_SURF_GO") },
42++ { MODKEY, GDK_KEY_a, spawn, BM_ADD },
43++ { MODKEY, GDK_KEY_d, spawn, BM_DEL },
44++
45+ { 0, GDK_KEY_Escape, stop, { 0 } },
46+ { MODKEY, GDK_KEY_c, stop, { 0 } },
47+
48+diff --git a/surf.1 b/surf.1
49+index 78e8f9c..d9734cc 100644
50+--- a/surf.1
51++++ b/surf.1
52+@@ -158,6 +158,15 @@ Scroll horizontally to the right.
53+ .B Ctrl\-u
54+ Scroll horizontally to the left.
55+ .TP
56++.B Ctrl\-o
57++Show bookmarks.
58++.TP
59++.B Ctrl\-a
60++Bookmark current url.
61++.TP
62++.B Ctrl\-d
63++Delete bookmark.
64++.TP
65+ .B Ctrl\-Shift\-k or Ctrl\-+
66+ Zooms page in.
67+ .TP
68+--
69+2.43.0
70+
+7,
-0
1@@ -0,0 +1,7 @@
2+https://dl.suckless.org/surf/surf-2.1.tar.gz
3+patches/0001-remove-the-need-for-gcr.patch
4+patches/0002-set-cache-cookiedir-to-tmp-and-the-rest-to-etc-surf.patch
5+patches/0003-add-quit-hotkey.patch
6+patches/0004-apply-searchengines-patch.patch
7+patches/0005-use-clipboard.patch
8+patches/0006-add-bookmarking-using-bmks.patch
+1,
-0
1@@ -0,0 +1 @@
2+2.1 3
+1,
-2
1@@ -1,9 +1,8 @@
2-freetype make
3+freetype-harfbuzz make
4 libXdmcp make make
5 libXfont make
6 libXtst make
7 libfontenc make
8 libpng make
9-#linux-headers make
10 xtrans make
11 zlib make
+6,
-0
1@@ -0,0 +1,6 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+make
7+make prefix=/ install
+1,
-0
1@@ -0,0 +1 @@
2+git+https://github.com/fanf2/unifdef
+1,
-0
1@@ -0,0 +1 @@
2+git+https://github.com/fanf2/unifdef
+1,
-0
1@@ -0,0 +1 @@
2+git 1
+31,
-0
1@@ -0,0 +1,31 @@
2+#!/bin/sh -e
3+
4+while read -r p; do
5+ patch -p1 < "$p"
6+done < series
7+
8+export DESTDIR="$1"
9+export LDFLAGS="$LDFLAGS -static -L/src/oakiss/out/pkg/bzip2"
10+export CFLAGS="$CFLAGS \
11+ -I/src/oakiss/pkg/bzip2/src \
12+ -D_FILE_OFFSET_BITS=64 \
13+ -DWILD_STOP_AT_DIR \
14+ -DLARGE_FILE_SUPPORT \
15+ -DUNICODE_SUPPORT \
16+ -DUNICODE_WCHAR \
17+ -DUTF8_MAYBE_NATIVE \
18+ -DNO_LCHMOD \
19+ -LDDATE_FORMAT=DF_YMD \
20+ -DUSE_BZIP2 \
21+ -DNATIVE"
22+
23+make \
24+ D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 \
25+ LF2="$LDFLAGS" CF="$CFLAGS $CPPFLAGS -I." \
26+ prefix="$1/" \
27+ -f unix/Makefile unzips
28+
29+make \
30+ prefix="$1/" \
31+ MANDIR=/share/man/man1 \
32+ -f unix/Makefile install
+32,
-0
1@@ -0,0 +1,32 @@
2+5969810311361d686f6408091d60d0a36bf29f1abfae05831be9c42e69aaf67f6f
3+39546eeb15e841aed165741093c0896d31f35ac38024dfa3960f0d5bb47997ebef
4+e13b7cbb6e5005eaeb5147c189b8f93beded83d314eeba08a6cc454fc43ffc44d2
5+5fdc4d182ad2d78462ca09e87de943b70aa063048d9d3768decf5e9f2f5a96b7c4
6+0036e591b726d54ce562f609f9d74713449278dab9040c95c4dbcbd9ca30ea915f
7+3715bf8ac1e3ff56082c6b431868bce7938d64bd25efc033814d7a67d66f9a6199
8+c17fa198734ff19d78410f2c334a11977a5cee98e05a75fe227c41ab1cfc33a950
9+4d169d70763fd28d8e1185481fc46fbe6ef640227d4b02a91770a595aaeefd02a5
10+6ff406487a846aa3222dae6fa9b95df36a54ace3047a150a70217c92e96f28d130
11+440ac6b17647bcc39765dc776a18b922d759bc346f5d0be8807188a43ed4c5a07b
12+df311a6c578ce88d750473ca2113bb9d87ce0f036cf1c101f602e17c67cc74b8ac
13+0b4b8e3965fffb111ccb82cad1a278675167d0f47aa35549d9fcbb634e93fd5575
14+f9cb4800cea71b4b2cbb1a1adf05e9e3f33c7c1394073e2e545c438d60300ec683
15+f584d7caffee134588c4008c0bb269b56b885a6779db4e82913c44dd6b35ef5f1e
16+2bac1b5b7039eaf8e5bcbf2d15b4c096a70b57ee7d61e8e14d0809df0090b10dc2
17+4dbcf9da1545f94a279d11a513f6febfb1d6d88d11100b7e28d2fefd6fffe9d05e
18+ec11baa02294b90c915300e209ae8f8747cc0ba14c54dc543f125dfd7a73f3c430
19+9cfe62e834de2d2513bd820ef84db55a7911188640813cd41cc164768e24ad509b
20+9871056e67f47ce9698b5bb50e8f65cf2e750a4f6c6af53304df1f4c40ebfbc77d
21+22be381e9e86b37282920418d14265d027ea434fad79b952482d409db3eec61470
22+9361c0f0ae89fa398c998662a15468feb0d035789b93aafc500898fdac00801a3b
23+ee4f8f10a83d1a23bfd35fbdefb97ec927383c2ba0105c28af8497964cef585f7c
24+8f53b98ad3d0d3601395c77150597fefabfdcb9d3a4f3b7e7d5f61471446fa2403
25+46816b2fd0c0121d3ef4662b9fc6531b88e1eed9007cf3c9c248c58a15c4b3b318
26+62eada60854366ff9db91fcf5d1450e28205faca989156adda1fe771a690821a89
27+6299ee334b4fe591f7c03830284f372265fec966d4b8436b0bfe08d6ae175d55f7
28+6be08aed32aea14744aba5adec840ecfb6721fecea784807ad4c4179832aa6ece3
29+da70d8638d7f933f1ad626fa6b6683dc50e0f9ec10db1ba446ca1b9b22783e5c70
30+4230500331de2ec2a090ea5ec3865afdc29b14691a5623e880add75e510ce17052
31+1c752da7d554901b29f43aaeb427776359dc4cc4b378e454b29dee26cb64ef3154
32+92ae3240adee386963fa34241435c9955aedc3e37203752ec37cb1a5d36dd87ddf
33+6abdb144fbdaa1cf3c498c7c71ea6ca317f0326d36fb1e4c0d3096650d0d8fb783
1@@ -0,0 +1,39 @@
2+From 754137e70cf58a64ad524b704a86b651ba0cde07 Mon Sep 17 00:00:00 2001
3+From: Petr Stodulka <pstodulk@redhat.com>
4+Date: Wed, 14 Dec 2016 16:30:36 +0100
5+Subject: [PATCH] Fix CVE-2016-9844 (rhbz#1404283)
6+
7+Fixes buffer overflow in zipinfo in similar way like fix for
8+CVE-2014-9913 provided by upstream.
9+---
10+ zipinfo.c | 14 +++++++++++++-
11+ 1 file changed, 13 insertions(+), 1 deletion(-)
12+
13+diff --git a/zipinfo.c b/zipinfo.c
14+index c03620e..accca2a 100644
15+--- a/zipinfo.c
16++++ b/zipinfo.c
17+@@ -1984,7 +1984,19 @@ static int zi_short(__G) /* return PK-type error code */
18+ ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3);
19+ methbuf[3] = dtype[dnum];
20+ } else if (methnum >= NUM_METHODS) { /* unknown */
21+- sprintf(&methbuf[1], "%03u", G.crec.compression_method);
22++ /* 2016-12-05 SMS.
23++ * https://launchpad.net/bugs/1643750
24++ * Unexpectedly large compression methods overflow
25++ * &methbuf[]. Use the old, three-digit decimal format
26++ * for values which fit. Otherwise, sacrifice the "u",
27++ * and use four-digit hexadecimal.
28++ */
29++ if (G.crec.compression_method <= 999) {
30++ sprintf( &methbuf[ 1], "%03u", G.crec.compression_method);
31++ } else {
32++ sprintf( &methbuf[ 0], "%04X", G.crec.compression_method);
33++ }
34++
35+ }
36+
37+ for (k = 0; k < 15; ++k)
38+--
39+2.5.5
40+
+30,
-0
1@@ -0,0 +1,30 @@
2+unzip-6.0-bzip2-configure.patch
3+unzip-6.0-exec-shield.patch
4+unzip-6.0-close.patch
5+unzip-6.0-attribs-overflow.patch
6+unzip-6.0-configure.patch
7+unzip-6.0-manpage-fix.patch
8+unzip-6.0-fix-recmatch.patch
9+unzip-6.0-symlink.patch
10+unzip-6.0-caseinsensitive.patch
11+unzip-6.0-format-secure.patch
12+unzip-6.0-valgrind.patch
13+unzip-6.0-x-option.patch
14+unzip-6.0-overflow.patch
15+unzip-6.0-cve-2014-8139.patch
16+unzip-6.0-cve-2014-8140.patch
17+unzip-6.0-cve-2014-8141.patch
18+unzip-6.0-overflow-long-fsize.patch
19+unzip-6.0-heap-overflow-infloop.patch
20+unzip-6.0-alt-iconv-utf8.patch
21+unzip-6.0-alt-iconv-utf8-print.patch
22+0001-Fix-CVE-2016-9844-rhbz-1404283.patch
23+unzip-6.0-timestamp.patch
24+unzip-6.0-cve-2018-1000035-heap-based-overflow.patch
25+unzip-6.0-cve-2018-18384.patch
26+unzip-6.0-COVSCAN-fix-unterminated-string.patch
27+unzip-zipbomb-part1.patch
28+unzip-zipbomb-part2.patch
29+unzip-zipbomb-part3.patch
30+unzip-zipbomb-manpage.patch
31+unzip-6.0_CVE-2021-4217.patch
1@@ -0,0 +1,131 @@
2+From 06d1b08aef94984256cad3c5a54cedb10295681f Mon Sep 17 00:00:00 2001
3+From: Jakub Martisko <jamartis@redhat.com>
4+Date: Thu, 8 Nov 2018 09:31:18 +0100
5+Subject: [PATCH] Possible unterminated string fix
6+
7+---
8+ unix/unix.c | 4 +++-
9+ unix/unxcfg.h | 2 +-
10+ unzip.c | 12 ++++++++----
11+ zipinfo.c | 12 ++++++++----
12+ 4 files changed, 20 insertions(+), 10 deletions(-)
13+
14+diff --git a/unix/unix.c b/unix/unix.c
15+index 59b622d..cd57f80 100644
16+--- a/unix/unix.c
17++++ b/unix/unix.c
18+@@ -1945,7 +1945,9 @@ void init_conversion_charsets()
19+ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++)
20+ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) {
21+ strncpy(OEM_CP, dos_charset_map[i].archive_charset,
22+- sizeof(OEM_CP));
23++ MAX_CP_NAME - 1);
24++
25++ OEM_CP[MAX_CP_NAME - 1] = '\0';
26+ break;
27+ }
28+ }
29+diff --git a/unix/unxcfg.h b/unix/unxcfg.h
30+index 8729de2..9ee8cfe 100644
31+--- a/unix/unxcfg.h
32++++ b/unix/unxcfg.h
33+@@ -228,7 +228,7 @@ typedef struct stat z_stat;
34+ /* and notfirstcall are used by do_wild(). */
35+
36+
37+-#define MAX_CP_NAME 25
38++#define MAX_CP_NAME 25 + 1
39+
40+ #ifdef SETLOCALE
41+ # undef SETLOCALE
42+diff --git a/unzip.c b/unzip.c
43+index 2d94a38..a485f2b 100644
44+--- a/unzip.c
45++++ b/unzip.c
46+@@ -1561,7 +1561,8 @@ int uz_opts(__G__ pargc, pargv)
47+ "error: a valid character encoding should follow the -I argument"));
48+ return(PK_PARAM);
49+ }
50+- strncpy(ISO_CP, s, sizeof(ISO_CP));
51++ strncpy(ISO_CP, s, MAX_CP_NAME - 1);
52++ ISO_CP[MAX_CP_NAME - 1] = '\0';
53+ } else { /* -I charset */
54+ ++argv;
55+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
56+@@ -1570,7 +1571,8 @@ int uz_opts(__G__ pargc, pargv)
57+ return(PK_PARAM);
58+ }
59+ s = *argv;
60+- strncpy(ISO_CP, s, sizeof(ISO_CP));
61++ strncpy(ISO_CP, s, MAX_CP_NAME - 1);
62++ ISO_CP[MAX_CP_NAME - 1] = '\0';
63+ }
64+ while(*(++s)); /* No params straight after charset name */
65+ }
66+@@ -1665,7 +1667,8 @@ int uz_opts(__G__ pargc, pargv)
67+ "error: a valid character encoding should follow the -I argument"));
68+ return(PK_PARAM);
69+ }
70+- strncpy(OEM_CP, s, sizeof(OEM_CP));
71++ strncpy(OEM_CP, s, MAX_CP_NAME - 1);
72++ OEM_CP[MAX_CP_NAME - 1] = '\0';
73+ } else { /* -O charset */
74+ ++argv;
75+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
76+@@ -1674,7 +1677,8 @@ int uz_opts(__G__ pargc, pargv)
77+ return(PK_PARAM);
78+ }
79+ s = *argv;
80+- strncpy(OEM_CP, s, sizeof(OEM_CP));
81++ strncpy(OEM_CP, s, MAX_CP_NAME - 1);
82++ OEM_CP[MAX_CP_NAME - 1] = '\0';
83+ }
84+ while(*(++s)); /* No params straight after charset name */
85+ }
86+diff --git a/zipinfo.c b/zipinfo.c
87+index accca2a..cb7e08d 100644
88+--- a/zipinfo.c
89++++ b/zipinfo.c
90+@@ -519,7 +519,8 @@ int zi_opts(__G__ pargc, pargv)
91+ "error: a valid character encoding should follow the -I argument"));
92+ return(PK_PARAM);
93+ }
94+- strncpy(ISO_CP, s, sizeof(ISO_CP));
95++ strncpy(ISO_CP, s, MAX_CP_NAME - 1);
96++ ISO_CP[MAX_CP_NAME - 1] = '\0';
97+ } else { /* -I charset */
98+ ++argv;
99+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
100+@@ -528,7 +529,8 @@ int zi_opts(__G__ pargc, pargv)
101+ return(PK_PARAM);
102+ }
103+ s = *argv;
104+- strncpy(ISO_CP, s, sizeof(ISO_CP));
105++ strncpy(ISO_CP, s, MAX_CP_NAME - 1);
106++ ISO_CP[MAX_CP_NAME - 1] = '\0';
107+ }
108+ while(*(++s)); /* No params straight after charset name */
109+ }
110+@@ -568,7 +570,8 @@ int zi_opts(__G__ pargc, pargv)
111+ "error: a valid character encoding should follow the -I argument"));
112+ return(PK_PARAM);
113+ }
114+- strncpy(OEM_CP, s, sizeof(OEM_CP));
115++ strncpy(OEM_CP, s, MAX_CP_NAME - 1);
116++ OEM_CP[MAX_CP_NAME - 1] = '\0';
117+ } else { /* -O charset */
118+ ++argv;
119+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
120+@@ -577,7 +580,8 @@ int zi_opts(__G__ pargc, pargv)
121+ return(PK_PARAM);
122+ }
123+ s = *argv;
124+- strncpy(OEM_CP, s, sizeof(OEM_CP));
125++ strncpy(OEM_CP, s, MAX_CP_NAME - 1);
126++ OEM_CP[MAX_CP_NAME - 1] = '\0';
127+ }
128+ while(*(++s)); /* No params straight after charset name */
129+ }
130+--
131+2.14.5
132+
1@@ -0,0 +1,381 @@
2+From ca0212ba19b64488b9e8459a762c11ecd6e7d0bd Mon Sep 17 00:00:00 2001
3+From: Petr Stodulka <pstodulk@redhat.com>
4+Date: Tue, 24 Nov 2015 17:56:11 +0100
5+Subject: [PATCH] print correctly non-ascii filenames
6+
7+---
8+ extract.c | 289 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
9+ unzpriv.h | 7 ++
10+ 2 files changed, 233 insertions(+), 63 deletions(-)
11+
12+diff --git a/extract.c b/extract.c
13+index 0ee4e93..741b7e0 100644
14+--- a/extract.c
15++++ b/extract.c
16+@@ -2648,8 +2648,21 @@ static void set_deferred_symlink(__G__ slnk_entry)
17+ } /* end function set_deferred_symlink() */
18+ #endif /* SYMLINKS */
19+
20++/*
21++ * If Unicode is supported, assume we have what we need to do this
22++ * check using wide characters, avoiding MBCS issues.
23++ */
24+
25+-
26++#ifndef UZ_FNFILTER_REPLACECHAR
27++ /* A convenient choice for the replacement of unprintable char codes is
28++ * the "single char wildcard", as this character is quite unlikely to
29++ * appear in filenames by itself. The following default definition
30++ * sets the replacement char to a question mark as the most common
31++ * "single char wildcard"; this setting should be overridden in the
32++ * appropiate system-specific configuration header when needed.
33++ */
34++# define UZ_FNFILTER_REPLACECHAR '?'
35++#endif
36+
37+ /*************************/
38+ /* Function fnfilter() */ /* here instead of in list.c for SFX */
39+@@ -2661,48 +2674,168 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */
40+ extent size;
41+ {
42+ #ifndef NATIVE /* ASCII: filter ANSI escape codes, etc. */
43+- ZCONST uch *r=(ZCONST uch *)raw;
44++ ZCONST uch *r; // =(ZCONST uch *)raw;
45+ uch *s=space;
46+ uch *slim=NULL;
47+ uch *se=NULL;
48+ int have_overflow = FALSE;
49+
50+- if (size > 0) {
51+- slim = space + size
52+-#ifdef _MBCS
53+- - (MB_CUR_MAX - 1)
54+-#endif
55+- - 4;
56++# if defined( UNICODE_SUPPORT) && defined( _MBCS)
57++/* If Unicode support is enabled, and we have multi-byte characters,
58++ * then do the isprint() checks by first converting to wide characters
59++ * and checking those. This avoids our having to parse multi-byte
60++ * characters for ourselves. After the wide-char replacements have been
61++ * made, the wide string is converted back to the local character set.
62++ */
63++ wchar_t *wstring; /* wchar_t version of raw */
64++ size_t wslen; /* length of wstring */
65++ wchar_t *wostring; /* wchar_t version of output string */
66++ size_t woslen; /* length of wostring */
67++ char *newraw; /* new raw */
68++
69++ /* 2012-11-06 SMS.
70++ * Changed to check the value returned by mbstowcs(), and bypass the
71++ * Unicode processing if it fails. This seems to fix a problem
72++ * reported in the SourceForge forum, but it's not clear that we
73++ * should be doing any Unicode processing without some evidence that
74++ * the name actually is Unicode. (Check bit 11 in the flags before
75++ * coming here?)
76++ * http://sourceforge.net/p/infozip/bugs/40/
77++ */
78++
79++ if (MB_CUR_MAX <= 1)
80++ {
81++ /* There's no point to converting multi-byte chars if there are
82++ * no multi-byte chars.
83++ */
84++ wslen = (size_t)-1;
85+ }
86+- while (*r) {
87+- if (size > 0 && s >= slim && se == NULL) {
88+- se = s;
89++ else
90++ {
91++ /* Get Unicode wide character count (for storage allocation). */
92++ wslen = mbstowcs( NULL, raw, 0);
93++ }
94++
95++ if (wslen != (size_t)-1)
96++ {
97++ /* Apparently valid Unicode. Allocate wide-char storage. */
98++ wstring = (wchar_t *)malloc((wslen + 1) * sizeof(wchar_t));
99++ if (wstring == NULL) {
100++ strcpy( (char *)space, raw);
101++ return (char *)space;
102+ }
103+-#ifdef QDOS
104+- if (qlflag & 2) {
105+- if (*r == '/' || *r == '.') {
106++ wostring = (wchar_t *)malloc(2 * (wslen + 1) * sizeof(wchar_t));
107++ if (wostring == NULL) {
108++ free(wstring);
109++ strcpy( (char *)space, raw);
110++ return (char *)space;
111++ }
112++
113++ /* Convert the multi-byte Unicode to wide chars. */
114++ wslen = mbstowcs(wstring, raw, wslen + 1);
115++
116++ /* Filter the wide-character string. */
117++ fnfilterw( wstring, wostring, (2 * (wslen + 1) * sizeof(wchar_t)));
118++
119++ /* Convert filtered wide chars back to multi-byte. */
120++ woslen = wcstombs( NULL, wostring, 0);
121++ if ((newraw = malloc(woslen + 1)) == NULL) {
122++ free(wstring);
123++ free(wostring);
124++ strcpy( (char *)space, raw);
125++ return (char *)space;
126++ }
127++ woslen = wcstombs( newraw, wostring, (woslen * MB_CUR_MAX) + 1);
128++
129++ if (size > 0) {
130++ slim = space + size - 4;
131++ }
132++ r = (ZCONST uch *)newraw;
133++ while (*r) {
134++ if (size > 0 && s >= slim && se == NULL) {
135++ se = s;
136++ }
137++# ifdef QDOS
138++ if (qlflag & 2) {
139++ if (*r == '/' || *r == '.') {
140++ if (se != NULL && (s > (space + (size-3)))) {
141++ have_overflow = TRUE;
142++ break;
143++ }
144++ ++r;
145++ *s++ = '_';
146++ continue;
147++ }
148++ } else
149++# endif
150++ {
151+ if (se != NULL && (s > (space + (size-3)))) {
152+ have_overflow = TRUE;
153+ break;
154+ }
155+- ++r;
156+- *s++ = '_';
157+- continue;
158++ *s++ = *r++;
159+ }
160+- } else
161++ }
162++ if (have_overflow) {
163++ strcpy((char *)se, "...");
164++ } else {
165++ *s = '\0';
166++ }
167++
168++ free(wstring);
169++ free(wostring);
170++ free(newraw);
171++ }
172++ else
173++# endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */
174++ {
175++ /* No Unicode support, or apparently invalid Unicode. */
176++ r = (ZCONST uch *)raw;
177++
178++ if (size > 0) {
179++ slim = space + size
180++#ifdef _MBCS
181++ - (MB_CUR_MAX - 1)
182++#endif
183++ - 4;
184++ }
185++ while (*r) {
186++ if (size > 0 && s >= slim && se == NULL) {
187++ se = s;
188++ }
189++#ifdef QDOS
190++ if (qlflag & 2) {
191++ if (*r == '/' || *r == '.') {
192++ if (se != NULL && (s > (space + (size-3)))) {
193++ have_overflow = TRUE;
194++ break;
195++ }
196++ ++r;
197++ *s++ = '_';
198++ continue;
199++ }
200++ } else
201+ #endif
202+ #ifdef HAVE_WORKING_ISPRINT
203+-# ifndef UZ_FNFILTER_REPLACECHAR
204+- /* A convenient choice for the replacement of unprintable char codes is
205+- * the "single char wildcard", as this character is quite unlikely to
206+- * appear in filenames by itself. The following default definition
207+- * sets the replacement char to a question mark as the most common
208+- * "single char wildcard"; this setting should be overridden in the
209+- * appropiate system-specific configuration header when needed.
210+- */
211+-# define UZ_FNFILTER_REPLACECHAR '?'
212+-# endif
213+- if (!isprint(*r)) {
214++ if (!isprint(*r)) {
215++ if (*r < 32) {
216++ /* ASCII control codes are escaped as "^{letter}". */
217++ if (se != NULL && (s > (space + (size-4)))) {
218++ have_overflow = TRUE;
219++ break;
220++ }
221++ *s++ = '^', *s++ = (uch)(64 + *r++);
222++ } else {
223++ /* Other unprintable codes are replaced by the
224++ * placeholder character. */
225++ if (se != NULL && (s > (space + (size-3)))) {
226++ have_overflow = TRUE;
227++ break;
228++ }
229++ *s++ = UZ_FNFILTER_REPLACECHAR;
230++ INCSTR(r);
231++ }
232++#else /* !HAVE_WORKING_ISPRINT */
233+ if (*r < 32) {
234+ /* ASCII control codes are escaped as "^{letter}". */
235+ if (se != NULL && (s > (space + (size-4)))) {
236+@@ -2710,47 +2843,30 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */
237+ break;
238+ }
239+ *s++ = '^', *s++ = (uch)(64 + *r++);
240++#endif /* ?HAVE_WORKING_ISPRINT */
241+ } else {
242+- /* Other unprintable codes are replaced by the
243+- * placeholder character. */
244++#ifdef _MBCS
245++ unsigned i = CLEN(r);
246++ if (se != NULL && (s > (space + (size-i-2)))) {
247++ have_overflow = TRUE;
248++ break;
249++ }
250++ for (; i > 0; i--)
251++ *s++ = *r++;
252++#else
253+ if (se != NULL && (s > (space + (size-3)))) {
254+ have_overflow = TRUE;
255+ break;
256+ }
257+- *s++ = UZ_FNFILTER_REPLACECHAR;
258+- INCSTR(r);
259+- }
260+-#else /* !HAVE_WORKING_ISPRINT */
261+- if (*r < 32) {
262+- /* ASCII control codes are escaped as "^{letter}". */
263+- if (se != NULL && (s > (space + (size-4)))) {
264+- have_overflow = TRUE;
265+- break;
266+- }
267+- *s++ = '^', *s++ = (uch)(64 + *r++);
268+-#endif /* ?HAVE_WORKING_ISPRINT */
269+- } else {
270+-#ifdef _MBCS
271+- unsigned i = CLEN(r);
272+- if (se != NULL && (s > (space + (size-i-2)))) {
273+- have_overflow = TRUE;
274+- break;
275+- }
276+- for (; i > 0; i--)
277+ *s++ = *r++;
278+-#else
279+- if (se != NULL && (s > (space + (size-3)))) {
280+- have_overflow = TRUE;
281+- break;
282+- }
283+- *s++ = *r++;
284+ #endif
285+- }
286+- }
287+- if (have_overflow) {
288+- strcpy((char *)se, "...");
289+- } else {
290+- *s = '\0';
291++ }
292++ }
293++ if (have_overflow) {
294++ strcpy((char *)se, "...");
295++ } else {
296++ *s = '\0';
297++ }
298+ }
299+
300+ #ifdef WINDLL
301+@@ -2772,6 +2888,53 @@ char *fnfilter(raw, space, size) /* convert name to safely printable form */
302+ } /* end function fnfilter() */
303+
304+
305++#if defined( UNICODE_SUPPORT) && defined( _MBCS)
306++
307++/****************************/
308++/* Function fnfilter[w]() */ /* (Here instead of in list.c for SFX.) */
309++/****************************/
310++
311++/* fnfilterw() - Convert wide name to safely printable form. */
312++
313++/* fnfilterw() - Convert wide-character name to safely printable form. */
314++
315++wchar_t *fnfilterw( src, dst, siz)
316++ ZCONST wchar_t *src; /* Pointer to source char (string). */
317++ wchar_t *dst; /* Pointer to destination char (string). */
318++ extent siz; /* Not used (!). */
319++{
320++ wchar_t *dsx = dst;
321++
322++ /* Filter the wide chars. */
323++ while (*src)
324++ {
325++ if (iswprint( *src))
326++ {
327++ /* Printable code. Copy it. */
328++ *dst++ = *src;
329++ }
330++ else
331++ {
332++ /* Unprintable code. Substitute something printable for it. */
333++ if (*src < 32)
334++ {
335++ /* Replace ASCII control code with "^{letter}". */
336++ *dst++ = (wchar_t)'^';
337++ *dst++ = (wchar_t)(64 + *src);
338++ }
339++ else
340++ {
341++ /* Replace other unprintable code with the placeholder. */
342++ *dst++ = (wchar_t)UZ_FNFILTER_REPLACECHAR;
343++ }
344++ }
345++ src++;
346++ }
347++ *dst = (wchar_t)0; /* NUL-terminate the destination string. */
348++ return dsx;
349++} /* fnfilterw(). */
350++
351++#endif /* defined( UNICODE_SUPPORT) && defined( _MBCS) */
352+
353+
354+ #ifdef SET_DIR_ATTRIB
355+diff --git a/unzpriv.h b/unzpriv.h
356+index 22d3923..e48a652 100644
357+--- a/unzpriv.h
358++++ b/unzpriv.h
359+@@ -1212,6 +1212,7 @@
360+ # ifdef UNICODE_WCHAR
361+ # if !(defined(_WIN32_WCE) || defined(POCKET_UNZIP))
362+ # include <wchar.h>
363++# include <wctype.h>
364+ # endif
365+ # endif
366+ # ifndef _MBCS /* no need to include <locale.h> twice, see below */
367+@@ -2410,6 +2411,12 @@ int memflush OF((__GPRO__ ZCONST uch *rawbuf, ulg size));
368+ char *fnfilter OF((ZCONST char *raw, uch *space,
369+ extent size));
370+
371++# if defined( UNICODE_SUPPORT) && defined( _MBCS)
372++wchar_t *fnfilterw OF((ZCONST wchar_t *src, wchar_t *dst,
373++ extent siz));
374++#endif
375++
376++
377+ /*---------------------------------------------------------------------------
378+ Decompression functions:
379+ ---------------------------------------------------------------------------*/
380+--
381+2.4.3
382+
1@@ -0,0 +1,398 @@
2+From: Giovanni Scafora <giovanni.archlinux.org>
3+Subject: unzip files encoded with non-latin, non-unicode file names
4+Last-Update: 2015-02-11
5+
6+Updated 2015-02-11 by Marc Deslauriers <marc.deslauriers@canonical.com>
7+to fix buffer overflow in charset_to_intern()
8+
9+Index: unzip-6.0/unix/unix.c
10+===================================================================
11+--- unzip-6.0.orig/unix/unix.c 2015-02-11 08:46:43.675324290 -0500
12++++ unzip-6.0/unix/unix.c 2015-02-11 09:18:04.902081319 -0500
13+@@ -30,6 +30,9 @@
14+ #define UNZIP_INTERNAL
15+ #include "unzip.h"
16+
17++#include <iconv.h>
18++#include <langinfo.h>
19++
20+ #ifdef SCO_XENIX
21+ # define SYSNDIR
22+ #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */
23+@@ -1874,3 +1877,102 @@
24+ }
25+ }
26+ #endif /* QLZIP */
27++
28++
29++typedef struct {
30++ char *local_charset;
31++ char *archive_charset;
32++} CHARSET_MAP;
33++
34++/* A mapping of local <-> archive charsets used by default to convert filenames
35++ * of DOS/Windows Zip archives. Currently very basic. */
36++static CHARSET_MAP dos_charset_map[] = {
37++ { "ANSI_X3.4-1968", "CP850" },
38++ { "ISO-8859-1", "CP850" },
39++ { "CP1252", "CP850" },
40++ { "UTF-8", "CP866" },
41++ { "KOI8-R", "CP866" },
42++ { "KOI8-U", "CP866" },
43++ { "ISO-8859-5", "CP866" }
44++};
45++
46++char OEM_CP[MAX_CP_NAME] = "";
47++char ISO_CP[MAX_CP_NAME] = "";
48++
49++/* Try to guess the default value of OEM_CP based on the current locale.
50++ * ISO_CP is left alone for now. */
51++void init_conversion_charsets()
52++{
53++ const char *local_charset;
54++ int i;
55++
56++ /* Make a guess only if OEM_CP not already set. */
57++ if(*OEM_CP == '\0') {
58++ local_charset = nl_langinfo(CODESET);
59++ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++)
60++ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) {
61++ strncpy(OEM_CP, dos_charset_map[i].archive_charset,
62++ sizeof(OEM_CP));
63++ break;
64++ }
65++ }
66++}
67++
68++/* Convert a string from one encoding to the current locale using iconv().
69++ * Be as non-intrusive as possible. If error is encountered during covertion
70++ * just leave the string intact. */
71++static void charset_to_intern(char *string, char *from_charset)
72++{
73++ iconv_t cd;
74++ char *s,*d, *buf;
75++ size_t slen, dlen, buflen;
76++ const char *local_charset;
77++
78++ if(*from_charset == '\0')
79++ return;
80++
81++ buf = NULL;
82++ local_charset = nl_langinfo(CODESET);
83++
84++ if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1)
85++ return;
86++
87++ slen = strlen(string);
88++ s = string;
89++
90++ /* Make sure OUTBUFSIZ + 1 never ends up smaller than FILNAMSIZ
91++ * as this function also gets called with G.outbuf in fileio.c
92++ */
93++ buflen = FILNAMSIZ;
94++ if (OUTBUFSIZ + 1 < FILNAMSIZ)
95++ {
96++ buflen = OUTBUFSIZ + 1;
97++ }
98++
99++ d = buf = malloc(buflen);
100++ if(!d)
101++ goto cleanup;
102++
103++ bzero(buf,buflen);
104++ dlen = buflen - 1;
105++
106++ if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1)
107++ goto cleanup;
108++ strncpy(string, buf, buflen);
109++
110++ cleanup:
111++ free(buf);
112++ iconv_close(cd);
113++}
114++
115++/* Convert a string from OEM_CP to the current locale charset. */
116++inline void oem_intern(char *string)
117++{
118++ charset_to_intern(string, OEM_CP);
119++}
120++
121++/* Convert a string from ISO_CP to the current locale charset. */
122++inline void iso_intern(char *string)
123++{
124++ charset_to_intern(string, ISO_CP);
125++}
126+Index: unzip-6.0/unix/unxcfg.h
127+===================================================================
128+--- unzip-6.0.orig/unix/unxcfg.h 2015-02-11 08:46:43.675324290 -0500
129++++ unzip-6.0/unix/unxcfg.h 2015-02-11 08:46:43.671324260 -0500
130+@@ -228,4 +228,30 @@
131+ /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */
132+ /* and notfirstcall are used by do_wild(). */
133+
134++
135++#define MAX_CP_NAME 25
136++
137++#ifdef SETLOCALE
138++# undef SETLOCALE
139++#endif
140++#define SETLOCALE(category, locale) setlocale(category, locale)
141++#include <locale.h>
142++
143++#ifdef _ISO_INTERN
144++# undef _ISO_INTERN
145++#endif
146++#define _ISO_INTERN(str1) iso_intern(str1)
147++
148++#ifdef _OEM_INTERN
149++# undef _OEM_INTERN
150++#endif
151++#ifndef IZ_OEM2ISO_ARRAY
152++# define IZ_OEM2ISO_ARRAY
153++#endif
154++#define _OEM_INTERN(str1) oem_intern(str1)
155++
156++void iso_intern(char *);
157++void oem_intern(char *);
158++void init_conversion_charsets(void);
159++
160+ #endif /* !__unxcfg_h */
161+Index: unzip-6.0/unzip.c
162+===================================================================
163+--- unzip-6.0.orig/unzip.c 2015-02-11 08:46:43.675324290 -0500
164++++ unzip-6.0/unzip.c 2015-02-11 08:46:43.675324290 -0500
165+@@ -327,11 +327,21 @@
166+ -2 just filenames but allow -h/-t/-z -l long Unix \"ls -l\" format\n\
167+ -v verbose, multi-page format\n";
168+
169++#ifndef UNIX
170+ static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\
171+ -h print header line -t print totals for listed files or for all\n\
172+ -z print zipfile comment -T print file times in sortable decimal format\
173+ \n -C be case-insensitive %s\
174+ -x exclude filenames that follow from listing\n";
175++#else /* UNIX */
176++static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\
177++ -h print header line -t print totals for listed files or for all\n\
178++ -z print zipfile comment %c-T%c print file times in sortable decimal format\
179++\n %c-C%c be case-insensitive %s\
180++ -x exclude filenames that follow from listing\n\
181++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\
182++ -I CHARSET specify a character encoding for UNIX and other archives\n";
183++#endif /* !UNIX */
184+ #ifdef MORE
185+ static ZCONST char Far ZipInfoUsageLine4[] =
186+ " -M page output through built-in \"more\"\n";
187+@@ -664,6 +674,17 @@
188+ -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\
189+ -C match filenames case-insensitively -L make (some) names \
190+ lowercase\n %-42s -V retain VMS version numbers\n%s";
191++#elif (defined UNIX)
192++static ZCONST char Far UnzipUsageLine4[] = "\
193++modifiers:\n\
194++ -n never overwrite existing files -q quiet mode (-qq => quieter)\n\
195++ -o overwrite files WITHOUT prompting -a auto-convert any text files\n\
196++ -j junk paths (do not make directories) -aa treat ALL files as text\n\
197++ -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\
198++ -C match filenames case-insensitively -L make (some) names \
199++lowercase\n %-42s -V retain VMS version numbers\n%s\
200++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\
201++ -I CHARSET specify a character encoding for UNIX and other archives\n\n";
202+ #else /* !VMS */
203+ static ZCONST char Far UnzipUsageLine4[] = "\
204+ modifiers:\n\
205+@@ -802,6 +823,10 @@
206+ #endif /* UNICODE_SUPPORT */
207+
208+
209++#ifdef UNIX
210++ init_conversion_charsets();
211++#endif
212++
213+ #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__))
214+ extern void DebugMalloc(void);
215+
216+@@ -1335,6 +1360,11 @@
217+ argc = *pargc;
218+ argv = *pargv;
219+
220++#ifdef UNIX
221++ extern char OEM_CP[MAX_CP_NAME];
222++ extern char ISO_CP[MAX_CP_NAME];
223++#endif
224++
225+ while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) {
226+ s = *argv + 1;
227+ while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */
228+@@ -1516,6 +1546,35 @@
229+ }
230+ break;
231+ #endif /* MACOS */
232++#ifdef UNIX
233++ case ('I'):
234++ if (negative) {
235++ Info(slide, 0x401, ((char *)slide,
236++ "error: encodings can't be negated"));
237++ return(PK_PARAM);
238++ } else {
239++ if(*s) { /* Handle the -Icharset case */
240++ /* Assume that charsets can't start with a dash to spot arguments misuse */
241++ if(*s == '-') {
242++ Info(slide, 0x401, ((char *)slide,
243++ "error: a valid character encoding should follow the -I argument"));
244++ return(PK_PARAM);
245++ }
246++ strncpy(ISO_CP, s, sizeof(ISO_CP));
247++ } else { /* -I charset */
248++ ++argv;
249++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
250++ Info(slide, 0x401, ((char *)slide,
251++ "error: a valid character encoding should follow the -I argument"));
252++ return(PK_PARAM);
253++ }
254++ s = *argv;
255++ strncpy(ISO_CP, s, sizeof(ISO_CP));
256++ }
257++ while(*(++s)); /* No params straight after charset name */
258++ }
259++ break;
260++#endif /* ?UNIX */
261+ case ('j'): /* junk pathnames/directory structure */
262+ if (negative)
263+ uO.jflag = FALSE, negative = 0;
264+@@ -1591,6 +1650,35 @@
265+ } else
266+ ++uO.overwrite_all;
267+ break;
268++#ifdef UNIX
269++ case ('O'):
270++ if (negative) {
271++ Info(slide, 0x401, ((char *)slide,
272++ "error: encodings can't be negated"));
273++ return(PK_PARAM);
274++ } else {
275++ if(*s) { /* Handle the -Ocharset case */
276++ /* Assume that charsets can't start with a dash to spot arguments misuse */
277++ if(*s == '-') {
278++ Info(slide, 0x401, ((char *)slide,
279++ "error: a valid character encoding should follow the -I argument"));
280++ return(PK_PARAM);
281++ }
282++ strncpy(OEM_CP, s, sizeof(OEM_CP));
283++ } else { /* -O charset */
284++ ++argv;
285++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
286++ Info(slide, 0x401, ((char *)slide,
287++ "error: a valid character encoding should follow the -O argument"));
288++ return(PK_PARAM);
289++ }
290++ s = *argv;
291++ strncpy(OEM_CP, s, sizeof(OEM_CP));
292++ }
293++ while(*(++s)); /* No params straight after charset name */
294++ }
295++ break;
296++#endif /* ?UNIX */
297+ case ('p'): /* pipes: extract to stdout, no messages */
298+ if (negative) {
299+ uO.cflag = FALSE;
300+Index: unzip-6.0/unzpriv.h
301+===================================================================
302+--- unzip-6.0.orig/unzpriv.h 2015-02-11 08:46:43.675324290 -0500
303++++ unzip-6.0/unzpriv.h 2015-02-11 08:46:43.675324290 -0500
304+@@ -3008,7 +3008,7 @@
305+ !(((islochdr) || (isuxatt)) && \
306+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
307+ (hostnum) == FS_HPFS_ || \
308+- ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
309++ ((hostnum) == FS_NTFS_ /* && (hostver) == 50 */ )) { \
310+ _OEM_INTERN((string)); \
311+ } else { \
312+ _ISO_INTERN((string)); \
313+Index: unzip-6.0/zipinfo.c
314+===================================================================
315+--- unzip-6.0.orig/zipinfo.c 2015-02-11 08:46:43.675324290 -0500
316++++ unzip-6.0/zipinfo.c 2015-02-11 08:46:43.675324290 -0500
317+@@ -457,6 +457,10 @@
318+ int tflag_slm=TRUE, tflag_2v=FALSE;
319+ int explicit_h=FALSE, explicit_t=FALSE;
320+
321++#ifdef UNIX
322++ extern char OEM_CP[MAX_CP_NAME];
323++ extern char ISO_CP[MAX_CP_NAME];
324++#endif
325+
326+ #ifdef MACOS
327+ uO.lflag = LFLAG; /* reset default on each call */
328+@@ -501,6 +505,35 @@
329+ uO.lflag = 0;
330+ }
331+ break;
332++#ifdef UNIX
333++ case ('I'):
334++ if (negative) {
335++ Info(slide, 0x401, ((char *)slide,
336++ "error: encodings can't be negated"));
337++ return(PK_PARAM);
338++ } else {
339++ if(*s) { /* Handle the -Icharset case */
340++ /* Assume that charsets can't start with a dash to spot arguments misuse */
341++ if(*s == '-') {
342++ Info(slide, 0x401, ((char *)slide,
343++ "error: a valid character encoding should follow the -I argument"));
344++ return(PK_PARAM);
345++ }
346++ strncpy(ISO_CP, s, sizeof(ISO_CP));
347++ } else { /* -I charset */
348++ ++argv;
349++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
350++ Info(slide, 0x401, ((char *)slide,
351++ "error: a valid character encoding should follow the -I argument"));
352++ return(PK_PARAM);
353++ }
354++ s = *argv;
355++ strncpy(ISO_CP, s, sizeof(ISO_CP));
356++ }
357++ while(*(++s)); /* No params straight after charset name */
358++ }
359++ break;
360++#endif /* ?UNIX */
361+ case 'l': /* longer form of "ls -l" type listing */
362+ if (negative)
363+ uO.lflag = -2, negative = 0;
364+@@ -521,6 +554,35 @@
365+ G.M_flag = TRUE;
366+ break;
367+ #endif
368++#ifdef UNIX
369++ case ('O'):
370++ if (negative) {
371++ Info(slide, 0x401, ((char *)slide,
372++ "error: encodings can't be negated"));
373++ return(PK_PARAM);
374++ } else {
375++ if(*s) { /* Handle the -Ocharset case */
376++ /* Assume that charsets can't start with a dash to spot arguments misuse */
377++ if(*s == '-') {
378++ Info(slide, 0x401, ((char *)slide,
379++ "error: a valid character encoding should follow the -I argument"));
380++ return(PK_PARAM);
381++ }
382++ strncpy(OEM_CP, s, sizeof(OEM_CP));
383++ } else { /* -O charset */
384++ ++argv;
385++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) {
386++ Info(slide, 0x401, ((char *)slide,
387++ "error: a valid character encoding should follow the -O argument"));
388++ return(PK_PARAM);
389++ }
390++ s = *argv;
391++ strncpy(OEM_CP, s, sizeof(OEM_CP));
392++ }
393++ while(*(++s)); /* No params straight after charset name */
394++ }
395++ break;
396++#endif /* ?UNIX */
397+ case 's': /* default: shorter "ls -l" type listing */
398+ if (negative)
399+ uO.lflag = -2, negative = 0;
1@@ -0,0 +1,12 @@
2+diff -up unzip60/zipinfo.c.attribs-overflow unzip60/zipinfo.c
3+--- unzip60/zipinfo.c.attribs-overflow 2009-11-30 09:55:39.000000000 +0100
4++++ unzip60/zipinfo.c 2009-11-30 09:56:42.844263244 +0100
5+@@ -1881,7 +1881,7 @@ static int zi_short(__G) /* return PK-
6+ #endif
7+ int k, error, error_in_archive=PK_COOL;
8+ unsigned hostnum, hostver, methid, methnum, xattr;
9+- char *p, workspace[12], attribs[16];
10++ char *p, workspace[12], attribs[17];
11+ char methbuf[5];
12+ static ZCONST char dtype[5]="NXFS"; /* normal, maximum, fast, superfast */
13+ static ZCONST char Far os[NUM_HOSTS+1][4] = {
1@@ -0,0 +1,30 @@
2+diff -up unzip60/unix/configure.bzip2-configure unzip60/unix/configure
3+--- unzip60/unix/configure.bzip2-configure 2009-04-16 21:25:12.000000000 +0200
4++++ unzip60/unix/configure 2009-11-18 11:22:14.598389194 +0100
5+@@ -640,7 +640,24 @@ else
6+ D_USE_BZ2="-DUSE_BZIP2"
7+ L_BZ2="${BZLF} -lbz2"
8+ else
9+- echo "-- bzip2 sources not found - no bzip2 support"
10++ echo " Check if OS already has bzip2 library installed"
11++ cat > conftest.c << _EOF_
12++#include "bzlib.h"
13++int main()
14++{
15++ bz_stream strm;
16++ BZ2_bzCompressEnd(&strm);
17++ return 0;
18++}
19++_EOF_
20++ $CC $CFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null
21++ if test $? -eq 0; then
22++ echo "-- OS supports bzip2 - linking in bzip2"
23++ D_USE_BZ2="-DUSE_BZIP2"
24++ L_BZ2="${BZLF} -lbz2"
25++ else
26++ echo "-- Either bzlib.h or libbz2.a not found - no bzip2"
27++ fi
28+ fi
29+ fi
30+
31+
1@@ -0,0 +1,131 @@
2+diff --git a/match.c b/match.c
3+index 6cd656f..4e569f5 100644
4+--- a/match.c
5++++ b/match.c
6+@@ -190,10 +190,10 @@ char *___tmp_ptr;
7+
8+ #endif
9+
10+-static int recmatch(p, s, cs)
11++static int recmatch(p, s, ci)
12+ ZCONST char *p; /* sh pattern to match */
13+ ZCONST char *s; /* string to match it to */
14+-int cs; /* flag: force case-sensitive matching */
15++int ci; /* flag: force case-insensitive matching */
16+ /* Recursively compare the sh pattern p with the string s and return 1 if
17+ they match, and 0 or 2 if they don't or if there is a syntax error in the
18+ pattern. This routine recurses on itself no deeper than the number of
19+@@ -214,7 +214,7 @@ int cs; /* flag: force case-sensitive matching */
20+ if (CLEN(p) == 2) {
21+ if (CLEN(s) == 2) {
22+ return (*p == *s && *(p+1) == *(s+1)) ?
23+- recmatch(p + 2, s + 2, cs) : 0;
24++ recmatch(p + 2, s + 2, ci) : 0;
25+ } else {
26+ return 0;
27+ }
28+@@ -230,9 +230,9 @@ int cs; /* flag: force case-sensitive matching */
29+ /* '?' (or '%' or '#') matches any character (but not an empty string) */
30+ if (c == WILDCHR_SINGLE) {
31+ if (wild_stop_at_dir)
32+- return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0;
33++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), ci) : 0;
34+ else
35+- return *s ? recmatch(p, s + CLEN(s), cs) : 0;
36++ return *s ? recmatch(p, s + CLEN(s), ci) : 0;
37+ }
38+
39+ /* WILDCHR_MULTI ('*') matches any number of characters, including zero */
40+@@ -253,14 +253,14 @@ int cs; /* flag: force case-sensitive matching */
41+ # endif /* ?AMIGA */
42+ /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */
43+ for (; *s && *s != DIRSEP_CHR; INCSTR(s))
44+- if ((c = recmatch(p, s, cs)) != 0)
45++ if ((c = recmatch(p, s, ci)) != 0)
46+ return c;
47+ /* end of pattern: matched if at end of string, else continue */
48+ if (*p == 0)
49+ return (*s == 0);
50+ /* continue to match if at DIRSEP_CHR in pattern, else give up */
51+ return (*p == DIRSEP_CHR || (*p == '\\' && p[1] == DIRSEP_CHR))
52+- ? recmatch(p, s, cs) : 2;
53++ ? recmatch(p, s, ci) : 2;
54+ }
55+ /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */
56+ p++; /* move p past the second WILDCHR_MULTI */
57+@@ -308,17 +308,17 @@ int cs; /* flag: force case-sensitive matching */
58+ */
59+ if (q != srest)
60+ return 0;
61+- return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0);
62++ return ((!ci ? strcmp(p, q) : namecmp(p, q)) == 0);
63+ }
64+ #else /* !_MBCS */
65+- return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0);
66++ return ((!ci ? strcmp(p, srest) : namecmp(p, srest)) == 0);
67+ #endif /* ?_MBCS */
68+ }
69+ else
70+ {
71+ /* pattern contains more wildcards, continue with recursion... */
72+ for (; *s; INCSTR(s))
73+- if ((c = recmatch(p, s, cs)) != 0)
74++ if ((c = recmatch(p, s, ci)) != 0)
75+ return c;
76+ return 2; /* 2 means give up--shmatch will return false */
77+ }
78+@@ -353,17 +353,17 @@ int cs; /* flag: force case-sensitive matching */
79+ c = *(p-1);
80+ else
81+ {
82+- uch cc = (cs ? (uch)*s : case_map((uch)*s));
83++ uch cc = (!ci ? (uch)*s : to_up((uch)*s));
84+ uch uc = (uch) c;
85+ if (*(p+1) != '-')
86+ for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++)
87+ /* compare range */
88+- if ((cs ? uc : case_map(uc)) == cc)
89+- return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs);
90++ if ((!ci ? uc : to_up(uc)) == cc)
91++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), ci);
92+ c = e = 0; /* clear range, escape flags */
93+ }
94+ }
95+- return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0;
96++ return r ? recmatch(q + CLEN(q), s + CLEN(s), ci) : 0;
97+ /* bracket match failed */
98+ }
99+ #endif /* !VMS */
100+@@ -382,18 +382,18 @@ int cs; /* flag: force case-sensitive matching */
101+ {
102+ /* Match "...]" with "]". Continue after "]" in both. */
103+ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']'))
104+- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs);
105++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci);
106+
107+ /* Else, look for a reduced match in s, until "]" in or end of s. */
108+ for (; *s && (*s != ']'); INCSTR(s))
109+ if (*s == '.')
110+ /* If reduced match, then continue after "..." in p, "." in s. */
111+- if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0)
112++ if ((c = recmatch( (p+ CLEN( p)), s, ci)) != 0)
113+ return (int)c;
114+
115+ /* Match "...]" with "]". Continue after "]" in both. */
116+ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']'))
117+- return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs);
118++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), ci);
119+
120+ /* No reduced match. Quit. */
121+ return 2;
122+@@ -402,8 +402,8 @@ int cs; /* flag: force case-sensitive matching */
123+ #endif /* def VMS */
124+
125+ /* Just a character--compare it */
126+- return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ?
127+- recmatch(p, s + CLEN(s), cs) : 0;
128++ return (!ci ? c == *s : to_up((uch)c) == to_up((uch)*s)) ?
129++ recmatch(p, s + CLEN(s), ci) : 0;
130+ }
131+
132+
+176,
-0
1@@ -0,0 +1,176 @@
2+diff -up unzip60/extract.c.close unzip60/extract.c
3+--- unzip60/extract.c.close 2009-03-14 02:32:52.000000000 +0100
4++++ unzip60/extract.c 2009-11-19 08:17:23.481263496 +0100
5+@@ -1924,24 +1924,21 @@ static int extract_or_test_member(__G)
6+
7+ #ifdef VMS /* VMS: required even for stdout! (final flush) */
8+ if (!uO.tflag) /* don't close NULL file */
9+- close_outfile(__G);
10++ error = close_outfile(__G);
11+ #else
12+ #ifdef DLL
13+ if (!uO.tflag && (!uO.cflag || G.redirect_data)) {
14+ if (G.redirect_data)
15+ FINISH_REDIRECT();
16+ else
17+- close_outfile(__G);
18++ error = close_outfile(__G);
19+ }
20+ #else
21+ if (!uO.tflag && !uO.cflag) /* don't close NULL file or stdout */
22+- close_outfile(__G);
23++ error = close_outfile(__G);
24+ #endif
25+ #endif /* VMS */
26+
27+- /* GRR: CONVERT close_outfile() TO NON-VOID: CHECK FOR ERRORS! */
28+-
29+-
30+ if (G.disk_full) { /* set by flush() */
31+ if (G.disk_full > 1) {
32+ #if (defined(DELETE_IF_FULL) && defined(HAVE_UNLINK))
33+diff -up unzip60/unix/unix.c.close unzip60/unix/unix.c
34+--- unzip60/unix/unix.c.close 2009-01-24 00:31:26.000000000 +0100
35++++ unzip60/unix/unix.c 2009-11-19 08:33:25.568389171 +0100
36+@@ -1096,10 +1096,41 @@ static int get_extattribs(__G__ pzt, z_u
37+ #ifndef MTS
38+
39+ /****************************/
40++/* Function CloseError() */
41++/***************************/
42++
43++int CloseError(__G)
44++ __GDEF
45++{
46++ int errval = PK_OK;
47++
48++ if (fclose(G.outfile) < 0) {
49++ switch (errno) {
50++ case ENOSPC:
51++ /* Do we need this on fileio.c? */
52++ Info(slide, 0x4a1, ((char *)slide, "%s: write error (disk full?). Continue? (y/n/^C) ",
53++ FnFilter1(G.filename)));
54++ fgets(G.answerbuf, 9, stdin);
55++ if (*G.answerbuf == 'y') /* stop writing to this file */
56++ G.disk_full = 1; /* pass to next */
57++ else
58++ G.disk_full = 2; /* no: exit program */
59++
60++ errval = PK_DISK;
61++ break;
62++
63++ default:
64++ errval = PK_WARN;
65++ }
66++ }
67++ return errval;
68++} /* End of CloseError() */
69++
70++/****************************/
71+ /* Function close_outfile() */
72+ /****************************/
73+
74+-void close_outfile(__G) /* GRR: change to return PK-style warning level */
75++int close_outfile(__G)
76+ __GDEF
77+ {
78+ union {
79+@@ -1108,6 +1139,7 @@ void close_outfile(__G) /* GRR: chang
80+ } zt;
81+ ulg z_uidgid[2];
82+ int have_uidgid_flg;
83++ int errval = PK_OK;
84+
85+ have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid);
86+
87+@@ -1141,16 +1173,16 @@ void close_outfile(__G) /* GRR: chang
88+ Info(slide, 0x201, ((char *)slide,
89+ "warning: symbolic link (%s) failed: mem alloc overflow\n",
90+ FnFilter1(G.filename)));
91+- fclose(G.outfile);
92+- return;
93++ errval = CloseError(G.outfile, G.filename);
94++ return errval ? errval : PK_WARN;
95+ }
96+
97+ if ((slnk_entry = (slinkentry *)malloc(slnk_entrysize)) == NULL) {
98+ Info(slide, 0x201, ((char *)slide,
99+ "warning: symbolic link (%s) failed: no mem\n",
100+ FnFilter1(G.filename)));
101+- fclose(G.outfile);
102+- return;
103++ errval = CloseError(G.outfile, G.filename);
104++ return errval ? errval : PK_WARN;
105+ }
106+ slnk_entry->next = NULL;
107+ slnk_entry->targetlen = ucsize;
108+@@ -1174,10 +1206,10 @@ void close_outfile(__G) /* GRR: chang
109+ "warning: symbolic link (%s) failed\n",
110+ FnFilter1(G.filename)));
111+ free(slnk_entry);
112+- fclose(G.outfile);
113+- return;
114++ errval = CloseError(G.outfile, G.filename);
115++ return errval ? errval : PK_WARN;
116+ }
117+- fclose(G.outfile); /* close "link" file for good... */
118++ errval = CloseError(G.outfile, G.filename); /* close "link" file for good... */
119+ slnk_entry->target[ucsize] = '\0';
120+ if (QCOND2)
121+ Info(slide, 0, ((char *)slide, "-> %s ",
122+@@ -1188,7 +1220,7 @@ void close_outfile(__G) /* GRR: chang
123+ else
124+ G.slink_head = slnk_entry;
125+ G.slink_last = slnk_entry;
126+- return;
127++ return errval;
128+ }
129+ #endif /* SYMLINKS */
130+
131+@@ -1201,7 +1233,7 @@ void close_outfile(__G) /* GRR: chang
132+ #endif
133+
134+ #if (defined(NO_FCHOWN))
135+- fclose(G.outfile);
136++ errval = CloseError(G.outfile, G.filename);
137+ #endif
138+
139+ /* if -X option was specified and we have UID/GID info, restore it */
140+@@ -1227,7 +1259,7 @@ void close_outfile(__G) /* GRR: chang
141+ }
142+
143+ #if (!defined(NO_FCHOWN) && defined(NO_FCHMOD))
144+- fclose(G.outfile);
145++ errval = CloseError(G.outfile, G.filename);
146+ #endif
147+
148+ #if (!defined(NO_FCHOWN) && !defined(NO_FCHMOD))
149+@@ -1239,7 +1271,7 @@ void close_outfile(__G) /* GRR: chang
150+ if (fchmod(fileno(G.outfile), filtattr(__G__ G.pInfo->file_attr)))
151+ perror("fchmod (file attributes) error");
152+
153+- fclose(G.outfile);
154++ errval = CloseError(G.outfile, G.filename);
155+ #endif /* !NO_FCHOWN && !NO_FCHMOD */
156+
157+ /* skip restoring time stamps on user's request */
158+@@ -1267,6 +1299,7 @@ void close_outfile(__G) /* GRR: chang
159+ #endif
160+ #endif /* NO_FCHOWN || NO_FCHMOD */
161+
162++ return errval;
163+ } /* end function close_outfile() */
164+
165+ #endif /* !MTS */
166+diff -up unzip60/unzpriv.h.close unzip60/unzpriv.h
167+--- unzip60/unzpriv.h.close 2009-04-20 01:59:26.000000000 +0200
168++++ unzip60/unzpriv.h 2009-11-19 08:19:08.610388618 +0100
169+@@ -2604,7 +2604,7 @@ char *GetLoadPath OF((__GPRO));
170+ int SetFileSize OF((FILE *file, zusz_t filesize)); /* local */
171+ #endif
172+ #ifndef MTS /* macro in MTS */
173+- void close_outfile OF((__GPRO)); /* local */
174++ int close_outfile OF((__GPRO)); /* local */
175+ #endif
176+ #ifdef SET_SYMLINK_ATTRIBS
177+ int set_symlnk_attribs OF((__GPRO__ slinkentry *slnk_entry)); /* local */
1@@ -0,0 +1,12 @@
2+diff -up unzip60/unix/configure.nostrip unzip60/unix/configure
3+--- unzip60/unix/configure.nostrip 2009-11-30 10:18:09.000000000 +0100
4++++ unzip60/unix/configure 2009-11-30 10:21:08.354264213 +0100
5+@@ -17,7 +17,7 @@ CFLAGSR=${CFLAGS}
6+ IZ_BZIP2=${3}
7+ CFLAGS="${CFLAGS} -I. -DUNIX"
8+ LFLAGS1=""
9+-LFLAGS2="-s"
10++LFLAGS2="${LFLAGS2}"
11+ LN="ln -s"
12+
13+ CFLAGS_OPT=''
1@@ -0,0 +1,79 @@
2+diff --git a/extract.c b/extract.c
3+index 9ef80b3..c741b5f 100644
4+--- a/extract.c
5++++ b/extract.c
6+@@ -1,5 +1,5 @@
7+ /*
8+- Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
9++ Copyright (c) 1990-2014 Info-ZIP. All rights reserved.
10+
11+ See the accompanying file LICENSE, version 2009-Jan-02 or later
12+ (the contents of which are also included in unzip.h) for terms of use.
13+@@ -298,6 +298,8 @@ char ZCONST Far TruncNTSD[] =
14+ #ifndef SFX
15+ static ZCONST char Far InconsistEFlength[] = "bad extra-field entry:\n \
16+ EF block length (%u bytes) exceeds remaining EF data (%u bytes)\n";
17++ static ZCONST char Far TooSmallEBlength[] = "bad extra-field entry:\n \
18++ EF block length (%u bytes) invalid (< %d)\n";
19+ static ZCONST char Far InvalidComprDataEAs[] =
20+ " invalid compressed data for EAs\n";
21+ # if (defined(WIN32) && defined(NTSD_EAS))
22+@@ -2020,7 +2022,8 @@ static int TestExtraField(__G__ ef, ef_len)
23+ ebID = makeword(ef);
24+ ebLen = (unsigned)makeword(ef+EB_LEN);
25+
26+- if (ebLen > (ef_len - EB_HEADSIZE)) {
27++ if (ebLen > (ef_len - EB_HEADSIZE))
28++ {
29+ /* Discovered some extra field inconsistency! */
30+ if (uO.qflag)
31+ Info(slide, 1, ((char *)slide, "%-22s ",
32+@@ -2155,11 +2158,29 @@ static int TestExtraField(__G__ ef, ef_len)
33+ }
34+ break;
35+ case EF_PKVMS:
36+- if (makelong(ef+EB_HEADSIZE) !=
37+- crc32(CRCVAL_INITIAL, ef+(EB_HEADSIZE+4),
38+- (extent)(ebLen-4)))
39+- Info(slide, 1, ((char *)slide,
40+- LoadFarString(BadCRC_EAs)));
41++ /* 2015-01-30 SMS. Added sufficient-bytes test/message
42++ * here. (Removed defective ebLen test above.)
43++ *
44++ * If sufficient bytes (EB_PKVMS_MINLEN) are available,
45++ * then compare the stored CRC value with the calculated
46++ * CRC for the remainder of the data (and complain about
47++ * a mismatch).
48++ */
49++ if (ebLen < EB_PKVMS_MINLEN)
50++ {
51++ /* Insufficient bytes available. */
52++ Info( slide, 1,
53++ ((char *)slide, LoadFarString( TooSmallEBlength),
54++ ebLen, EB_PKVMS_MINLEN));
55++ }
56++ else if (makelong(ef+ EB_HEADSIZE) !=
57++ crc32(CRCVAL_INITIAL,
58++ (ef+ EB_HEADSIZE+ EB_PKVMS_MINLEN),
59++ (extent)(ebLen- EB_PKVMS_MINLEN)))
60++ {
61++ Info(slide, 1, ((char *)slide,
62++ LoadFarString(BadCRC_EAs)));
63++ }
64+ break;
65+ case EF_PKW32:
66+ case EF_PKUNIX:
67+diff --git a/unzpriv.h b/unzpriv.h
68+index 005cee0..5c83a6e 100644
69+--- a/unzpriv.h
70++++ b/unzpriv.h
71+@@ -1806,6 +1806,8 @@
72+ #define EB_NTSD_VERSION 4 /* offset of NTSD version byte */
73+ #define EB_NTSD_MAX_VER (0) /* maximum version # we know how to handle */
74+
75++#define EB_PKVMS_MINLEN 4 /* minimum data length of PKVMS extra block */
76++
77+ #define EB_ASI_CRC32 0 /* offset of ASI Unix field's crc32 checksum */
78+ #define EB_ASI_MODE 4 /* offset of ASI Unix permission mode field */
79+
80+
1@@ -0,0 +1,25 @@
2+diff --git a/extract.c b/extract.c
3+index c741b5f..e4a4c7b 100644
4+--- a/extract.c
5++++ b/extract.c
6+@@ -2240,10 +2240,17 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata)
7+ if (compr_offset < 4) /* field is not compressed: */
8+ return PK_OK; /* do nothing and signal OK */
9+
10++ /* Return no/bad-data error status if any problem is found:
11++ * 1. eb_size is too small to hold the uncompressed size
12++ * (eb_ucsize). (Else extract eb_ucsize.)
13++ * 2. eb_ucsize is zero (invalid). 2014-12-04 SMS.
14++ * 3. eb_ucsize is positive, but eb_size is too small to hold
15++ * the compressed data header.
16++ */
17+ if ((eb_size < (EB_UCSIZE_P + 4)) ||
18+- ((eb_ucsize = makelong(eb+(EB_HEADSIZE+EB_UCSIZE_P))) > 0L &&
19+- eb_size <= (compr_offset + EB_CMPRHEADLEN)))
20+- return IZ_EF_TRUNC; /* no compressed data! */
21++ ((eb_ucsize = makelong( eb+ (EB_HEADSIZE+ EB_UCSIZE_P))) == 0L) ||
22++ ((eb_ucsize > 0L) && (eb_size <= (compr_offset + EB_CMPRHEADLEN))))
23++ return IZ_EF_TRUNC; /* no/bad compressed data! */
24+
25+ method = makeword(eb + (EB_HEADSIZE + compr_offset));
26+ if ((method == STORED) && (eb_size != compr_offset + EB_CMPRHEADLEN + eb_ucsize))
1@@ -0,0 +1,138 @@
2+diff --git a/fileio.c b/fileio.c
3+index 03fc4be..2a61a30 100644
4+--- a/fileio.c
5++++ b/fileio.c
6+@@ -176,6 +176,8 @@ static ZCONST char Far FilenameTooLongTrunc[] =
7+ #endif
8+ static ZCONST char Far ExtraFieldTooLong[] =
9+ "warning: extra field too long (%d). Ignoring...\n";
10++static ZCONST char Far ExtraFieldCorrupt[] =
11++ "warning: extra field (type: 0x%04x) corrupt. Continuing...\n";
12+
13+ #ifdef WINDLL
14+ static ZCONST char Far DiskFullQuery[] =
15+@@ -2300,7 +2302,13 @@ int do_string(__G__ length, option) /* return PK-type error code */
16+ length = length2;
17+ }
18+ /* Looks like here is where extra fields are read */
19+- getZip64Data(__G__ G.extra_field, length);
20++ if (getZip64Data(__G__ G.extra_field, length) != PK_COOL)
21++ {
22++ Info(slide, 0x401, ((char *)slide,
23++ LoadFarString( ExtraFieldCorrupt), EF_PKSZ64));
24++ error = PK_WARN;
25++ }
26++
27+ #ifdef UNICODE_SUPPORT
28+ G.unipath_filename = NULL;
29+ if (G.UzO.U_flag < 2) {
30+diff --git a/process.c b/process.c
31+index be6e006..0d57ab4 100644
32+--- a/process.c
33++++ b/process.c
34+@@ -1,5 +1,5 @@
35+ /*
36+- Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
37++ Copyright (c) 1990-2014 Info-ZIP. All rights reserved.
38+
39+ See the accompanying file LICENSE, version 2009-Jan-02 or later
40+ (the contents of which are also included in unzip.h) for terms of use.
41+@@ -1894,48 +1894,83 @@ int getZip64Data(__G__ ef_buf, ef_len)
42+ and a 4-byte version of disk start number.
43+ Sets both local header and central header fields. Not terribly clever,
44+ but it means that this procedure is only called in one place.
45++
46++ 2014-12-05 SMS.
47++ Added checks to ensure that enough data are available before calling
48++ makeint64() or makelong(). Replaced various sizeof() values with
49++ simple ("4" or "8") constants. (The Zip64 structures do not depend
50++ on our variable sizes.) Error handling is crude, but we should now
51++ stay within the buffer.
52+ ---------------------------------------------------------------------------*/
53+
54++#define Z64FLGS 0xffff
55++#define Z64FLGL 0xffffffff
56++
57+ if (ef_len == 0 || ef_buf == NULL)
58+ return PK_COOL;
59+
60+ Trace((stderr,"\ngetZip64Data: scanning extra field of length %u\n",
61+ ef_len));
62+
63+- while (ef_len >= EB_HEADSIZE) {
64++ while (ef_len >= EB_HEADSIZE)
65++ {
66+ eb_id = makeword(EB_ID + ef_buf);
67+ eb_len = makeword(EB_LEN + ef_buf);
68+
69+- if (eb_len > (ef_len - EB_HEADSIZE)) {
70+- /* discovered some extra field inconsistency! */
71++ if (eb_len > (ef_len - EB_HEADSIZE))
72++ {
73++ /* Extra block length exceeds remaining extra field length. */
74+ Trace((stderr,
75+ "getZip64Data: block length %u > rest ef_size %u\n", eb_len,
76+ ef_len - EB_HEADSIZE));
77+ break;
78+ }
79+- if (eb_id == EF_PKSZ64) {
80+
81++ if (eb_id == EF_PKSZ64)
82++ {
83+ int offset = EB_HEADSIZE;
84+
85+- if (G.crec.ucsize == 0xffffffff || G.lrec.ucsize == 0xffffffff){
86+- G.lrec.ucsize = G.crec.ucsize = makeint64(offset + ef_buf);
87+- offset += sizeof(G.crec.ucsize);
88++ if ((G.crec.ucsize == Z64FLGL) || (G.lrec.ucsize == Z64FLGL))
89++ {
90++ if (offset+ 8 > ef_len)
91++ return PK_ERR;
92++
93++ G.crec.ucsize = G.lrec.ucsize = makeint64(offset + ef_buf);
94++ offset += 8;
95+ }
96+- if (G.crec.csize == 0xffffffff || G.lrec.csize == 0xffffffff){
97+- G.csize = G.lrec.csize = G.crec.csize = makeint64(offset + ef_buf);
98+- offset += sizeof(G.crec.csize);
99++
100++ if ((G.crec.csize == Z64FLGL) || (G.lrec.csize == Z64FLGL))
101++ {
102++ if (offset+ 8 > ef_len)
103++ return PK_ERR;
104++
105++ G.csize = G.crec.csize = G.lrec.csize = makeint64(offset + ef_buf);
106++ offset += 8;
107+ }
108+- if (G.crec.relative_offset_local_header == 0xffffffff){
109++
110++ if (G.crec.relative_offset_local_header == Z64FLGL)
111++ {
112++ if (offset+ 8 > ef_len)
113++ return PK_ERR;
114++
115+ G.crec.relative_offset_local_header = makeint64(offset + ef_buf);
116+- offset += sizeof(G.crec.relative_offset_local_header);
117++ offset += 8;
118+ }
119+- if (G.crec.disk_number_start == 0xffff){
120++
121++ if (G.crec.disk_number_start == Z64FLGS)
122++ {
123++ if (offset+ 4 > ef_len)
124++ return PK_ERR;
125++
126+ G.crec.disk_number_start = (zuvl_t)makelong(offset + ef_buf);
127+- offset += sizeof(G.crec.disk_number_start);
128++ offset += 4;
129+ }
130++#if 0
131++ break; /* Expect only one EF_PKSZ64 block. */
132++#endif /* 0 */
133+ }
134+
135+- /* Skip this extra field block */
136++ /* Skip this extra field block. */
137+ ef_buf += (eb_len + EB_HEADSIZE);
138+ ef_len -= (eb_len + EB_HEADSIZE);
139+ }
1@@ -0,0 +1,34 @@
2+--- a/fileio.c 2014-12-05 05:06:05 -0600
3++++ b/fileio.c 2017-11-14 01:06:28 -0600
4+@@ -1,5 +1,5 @@
5+ /*
6+- Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
7++ Copyright (c) 1990-2017 Info-ZIP. All rights reserved.
8+
9+ See the accompanying file LICENSE, version 2009-Jan-02 or later
10+ (the contents of which are also included in unzip.h) for terms of use.
11+@@ -1582,6 +1582,8 @@
12+ int r = IZ_PW_ENTERED;
13+ char *m;
14+ char *prompt;
15++ char *ep;
16++ char *zp;
17+
18+ #ifndef REENTRANT
19+ /* tell picky compilers to shut up about "unused variable" warnings */
20+@@ -1590,9 +1592,12 @@
21+
22+ if (*rcnt == 0) { /* First call for current entry */
23+ *rcnt = 2;
24+- if ((prompt = (char *)malloc(2*FILNAMSIZ + 15)) != (char *)NULL) {
25+- sprintf(prompt, LoadFarString(PasswPrompt),
26+- FnFilter1(zfn), FnFilter2(efn));
27++ zp = FnFilter1( zfn);
28++ ep = FnFilter2( efn);
29++ prompt = (char *)malloc( /* Slightly too long (2* "%s"). */
30++ sizeof( PasswPrompt)+ strlen( zp)+ strlen( ep));
31++ if (prompt != (char *)NULL) {
32++ sprintf(prompt, LoadFarString(PasswPrompt), zp, ep);
33+ m = prompt;
34+ } else
35+ m = (char *)LoadFarString(PasswPrompt2);
1@@ -0,0 +1,35 @@
2+--- unzip60/list.c
3++++ unzip60/list.c
4+@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type
5+ {
6+ int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL;
7+ #ifndef WINDLL
8+- char sgn, cfactorstr[13];
9++ char sgn, cfactorstr[1+10+1+1]; /* <sgn><int>%NUL */
10+ int longhdr=(uO.vflag>1);
11+ #endif
12+ int date_format;
13+@@ -389,9 +389,9 @@ int list_files(__G) /* return PK-type
14+ }
15+ #else /* !WINDLL */
16+ if (cfactor == 100)
17+- sprintf(cfactorstr, LoadFarString(CompFactor100));
18++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100));
19+ else
20+- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor);
21++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor);
22+ if (longhdr)
23+ Info(slide, 0, ((char *)slide, LoadFarString(LongHdrStats),
24+ FmZofft(G.crec.ucsize, "8", "u"), methbuf,
25+@@ -471,9 +471,9 @@ int list_files(__G) /* return PK-type
26+
27+ #else /* !WINDLL */
28+ if (cfactor == 100)
29+- sprintf(cfactorstr, LoadFarString(CompFactor100));
30++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactor100));
31+ else
32+- sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor);
33++ snprintf(cfactorstr, sizeof(cfactorstr), LoadFarString(CompFactorStr), sgn, cfactor);
34+ if (longhdr) {
35+ Info(slide, 0, ((char *)slide, LoadFarString(LongFileTrailer),
36+ FmZofft(tot_ucsize, "8", "u"), FmZofft(tot_csize, "8", "u"),
1@@ -0,0 +1,10 @@
2+diff -up unzip60/crc_i386.S.exec-shield unzip60/crc_i386.S
3+--- unzip60/crc_i386.S.exec-shield 2007-01-07 06:02:58.000000000 +0100
4++++ unzip60/crc_i386.S 2009-11-18 11:16:39.630389312 +0100
5+@@ -302,3 +302,6 @@ _crc32: /* ulg c
6+ #endif /* i386 || _i386 || _I386 || __i386 */
7+
8+ #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */
9++
10++.section .note.GNU-stack, "", @progbits
11++.previous
1@@ -0,0 +1,477 @@
2+diff -up unzip60/match.c.recmatch unzip60/match.c
3+--- unzip60/match.c.recmatch 2005-08-14 13:00:36.000000000 -0400
4++++ unzip60/match.c 2013-05-28 10:29:57.949077543 -0400
5+@@ -27,16 +27,14 @@
6+
7+ ---------------------------------------------------------------------------
8+
9+- Copyright on recmatch() from Zip's util.c (although recmatch() was almost
10+- certainly written by Mark Adler...ask me how I can tell :-) ):
11++ Copyright on recmatch() from Zip's util.c
12++ Copyright (c) 1990-2005 Info-ZIP. All rights reserved.
13+
14+- Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, Jean-loup Gailly,
15+- Kai Uwe Rommel and Igor Mandrichenko.
16++ See the accompanying file LICENSE, version 2004-May-22 or later
17++ for terms of use.
18++ If, for some reason, both of these files are missing, the Info-ZIP license
19++ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
20+
21+- Permission is granted to any individual or institution to use, copy,
22+- or redistribute this software so long as all of the original files are
23+- included unmodified, that it is not sold for profit, and that this copy-
24+- right notice is retained.
25+
26+ ---------------------------------------------------------------------------
27+
28+@@ -53,7 +51,7 @@
29+
30+ A set is composed of characters or ranges; a range looks like ``character
31+ hyphen character'' (as in 0-9 or A-Z). [0-9a-zA-Z_] is the minimal set of
32+- characters allowed in the [..] pattern construct. Other characters are
33++ characters ALlowed in the [..] pattern construct. Other characters are
34+ allowed (i.e., 8-bit characters) if your system will support them.
35+
36+ To suppress the special syntactic significance of any of ``[]*?!^-\'', in-
37+@@ -101,8 +99,32 @@
38+ # define WILDCHAR '?'
39+ # define BEG_RANGE '['
40+ # define END_RANGE ']'
41++# define WILDCHR_SINGLE '?'
42++# define DIRSEP_CHR '/'
43++# define WILDCHR_MULTI '*'
44+ #endif
45+
46++#ifdef WILD_STOP_AT_DIR
47++ int wild_stop_at_dir = 1; /* default wildcards do not include / in matches */
48++#else
49++ int wild_stop_at_dir = 0; /* default wildcards do include / in matches */
50++#endif
51++
52++
53++
54++/*
55++ * case mapping functions. case_map is used to ignore case in comparisons,
56++ * to_up is used to force upper case even on Unix (for dosify option).
57++ */
58++#ifdef USE_CASE_MAP
59++# define case_map(c) upper[(c) & 0xff]
60++# define to_up(c) upper[(c) & 0xff]
61++#else
62++# define case_map(c) (c)
63++# define to_up(c) ((c) >= 'a' && (c) <= 'z' ? (c)-'a'+'A' : (c))
64++#endif /* USE_CASE_MAP */
65++
66++
67+ #if 0 /* GRR: add this to unzip.h someday... */
68+ #if !(defined(MSDOS) && defined(DOSWILD))
69+ #ifdef WILD_STOP_AT_DIR
70+@@ -114,8 +136,8 @@ int recmatch OF((ZCONST uch *pattern, ZC
71+ int ignore_case __WDLPRO));
72+ #endif
73+ #endif /* 0 */
74+-static int recmatch OF((ZCONST uch *pattern, ZCONST uch *string,
75+- int ignore_case __WDLPRO));
76++static int recmatch OF((ZCONST char *, ZCONST char *,
77++ int));
78+ static char *isshexp OF((ZCONST char *p));
79+ static int namecmp OF((ZCONST char *s1, ZCONST char *s2));
80+
81+@@ -154,192 +176,240 @@ int match(string, pattern, ignore_case _
82+ }
83+ dospattern[j-1] = '\0'; /* nuke the end "." */
84+ }
85+- j = recmatch((uch *)dospattern, (uch *)string, ignore_case __WDL);
86++ j = recmatch(dospattern, string, ignore_case);
87+ free(dospattern);
88+ return j == 1;
89+ } else
90+ #endif /* MSDOS && DOSWILD */
91+- return recmatch((uch *)pattern, (uch *)string, ignore_case __WDL) == 1;
92++ return recmatch(pattern, string, ignore_case) == 1;
93+ }
94+
95++#ifdef _MBCS
96++
97++char *___tmp_ptr;
98+
99++#endif
100+
101+-static int recmatch(p, s, ic __WDL)
102+- ZCONST uch *p; /* sh pattern to match */
103+- ZCONST uch *s; /* string to which to match it */
104+- int ic; /* true for case insensitivity */
105+- __WDLDEF /* directory sepchar for WildStopAtDir mode, or 0 */
106++static int recmatch(p, s, cs)
107++ZCONST char *p; /* sh pattern to match */
108++ZCONST char *s; /* string to match it to */
109++int cs; /* flag: force case-sensitive matching */
110+ /* Recursively compare the sh pattern p with the string s and return 1 if
111+- * they match, and 0 or 2 if they don't or if there is a syntax error in the
112+- * pattern. This routine recurses on itself no more deeply than the number
113+- * of characters in the pattern. */
114++ they match, and 0 or 2 if they don't or if there is a syntax error in the
115++ pattern. This routine recurses on itself no deeper than the number of
116++ characters in the pattern. */
117+ {
118+- unsigned int c; /* pattern char or start of range in [-] loop */
119++ int c; /* pattern char or start of range in [-] loop */
120++ /* Get first character, the pattern for new recmatch calls follows */
121++ /* borrowed from Zip's global.c */
122++ int no_wild = 0;
123++ int allow_regex=1;
124++ /* This fix provided by akt@m5.dion.ne.jp for Japanese.
125++ See 21 July 2006 mail.
126++ It only applies when p is pointing to a doublebyte character and
127++ things like / and wildcards are not doublebyte. This probably
128++ should not be needed. */
129+
130+- /* Get first character, the pattern for new recmatch calls follows */
131+- c = *p; INCSTR(p);
132++#ifdef _MBCS
133++ if (CLEN(p) == 2) {
134++ if (CLEN(s) == 2) {
135++ return (*p == *s && *(p+1) == *(s+1)) ?
136++ recmatch(p + 2, s + 2, cs) : 0;
137++ } else {
138++ return 0;
139++ }
140++ }
141++#endif /* ?_MBCS */
142+
143+- /* If that was the end of the pattern, match if string empty too */
144+- if (c == 0)
145+- return *s == 0;
146++ c = *POSTINCSTR(p);
147+
148+- /* '?' (or '%') matches any character (but not an empty string). */
149+- if (c == WILDCHAR)
150+-#ifdef WILD_STOP_AT_DIR
151+- /* If uO.W_flag is non-zero, it won't match '/' */
152+- return (*s && (!sepc || *s != (uch)sepc))
153+- ? recmatch(p, s + CLEN(s), ic, sepc) : 0;
154+-#else
155+- return *s ? recmatch(p, s + CLEN(s), ic) : 0;
156+-#endif
157++ /* If that was the end of the pattern, match if string empty too */
158++ if (c == 0)
159++ return *s == 0;
160++
161++ /* '?' (or '%' or '#') matches any character (but not an empty string) */
162++ if (c == WILDCHR_SINGLE) {
163++ if (wild_stop_at_dir)
164++ return (*s && *s != DIRSEP_CHR) ? recmatch(p, s + CLEN(s), cs) : 0;
165++ else
166++ return *s ? recmatch(p, s + CLEN(s), cs) : 0;
167++ }
168+
169+- /* '*' matches any number of characters, including zero */
170++ /* WILDCHR_MULTI ('*') matches any number of characters, including zero */
171+ #ifdef AMIGA
172+- if (c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */
173+- c = '*', p++;
174++ if (!no_wild && c == '#' && *p == '?') /* "#?" is Amiga-ese for "*" */
175++ c = WILDCHR_MULTI, p++;
176+ #endif /* AMIGA */
177+- if (c == '*') {
178+-#ifdef WILD_STOP_AT_DIR
179+- if (sepc) {
180+- /* check for single "*" or double "**" */
181+-# ifdef AMIGA
182+- if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */
183+- c = '*', p++;
184+- if (c != '*') {
185+-# else /* !AMIGA */
186+- if (*p != '*') {
187+-# endif /* ?AMIGA */
188+- /* single "*": this doesn't match the dirsep character */
189+- for (; *s && *s != (uch)sepc; INCSTR(s))
190+- if ((c = recmatch(p, s, ic, sepc)) != 0)
191+- return (int)c;
192+- /* end of pattern: matched if at end of string, else continue */
193+- if (*p == '\0')
194+- return (*s == 0);
195+- /* continue to match if at sepc in pattern, else give up */
196+- return (*p == (uch)sepc || (*p == '\\' && p[1] == (uch)sepc))
197+- ? recmatch(p, s, ic, sepc) : 2;
198+- }
199+- /* "**": this matches slashes */
200+- ++p; /* move p behind the second '*' */
201+- /* and continue with the non-W_flag code variant */
202+- }
203+-#endif /* WILD_STOP_AT_DIR */
204++ if (!no_wild && c == WILDCHR_MULTI)
205++ {
206++ if (wild_stop_at_dir) {
207++ /* Check for an immediately following WILDCHR_MULTI */
208++# ifdef AMIGA
209++ if ((c = p[0]) == '#' && p[1] == '?') /* "#?" is Amiga-ese for "*" */
210++ c = WILDCHR_MULTI, p++;
211++ if (c != WILDCHR_MULTI) {
212++# else /* !AMIGA */
213++ if (*p != WILDCHR_MULTI) {
214++# endif /* ?AMIGA */
215++ /* Single WILDCHR_MULTI ('*'): this doesn't match slashes */
216++ for (; *s && *s != DIRSEP_CHR; INCSTR(s))
217++ if ((c = recmatch(p, s, cs)) != 0)
218++ return c;
219++ /* end of pattern: matched if at end of string, else continue */
220+ if (*p == 0)
221+- return 1;
222+- if (isshexp((ZCONST char *)p) == NULL) {
223+- /* Optimization for rest of pattern being a literal string:
224+- * If there are no other shell expression chars in the rest
225+- * of the pattern behind the multi-char wildcard, then just
226+- * compare the literal string tail.
227+- */
228+- ZCONST uch *srest;
229+-
230+- srest = s + (strlen((ZCONST char *)s) - strlen((ZCONST char *)p));
231+- if (srest - s < 0)
232+- /* remaining literal string from pattern is longer than rest
233+- * of test string, there can't be a match
234+- */
235+- return 0;
236+- else
237+- /* compare the remaining literal pattern string with the last
238+- * bytes of the test string to check for a match
239+- */
240++ return (*s == 0);
241++ /* continue to match if at DIRSEP_CHR in pattern, else give up */
242++ return (*p == DIRSEP_CHR || (*p == '\\' && p[1] == DIRSEP_CHR))
243++ ? recmatch(p, s, cs) : 2;
244++ }
245++ /* Two consecutive WILDCHR_MULTI ("**"): this matches DIRSEP_CHR ('/') */
246++ p++; /* move p past the second WILDCHR_MULTI */
247++ /* continue with the normal non-WILD_STOP_AT_DIR code */
248++ } /* wild_stop_at_dir */
249++
250++ /* Not wild_stop_at_dir */
251++ if (*p == 0)
252++ return 1;
253++ if (!isshexp((char *)p))
254++ {
255++ /* optimization for rest of pattern being a literal string */
256++
257++ /* optimization to handle patterns like *.txt */
258++ /* if the first char in the pattern is '*' and there */
259++ /* are no other shell expression chars, i.e. a literal string */
260++ /* then just compare the literal string at the end */
261++
262++ ZCONST char *srest;
263++
264++ srest = s + (strlen(s) - strlen(p));
265++ if (srest - s < 0)
266++ /* remaining literal string from pattern is longer than rest of
267++ test string, there can't be a match
268++ */
269++ return 0;
270++ else
271++ /* compare the remaining literal pattern string with the last bytes
272++ of the test string to check for a match */
273+ #ifdef _MBCS
274+- {
275+- ZCONST uch *q = s;
276++ {
277++ ZCONST char *q = s;
278+
279+- /* MBCS-aware code must not scan backwards into a string from
280+- * the end.
281+- * So, we have to move forward by character from our well-known
282+- * character position s in the test string until we have
283+- * advanced to the srest position.
284+- */
285+- while (q < srest)
286+- INCSTR(q);
287+- /* In case the byte *srest is a trailing byte of a multibyte
288+- * character in the test string s, we have actually advanced
289+- * past the position (srest).
290+- * For this case, the match has failed!
291+- */
292+- if (q != srest)
293+- return 0;
294+- return ((ic
295+- ? namecmp((ZCONST char *)p, (ZCONST char *)q)
296+- : strcmp((ZCONST char *)p, (ZCONST char *)q)
297+- ) == 0);
298+- }
299++ /* MBCS-aware code must not scan backwards into a string from
300++ * the end.
301++ * So, we have to move forward by character from our well-known
302++ * character position s in the test string until we have advanced
303++ * to the srest position.
304++ */
305++ while (q < srest)
306++ INCSTR(q);
307++ /* In case the byte *srest is a trailing byte of a multibyte
308++ * character, we have actually advanced past the position (srest).
309++ * For this case, the match has failed!
310++ */
311++ if (q != srest)
312++ return 0;
313++ return ((cs ? strcmp(p, q) : namecmp(p, q)) == 0);
314++ }
315+ #else /* !_MBCS */
316+- return ((ic
317+- ? namecmp((ZCONST char *)p, (ZCONST char *)srest)
318+- : strcmp((ZCONST char *)p, (ZCONST char *)srest)
319+- ) == 0);
320++ return ((cs ? strcmp(p, srest) : namecmp(p, srest)) == 0);
321+ #endif /* ?_MBCS */
322+- } else {
323+- /* pattern contains more wildcards, continue with recursion... */
324+- for (; *s; INCSTR(s))
325+- if ((c = recmatch(p, s, ic __WDL)) != 0)
326+- return (int)c;
327+- return 2; /* 2 means give up--match will return false */
328+- }
329+ }
330+-
331+- /* Parse and process the list of characters and ranges in brackets */
332+- if (c == BEG_RANGE) {
333+- int e; /* flag true if next char to be taken literally */
334+- ZCONST uch *q; /* pointer to end of [-] group */
335+- int r; /* flag true to match anything but the range */
336+-
337+- if (*s == 0) /* need a character to match */
338+- return 0;
339+- p += (r = (*p == '!' || *p == '^')); /* see if reverse */
340+- for (q = p, e = 0; *q; INCSTR(q)) /* find closing bracket */
341+- if (e)
342+- e = 0;
343+- else
344+- if (*q == '\\') /* GRR: change to ^ for MS-DOS, OS/2? */
345+- e = 1;
346+- else if (*q == END_RANGE)
347+- break;
348+- if (*q != END_RANGE) /* nothing matches if bad syntax */
349+- return 0;
350+- for (c = 0, e = (*p == '-'); p < q; INCSTR(p)) {
351+- /* go through the list */
352+- if (!e && *p == '\\') /* set escape flag if \ */
353+- e = 1;
354+- else if (!e && *p == '-') /* set start of range if - */
355+- c = *(p-1);
356+- else {
357+- unsigned int cc = Case(*s);
358+-
359+- if (*(p+1) != '-')
360+- for (c = c ? c : *p; c <= *p; c++) /* compare range */
361+- if ((unsigned)Case(c) == cc) /* typecast for MSC bug */
362+- return r ? 0 : recmatch(q + 1, s + 1, ic __WDL);
363+- c = e = 0; /* clear range, escape flags */
364+- }
365+- }
366+- return r ? recmatch(q + CLEN(q), s + CLEN(s), ic __WDL) : 0;
367+- /* bracket match failed */
368++ else
369++ {
370++ /* pattern contains more wildcards, continue with recursion... */
371++ for (; *s; INCSTR(s))
372++ if ((c = recmatch(p, s, cs)) != 0)
373++ return c;
374++ return 2; /* 2 means give up--shmatch will return false */
375+ }
376++ }
377+
378+- /* if escape ('\\'), just compare next character */
379+- if (c == '\\' && (c = *p++) == 0) /* if \ at end, then syntax error */
380+- return 0;
381++#ifndef VMS /* No bracket matching in VMS */
382++ /* Parse and process the list of characters and ranges in brackets */
383++ if (!no_wild && allow_regex && c == '[')
384++ {
385++ int e; /* flag true if next char to be taken literally */
386++ ZCONST char *q; /* pointer to end of [-] group */
387++ int r; /* flag true to match anything but the range */
388++
389++ if (*s == 0) /* need a character to match */
390++ return 0;
391++ p += (r = (*p == '!' || *p == '^')); /* see if reverse */
392++ for (q = p, e = 0; *q; q++) /* find closing bracket */
393++ if (e)
394++ e = 0;
395++ else
396++ if (*q == '\\')
397++ e = 1;
398++ else if (*q == ']')
399++ break;
400++ if (*q != ']') /* nothing matches if bad syntax */
401++ return 0;
402++ for (c = 0, e = *p == '-'; p < q; p++) /* go through the list */
403++ {
404++ if (e == 0 && *p == '\\') /* set escape flag if \ */
405++ e = 1;
406++ else if (e == 0 && *p == '-') /* set start of range if - */
407++ c = *(p-1);
408++ else
409++ {
410++ uch cc = (cs ? (uch)*s : case_map((uch)*s));
411++ uch uc = (uch) c;
412++ if (*(p+1) != '-')
413++ for (uc = uc ? uc : (uch)*p; uc <= (uch)*p; uc++)
414++ /* compare range */
415++ if ((cs ? uc : case_map(uc)) == cc)
416++ return r ? 0 : recmatch(q + CLEN(q), s + CLEN(s), cs);
417++ c = e = 0; /* clear range, escape flags */
418++ }
419++ }
420++ return r ? recmatch(q + CLEN(q), s + CLEN(s), cs) : 0;
421++ /* bracket match failed */
422++ }
423++#endif /* !VMS */
424+
425+- /* just a character--compare it */
426+-#ifdef QDOS
427+- return QMatch(Case((uch)c), Case(*s)) ?
428+- recmatch(p, s + CLEN(s), ic __WDL) : 0;
429+-#else
430+- return Case((uch)c) == Case(*s) ?
431+- recmatch(p, s + CLEN(s), ic __WDL) : 0;
432+-#endif
433++ /* If escape ('\'), just compare next character */
434++ if (!no_wild && c == '\\')
435++ if ((c = *p++) == '\0') /* if \ at end, then syntax error */
436++ return 0;
437++
438++#ifdef VMS
439++ /* 2005-11-06 SMS.
440++ Handle "..." wildcard in p with "." or "]" in s.
441++ */
442++ if ((c == '.') && (*p == '.') && (*(p+ CLEN( p)) == '.') &&
443++ ((*s == '.') || (*s == ']')))
444++ {
445++ /* Match "...]" with "]". Continue after "]" in both. */
446++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']'))
447++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs);
448++
449++ /* Else, look for a reduced match in s, until "]" in or end of s. */
450++ for (; *s && (*s != ']'); INCSTR(s))
451++ if (*s == '.')
452++ /* If reduced match, then continue after "..." in p, "." in s. */
453++ if ((c = recmatch( (p+ CLEN( p)), s, cs)) != 0)
454++ return (int)c;
455++
456++ /* Match "...]" with "]". Continue after "]" in both. */
457++ if ((*(p+ 2* CLEN( p)) == ']') && (*s == ']'))
458++ return recmatch( (p+ 3* CLEN( p)), (s+ CLEN( s)), cs);
459++
460++ /* No reduced match. Quit. */
461++ return 2;
462++ }
463++
464++#endif /* def VMS */
465++
466++ /* Just a character--compare it */
467++ return (cs ? c == *s : case_map((uch)c) == case_map((uch)*s)) ?
468++ recmatch(p, s + CLEN(s), cs) : 0;
469++}
470+
471+-} /* end function recmatch() */
472+
473+
474+
475++/*************************************************************************************************/
476+ static char *isshexp(p)
477+ ZCONST char *p;
478+ /* If p is a sh expression, a pointer to the first special character is
1@@ -0,0 +1,90 @@
2+diff --git a/extract.c b/extract.c
3+index eeb2f57..a0a4929 100644
4+--- a/extract.c
5++++ b/extract.c
6+@@ -472,8 +472,8 @@ int extract_or_test_files(__G) /* return PK-type error code */
7+ */
8+ Info(slide, 0x401, ((char *)slide,
9+ LoadFarString(CentSigMsg), j + blknum*DIR_BLKSIZ + 1));
10+- Info(slide, 0x401, ((char *)slide,
11+- LoadFarString(ReportMsg)));
12++ Info(slide, 0x401,
13++ ((char *)slide,"%s", LoadFarString(ReportMsg)));
14+ error_in_archive = PK_BADERR;
15+ }
16+ reached_end = TRUE; /* ...so no more left to do */
17+@@ -752,8 +752,8 @@ int extract_or_test_files(__G) /* return PK-type error code */
18+
19+ #ifndef SFX
20+ if (no_endsig_found) { /* just to make sure */
21+- Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
22+- Info(slide, 0x401, ((char *)slide, LoadFarString(ReportMsg)));
23++ Info(slide, 0x401, ((char *)slide,"%s", LoadFarString(EndSigMsg)));
24++ Info(slide, 0x401, ((char *)slide,"%s", LoadFarString(ReportMsg)));
25+ if (!error_in_archive) /* don't overwrite stronger error */
26+ error_in_archive = PK_WARN;
27+ }
28+diff --git a/list.c b/list.c
29+index 15e0011..f7359c3 100644
30+--- a/list.c
31++++ b/list.c
32+@@ -181,7 +181,7 @@ int list_files(__G) /* return PK-type error code */
33+ Info(slide, 0x401,
34+ ((char *)slide, LoadFarString(CentSigMsg), j));
35+ Info(slide, 0x401,
36+- ((char *)slide, LoadFarString(ReportMsg)));
37++ ((char *)slide,"%s", LoadFarString(ReportMsg)));
38+ return PK_BADERR; /* sig not found */
39+ }
40+ }
41+@@ -507,7 +507,8 @@ int list_files(__G) /* return PK-type error code */
42+ && (!G.ecrec.is_zip64_archive)
43+ && (memcmp(G.sig, end_central_sig, 4) != 0)
44+ ) { /* just to make sure again */
45+- Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
46++ Info(slide, 0x401,
47++ ((char *)slide,"%s", LoadFarString(EndSigMsg)));
48+ error_in_archive = PK_WARN; /* didn't find sig */
49+ }
50+
51+@@ -591,7 +592,7 @@ int get_time_stamp(__G__ last_modtime, nmember) /* return PK-type error code */
52+ Info(slide, 0x401,
53+ ((char *)slide, LoadFarString(CentSigMsg), j));
54+ Info(slide, 0x401,
55+- ((char *)slide, LoadFarString(ReportMsg)));
56++ ((char *)slide,"%s", LoadFarString(ReportMsg)));
57+ return PK_BADERR; /* sig not found */
58+ }
59+ }
60+@@ -674,7 +675,7 @@ int get_time_stamp(__G__ last_modtime, nmember) /* return PK-type error code */
61+ ---------------------------------------------------------------------------*/
62+
63+ if (memcmp(G.sig, end_central_sig, 4)) { /* just to make sure again */
64+- Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
65++ Info(slide, 0x401, ((char *)slide,"%s", LoadFarString(EndSigMsg)));
66+ error_in_archive = PK_WARN;
67+ }
68+ if (*nmember == 0L && error_in_archive <= PK_WARN)
69+diff --git a/zipinfo.c b/zipinfo.c
70+index 6e22cc8..ac5c61b 100644
71+--- a/zipinfo.c
72++++ b/zipinfo.c
73+@@ -771,7 +771,7 @@ int zipinfo(__G) /* return PK-type error code */
74+ Info(slide, 0x401,
75+ ((char *)slide, LoadFarString(CentSigMsg), j));
76+ Info(slide, 0x401,
77+- ((char *)slide, LoadFarString(ReportMsg)));
78++ ((char *)slide,"%s", LoadFarString(ReportMsg)));
79+ error_in_archive = PK_BADERR; /* sig not found */
80+ break;
81+ }
82+@@ -960,7 +960,8 @@ int zipinfo(__G) /* return PK-type error code */
83+ && (!G.ecrec.is_zip64_archive)
84+ && (memcmp(G.sig, end_central_sig, 4) != 0)
85+ ) { /* just to make sure again */
86+- Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg)));
87++ Info(slide, 0x401,
88++ ((char *)slide,"%s", LoadFarString(EndSigMsg)));
89+ error_in_archive = PK_WARN; /* didn't find sig */
90+ }
91+
1@@ -0,0 +1,104 @@
2+From bdd4a0cecd745cb4825e4508b5bdf2579731086a Mon Sep 17 00:00:00 2001
3+From: Petr Stodulka <pstodulk@redhat.com>
4+Date: Mon, 14 Sep 2015 18:23:17 +0200
5+Subject: [PATCH 1/3] upstream fix for heap overflow
6+
7+https://bugzilla.redhat.com/attachment.cgi?id=1073002
8+---
9+ crypt.c | 12 +++++++++++-
10+ 1 file changed, 11 insertions(+), 1 deletion(-)
11+
12+diff --git a/crypt.c b/crypt.c
13+index 784e411..a8975f2 100644
14+--- a/crypt.c
15++++ b/crypt.c
16+@@ -465,7 +465,17 @@ int decrypt(__G__ passwrd)
17+ GLOBAL(pInfo->encrypted) = FALSE;
18+ defer_leftover_input(__G);
19+ for (n = 0; n < RAND_HEAD_LEN; n++) {
20+- b = NEXTBYTE;
21++ /* 2012-11-23 SMS. (OUSPG report.)
22++ * Quit early if compressed size < HEAD_LEN. The resulting
23++ * error message ("unable to get password") could be improved,
24++ * but it's better than trying to read nonexistent data, and
25++ * then continuing with a negative G.csize. (See
26++ * fileio.c:readbyte()).
27++ */
28++ if ((b = NEXTBYTE) == (ush)EOF)
29++ {
30++ return PK_ERR;
31++ }
32+ h[n] = (uch)b;
33+ Trace((stdout, " (%02x)", h[n]));
34+ }
35+--
36+2.4.6
37+
38+
39+From 4b48844661ff9569f2ecf582a387d46a5775b5d8 Mon Sep 17 00:00:00 2001
40+From: Kamil Dudka <kdudka@redhat.com>
41+Date: Mon, 14 Sep 2015 18:24:56 +0200
42+Subject: [PATCH 2/3] fix infinite loop when extracting empty bzip2 data
43+
44+Bug: https://sourceforge.net/p/infozip/patches/23/
45+---
46+ extract.c | 6 ++++++
47+ 1 file changed, 6 insertions(+)
48+
49+diff --git a/extract.c b/extract.c
50+index 7134bfe..29db027 100644
51+--- a/extract.c
52++++ b/extract.c
53+@@ -2733,6 +2733,12 @@ __GDEF
54+ int repeated_buf_err;
55+ bz_stream bstrm;
56+
57++ if (G.incnt <= 0 && G.csize <= 0L) {
58++ /* avoid an infinite loop */
59++ Trace((stderr, "UZbunzip2() got empty input\n"));
60++ return 2;
61++ }
62++
63+ #if (defined(DLL) && !defined(NO_SLIDE_REDIR))
64+ if (G.redirect_slide)
65+ wsize = G.redirect_size, redirSlide = G.redirect_buffer;
66+--
67+2.4.6
68+
69+
70+From bd150334fb4084f5555a6be26b015a0671cb5b74 Mon Sep 17 00:00:00 2001
71+From: Kamil Dudka <kdudka@redhat.com>
72+Date: Tue, 22 Sep 2015 18:52:23 +0200
73+Subject: [PATCH 3/3] extract: prevent unsigned overflow on invalid input
74+
75+Suggested-by: Stefan Cornelius
76+---
77+ extract.c | 11 ++++++++++-
78+ 1 file changed, 10 insertions(+), 1 deletion(-)
79+
80+diff --git a/extract.c b/extract.c
81+index 29db027..b9ae667 100644
82+--- a/extract.c
83++++ b/extract.c
84+@@ -1257,8 +1257,17 @@ static int extract_or_test_entrylist(__G__ numchunk,
85+ if (G.lrec.compression_method == STORED) {
86+ zusz_t csiz_decrypted = G.lrec.csize;
87+
88+- if (G.pInfo->encrypted)
89++ if (G.pInfo->encrypted) {
90++ if (csiz_decrypted < 12) {
91++ /* handle the error now to prevent unsigned overflow */
92++ Info(slide, 0x401, ((char *)slide,
93++ LoadFarStringSmall(ErrUnzipNoFile),
94++ LoadFarString(InvalidComprData),
95++ LoadFarStringSmall2(Inflate)));
96++ return PK_ERR;
97++ }
98+ csiz_decrypted -= 12;
99++ }
100+ if (G.lrec.ucsize != csiz_decrypted) {
101+ Info(slide, 0x401, ((char *)slide,
102+ LoadFarStringSmall2(WrnStorUCSizCSizDiff),
103+--
104+2.5.2
105+
1@@ -0,0 +1,11 @@
2+--- unzip60/man/unzip.1 2011-01-11 11:59:59.000000000 +0000
3++++ unzip60/man/unzip.1 2011-02-05 18:45:55.000000000 +0000
4+@@ -424,7 +424,7 @@
5+ .\" Amiga support possible eventually, but not yet
6+ [MS-DOS, OS/2, NT] restore the volume label if the extraction medium is
7+ removable (e.g., a diskette). Doubling the option (\fB\-$$\fP) allows fixed
8+-media (hard disks) to be labelled as well. By default, volume labels are
9++media (hard disks) to be labeled as well. By default, volume labels are
10+ ignored.
11+ .IP \fB\-/\fP\ \fIextensions\fP
12+ [Acorn only] overrides the extension list supplied by Unzip$Ext environment
1@@ -0,0 +1,34 @@
2+diff --git a/list.c b/list.c
3+index f7359c3..4c3d703 100644
4+--- a/list.c
5++++ b/list.c
6+@@ -97,7 +97,7 @@ int list_files(__G) /* return PK-type error code */
7+ {
8+ int do_this_file=FALSE, cfactor, error, error_in_archive=PK_COOL;
9+ #ifndef WINDLL
10+- char sgn, cfactorstr[10];
11++ char sgn, cfactorstr[13];
12+ int longhdr=(uO.vflag>1);
13+ #endif
14+ int date_format;
15+@@ -339,7 +339,19 @@ int list_files(__G) /* return PK-type error code */
16+ G.crec.compression_method == ENHDEFLATED) {
17+ methbuf[5] = dtype[(G.crec.general_purpose_bit_flag>>1) & 3];
18+ } else if (methnum >= NUM_METHODS) {
19+- sprintf(&methbuf[4], "%03u", G.crec.compression_method);
20++ /* 2013-02-26 SMS.
21++ * http://sourceforge.net/tracker/?func=detail
22++ * &aid=2861648&group_id=118012&atid=679786
23++ * Unexpectedly large compression methods overflow
24++ * &methbuf[]. Use the old, three-digit decimal format
25++ * for values which fit. Otherwise, sacrifice the
26++ * colon, and use four-digit hexadecimal.
27++ */
28++ if (G.crec.compression_method <= 999) {
29++ sprintf( &methbuf[ 4], "%03u", G.crec.compression_method);
30++ } else {
31++ sprintf( &methbuf[ 3], "%04X", G.crec.compression_method);
32++ }
33+ }
34+
35+ #if 0 /* GRR/Euro: add this? */
1@@ -0,0 +1,25 @@
2+diff --git a/extract.c b/extract.c
3+index a0a4929..9ef80b3 100644
4+--- a/extract.c
5++++ b/extract.c
6+@@ -2214,6 +2214,7 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata)
7+ ulg eb_ucsize;
8+ uch *eb_ucptr;
9+ int r;
10++ ush method;
11+
12+ if (compr_offset < 4) /* field is not compressed: */
13+ return PK_OK; /* do nothing and signal OK */
14+@@ -2223,6 +2224,12 @@ static int test_compr_eb(__G__ eb, eb_size, compr_offset, test_uc_ebdata)
15+ eb_size <= (compr_offset + EB_CMPRHEADLEN)))
16+ return IZ_EF_TRUNC; /* no compressed data! */
17+
18++ method = makeword(eb + (EB_HEADSIZE + compr_offset));
19++ if ((method == STORED) && (eb_size != compr_offset + EB_CMPRHEADLEN + eb_ucsize))
20++ return PK_ERR; /* compressed & uncompressed
21++ * should match in STORED
22++ * method */
23++
24+ if (
25+ #ifdef INT_16BIT
26+ (((ulg)(extent)eb_ucsize) != eb_ucsize) ||
1@@ -0,0 +1,17 @@
2+diff --git a/process.c b/process.c
3+index 1e9a1e1..905732b 100644
4+--- a/process.c
5++++ b/process.c
6+@@ -1751,6 +1751,12 @@ int process_cdir_file_hdr(__G) /* return PK-type error code */
7+ = (G.crec.general_purpose_bit_flag & (1 << 11)) == (1 << 11);
8+ #endif
9+
10++#ifdef SYMLINKS
11++ /* Initialize the symlink flag, may be set by the platform-specific
12++ mapattr function. */
13++ G.pInfo->symlink = 0;
14++#endif
15++
16+ return PK_COOL;
17+
18+ } /* end function process_cdir_file_hdr() */
1@@ -0,0 +1,41 @@
2+From: "Steven M. Schweda" <sms@antinode.info>
3+Subject: Do not ignore extra fields containing Unix Timestamps
4+Bug-Debian: https://bugs.debian.org/842993
5+X-Debian-version: 6.0-21
6+
7+--- a/process.c
8++++ b/process.c
9+@@ -2914,10 +2914,13 @@
10+ break;
11+
12+ case EF_IZUNIX2:
13+- if (have_new_type_eb == 0) {
14+- flags &= ~0x0ff; /* ignore any previous IZUNIX field */
15++ if (have_new_type_eb == 0) { /* (< 1) */
16+ have_new_type_eb = 1;
17+ }
18++ if (have_new_type_eb <= 1) {
19++ /* Ignore any prior (EF_IZUNIX/EF_PKUNIX) UID/GID. */
20++ flags &= 0x0ff;
21++ }
22+ #ifdef IZ_HAVE_UXUIDGID
23+ if (have_new_type_eb > 1)
24+ break; /* IZUNIX3 overrides IZUNIX2 e.f. block ! */
25+@@ -2933,6 +2936,8 @@
26+ /* new 3rd generation Unix ef */
27+ have_new_type_eb = 2;
28+
29++ /* Ignore any prior EF_IZUNIX/EF_PKUNIX/EF_IZUNIX2 UID/GID. */
30++ flags &= 0x0ff;
31+ /*
32+ Version 1 byte version of this extra field, currently 1
33+ UIDSize 1 byte Size of UID field
34+@@ -2953,8 +2958,6 @@
35+ uid_size = *((EB_HEADSIZE + 1) + ef_buf);
36+ gid_size = *((EB_HEADSIZE + uid_size + 2) + ef_buf);
37+
38+- flags &= ~0x0ff; /* ignore any previous UNIX field */
39+-
40+ if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf,
41+ uid_size, &z_uidgid[0])
42+ &&
1@@ -0,0 +1,26 @@
2+diff --git a/fileio.c b/fileio.c
3+index ba0a1d0..03fc4be 100644
4+--- a/fileio.c
5++++ b/fileio.c
6+@@ -2006,6 +2006,7 @@ int do_string(__G__ length, option) /* return PK-type error code */
7+ unsigned comment_bytes_left;
8+ unsigned int block_len;
9+ int error=PK_OK;
10++ unsigned int length2;
11+ #ifdef AMIGA
12+ char tmp_fnote[2 * AMIGA_FILENOTELEN]; /* extra room for squozen chars */
13+ #endif
14+@@ -2292,8 +2293,12 @@ int do_string(__G__ length, option) /* return PK-type error code */
15+ seek_zipf(__G__ G.cur_zipfile_bufstart - G.extra_bytes +
16+ (G.inptr-G.inbuf) + length);
17+ } else {
18+- if (readbuf(__G__ (char *)G.extra_field, length) == 0)
19++ if ((length2 = readbuf(__G__ (char *)G.extra_field, length)) == 0)
20+ return PK_EOF;
21++ if(length2 < length) {
22++ memset (__G__ (char *)G.extra_field+length2, 0 , length-length2);
23++ length = length2;
24++ }
25+ /* Looks like here is where extra fields are read */
26+ getZip64Data(__G__ G.extra_field, length);
27+ #ifdef UNICODE_SUPPORT
1@@ -0,0 +1,28 @@
2+--- ./process.c.orig 2009-03-06 02:25:10.000000000 +0100
3++++ ./process.c
4+@@ -2901,9 +2901,9 @@
5+ */
6+
7+ #ifdef IZ_HAVE_UXUIDGID
8+- if (eb_len >= EB_UX3_MINLEN
9+- && z_uidgid != NULL
10+- && (*((EB_HEADSIZE + 0) + ef_buf) == 1)
11++ if ((eb_len >= EB_UX3_MINLEN)
12++ && (z_uidgid != NULL)
13++ && ((*((EB_HEADSIZE + 0) + ef_buf) == 1)))
14+ /* only know about version 1 */
15+ {
16+ uch uid_size;
17+@@ -2915,10 +2915,10 @@
18+ flags &= ~0x0ff; /* ignore any previous UNIX field */
19+
20+ if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf,
21+- uid_size, z_uidgid[0])
22++ uid_size, &z_uidgid[0])
23+ &&
24+ read_ux3_value((EB_HEADSIZE + uid_size + 3) + ef_buf,
25+- gid_size, z_uidgid[1]) )
26++ gid_size, &z_uidgid[1]) )
27+ {
28+ flags |= EB_UX2_VALID; /* signal success */
29+ }
1@@ -0,0 +1,19 @@
2+diff --git a/process.c b/process.c
3+index d2a846e..cba2463 100644
4+--- a/process.c
5++++ b/process.c
6+@@ -2064,10 +2064,14 @@ int getUnicodeData(__G__ ef_buf, ef_len)
7+ G.unipath_checksum = makelong(offset + ef_buf);
8+ offset += 4;
9+
10++ if (!G.filename_full) {
11++ /* Check if we have a unicode extra section but no filename set */
12++ return PK_ERR;
13++ }
14++
15+ /*
16+ * Compute 32-bit crc
17+ */
18+-
19+ chksum = crc32(chksum, (uch *)(G.filename_full),
20+ strlen(G.filename_full));
1@@ -0,0 +1,25 @@
2+From 6fe72291a5563cdbcd2bdd87e36528537b7cdcfb Mon Sep 17 00:00:00 2001
3+From: Jakub Martisko <jamartis@redhat.com>
4+Date: Mon, 18 Nov 2019 14:17:46 +0100
5+Subject: [PATCH] update the man page
6+
7+---
8+ man/unzip.1 | 2 ++
9+ 1 file changed, 2 insertions(+)
10+
11+diff --git a/man/unzip.1 b/man/unzip.1
12+index 21816d1..4d66073 100644
13+--- a/man/unzip.1
14++++ b/man/unzip.1
15+@@ -850,6 +850,8 @@ the specified zipfiles were not found.
16+ invalid options were specified on the command line.
17+ .IP 11
18+ no matching files were found.
19++.IP 12
20++invalid zip file with overlapped components (possible zip bomb).
21+ .IP 50
22+ the disk is (or was) full during extraction.
23+ .IP 51
24+--
25+2.23.0
26+
1@@ -0,0 +1,25 @@
2+From 41beb477c5744bc396fa1162ee0c14218ec12213 Mon Sep 17 00:00:00 2001
3+From: Mark Adler <madler@alumni.caltech.edu>
4+Date: Mon, 27 May 2019 08:20:32 -0700
5+Subject: [PATCH] Fix bug in undefer_input() that misplaced the input state.
6+
7+---
8+ fileio.c | 4 +++-
9+ 1 file changed, 3 insertions(+), 1 deletion(-)
10+
11+diff --git a/fileio.c b/fileio.c
12+index c042987..bc00d74 100644
13+--- a/fileio.c
14++++ b/fileio.c
15+@@ -530,8 +530,10 @@ void undefer_input(__G)
16+ * This condition was checked when G.incnt_leftover was set > 0 in
17+ * defer_leftover_input(), and it is NOT allowed to touch G.csize
18+ * before calling undefer_input() when (G.incnt_leftover > 0)
19+- * (single exception: see read_byte()'s "G.csize <= 0" handling) !!
20++ * (single exception: see readbyte()'s "G.csize <= 0" handling) !!
21+ */
22++ if (G.csize < 0L)
23++ G.csize = 0L;
24+ G.incnt = G.incnt_leftover + (int)G.csize;
25+ G.inptr = G.inptr_leftover - (int)G.csize;
26+ G.incnt_leftover = 0;
+349,
-0
1@@ -0,0 +1,349 @@
2+From 47b3ceae397d21bf822bc2ac73052a4b1daf8e1c Mon Sep 17 00:00:00 2001
3+From: Mark Adler <madler@alumni.caltech.edu>
4+Date: Tue, 11 Jun 2019 22:01:18 -0700
5+Subject: [PATCH] Detect and reject a zip bomb using overlapped entries.
6+
7+This detects an invalid zip file that has at least one entry that
8+overlaps with another entry or with the central directory to the
9+end of the file. A Fifield zip bomb uses overlapped local entries
10+to vastly increase the potential inflation ratio. Such an invalid
11+zip file is rejected.
12+
13+See https://www.bamsoftware.com/hacks/zipbomb/ for David Fifield's
14+analysis, construction, and examples of such zip bombs.
15+
16+The detection maintains a list of covered spans of the zip files
17+so far, where the central directory to the end of the file and any
18+bytes preceding the first entry at zip file offset zero are
19+considered covered initially. Then as each entry is decompressed
20+or tested, it is considered covered. When a new entry is about to
21+be processed, its initial offset is checked to see if it is
22+contained by a covered span. If so, the zip file is rejected as
23+invalid.
24+
25+This commit depends on a preceding commit: "Fix bug in
26+undefer_input() that misplaced the input state."
27+---
28+ extract.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
29+ globals.c | 1 +
30+ globals.h | 3 +
31+ process.c | 11 ++++
32+ unzip.h | 1 +
33+ 5 files changed, 205 insertions(+), 1 deletion(-)
34+
35+diff --git a/extract.c b/extract.c
36+index 1acd769..0973a33 100644
37+--- a/extract.c
38++++ b/extract.c
39+@@ -319,6 +319,125 @@ static ZCONST char Far UnsupportedExtraField[] =
40+ "\nerror: unsupported extra-field compression type (%u)--skipping\n";
41+ static ZCONST char Far BadExtraFieldCRC[] =
42+ "error [%s]: bad extra-field CRC %08lx (should be %08lx)\n";
43++static ZCONST char Far NotEnoughMemCover[] =
44++ "error: not enough memory for bomb detection\n";
45++static ZCONST char Far OverlappedComponents[] =
46++ "error: invalid zip file with overlapped components (possible zip bomb)\n";
47++
48++
49++
50++
51++
52++/* A growable list of spans. */
53++typedef zoff_t bound_t;
54++typedef struct {
55++ bound_t beg; /* start of the span */
56++ bound_t end; /* one past the end of the span */
57++} span_t;
58++typedef struct {
59++ span_t *span; /* allocated, distinct, and sorted list of spans */
60++ size_t num; /* number of spans in the list */
61++ size_t max; /* allocated number of spans (num <= max) */
62++} cover_t;
63++
64++/*
65++ * Return the index of the first span in cover whose beg is greater than val.
66++ * If there is no such span, then cover->num is returned.
67++ */
68++static size_t cover_find(cover, val)
69++ cover_t *cover;
70++ bound_t val;
71++{
72++ size_t lo = 0, hi = cover->num;
73++ while (lo < hi) {
74++ size_t mid = (lo + hi) >> 1;
75++ if (val < cover->span[mid].beg)
76++ hi = mid;
77++ else
78++ lo = mid + 1;
79++ }
80++ return hi;
81++}
82++
83++/* Return true if val lies within any one of the spans in cover. */
84++static int cover_within(cover, val)
85++ cover_t *cover;
86++ bound_t val;
87++{
88++ size_t pos = cover_find(cover, val);
89++ return pos > 0 && val < cover->span[pos - 1].end;
90++}
91++
92++/*
93++ * Add a new span to the list, but only if the new span does not overlap any
94++ * spans already in the list. The new span covers the values beg..end-1. beg
95++ * must be less than end.
96++ *
97++ * Keep the list sorted and merge adjacent spans. Grow the allocated space for
98++ * the list as needed. On success, 0 is returned. If the new span overlaps any
99++ * existing spans, then 1 is returned and the new span is not added to the
100++ * list. If the new span is invalid because beg is greater than or equal to
101++ * end, then -1 is returned. If the list needs to be grown but the memory
102++ * allocation fails, then -2 is returned.
103++ */
104++static int cover_add(cover, beg, end)
105++ cover_t *cover;
106++ bound_t beg;
107++ bound_t end;
108++{
109++ size_t pos;
110++ int prec, foll;
111++
112++ if (beg >= end)
113++ /* The new span is invalid. */
114++ return -1;
115++
116++ /* Find where the new span should go, and make sure that it does not
117++ overlap with any existing spans. */
118++ pos = cover_find(cover, beg);
119++ if ((pos > 0 && beg < cover->span[pos - 1].end) ||
120++ (pos < cover->num && end > cover->span[pos].beg))
121++ return 1;
122++
123++ /* Check for adjacencies. */
124++ prec = pos > 0 && beg == cover->span[pos - 1].end;
125++ foll = pos < cover->num && end == cover->span[pos].beg;
126++ if (prec && foll) {
127++ /* The new span connects the preceding and following spans. Merge the
128++ following span into the preceding span, and delete the following
129++ span. */
130++ cover->span[pos - 1].end = cover->span[pos].end;
131++ cover->num--;
132++ memmove(cover->span + pos, cover->span + pos + 1,
133++ (cover->num - pos) * sizeof(span_t));
134++ }
135++ else if (prec)
136++ /* The new span is adjacent only to the preceding span. Extend the end
137++ of the preceding span. */
138++ cover->span[pos - 1].end = end;
139++ else if (foll)
140++ /* The new span is adjacent only to the following span. Extend the
141++ beginning of the following span. */
142++ cover->span[pos].beg = beg;
143++ else {
144++ /* The new span has gaps between both the preceding and the following
145++ spans. Assure that there is room and insert the span. */
146++ if (cover->num == cover->max) {
147++ size_t max = cover->max == 0 ? 16 : cover->max << 1;
148++ span_t *span = realloc(cover->span, max * sizeof(span_t));
149++ if (span == NULL)
150++ return -2;
151++ cover->span = span;
152++ cover->max = max;
153++ }
154++ memmove(cover->span + pos + 1, cover->span + pos,
155++ (cover->num - pos) * sizeof(span_t));
156++ cover->num++;
157++ cover->span[pos].beg = beg;
158++ cover->span[pos].end = end;
159++ }
160++ return 0;
161++}
162+
163+
164+
165+@@ -374,6 +493,29 @@ int extract_or_test_files(__G) /* return PK-type error code */
166+ }
167+ #endif /* !SFX || SFX_EXDIR */
168+
169++ /* One more: initialize cover structure for bomb detection. Start with a
170++ span that covers the central directory though the end of the file. */
171++ if (G.cover == NULL) {
172++ G.cover = malloc(sizeof(cover_t));
173++ if (G.cover == NULL) {
174++ Info(slide, 0x401, ((char *)slide,
175++ LoadFarString(NotEnoughMemCover)));
176++ return PK_MEM;
177++ }
178++ ((cover_t *)G.cover)->span = NULL;
179++ ((cover_t *)G.cover)->max = 0;
180++ }
181++ ((cover_t *)G.cover)->num = 0;
182++ if ((G.extra_bytes != 0 &&
183++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) ||
184++ cover_add((cover_t *)G.cover,
185++ G.extra_bytes + G.ecrec.offset_start_central_directory,
186++ G.ziplen) != 0) {
187++ Info(slide, 0x401, ((char *)slide,
188++ LoadFarString(NotEnoughMemCover)));
189++ return PK_MEM;
190++ }
191++
192+ /*---------------------------------------------------------------------------
193+ The basic idea of this function is as follows. Since the central di-
194+ rectory lies at the end of the zipfile and the member files lie at the
195+@@ -591,7 +733,8 @@ int extract_or_test_files(__G) /* return PK-type error code */
196+ if (error > error_in_archive)
197+ error_in_archive = error;
198+ /* ...and keep going (unless disk full or user break) */
199+- if (G.disk_full > 1 || error_in_archive == IZ_CTRLC) {
200++ if (G.disk_full > 1 || error_in_archive == IZ_CTRLC ||
201++ error == PK_BOMB) {
202+ /* clear reached_end to signal premature stop ... */
203+ reached_end = FALSE;
204+ /* ... and cancel scanning the central directory */
205+@@ -1060,6 +1203,11 @@ static int extract_or_test_entrylist(__G__ numchunk,
206+
207+ /* seek_zipf(__G__ pInfo->offset); */
208+ request = G.pInfo->offset + G.extra_bytes;
209++ if (cover_within((cover_t *)G.cover, request)) {
210++ Info(slide, 0x401, ((char *)slide,
211++ LoadFarString(OverlappedComponents)));
212++ return PK_BOMB;
213++ }
214+ inbuf_offset = request % INBUFSIZ;
215+ bufstart = request - inbuf_offset;
216+
217+@@ -1591,6 +1739,18 @@ static int extract_or_test_entrylist(__G__ numchunk,
218+ return IZ_CTRLC; /* cancel operation by user request */
219+ }
220+ #endif
221++ error = cover_add((cover_t *)G.cover, request,
222++ G.cur_zipfile_bufstart + (G.inptr - G.inbuf));
223++ if (error < 0) {
224++ Info(slide, 0x401, ((char *)slide,
225++ LoadFarString(NotEnoughMemCover)));
226++ return PK_MEM;
227++ }
228++ if (error != 0) {
229++ Info(slide, 0x401, ((char *)slide,
230++ LoadFarString(OverlappedComponents)));
231++ return PK_BOMB;
232++ }
233+ #ifdef MACOS /* MacOS is no preemptive OS, thus call event-handling by hand */
234+ UserStop();
235+ #endif
236+@@ -1992,6 +2152,34 @@ static int extract_or_test_member(__G) /* return PK-type error code */
237+ }
238+
239+ undefer_input(__G);
240++
241++ if ((G.lrec.general_purpose_bit_flag & 8) != 0) {
242++ /* skip over data descriptor (harder than it sounds, due to signature
243++ * ambiguity)
244++ */
245++# define SIG 0x08074b50
246++# define LOW 0xffffffff
247++ uch buf[12];
248++ unsigned shy = 12 - readbuf((char *)buf, 12);
249++ ulg crc = shy ? 0 : makelong(buf);
250++ ulg clen = shy ? 0 : makelong(buf + 4);
251++ ulg ulen = shy ? 0 : makelong(buf + 8); /* or high clen if ZIP64 */
252++ if (crc == SIG && /* if not SIG, no signature */
253++ (G.lrec.crc32 != SIG || /* if not SIG, have signature */
254++ (clen == SIG && /* if not SIG, no signature */
255++ ((G.lrec.csize & LOW) != SIG || /* if not SIG, have signature */
256++ (ulen == SIG && /* if not SIG, no signature */
257++ (G.zip64 ? G.lrec.csize >> 32 : G.lrec.ucsize) != SIG
258++ /* if not SIG, have signature */
259++ )))))
260++ /* skip four more bytes to account for signature */
261++ shy += 4 - readbuf((char *)buf, 4);
262++ if (G.zip64)
263++ shy += 8 - readbuf((char *)buf, 8); /* skip eight more for ZIP64 */
264++ if (shy)
265++ error = PK_ERR;
266++ }
267++
268+ return error;
269+
270+ } /* end function extract_or_test_member() */
271+diff --git a/globals.c b/globals.c
272+index fa8cca5..1e0f608 100644
273+--- a/globals.c
274++++ b/globals.c
275+@@ -181,6 +181,7 @@ Uz_Globs *globalsCtor()
276+ # if (!defined(NO_TIMESTAMPS))
277+ uO.D_flag=1; /* default to '-D', no restoration of dir timestamps */
278+ # endif
279++ G.cover = NULL; /* not allocated yet */
280+ #endif
281+
282+ uO.lflag=(-1);
283+diff --git a/globals.h b/globals.h
284+index 11b7215..2bdcdeb 100644
285+--- a/globals.h
286++++ b/globals.h
287+@@ -260,12 +260,15 @@ typedef struct Globals {
288+ ecdir_rec ecrec; /* used in unzip.c, extract.c */
289+ z_stat statbuf; /* used by main, mapname, check_for_newer */
290+
291++ int zip64; /* true if Zip64 info in extra field */
292++
293+ int mem_mode;
294+ uch *outbufptr; /* extract.c static */
295+ ulg outsize; /* extract.c static */
296+ int reported_backslash; /* extract.c static */
297+ int disk_full;
298+ int newfile;
299++ void **cover; /* used in extract.c for bomb detection */
300+
301+ int didCRlast; /* fileio static */
302+ ulg numlines; /* fileio static: number of lines printed */
303+diff --git a/process.c b/process.c
304+index 1e9a1e1..d2e4dc3 100644
305+--- a/process.c
306++++ b/process.c
307+@@ -637,6 +637,13 @@ void free_G_buffers(__G) /* releases all memory allocated in global vars */
308+ }
309+ #endif
310+
311++ /* Free the cover span list and the cover structure. */
312++ if (G.cover != NULL) {
313++ free(*(G.cover));
314++ free(G.cover);
315++ G.cover = NULL;
316++ }
317++
318+ } /* end function free_G_buffers() */
319+
320+
321+@@ -1890,6 +1897,8 @@ int getZip64Data(__G__ ef_buf, ef_len)
322+ #define Z64FLGS 0xffff
323+ #define Z64FLGL 0xffffffff
324+
325++ G.zip64 = FALSE;
326++
327+ if (ef_len == 0 || ef_buf == NULL)
328+ return PK_COOL;
329+
330+@@ -1927,6 +1936,8 @@ int getZip64Data(__G__ ef_buf, ef_len)
331+ #if 0
332+ break; /* Expect only one EF_PKSZ64 block. */
333+ #endif /* 0 */
334++
335++ G.zip64 = TRUE;
336+ }
337+
338+ /* Skip this extra field block. */
339+diff --git a/unzip.h b/unzip.h
340+index 5b2a326..ed24a5b 100644
341+--- a/unzip.h
342++++ b/unzip.h
343+@@ -645,6 +645,7 @@ typedef struct _Uzp_cdir_Rec {
344+ #define PK_NOZIP 9 /* zipfile not found */
345+ #define PK_PARAM 10 /* bad or illegal parameters specified */
346+ #define PK_FIND 11 /* no files found */
347++#define PK_BOMB 12 /* likely zip bomb */
348+ #define PK_DISK 50 /* disk full */
349+ #define PK_EOF 51 /* unexpected EOF */
350+
+112,
-0
1@@ -0,0 +1,112 @@
2+From 6d351831be705cc26d897db44f878a978f4138fc Mon Sep 17 00:00:00 2001
3+From: Mark Adler <madler@alumni.caltech.edu>
4+Date: Thu, 25 Jul 2019 20:43:17 -0700
5+Subject: [PATCH] Do not raise a zip bomb alert for a misplaced central
6+ directory.
7+
8+There is a zip-like file in the Firefox distribution, omni.ja,
9+which is a zip container with the central directory placed at the
10+start of the file instead of after the local entries as required
11+by the zip standard. This commit marks the actual location of the
12+central directory, as well as the end of central directory records,
13+as disallowed locations. This now permits such containers to not
14+raise a zip bomb alert, where in fact there are no overlaps.
15+---
16+ extract.c | 25 +++++++++++++++++++------
17+ process.c | 6 ++++++
18+ unzpriv.h | 10 ++++++++++
19+ 3 files changed, 35 insertions(+), 6 deletions(-)
20+
21+diff --git a/extract.c b/extract.c
22+index 0973a33..1b73cb0 100644
23+--- a/extract.c
24++++ b/extract.c
25+@@ -493,8 +493,11 @@ int extract_or_test_files(__G) /* return PK-type error code */
26+ }
27+ #endif /* !SFX || SFX_EXDIR */
28+
29+- /* One more: initialize cover structure for bomb detection. Start with a
30+- span that covers the central directory though the end of the file. */
31++ /* One more: initialize cover structure for bomb detection. Start with
32++ spans that cover any extra bytes at the start, the central directory,
33++ the end of central directory record (including the Zip64 end of central
34++ directory locator, if present), and the Zip64 end of central directory
35++ record, if present. */
36+ if (G.cover == NULL) {
37+ G.cover = malloc(sizeof(cover_t));
38+ if (G.cover == NULL) {
39+@@ -506,15 +509,25 @@ int extract_or_test_files(__G) /* return PK-type error code */
40+ ((cover_t *)G.cover)->max = 0;
41+ }
42+ ((cover_t *)G.cover)->num = 0;
43+- if ((G.extra_bytes != 0 &&
44+- cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) ||
45+- cover_add((cover_t *)G.cover,
46++ if (cover_add((cover_t *)G.cover,
47+ G.extra_bytes + G.ecrec.offset_start_central_directory,
48+- G.ziplen) != 0) {
49++ G.extra_bytes + G.ecrec.offset_start_central_directory +
50++ G.ecrec.size_central_directory) != 0) {
51+ Info(slide, 0x401, ((char *)slide,
52+ LoadFarString(NotEnoughMemCover)));
53+ return PK_MEM;
54+ }
55++ if ((G.extra_bytes != 0 &&
56++ cover_add((cover_t *)G.cover, 0, G.extra_bytes) != 0) ||
57++ (G.ecrec.have_ecr64 &&
58++ cover_add((cover_t *)G.cover, G.ecrec.ec64_start,
59++ G.ecrec.ec64_end) != 0) ||
60++ cover_add((cover_t *)G.cover, G.ecrec.ec_start,
61++ G.ecrec.ec_end) != 0) {
62++ Info(slide, 0x401, ((char *)slide,
63++ LoadFarString(OverlappedComponents)));
64++ return PK_BOMB;
65++ }
66+
67+ /*---------------------------------------------------------------------------
68+ The basic idea of this function is as follows. Since the central di-
69+diff --git a/process.c b/process.c
70+index d2e4dc3..d75d405 100644
71+--- a/process.c
72++++ b/process.c
73+@@ -1408,6 +1408,10 @@ static int find_ecrec64(__G__ searchlen) /* return PK-class error */
74+
75+ /* Now, we are (almost) sure that we have a Zip64 archive. */
76+ G.ecrec.have_ecr64 = 1;
77++ G.ecrec.ec_start -= ECLOC64_SIZE+4;
78++ G.ecrec.ec64_start = ecrec64_start_offset;
79++ G.ecrec.ec64_end = ecrec64_start_offset +
80++ 12 + makeint64(&byterec[ECREC64_LENGTH]);
81+
82+ /* Update the "end-of-central-dir offset" for later checks. */
83+ G.real_ecrec_offset = ecrec64_start_offset;
84+@@ -1542,6 +1546,8 @@ static int find_ecrec(__G__ searchlen) /* return PK-class error */
85+ makelong(&byterec[OFFSET_START_CENTRAL_DIRECTORY]);
86+ G.ecrec.zipfile_comment_length =
87+ makeword(&byterec[ZIPFILE_COMMENT_LENGTH]);
88++ G.ecrec.ec_start = G.real_ecrec_offset;
89++ G.ecrec.ec_end = G.ecrec.ec_start + 22 + G.ecrec.zipfile_comment_length;
90+
91+ /* Now, we have to read the archive comment, BEFORE the file pointer
92+ is moved away backwards to seek for a Zip64 ECLOC64 structure.
93+diff --git a/unzpriv.h b/unzpriv.h
94+index dc9eff5..297b3c7 100644
95+--- a/unzpriv.h
96++++ b/unzpriv.h
97+@@ -2185,6 +2185,16 @@ typedef struct VMStimbuf {
98+ int have_ecr64; /* valid Zip64 ecdir-record exists */
99+ int is_zip64_archive; /* Zip64 ecdir-record is mandatory */
100+ ush zipfile_comment_length;
101++ zusz_t ec_start, ec_end; /* offsets of start and end of the
102++ end of central directory record,
103++ including if present the Zip64
104++ end of central directory locator,
105++ which immediately precedes the
106++ end of central directory record */
107++ zusz_t ec64_start, ec64_end; /* if have_ecr64 is true, then these
108++ are the offsets of the start and
109++ end of the Zip64 end of central
110++ directory record */
111+ } ecdir_rec;
112+
113+
+32,
-0
1@@ -0,0 +1,32 @@
2+https://versaweb.dl.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz
3+patches/0001-Fix-CVE-2016-9844-rhbz-1404283.patch
4+patches/series
5+patches/unzip-6.0-COVSCAN-fix-unterminated-string.patch
6+patches/unzip-6.0-alt-iconv-utf8-print.patch
7+patches/unzip-6.0-alt-iconv-utf8.patch
8+patches/unzip-6.0-attribs-overflow.patch
9+patches/unzip-6.0-bzip2-configure.patch
10+patches/unzip-6.0-caseinsensitive.patch
11+patches/unzip-6.0-close.patch
12+patches/unzip-6.0-configure.patch
13+patches/unzip-6.0-cve-2014-8139.patch
14+patches/unzip-6.0-cve-2014-8140.patch
15+patches/unzip-6.0-cve-2014-8141.patch
16+patches/unzip-6.0-cve-2018-1000035-heap-based-overflow.patch
17+patches/unzip-6.0-cve-2018-18384.patch
18+patches/unzip-6.0-exec-shield.patch
19+patches/unzip-6.0-fix-recmatch.patch
20+patches/unzip-6.0-format-secure.patch
21+patches/unzip-6.0-heap-overflow-infloop.patch
22+patches/unzip-6.0-manpage-fix.patch
23+patches/unzip-6.0-overflow-long-fsize.patch
24+patches/unzip-6.0-overflow.patch
25+patches/unzip-6.0-symlink.patch
26+patches/unzip-6.0-timestamp.patch
27+patches/unzip-6.0-valgrind.patch
28+patches/unzip-6.0-x-option.patch
29+patches/unzip-6.0_CVE-2021-4217.patch
30+patches/unzip-zipbomb-manpage.patch
31+patches/unzip-zipbomb-part1.patch
32+patches/unzip-zipbomb-part2.patch
33+patches/unzip-zipbomb-part3.patch
+1,
-0
1@@ -0,0 +1 @@
2+6.0 2
+106,
-0
1@@ -0,0 +1,106 @@
2+#!/bin/sh -e
3+
4+export DESTDIR="$1"
5+
6+for p in *.patch; do
7+ patch -p1 < "$p"
8+done
9+
10+export CCACHE_SLOPPINESS=time_macros,include_file_mtime
11+
12+# Enable streaming related options if gstreamer is installed.
13+pkg-config --exists gstreamer-video-1.0 && video=ON
14+pkg-config --exists gstreamer-audio-1.0 && audio=ON
15+
16+# Enable the use of openjpeg if the package is installed.
17+pkg-config --exists openjpeg2 && jpeg=ON
18+
19+# Enable WEB_CRYPTO if libtasn1 is installed.
20+pkg-config --exists libtasn1 && tasn=ON
21+
22+# Use clang if installed, decreases compilation time by 25%.
23+if command -v clang; then
24+ export CC=clang
25+ export CXX=clang++
26+fi
27+
28+# fix unsupported -n or -h flag for sbase ln
29+sed 's/ln -sfh/ln -sf/g' Source/WebCore/Scripts/generate-derived-sources.sh > _
30+mv -f _ Source/WebCore/Scripts/generate-derived-sources.sh
31+chmod 755 Source/WebCore/Scripts/generate-derived-sources.sh
32+
33+sed 's/ln -n -s -f/ln -sf/g' Source/JavaScriptCore/GLib.cmake > _
34+mv -f _ Source/JavaScriptCore/GLib.cmake
35+
36+sed 's/ln -n -s -f/ln -sf/g' Source/WebKit/PlatformGTK.cmake > _
37+mv -f _ Source/WebKit/PlatformGTK.cmake
38+
39+sed 's/ln -n -s -f/ln -sf/g' Source/WebKit/PlatformWPEDeprecated.cmake > _
40+mv -f _ Source/WebKit/PlatformWPEDeprecated.cmake
41+
42+sed 's/ln -n -s -f/ln -sf/g' Source/WebKit/PlatformGTKDeprecated.cmake > _
43+mv -f _ Source/WebKit/PlatformGTKDeprecated.cmake
44+
45+
46+# Remove gettext requirement.
47+sed 's/ngettext/printf/g' Tools/MiniBrowser/gtk/BrowserDownloadsBar.c > _
48+mv -f _ Tools/MiniBrowser/gtk/BrowserDownloadsBar.c
49+sed '/po_files \*\.po/d' Source/WebCore/platform/gtk/po/CMakeLists.txt > _
50+mv -f _ Source/WebCore/platform/gtk/po/CMakeLists.txt
51+sed '/if.*GETTEXT_FOUND/,/^endif/d' Source/WebCore/platform/gtk/po/CMakeLists.txt > _
52+mv -f _ Source/WebCore/platform/gtk/po/CMakeLists.txt
53+sed '/^GETTEXT_C/d' Source/WebCore/platform/gtk/po/CMakeLists.txt > _
54+mv -f _ Source/WebCore/platform/gtk/po/CMakeLists.txt
55+
56+# Fix clang build.
57+sed -e '/LC_ALL/d' -e '/WTFLogAlways/d' Source/JavaScriptCore/jsc.cpp > _
58+mv -f _ Source/JavaScriptCore/jsc.cpp
59+
60+# Webkit's CMake configuration forces color output using clang-specific flags
61+# when using Ninja as the CMAKE_GENERATOR. We should disable them.
62+sed -e "s/-fcolor-diagnostics//" \
63+ -e "s/-fdiagnostics-color=always/-fdiagnostics-color=never/" \
64+ Source/cmake/WebKitCompilerFlags.cmake > _
65+mv -f _ Source/cmake/WebKitCompilerFlags.cmake
66+
67+# Reduce memory usage.
68+export LDFLAGS="$LDFLAGS -Wl,--no-keep-memory"
69+
70+cmake -B build \
71+ -DCMAKE_BUILD_TYPE=Release \
72+ -DCMAKE_INSTALL_PREFIX=/ \
73+ -DCMAKE_INSTALL_LIBEXECDIR=/lib \
74+ -DLIB_INSTALL_DIR=/lib \
75+ -DPORT=GTK \
76+ -DCMAKE_SKIP_RPATH=ON \
77+ -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
78+ -DENABLE_SAMPLING_PROFILER=OFF \
79+ -DENABLE_GEOLOCATION=OFF \
80+ -DENABLE_API_TESTS=OFF \
81+ -DENABLE_PDFJS=OFF \
82+ -DENABLE_DOCUMENTATION=OFF \
83+ -DENABLE_GLES2=ON \
84+ -DENABLE_INTROSPECTION=OFF \
85+ -DENABLE_MINIBROWSER=OFF \
86+ -DENABLE_SPELLCHECK=OFF \
87+ -DUSE_GSTREAMER_GL=OFF \
88+ -DUSE_LIBHYPHEN=OFF \
89+ -DUSE_LIBNOTIFY=OFF \
90+ -DUSE_LIBSECRET=OFF \
91+ -DUSE_OPENJPEG="${jpeg:-OFF}" \
92+ -DUSE_SYSTEMD=OFF \
93+ -DUSE_WOFF2=OFF \
94+ -DUSE_JPEGXL=OFF \
95+ -DUSE_WPE_RENDERER=OFF \
96+ -DENABLE_WEB_CRYPTO="${tasn:-OFF}" \
97+ -DENABLE_VIDEO="${video:-OFF}" \
98+ -DENABLE_WEB_AUDIO="${audio:-OFF}" \
99+ -DENABLE_GAMEPAD=OFF \
100+ -DUSE_SOUP2=OFF \
101+ -DENABLE_JOURNALD_LOG=OFF \
102+ -DUSE_LCMS=OFF \
103+ -DENABLE_WAYLAND_TARGET=OFF \
104+ -DUSE_AVIF=OFF \
105+ -Wno-dev
106+cmake --build build
107+cmake --install build
+2,
-0
1@@ -0,0 +1,2 @@
2+db202d3db2b0f3c59ebb262d405373f2120e83d5aa6c5db3a4cbad98ccd7ddca80
3+38325ede040c3e86b0c88e171818636775d72a2e08f182ffcadc703f551e18a14e
+17,
-0
1@@ -0,0 +1,17 @@
2+cairo
3+cmake make
4+freetype-harfbuzz
5+glib-networking
6+gperf make
7+gtk+3
8+libXt
9+libgcrypt
10+libsoup3
11+libwebp
12+libxslt
13+mesa
14+perl make
15+python make
16+ruby make
17+sqlite
18+unifdef make
1@@ -0,0 +1,22 @@
2+it is not portable to use initial-exec in shared objects that are meant to be
3+dlopen'd.
4+glibc reserves some space to allow this anyway- but other libcs like musl do
5+not.
6+using an initial-exec variables forces the entire libwebkit2gtk.so to gain a TLS
7+program header, which makes it fail to dlopen with musl's loader.
8+
9+see https://gitlab.freedesktop.org/mesa/mesa/-/commit/8570a2a280587a1e43ac11ad46ad62dfdd6c7b39
10+--
11+diff --git a/Source/WebCore/platform/graphics/gbm/GraphicsContextGLANGLELinux.cpp b/Source/WebCore/platform/graphics/gbm/GraphicsContextGLANGLELinux.cpp
12+index f8627d2c..6666f6d0 100644
13+--- a/Source/WebCore/platform/graphics/gbm/GraphicsContextGLANGLELinux.cpp
14++++ b/Source/WebCore/platform/graphics/gbm/GraphicsContextGLANGLELinux.cpp
15+@@ -108,7 +108,7 @@ RefPtr<PixelBuffer> GraphicsContextGLANGLE::readCompositedResults()
16+
17+ bool GraphicsContextGLANGLE::makeContextCurrent()
18+ {
19+- static thread_local TLS_MODEL_INITIAL_EXEC GraphicsContextGLANGLE* s_currentContext { nullptr };
20++ static thread_local GraphicsContextGLANGLE* s_currentContext { nullptr };
21+
22+ if (s_currentContext == this)
23+ return true;
+2,
-0
1@@ -0,0 +1,2 @@
2+https://webkitgtk.org/releases/webkitgtk-2.40.4.tar.xz
3+patches/initial-exec.patch
+1,
-0
1@@ -0,0 +1 @@
2+2.40.4 1
+0,
-1
1@@ -1,6 +1,5 @@
2 libXau
3 libxcb
4-m4 make
5 pkgconf make
6 xcb-util
7 xcb-util-image
+9,
-0
1@@ -0,0 +1,9 @@
2+#!/bin/sh -e
3+
4+./configure \
5+ --prefix=/ \
6+ --disable-shared \
7+ --enable-static
8+
9+make
10+make DESTDIR="$1" install
+1,
-0
1@@ -0,0 +1 @@
2+d922f02ad7e2034d4429c7328648382caa74ff32523cf9cc5e34e6aab8a45bd064
+3,
-0
1@@ -0,0 +1,3 @@
2+libXau
3+libxcb
4+pkgconf make
+22,
-0
1@@ -0,0 +1,22 @@
2+/var/db/kiss/installed/xcb-util-renderutil/version
3+/var/db/kiss/installed/xcb-util-renderutil/sources
4+/var/db/kiss/installed/xcb-util-renderutil/manifest
5+/var/db/kiss/installed/xcb-util-renderutil/depends
6+/var/db/kiss/installed/xcb-util-renderutil/checksums
7+/var/db/kiss/installed/xcb-util-renderutil/build
8+/var/db/kiss/installed/xcb-util-renderutil/
9+/var/db/kiss/installed/
10+/var/db/kiss/
11+/var/db/
12+/var/
13+/usr/lib/pkgconfig/xcb-renderutil.pc
14+/usr/lib/pkgconfig/
15+/usr/lib/libxcb-render-util.so.0.0.0
16+/usr/lib/libxcb-render-util.so.0
17+/usr/lib/libxcb-render-util.so
18+/usr/lib/libxcb-render-util.a
19+/usr/lib/
20+/usr/include/xcb/xcb_renderutil.h
21+/usr/include/xcb/
22+/usr/include/
23+/usr/
+1,
-0
1@@ -0,0 +1 @@
2+https://x.org/releases/individual/xcb/xcb-util-renderutil-0.3.10.tar.gz
+1,
-0
1@@ -0,0 +1 @@
2+0.3.10 1