diff --git a/.gitignore b/.gitignore index 0ca984a..ecf4df3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ SOURCES/Python-2.7.8.tgz SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm SOURCES/gcc48-4.8.2-16.el5.src.rpm -SOURCES/l10n-lightning-45.8.0.tar.xz -SOURCES/thunderbird-45.8.0.source.tar.xz -SOURCES/thunderbird-langpacks-45.8.0-20170307.tar.xz +SOURCES/l10n-lightning-52.1.0.tar.xz +SOURCES/thunderbird-52.1.0.source.tar.xz +SOURCES/thunderbird-langpacks-52.1.0-20170502.tar.xz SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/.thunderbird.metadata b/.thunderbird.metadata index 6047351..b6debf2 100644 --- a/.thunderbird.metadata +++ b/.thunderbird.metadata @@ -1,7 +1,7 @@ 511960dd78451a06c9df76509635aeec05b2051a SOURCES/Python-2.7.8.tgz 467bdb846d67c01aed9e521fe0ef280065a50c3c SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm e5ba84786af5d0e0e23b1a9112c76821ef23306c SOURCES/gcc48-4.8.2-16.el5.src.rpm -50c59f97f5377a1c1fe2db59d93aeeb5179c4951 SOURCES/l10n-lightning-45.8.0.tar.xz -36fc106885d612966ec3be047f4e7d3fa06dc04a SOURCES/thunderbird-45.8.0.source.tar.xz -bff28b5995922ec4bc83ee8152de465377969efd SOURCES/thunderbird-langpacks-45.8.0-20170307.tar.xz +f1bb15ef9bbdfb1a668417b359e392aa3e54f08a SOURCES/l10n-lightning-52.1.0.tar.xz +09704d01e0fd78af688883b8eb6745feff29202b SOURCES/thunderbird-52.1.0.source.tar.xz +3d3dbf1a0020d1278544653c332666a0a5d63ca1 SOURCES/thunderbird-langpacks-52.1.0-20170502.tar.xz 77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/SOURCES/aarch64-fix-skia.patch b/SOURCES/aarch64-fix-skia.patch deleted file mode 100644 index 115b1d8..0000000 --- a/SOURCES/aarch64-fix-skia.patch +++ /dev/null @@ -1,18 +0,0 @@ -Based on https://github.com/google/skia/commit/b79ff56de23fef680ae7187040f2d6a9516b553d - -Index: mozilla-release/gfx/skia/skia/src/core/SkUtilsArm.h -=================================================================== ---- mozilla-release.orig/gfx/skia/skia/src/core/SkUtilsArm.h -+++ mozilla-release/gfx/skia/skia/src/core/SkUtilsArm.h -@@ -21,9 +21,9 @@ - #define SK_ARM_NEON_MODE_ALWAYS 1 - #define SK_ARM_NEON_MODE_DYNAMIC 2 - --#if defined(SK_CPU_ARM32) && defined(__ARM_HAVE_OPTIONAL_NEON_SUPPORT) -+#if defined(__ARM_HAVE_OPTIONAL_NEON_SUPPORT) - # define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_DYNAMIC --#elif defined(SK_CPU_ARM32) && defined(__ARM_HAVE_NEON) || defined(SK_CPU_ARM64) -+#elif defined(__ARM_HAVE_NEON) - # define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_ALWAYS - #else - # define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_NONE diff --git a/SOURCES/build-el5-build-id.patch b/SOURCES/build-el5-build-id.patch deleted file mode 100644 index 17b19cf..0000000 --- a/SOURCES/build-el5-build-id.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up mozilla-esr31/tools/profiler/LulElf.cpp.python3 mozilla-esr31/tools/profiler/LulElf.cpp ---- mozilla-esr31/tools/profiler/lul/LulElf.cpp.python3 2014-08-25 15:17:29.000000000 +0200 -+++ mozilla-esr31/tools/profiler/lul/LulElf.cpp 2014-09-05 15:26:14.114681217 +0200 -@@ -69,6 +69,11 @@ - #include "LulElfInt.h" - #include "LulMainInt.h" - -+#ifndef NT_GNU_BUILD_ID -+#define NT_GNU_BUILD_ID 3 -+#endif -+ -+ - - #if defined(LUL_PLAT_arm_android) && !defined(SHT_ARM_EXIDX) - // bionic and older glibsc don't define it diff --git a/SOURCES/build-el5-fontconfig.patch b/SOURCES/build-el5-fontconfig.patch deleted file mode 100644 index 3e25c44..0000000 --- a/SOURCES/build-el5-fontconfig.patch +++ /dev/null @@ -1,100 +0,0 @@ -diff -up mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.cpp.build-el5-fontconfig mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.cpp ---- mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.cpp.build-el5-fontconfig 2015-12-16 16:47:28.000000000 +0100 -+++ mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.cpp 2016-01-19 14:20:43.676153725 +0100 -@@ -367,7 +367,48 @@ gfxFontconfigFontEntry::gfxFontconfigFon - // "blanks", effectively assuming that, if the font has a blank glyph, - // then the author intends any associated character to be rendered - // blank. -- mFontPattern = FcFreeTypeQueryFace(mFTFace, ToFcChar8Ptr(""), 0, nullptr); -+ // BACKPORT: FcFreeTypeQueryFace is not available in RHEL5's fontconfig -+ // mFontPattern = FcFreeTypeQueryFace(mFTFace, ToFcChar8Ptr(""), 0, nullptr); -+ -+ -+ // FC_CHARSET is vital to determine which characters are supported. -+ nsAutoRef charset(FcFreeTypeCharSet(mFTFace, nullptr)); -+ // If there are no characters then assume we don't know how to read -+ // this font. -+ if (!charset || FcCharSetCount(charset) == 0) -+ return; -+ -+ mFontPattern = FcPatternCreate(); -+ FcPatternAddCharSet(mFontPattern, FC_CHARSET, charset); -+ -+ // FC_PIXEL_SIZE can be important for font selection of fixed-size -+ // fonts. -+ if (!(mFTFace->face_flags & FT_FACE_FLAG_SCALABLE)) { -+ for (FT_Int i = 0; i < mFTFace->num_fixed_sizes; ++i) { -+#if HAVE_FT_BITMAP_SIZE_Y_PPEM -+ double size = FLOAT_FROM_26_6(mFTFace->available_sizes[i].y_ppem); -+#else -+ double size = mFTFace->available_sizes[i].height; -+#endif -+ FcPatternAddDouble (mFontPattern, FC_PIXEL_SIZE, size); -+ } -+ -+ // Not sure whether this is important; -+ // imitating FcFreeTypeQueryFace: -+ FcPatternAddBool (mFontPattern, FC_ANTIALIAS, FcFalse); -+ } -+ -+ // Setting up the FC_LANGSET property is very difficult with the APIs -+ // available prior to FcFreeTypeQueryFace. Having no FC_LANGSET -+ // property seems better than having a property with an empty LangSet. -+ // With no FC_LANGSET property, fontconfig sort functions will -+ // consider this face to have the same priority as (otherwise equal) -+ // faces that have support for the primary requested language, but -+ // will not consider any language to have been satisfied (and so will -+ // continue to look for a face with language support in fallback -+ // fonts). -+ -+ // END BACKPORT - // given that we have a FT_Face, not really sure this is possible... - if (!mFontPattern) { - mFontPattern = FcPatternCreate(); -@@ -1015,9 +1056,12 @@ gfxFcPlatformFontList::gfxFcPlatformFont - , mAlwaysUseFontconfigGenerics(true) - { - // if the rescan interval is set, start the timer -- int rescanInterval = FcConfigGetRescanInterval(nullptr); -+ // BACKPORT - do not implement rescan interval -+ //int rescanInterval = FcConfigGetRescanInterval(nullptr); -+ int rescanInterval = 0; - if (rescanInterval) { -- mLastConfig = FcConfigGetCurrent(); -+ nsAutoRef fc_conf(FcConfigGetCurrent()); -+ mLastConfig = fc_conf.out(); - mCheckFontUpdatesTimer = do_CreateInstance("@mozilla.org/timer;1"); - if (mCheckFontUpdatesTimer) { - mCheckFontUpdatesTimer-> -@@ -1131,7 +1175,8 @@ gfxFcPlatformFontList::AddFontSetFamilie - nsresult - gfxFcPlatformFontList::InitFontList() - { -- mLastConfig = FcConfigGetCurrent(); -+ nsAutoRef fc_conf(FcConfigGetCurrent()); -+ mLastConfig = fc_conf.out(); - - // reset font lists - gfxPlatformFontList::InitFontList(); -diff -up mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.h.build-el5-fontconfig mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.h ---- mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.h.build-el5-fontconfig 2016-01-19 11:45:08.927745469 +0100 -+++ mozilla-aurora/gfx/thebes/gfxFcPlatformFontList.h 2016-01-19 13:49:58.296124911 +0100 -@@ -33,7 +33,8 @@ class nsAutoRefTraits : public - { - public: - static void Release(FcConfig *ptr) { FcConfigDestroy(ptr); } -- static void AddRef(FcConfig *ptr) { FcConfigReference(ptr); } -+ // AddRef is not supported in older font-config -+ // static void AddRef(FcConfig *ptr) { FcConfigReference(ptr); } - }; - - // Helper classes used for clearning out user font data when cairo font -@@ -290,7 +291,7 @@ protected: - nsRefPtrHashtable mFcSubstituteCache; - - nsCOMPtr mCheckFontUpdatesTimer; -- nsCountedRef mLastConfig; -+ nsAutoRef mLastConfig; - - // By default, font prefs under Linux are set to simply lookup - // via fontconfig the appropriate font for serif/sans-serif/monospace. diff --git a/SOURCES/build-el5-gtk2-2.10.patch b/SOURCES/build-el5-gtk2-2.10.patch deleted file mode 100644 index 9b1080b..0000000 --- a/SOURCES/build-el5-gtk2-2.10.patch +++ /dev/null @@ -1,2724 +0,0 @@ -diff -up mozilla-aurora/config/system-headers.build-gtk2 mozilla-aurora/config/system-headers ---- mozilla-aurora/config/system-headers.build-gtk2 2015-12-16 16:47:44.000000000 +0100 -+++ mozilla-aurora/config/system-headers 2016-01-15 17:38:34.974272205 +0100 -@@ -511,7 +511,9 @@ gssapi/gssapi.h - gssapi.h - gtk/gtk.h - gtk/gtkx.h --gtk/gtkunixprint.h -+gtk/gtkprinter.h -+gtk/gtkprintjob.h -+gtk/gtkprintunixdialog.h - #ifdef ANDROID - gui/BufferQueue.h - gui/ConsumerBase.h -diff -up mozilla-aurora/configure.in.build-gtk2 mozilla-aurora/configure.in ---- mozilla-aurora/configure.in.build-gtk2 2016-01-15 17:38:34.972272207 +0100 -+++ mozilla-aurora/configure.in 2016-01-15 17:38:34.975272203 +0100 -@@ -58,15 +58,15 @@ NSS_VERSION=3 - - dnl Set the minimum version of toolkit libs used by mozilla - dnl ======================================================== --GLIB_VERSION=2.22 -+GLIB_VERSION=2.12 - # 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED. - # The macro won't be used when compiling with earlier versions anyway. - GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 - GIO_VERSION=2.22 - PERL_VERSION=5.006 - CAIRO_VERSION=1.10 --PANGO_VERSION=1.22.0 --GTK2_VERSION=2.18.0 -+PANGO_VERSION=1.14 -+GTK2_VERSION=2.10 - GTK3_VERSION=3.4.0 - GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 - WINDRES_VERSION=2.14.90 -@@ -4278,7 +4278,7 @@ if test "$COMPILE_ENVIRONMENT"; then - AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED) - AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED) - -- PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES) -+ PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 $GDK_PACKAGES freetype2 fontconfig) - MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS" - fi - if test "$MOZ_ENABLE_GTK2"; then -diff -up mozilla-aurora/security/sandbox/linux/Sandbox.cpp.build-gtk2 mozilla-aurora/security/sandbox/linux/Sandbox.cpp ---- mozilla-aurora/security/sandbox/linux/Sandbox.cpp.build-gtk2 2015-12-16 16:47:02.000000000 +0100 -+++ mozilla-aurora/security/sandbox/linux/Sandbox.cpp 2016-01-15 17:38:34.976272202 +0100 -@@ -668,12 +668,13 @@ SetMediaPluginSandbox(const char *aFileP - MOZ_ASSERT(!gMediaPluginFile.mPath); - if (aFilePath) { - gMediaPluginFile.mPath = strdup(aFilePath); -- gMediaPluginFile.mFd = open(aFilePath, O_RDONLY | O_CLOEXEC); -+ gMediaPluginFile.mFd = open(aFilePath, O_RDONLY); - if (gMediaPluginFile.mFd == -1) { - SANDBOX_LOG_ERROR("failed to open plugin file %s: %s", - aFilePath, strerror(errno)); - MOZ_CRASH(); - } -+ fcntl(gMediaPluginFile.mFd, F_SETFD, fcntl(gMediaPluginFile.mFd, F_GETFD, 0) | FD_CLOEXEC); - } else { - gMediaPluginFile.mFd = -1; - } -diff -up mozilla-aurora/widget/gtk/compat/gdk/gdkkeysyms.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gdk/gdkkeysyms.h ---- mozilla-aurora/widget/gtk/compat/gdk/gdkkeysyms.h.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/compat/gdk/gdkkeysyms.h 2016-01-15 17:38:34.976272202 +0100 -@@ -6,6 +6,7 @@ - #define GDKKEYSYMS_WRAPPER_H - - #include_next -+#include "gdkkeysyms-compat.h" - - #ifndef GDK_ISO_Level5_Shift - #define GDK_ISO_Level5_Shift 0xFE11 -diff -up mozilla-aurora/widget/gtk/compat/gtk/gtkcolorseldialog.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gtk/gtkcolorseldialog.h ---- mozilla-aurora/widget/gtk/compat/gtk/gtkcolorseldialog.h.build-gtk2 2016-01-15 17:38:34.976272202 +0100 -+++ mozilla-aurora/widget/gtk/compat/gtk/gtkcolorseldialog.h 2016-01-15 17:38:34.976272202 +0100 -@@ -0,0 +1,20 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef GTKCOLOR_SELECTION_DIALOG_WRAPPER_H -+#define GTKCOLOR_SELECTION_DIALOG_WRAPPER_H -+ -+#define gtk_color_selection_dialog_get_color_selection gtk_color_selection_dialog_get_color_selection_ -+#include_next -+#undef gtk_color_selection_dialog_get_color_selection -+ -+static inline GtkWidget* -+gtk_color_selection_dialog_get_color_selection (GtkColorSelectionDialog *colorsel) -+{ -+ g_return_val_if_fail (GTK_IS_COLOR_SELECTION_DIALOG (colorsel), NULL); -+ -+ return colorsel->colorsel; -+} -+ -+#endif /* GTKCOLOR_SELECTION_DIALOG_WRAPPER_H */ -diff -up mozilla-aurora/widget/gtk/compat/gtk/gtkdialog.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gtk/gtkdialog.h ---- mozilla-aurora/widget/gtk/compat/gtk/gtkdialog.h.build-gtk2 2016-01-15 17:38:34.976272202 +0100 -+++ mozilla-aurora/widget/gtk/compat/gtk/gtkdialog.h 2016-01-15 17:38:34.976272202 +0100 -@@ -0,0 +1,20 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef GTKDIALOG_WRAPPER_H -+#define GTKDIALOG_WRAPPER_H -+ -+#define gtk_dialog_get_content_area gtk_dialog_get_content_area_ -+#include_next -+#undef gtk_dialog_get_content_area -+ -+static inline GtkWidget * -+gtk_dialog_get_content_area (GtkDialog *dialog) -+{ -+ g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL); -+ -+ return dialog->vbox; -+} -+ -+#endif /* GTKDIALOG_WRAPPER_H */ -diff -up mozilla-aurora/widget/gtk/compat/gtk/gtkplug.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gtk/gtkplug.h ---- mozilla-aurora/widget/gtk/compat/gtk/gtkplug.h.build-gtk2 2016-01-15 17:38:34.976272202 +0100 -+++ mozilla-aurora/widget/gtk/compat/gtk/gtkplug.h 2016-01-15 17:38:34.976272202 +0100 -@@ -0,0 +1,20 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef GTKPLUG_WRAPPER_H -+#define GTKPLUG_WRAPPER_H -+ -+#define gtk_plug_get_socket_window gtk_plug_get_socket_window_ -+#include_next -+#undef gtk_plug_get_socket_window -+ -+static inline GdkWindow * -+gtk_plug_get_socket_window (GtkPlug *plug) -+{ -+ g_return_val_if_fail (GTK_IS_PLUG (plug), NULL); -+ -+ return plug->socket_window; -+} -+ -+#endif /* GTKPLUG_WRAPPER_H */ -diff -up mozilla-aurora/widget/gtk/compat/gtk/gtkselection.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gtk/gtkselection.h ---- mozilla-aurora/widget/gtk/compat/gtk/gtkselection.h.build-gtk2 2016-01-15 17:38:34.977272201 +0100 -+++ mozilla-aurora/widget/gtk/compat/gtk/gtkselection.h 2016-01-15 17:38:34.976272202 +0100 -@@ -0,0 +1,60 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef GTKSELECTION_WRAPPER_H -+#define GTKSELECTION_WRAPPER_H -+ -+#define gtk_selection_data_get_length gtk_selection_data_get_length_ -+#define gtk_selection_data_get_data_type gtk_selection_data_get_data_type_ -+#define gtk_selection_data_get_selection gtk_selection_data_get_selection_ -+#define gtk_selection_data_get_target gtk_selection_data_get_target_ -+#define gtk_selection_data_get_data gtk_selection_data_get_data_ -+#include_next -+#undef gtk_selection_data_get_length -+#undef gtk_selection_data_get_data_type -+#undef gtk_selection_data_get_selection -+#undef gtk_selection_data_get_target -+#undef gtk_selection_data_get_data -+ -+static inline GdkAtom -+gtk_selection_data_get_data_type (GtkSelectionData *selection_data) -+{ -+ g_return_val_if_fail (selection_data != NULL, 0); -+ -+ return selection_data->type; -+} -+ -+static inline gint -+gtk_selection_data_get_length (GtkSelectionData *selection_data) -+{ -+ g_return_val_if_fail (selection_data != NULL, -1); -+ -+ return selection_data->length; -+} -+ -+static inline GdkAtom -+gtk_selection_data_get_selection (GtkSelectionData *selection_data) -+{ -+ g_return_val_if_fail (selection_data != NULL, 0); -+ -+ return selection_data->selection; -+} -+ -+static inline GdkAtom -+gtk_selection_data_get_target (GtkSelectionData *selection_data) -+{ -+ g_return_val_if_fail (selection_data != NULL, 0); -+ -+ return selection_data->target; -+} -+ -+static inline const guchar* -+gtk_selection_data_get_data (GtkSelectionData *selection_data) -+{ -+ g_return_val_if_fail (selection_data != NULL, NULL); -+ -+ return selection_data->data; -+} -+ -+#endif /* GTKSELECTION_WRAPPER_H */ -diff -up mozilla-aurora/widget/gtk/compat/gtk/gtkwidget.h.build-gtk2 mozilla-aurora/widget/gtk/compat/gtk/gtkwidget.h ---- mozilla-aurora/widget/gtk/compat/gtk/gtkwidget.h.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/compat/gtk/gtkwidget.h 2016-01-15 17:38:34.977272201 +0100 -@@ -9,11 +9,34 @@ - #define gtk_widget_get_mapped gtk_widget_get_mapped_ - #define gtk_widget_set_realized gtk_widget_set_realized_ - #define gtk_widget_get_realized gtk_widget_get_realized_ -+#define gtk_widget_get_window gtk_widget_get_window_ -+#define gtk_widget_has_focus gtk_widget_has_focus_ -+#define gtk_widget_get_visible gtk_widget_get_visible_ -+#define gtk_widget_set_window gtk_widget_set_window_ -+#define gtk_widget_set_can_focus gtk_widget_set_can_focus_ -+#define gtk_widget_get_has_window gtk_widget_get_has_window_ -+#define gtk_widget_set_has_window gtk_widget_set_has_window_ -+#define gtk_widget_get_allocation gtk_widget_get_allocation_ -+#define gtk_widget_set_allocation gtk_widget_set_allocation_ -+#define gtk_widget_get_can_focus gtk_widget_get_can_focus_ -+#define gtk_widget_has_grab gtk_widget_has_grab_ -+#define gtk_widget_is_toplevel gtk_widget_is_toplevel_ - #include_next - #undef gtk_widget_set_mapped - #undef gtk_widget_get_mapped - #undef gtk_widget_set_realized - #undef gtk_widget_get_realized -+#undef gtk_widget_get_window -+#undef gtk_widget_has_focus -+#undef gtk_widget_get_visible -+#undef gtk_widget_set_window -+#undef gtk_widget_set_can_focus -+#undef gtk_widget_get_has_window -+#undef gtk_widget_set_has_window -+#undef gtk_widget_get_allocation -+#undef gtk_widget_set_allocation -+#undef gtk_widget_has_grab -+#undef gtk_widget_is_toplevel - - #include - -@@ -47,4 +70,119 @@ gtk_widget_get_realized(GtkWidget *widge - return GTK_WIDGET_REALIZED (widget); - } - -+static inline GdkWindow * -+gtk_widget_get_window(GtkWidget *widget) -+{ -+ return widget->window; -+} -+ -+static inline void -+gtk_widget_set_window(GtkWidget *widget, -+ GdkWindow *window) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ g_return_if_fail (window == NULL || GDK_IS_WINDOW (window)); -+ -+ if (widget->window != window) -+ { -+ widget->window = window; -+ g_object_notify (G_OBJECT (widget), "window"); -+ } -+} -+ -+ -+static inline gboolean -+gtk_widget_has_focus(GtkWidget *widget) -+{ -+ return GTK_WIDGET_HAS_FOCUS(widget); -+} -+ -+static inline gboolean -+gtk_widget_get_can_focus (GtkWidget *widget) -+{ -+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); -+ -+ return (GTK_OBJECT_FLAGS (widget) & GTK_CAN_FOCUS) != 0; -+} -+ -+static inline void -+gtk_widget_set_can_focus (GtkWidget *widget, -+ gboolean can_focus) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ -+ if (can_focus != gtk_widget_get_can_focus (widget)) -+ { -+ if (can_focus) -+ GTK_OBJECT_FLAGS (widget) |= GTK_CAN_FOCUS; -+ else -+ GTK_OBJECT_FLAGS (widget) &= ~(GTK_CAN_FOCUS); -+ -+ gtk_widget_queue_resize (widget); -+ g_object_notify (G_OBJECT (widget), "can-focus"); -+ } -+} -+ -+static inline gboolean -+gtk_widget_get_visible(GtkWidget *widget) -+{ -+ return GTK_WIDGET_VISIBLE(widget); -+} -+ -+static inline gboolean -+gtk_widget_get_has_window (GtkWidget *widget) -+{ -+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); -+ -+ return !((GTK_OBJECT_FLAGS (widget) & GTK_NO_WINDOW) != 0); -+} -+ -+static inline void -+gtk_widget_set_has_window (GtkWidget *widget, -+ gboolean has_window) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ -+ if (has_window) -+ GTK_OBJECT_FLAGS (widget) &= ~(GTK_NO_WINDOW); -+ else -+ GTK_OBJECT_FLAGS (widget) |= GTK_NO_WINDOW; -+} -+ -+static inline void -+gtk_widget_get_allocation (GtkWidget *widget, -+ GtkAllocation *allocation) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ g_return_if_fail (allocation != NULL); -+ -+ *allocation = widget->allocation; -+} -+ -+static inline void -+gtk_widget_set_allocation (GtkWidget *widget, -+ const GtkAllocation *allocation) -+{ -+ g_return_if_fail (GTK_IS_WIDGET (widget)); -+ g_return_if_fail (allocation != NULL); -+ -+ widget->allocation = *allocation; -+} -+ -+static inline gboolean -+gtk_widget_has_grab (GtkWidget *widget) -+{ -+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); -+ -+ return (GTK_OBJECT_FLAGS (widget) & GTK_HAS_GRAB) != 0; -+} -+ -+static inline gboolean -+gtk_widget_is_toplevel (GtkWidget *widget) -+{ -+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); -+ -+ return (GTK_OBJECT_FLAGS (widget) & GTK_TOPLEVEL) != 0; -+} -+ - #endif /* GTKWIDGET_WRAPPER_H */ -diff -up mozilla-aurora/widget/gtk/gdkkeysyms-compat.h.build-gtk2 mozilla-aurora/widget/gtk/gdkkeysyms-compat.h ---- mozilla-aurora/widget/gtk/gdkkeysyms-compat.h.build-gtk2 2016-01-15 17:38:34.978272200 +0100 -+++ mozilla-aurora/widget/gtk/gdkkeysyms-compat.h 2016-01-15 17:38:34.978272200 +0100 -@@ -0,0 +1,2208 @@ -+/* GDK - The GIMP Drawing Kit -+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald -+ * Copyright (C) 2005, 2006, 2007, 2009 GNOME Foundation -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+/* -+ * Compatibility version of gdkkeysyms.h. -+ * -+ * In GTK3, keysyms changed to have a KEY_ prefix. This is a compatibility header -+ * your application can include to gain access to the old names as well. Consider -+ * porting to the new names instead. -+ */ -+ -+#ifndef __GDK_KEYSYMS_COMPAT_H__ -+#define __GDK_KEYSYMS_COMPAT_H__ -+ -+#define GDK_VoidSymbol 0xffffff -+#define GDK_BackSpace 0xff08 -+#define GDK_Tab 0xff09 -+#define GDK_Linefeed 0xff0a -+#define GDK_Clear 0xff0b -+#define GDK_Return 0xff0d -+#define GDK_Pause 0xff13 -+#define GDK_Scroll_Lock 0xff14 -+#define GDK_Sys_Req 0xff15 -+#define GDK_Escape 0xff1b -+#define GDK_Delete 0xffff -+#define GDK_Multi_key 0xff20 -+#define GDK_Codeinput 0xff37 -+#define GDK_SingleCandidate 0xff3c -+#define GDK_MultipleCandidate 0xff3d -+#define GDK_PreviousCandidate 0xff3e -+#define GDK_Kanji 0xff21 -+#define GDK_Muhenkan 0xff22 -+#define GDK_Henkan_Mode 0xff23 -+#define GDK_Henkan 0xff23 -+#define GDK_Romaji 0xff24 -+#define GDK_Hiragana 0xff25 -+#define GDK_Katakana 0xff26 -+#define GDK_Hiragana_Katakana 0xff27 -+#define GDK_Zenkaku 0xff28 -+#define GDK_Hankaku 0xff29 -+#define GDK_Zenkaku_Hankaku 0xff2a -+#define GDK_Touroku 0xff2b -+#define GDK_Massyo 0xff2c -+#define GDK_Kana_Lock 0xff2d -+#define GDK_Kana_Shift 0xff2e -+#define GDK_Eisu_Shift 0xff2f -+#define GDK_Eisu_toggle 0xff30 -+#define GDK_Kanji_Bangou 0xff37 -+#define GDK_Zen_Koho 0xff3d -+#define GDK_Mae_Koho 0xff3e -+#define GDK_Home 0xff50 -+#define GDK_Left 0xff51 -+#define GDK_Up 0xff52 -+#define GDK_Right 0xff53 -+#define GDK_Down 0xff54 -+#define GDK_Prior 0xff55 -+#define GDK_Page_Up 0xff55 -+#define GDK_Next 0xff56 -+#define GDK_Page_Down 0xff56 -+#define GDK_End 0xff57 -+#define GDK_Begin 0xff58 -+#define GDK_Select 0xff60 -+#define GDK_Print 0xff61 -+#define GDK_Execute 0xff62 -+#define GDK_Insert 0xff63 -+#define GDK_Undo 0xff65 -+#define GDK_Redo 0xff66 -+#define GDK_Menu 0xff67 -+#define GDK_Find 0xff68 -+#define GDK_Cancel 0xff69 -+#define GDK_Help 0xff6a -+#define GDK_Break 0xff6b -+#define GDK_Mode_switch 0xff7e -+#define GDK_script_switch 0xff7e -+#define GDK_Num_Lock 0xff7f -+#define GDK_KP_Space 0xff80 -+#define GDK_KP_Tab 0xff89 -+#define GDK_KP_Enter 0xff8d -+#define GDK_KP_F1 0xff91 -+#define GDK_KP_F2 0xff92 -+#define GDK_KP_F3 0xff93 -+#define GDK_KP_F4 0xff94 -+#define GDK_KP_Home 0xff95 -+#define GDK_KP_Left 0xff96 -+#define GDK_KP_Up 0xff97 -+#define GDK_KP_Right 0xff98 -+#define GDK_KP_Down 0xff99 -+#define GDK_KP_Prior 0xff9a -+#define GDK_KP_Page_Up 0xff9a -+#define GDK_KP_Next 0xff9b -+#define GDK_KP_Page_Down 0xff9b -+#define GDK_KP_End 0xff9c -+#define GDK_KP_Begin 0xff9d -+#define GDK_KP_Insert 0xff9e -+#define GDK_KP_Delete 0xff9f -+#define GDK_KP_Equal 0xffbd -+#define GDK_KP_Multiply 0xffaa -+#define GDK_KP_Add 0xffab -+#define GDK_KP_Separator 0xffac -+#define GDK_KP_Subtract 0xffad -+#define GDK_KP_Decimal 0xffae -+#define GDK_KP_Divide 0xffaf -+#define GDK_KP_0 0xffb0 -+#define GDK_KP_1 0xffb1 -+#define GDK_KP_2 0xffb2 -+#define GDK_KP_3 0xffb3 -+#define GDK_KP_4 0xffb4 -+#define GDK_KP_5 0xffb5 -+#define GDK_KP_6 0xffb6 -+#define GDK_KP_7 0xffb7 -+#define GDK_KP_8 0xffb8 -+#define GDK_KP_9 0xffb9 -+#define GDK_F1 0xffbe -+#define GDK_F2 0xffbf -+#define GDK_F3 0xffc0 -+#define GDK_F4 0xffc1 -+#define GDK_F5 0xffc2 -+#define GDK_F6 0xffc3 -+#define GDK_F7 0xffc4 -+#define GDK_F8 0xffc5 -+#define GDK_F9 0xffc6 -+#define GDK_F10 0xffc7 -+#define GDK_F11 0xffc8 -+#define GDK_L1 0xffc8 -+#define GDK_F12 0xffc9 -+#define GDK_L2 0xffc9 -+#define GDK_F13 0xffca -+#define GDK_L3 0xffca -+#define GDK_F14 0xffcb -+#define GDK_L4 0xffcb -+#define GDK_F15 0xffcc -+#define GDK_L5 0xffcc -+#define GDK_F16 0xffcd -+#define GDK_L6 0xffcd -+#define GDK_F17 0xffce -+#define GDK_L7 0xffce -+#define GDK_F18 0xffcf -+#define GDK_L8 0xffcf -+#define GDK_F19 0xffd0 -+#define GDK_L9 0xffd0 -+#define GDK_F20 0xffd1 -+#define GDK_L10 0xffd1 -+#define GDK_F21 0xffd2 -+#define GDK_R1 0xffd2 -+#define GDK_F22 0xffd3 -+#define GDK_R2 0xffd3 -+#define GDK_F23 0xffd4 -+#define GDK_R3 0xffd4 -+#define GDK_F24 0xffd5 -+#define GDK_R4 0xffd5 -+#define GDK_F25 0xffd6 -+#define GDK_R5 0xffd6 -+#define GDK_F26 0xffd7 -+#define GDK_R6 0xffd7 -+#define GDK_F27 0xffd8 -+#define GDK_R7 0xffd8 -+#define GDK_F28 0xffd9 -+#define GDK_R8 0xffd9 -+#define GDK_F29 0xffda -+#define GDK_R9 0xffda -+#define GDK_F30 0xffdb -+#define GDK_R10 0xffdb -+#define GDK_F31 0xffdc -+#define GDK_R11 0xffdc -+#define GDK_F32 0xffdd -+#define GDK_R12 0xffdd -+#define GDK_F33 0xffde -+#define GDK_R13 0xffde -+#define GDK_F34 0xffdf -+#define GDK_R14 0xffdf -+#define GDK_F35 0xffe0 -+#define GDK_R15 0xffe0 -+#define GDK_Shift_L 0xffe1 -+#define GDK_Shift_R 0xffe2 -+#define GDK_Control_L 0xffe3 -+#define GDK_Control_R 0xffe4 -+#define GDK_Caps_Lock 0xffe5 -+#define GDK_Shift_Lock 0xffe6 -+#define GDK_Meta_L 0xffe7 -+#define GDK_Meta_R 0xffe8 -+#define GDK_Alt_L 0xffe9 -+#define GDK_Alt_R 0xffea -+#define GDK_Super_L 0xffeb -+#define GDK_Super_R 0xffec -+#define GDK_Hyper_L 0xffed -+#define GDK_Hyper_R 0xffee -+#define GDK_ISO_Lock 0xfe01 -+#define GDK_ISO_Level2_Latch 0xfe02 -+#define GDK_ISO_Level3_Shift 0xfe03 -+#define GDK_ISO_Level3_Latch 0xfe04 -+#define GDK_ISO_Level3_Lock 0xfe05 -+#define GDK_ISO_Level5_Shift 0xfe11 -+#define GDK_ISO_Level5_Latch 0xfe12 -+#define GDK_ISO_Level5_Lock 0xfe13 -+#define GDK_ISO_Group_Shift 0xff7e -+#define GDK_ISO_Group_Latch 0xfe06 -+#define GDK_ISO_Group_Lock 0xfe07 -+#define GDK_ISO_Next_Group 0xfe08 -+#define GDK_ISO_Next_Group_Lock 0xfe09 -+#define GDK_ISO_Prev_Group 0xfe0a -+#define GDK_ISO_Prev_Group_Lock 0xfe0b -+#define GDK_ISO_First_Group 0xfe0c -+#define GDK_ISO_First_Group_Lock 0xfe0d -+#define GDK_ISO_Last_Group 0xfe0e -+#define GDK_ISO_Last_Group_Lock 0xfe0f -+#define GDK_ISO_Left_Tab 0xfe20 -+#define GDK_ISO_Move_Line_Up 0xfe21 -+#define GDK_ISO_Move_Line_Down 0xfe22 -+#define GDK_ISO_Partial_Line_Up 0xfe23 -+#define GDK_ISO_Partial_Line_Down 0xfe24 -+#define GDK_ISO_Partial_Space_Left 0xfe25 -+#define GDK_ISO_Partial_Space_Right 0xfe26 -+#define GDK_ISO_Set_Margin_Left 0xfe27 -+#define GDK_ISO_Set_Margin_Right 0xfe28 -+#define GDK_ISO_Release_Margin_Left 0xfe29 -+#define GDK_ISO_Release_Margin_Right 0xfe2a -+#define GDK_ISO_Release_Both_Margins 0xfe2b -+#define GDK_ISO_Fast_Cursor_Left 0xfe2c -+#define GDK_ISO_Fast_Cursor_Right 0xfe2d -+#define GDK_ISO_Fast_Cursor_Up 0xfe2e -+#define GDK_ISO_Fast_Cursor_Down 0xfe2f -+#define GDK_ISO_Continuous_Underline 0xfe30 -+#define GDK_ISO_Discontinuous_Underline 0xfe31 -+#define GDK_ISO_Emphasize 0xfe32 -+#define GDK_ISO_Center_Object 0xfe33 -+#define GDK_ISO_Enter 0xfe34 -+#define GDK_dead_grave 0xfe50 -+#define GDK_dead_acute 0xfe51 -+#define GDK_dead_circumflex 0xfe52 -+#define GDK_dead_tilde 0xfe53 -+#define GDK_dead_perispomeni 0xfe53 -+#define GDK_dead_macron 0xfe54 -+#define GDK_dead_breve 0xfe55 -+#define GDK_dead_abovedot 0xfe56 -+#define GDK_dead_diaeresis 0xfe57 -+#define GDK_dead_abovering 0xfe58 -+#define GDK_dead_doubleacute 0xfe59 -+#define GDK_dead_caron 0xfe5a -+#define GDK_dead_cedilla 0xfe5b -+#define GDK_dead_ogonek 0xfe5c -+#define GDK_dead_iota 0xfe5d -+#define GDK_dead_voiced_sound 0xfe5e -+#define GDK_dead_semivoiced_sound 0xfe5f -+#define GDK_dead_belowdot 0xfe60 -+#define GDK_dead_hook 0xfe61 -+#define GDK_dead_horn 0xfe62 -+#define GDK_dead_stroke 0xfe63 -+#define GDK_dead_abovecomma 0xfe64 -+#define GDK_dead_psili 0xfe64 -+#define GDK_dead_abovereversedcomma 0xfe65 -+#define GDK_dead_dasia 0xfe65 -+#define GDK_dead_doublegrave 0xfe66 -+#define GDK_dead_belowring 0xfe67 -+#define GDK_dead_belowmacron 0xfe68 -+#define GDK_dead_belowcircumflex 0xfe69 -+#define GDK_dead_belowtilde 0xfe6a -+#define GDK_dead_belowbreve 0xfe6b -+#define GDK_dead_belowdiaeresis 0xfe6c -+#define GDK_dead_invertedbreve 0xfe6d -+#define GDK_dead_belowcomma 0xfe6e -+#define GDK_dead_currency 0xfe6f -+#define GDK_dead_a 0xfe80 -+#define GDK_dead_A 0xfe81 -+#define GDK_dead_e 0xfe82 -+#define GDK_dead_E 0xfe83 -+#define GDK_dead_i 0xfe84 -+#define GDK_dead_I 0xfe85 -+#define GDK_dead_o 0xfe86 -+#define GDK_dead_O 0xfe87 -+#define GDK_dead_u 0xfe88 -+#define GDK_dead_U 0xfe89 -+#define GDK_dead_small_schwa 0xfe8a -+#define GDK_dead_capital_schwa 0xfe8b -+#define GDK_First_Virtual_Screen 0xfed0 -+#define GDK_Prev_Virtual_Screen 0xfed1 -+#define GDK_Next_Virtual_Screen 0xfed2 -+#define GDK_Last_Virtual_Screen 0xfed4 -+#define GDK_Terminate_Server 0xfed5 -+#define GDK_AccessX_Enable 0xfe70 -+#define GDK_AccessX_Feedback_Enable 0xfe71 -+#define GDK_RepeatKeys_Enable 0xfe72 -+#define GDK_SlowKeys_Enable 0xfe73 -+#define GDK_BounceKeys_Enable 0xfe74 -+#define GDK_StickyKeys_Enable 0xfe75 -+#define GDK_MouseKeys_Enable 0xfe76 -+#define GDK_MouseKeys_Accel_Enable 0xfe77 -+#define GDK_Overlay1_Enable 0xfe78 -+#define GDK_Overlay2_Enable 0xfe79 -+#define GDK_AudibleBell_Enable 0xfe7a -+#define GDK_Pointer_Left 0xfee0 -+#define GDK_Pointer_Right 0xfee1 -+#define GDK_Pointer_Up 0xfee2 -+#define GDK_Pointer_Down 0xfee3 -+#define GDK_Pointer_UpLeft 0xfee4 -+#define GDK_Pointer_UpRight 0xfee5 -+#define GDK_Pointer_DownLeft 0xfee6 -+#define GDK_Pointer_DownRight 0xfee7 -+#define GDK_Pointer_Button_Dflt 0xfee8 -+#define GDK_Pointer_Button1 0xfee9 -+#define GDK_Pointer_Button2 0xfeea -+#define GDK_Pointer_Button3 0xfeeb -+#define GDK_Pointer_Button4 0xfeec -+#define GDK_Pointer_Button5 0xfeed -+#define GDK_Pointer_DblClick_Dflt 0xfeee -+#define GDK_Pointer_DblClick1 0xfeef -+#define GDK_Pointer_DblClick2 0xfef0 -+#define GDK_Pointer_DblClick3 0xfef1 -+#define GDK_Pointer_DblClick4 0xfef2 -+#define GDK_Pointer_DblClick5 0xfef3 -+#define GDK_Pointer_Drag_Dflt 0xfef4 -+#define GDK_Pointer_Drag1 0xfef5 -+#define GDK_Pointer_Drag2 0xfef6 -+#define GDK_Pointer_Drag3 0xfef7 -+#define GDK_Pointer_Drag4 0xfef8 -+#define GDK_Pointer_Drag5 0xfefd -+#define GDK_Pointer_EnableKeys 0xfef9 -+#define GDK_Pointer_Accelerate 0xfefa -+#define GDK_Pointer_DfltBtnNext 0xfefb -+#define GDK_Pointer_DfltBtnPrev 0xfefc -+#define GDK_3270_Duplicate 0xfd01 -+#define GDK_3270_FieldMark 0xfd02 -+#define GDK_3270_Right2 0xfd03 -+#define GDK_3270_Left2 0xfd04 -+#define GDK_3270_BackTab 0xfd05 -+#define GDK_3270_EraseEOF 0xfd06 -+#define GDK_3270_EraseInput 0xfd07 -+#define GDK_3270_Reset 0xfd08 -+#define GDK_3270_Quit 0xfd09 -+#define GDK_3270_PA1 0xfd0a -+#define GDK_3270_PA2 0xfd0b -+#define GDK_3270_PA3 0xfd0c -+#define GDK_3270_Test 0xfd0d -+#define GDK_3270_Attn 0xfd0e -+#define GDK_3270_CursorBlink 0xfd0f -+#define GDK_3270_AltCursor 0xfd10 -+#define GDK_3270_KeyClick 0xfd11 -+#define GDK_3270_Jump 0xfd12 -+#define GDK_3270_Ident 0xfd13 -+#define GDK_3270_Rule 0xfd14 -+#define GDK_3270_Copy 0xfd15 -+#define GDK_3270_Play 0xfd16 -+#define GDK_3270_Setup 0xfd17 -+#define GDK_3270_Record 0xfd18 -+#define GDK_3270_ChangeScreen 0xfd19 -+#define GDK_3270_DeleteWord 0xfd1a -+#define GDK_3270_ExSelect 0xfd1b -+#define GDK_3270_CursorSelect 0xfd1c -+#define GDK_3270_PrintScreen 0xfd1d -+#define GDK_3270_Enter 0xfd1e -+#define GDK_space 0x020 -+#define GDK_exclam 0x021 -+#define GDK_quotedbl 0x022 -+#define GDK_numbersign 0x023 -+#define GDK_dollar 0x024 -+#define GDK_percent 0x025 -+#define GDK_ampersand 0x026 -+#define GDK_apostrophe 0x027 -+#define GDK_quoteright 0x027 -+#define GDK_parenleft 0x028 -+#define GDK_parenright 0x029 -+#define GDK_asterisk 0x02a -+#define GDK_plus 0x02b -+#define GDK_comma 0x02c -+#define GDK_minus 0x02d -+#define GDK_period 0x02e -+#define GDK_slash 0x02f -+#define GDK_0 0x030 -+#define GDK_1 0x031 -+#define GDK_2 0x032 -+#define GDK_3 0x033 -+#define GDK_4 0x034 -+#define GDK_5 0x035 -+#define GDK_6 0x036 -+#define GDK_7 0x037 -+#define GDK_8 0x038 -+#define GDK_9 0x039 -+#define GDK_colon 0x03a -+#define GDK_semicolon 0x03b -+#define GDK_less 0x03c -+#define GDK_equal 0x03d -+#define GDK_greater 0x03e -+#define GDK_question 0x03f -+#define GDK_at 0x040 -+#define GDK_A 0x041 -+#define GDK_B 0x042 -+#define GDK_C 0x043 -+#define GDK_D 0x044 -+#define GDK_E 0x045 -+#define GDK_F 0x046 -+#define GDK_G 0x047 -+#define GDK_H 0x048 -+#define GDK_I 0x049 -+#define GDK_J 0x04a -+#define GDK_K 0x04b -+#define GDK_L 0x04c -+#define GDK_M 0x04d -+#define GDK_N 0x04e -+#define GDK_O 0x04f -+#define GDK_P 0x050 -+#define GDK_Q 0x051 -+#define GDK_R 0x052 -+#define GDK_S 0x053 -+#define GDK_T 0x054 -+#define GDK_U 0x055 -+#define GDK_V 0x056 -+#define GDK_W 0x057 -+#define GDK_X 0x058 -+#define GDK_Y 0x059 -+#define GDK_Z 0x05a -+#define GDK_bracketleft 0x05b -+#define GDK_backslash 0x05c -+#define GDK_bracketright 0x05d -+#define GDK_asciicircum 0x05e -+#define GDK_underscore 0x05f -+#define GDK_grave 0x060 -+#define GDK_quoteleft 0x060 -+#define GDK_a 0x061 -+#define GDK_b 0x062 -+#define GDK_c 0x063 -+#define GDK_d 0x064 -+#define GDK_e 0x065 -+#define GDK_f 0x066 -+#define GDK_g 0x067 -+#define GDK_h 0x068 -+#define GDK_i 0x069 -+#define GDK_j 0x06a -+#define GDK_k 0x06b -+#define GDK_l 0x06c -+#define GDK_m 0x06d -+#define GDK_n 0x06e -+#define GDK_o 0x06f -+#define GDK_p 0x070 -+#define GDK_q 0x071 -+#define GDK_r 0x072 -+#define GDK_s 0x073 -+#define GDK_t 0x074 -+#define GDK_u 0x075 -+#define GDK_v 0x076 -+#define GDK_w 0x077 -+#define GDK_x 0x078 -+#define GDK_y 0x079 -+#define GDK_z 0x07a -+#define GDK_braceleft 0x07b -+#define GDK_bar 0x07c -+#define GDK_braceright 0x07d -+#define GDK_asciitilde 0x07e -+#define GDK_nobreakspace 0x0a0 -+#define GDK_exclamdown 0x0a1 -+#define GDK_cent 0x0a2 -+#define GDK_sterling 0x0a3 -+#define GDK_currency 0x0a4 -+#define GDK_yen 0x0a5 -+#define GDK_brokenbar 0x0a6 -+#define GDK_section 0x0a7 -+#define GDK_diaeresis 0x0a8 -+#define GDK_copyright 0x0a9 -+#define GDK_ordfeminine 0x0aa -+#define GDK_guillemotleft 0x0ab -+#define GDK_notsign 0x0ac -+#define GDK_hyphen 0x0ad -+#define GDK_registered 0x0ae -+#define GDK_macron 0x0af -+#define GDK_degree 0x0b0 -+#define GDK_plusminus 0x0b1 -+#define GDK_twosuperior 0x0b2 -+#define GDK_threesuperior 0x0b3 -+#define GDK_acute 0x0b4 -+#define GDK_mu 0x0b5 -+#define GDK_paragraph 0x0b6 -+#define GDK_periodcentered 0x0b7 -+#define GDK_cedilla 0x0b8 -+#define GDK_onesuperior 0x0b9 -+#define GDK_masculine 0x0ba -+#define GDK_guillemotright 0x0bb -+#define GDK_onequarter 0x0bc -+#define GDK_onehalf 0x0bd -+#define GDK_threequarters 0x0be -+#define GDK_questiondown 0x0bf -+#define GDK_Agrave 0x0c0 -+#define GDK_Aacute 0x0c1 -+#define GDK_Acircumflex 0x0c2 -+#define GDK_Atilde 0x0c3 -+#define GDK_Adiaeresis 0x0c4 -+#define GDK_Aring 0x0c5 -+#define GDK_AE 0x0c6 -+#define GDK_Ccedilla 0x0c7 -+#define GDK_Egrave 0x0c8 -+#define GDK_Eacute 0x0c9 -+#define GDK_Ecircumflex 0x0ca -+#define GDK_Ediaeresis 0x0cb -+#define GDK_Igrave 0x0cc -+#define GDK_Iacute 0x0cd -+#define GDK_Icircumflex 0x0ce -+#define GDK_Idiaeresis 0x0cf -+#define GDK_ETH 0x0d0 -+#define GDK_Eth 0x0d0 -+#define GDK_Ntilde 0x0d1 -+#define GDK_Ograve 0x0d2 -+#define GDK_Oacute 0x0d3 -+#define GDK_Ocircumflex 0x0d4 -+#define GDK_Otilde 0x0d5 -+#define GDK_Odiaeresis 0x0d6 -+#define GDK_multiply 0x0d7 -+#define GDK_Oslash 0x0d8 -+#define GDK_Ooblique 0x0d8 -+#define GDK_Ugrave 0x0d9 -+#define GDK_Uacute 0x0da -+#define GDK_Ucircumflex 0x0db -+#define GDK_Udiaeresis 0x0dc -+#define GDK_Yacute 0x0dd -+#define GDK_THORN 0x0de -+#define GDK_Thorn 0x0de -+#define GDK_ssharp 0x0df -+#define GDK_agrave 0x0e0 -+#define GDK_aacute 0x0e1 -+#define GDK_acircumflex 0x0e2 -+#define GDK_atilde 0x0e3 -+#define GDK_adiaeresis 0x0e4 -+#define GDK_aring 0x0e5 -+#define GDK_ae 0x0e6 -+#define GDK_ccedilla 0x0e7 -+#define GDK_egrave 0x0e8 -+#define GDK_eacute 0x0e9 -+#define GDK_ecircumflex 0x0ea -+#define GDK_ediaeresis 0x0eb -+#define GDK_igrave 0x0ec -+#define GDK_iacute 0x0ed -+#define GDK_icircumflex 0x0ee -+#define GDK_idiaeresis 0x0ef -+#define GDK_eth 0x0f0 -+#define GDK_ntilde 0x0f1 -+#define GDK_ograve 0x0f2 -+#define GDK_oacute 0x0f3 -+#define GDK_ocircumflex 0x0f4 -+#define GDK_otilde 0x0f5 -+#define GDK_odiaeresis 0x0f6 -+#define GDK_division 0x0f7 -+#define GDK_oslash 0x0f8 -+#define GDK_ooblique 0x0f8 -+#define GDK_ugrave 0x0f9 -+#define GDK_uacute 0x0fa -+#define GDK_ucircumflex 0x0fb -+#define GDK_udiaeresis 0x0fc -+#define GDK_yacute 0x0fd -+#define GDK_thorn 0x0fe -+#define GDK_ydiaeresis 0x0ff -+#define GDK_Aogonek 0x1a1 -+#define GDK_breve 0x1a2 -+#define GDK_Lstroke 0x1a3 -+#define GDK_Lcaron 0x1a5 -+#define GDK_Sacute 0x1a6 -+#define GDK_Scaron 0x1a9 -+#define GDK_Scedilla 0x1aa -+#define GDK_Tcaron 0x1ab -+#define GDK_Zacute 0x1ac -+#define GDK_Zcaron 0x1ae -+#define GDK_Zabovedot 0x1af -+#define GDK_aogonek 0x1b1 -+#define GDK_ogonek 0x1b2 -+#define GDK_lstroke 0x1b3 -+#define GDK_lcaron 0x1b5 -+#define GDK_sacute 0x1b6 -+#define GDK_caron 0x1b7 -+#define GDK_scaron 0x1b9 -+#define GDK_scedilla 0x1ba -+#define GDK_tcaron 0x1bb -+#define GDK_zacute 0x1bc -+#define GDK_doubleacute 0x1bd -+#define GDK_zcaron 0x1be -+#define GDK_zabovedot 0x1bf -+#define GDK_Racute 0x1c0 -+#define GDK_Abreve 0x1c3 -+#define GDK_Lacute 0x1c5 -+#define GDK_Cacute 0x1c6 -+#define GDK_Ccaron 0x1c8 -+#define GDK_Eogonek 0x1ca -+#define GDK_Ecaron 0x1cc -+#define GDK_Dcaron 0x1cf -+#define GDK_Dstroke 0x1d0 -+#define GDK_Nacute 0x1d1 -+#define GDK_Ncaron 0x1d2 -+#define GDK_Odoubleacute 0x1d5 -+#define GDK_Rcaron 0x1d8 -+#define GDK_Uring 0x1d9 -+#define GDK_Udoubleacute 0x1db -+#define GDK_Tcedilla 0x1de -+#define GDK_racute 0x1e0 -+#define GDK_abreve 0x1e3 -+#define GDK_lacute 0x1e5 -+#define GDK_cacute 0x1e6 -+#define GDK_ccaron 0x1e8 -+#define GDK_eogonek 0x1ea -+#define GDK_ecaron 0x1ec -+#define GDK_dcaron 0x1ef -+#define GDK_dstroke 0x1f0 -+#define GDK_nacute 0x1f1 -+#define GDK_ncaron 0x1f2 -+#define GDK_odoubleacute 0x1f5 -+#define GDK_udoubleacute 0x1fb -+#define GDK_rcaron 0x1f8 -+#define GDK_uring 0x1f9 -+#define GDK_tcedilla 0x1fe -+#define GDK_abovedot 0x1ff -+#define GDK_Hstroke 0x2a1 -+#define GDK_Hcircumflex 0x2a6 -+#define GDK_Iabovedot 0x2a9 -+#define GDK_Gbreve 0x2ab -+#define GDK_Jcircumflex 0x2ac -+#define GDK_hstroke 0x2b1 -+#define GDK_hcircumflex 0x2b6 -+#define GDK_idotless 0x2b9 -+#define GDK_gbreve 0x2bb -+#define GDK_jcircumflex 0x2bc -+#define GDK_Cabovedot 0x2c5 -+#define GDK_Ccircumflex 0x2c6 -+#define GDK_Gabovedot 0x2d5 -+#define GDK_Gcircumflex 0x2d8 -+#define GDK_Ubreve 0x2dd -+#define GDK_Scircumflex 0x2de -+#define GDK_cabovedot 0x2e5 -+#define GDK_ccircumflex 0x2e6 -+#define GDK_gabovedot 0x2f5 -+#define GDK_gcircumflex 0x2f8 -+#define GDK_ubreve 0x2fd -+#define GDK_scircumflex 0x2fe -+#define GDK_kra 0x3a2 -+#define GDK_kappa 0x3a2 -+#define GDK_Rcedilla 0x3a3 -+#define GDK_Itilde 0x3a5 -+#define GDK_Lcedilla 0x3a6 -+#define GDK_Emacron 0x3aa -+#define GDK_Gcedilla 0x3ab -+#define GDK_Tslash 0x3ac -+#define GDK_rcedilla 0x3b3 -+#define GDK_itilde 0x3b5 -+#define GDK_lcedilla 0x3b6 -+#define GDK_emacron 0x3ba -+#define GDK_gcedilla 0x3bb -+#define GDK_tslash 0x3bc -+#define GDK_ENG 0x3bd -+#define GDK_eng 0x3bf -+#define GDK_Amacron 0x3c0 -+#define GDK_Iogonek 0x3c7 -+#define GDK_Eabovedot 0x3cc -+#define GDK_Imacron 0x3cf -+#define GDK_Ncedilla 0x3d1 -+#define GDK_Omacron 0x3d2 -+#define GDK_Kcedilla 0x3d3 -+#define GDK_Uogonek 0x3d9 -+#define GDK_Utilde 0x3dd -+#define GDK_Umacron 0x3de -+#define GDK_amacron 0x3e0 -+#define GDK_iogonek 0x3e7 -+#define GDK_eabovedot 0x3ec -+#define GDK_imacron 0x3ef -+#define GDK_ncedilla 0x3f1 -+#define GDK_omacron 0x3f2 -+#define GDK_kcedilla 0x3f3 -+#define GDK_uogonek 0x3f9 -+#define GDK_utilde 0x3fd -+#define GDK_umacron 0x3fe -+#define GDK_Babovedot 0x1001e02 -+#define GDK_babovedot 0x1001e03 -+#define GDK_Dabovedot 0x1001e0a -+#define GDK_Wgrave 0x1001e80 -+#define GDK_Wacute 0x1001e82 -+#define GDK_dabovedot 0x1001e0b -+#define GDK_Ygrave 0x1001ef2 -+#define GDK_Fabovedot 0x1001e1e -+#define GDK_fabovedot 0x1001e1f -+#define GDK_Mabovedot 0x1001e40 -+#define GDK_mabovedot 0x1001e41 -+#define GDK_Pabovedot 0x1001e56 -+#define GDK_wgrave 0x1001e81 -+#define GDK_pabovedot 0x1001e57 -+#define GDK_wacute 0x1001e83 -+#define GDK_Sabovedot 0x1001e60 -+#define GDK_ygrave 0x1001ef3 -+#define GDK_Wdiaeresis 0x1001e84 -+#define GDK_wdiaeresis 0x1001e85 -+#define GDK_sabovedot 0x1001e61 -+#define GDK_Wcircumflex 0x1000174 -+#define GDK_Tabovedot 0x1001e6a -+#define GDK_Ycircumflex 0x1000176 -+#define GDK_wcircumflex 0x1000175 -+#define GDK_tabovedot 0x1001e6b -+#define GDK_ycircumflex 0x1000177 -+#define GDK_OE 0x13bc -+#define GDK_oe 0x13bd -+#define GDK_Ydiaeresis 0x13be -+#define GDK_overline 0x47e -+#define GDK_kana_fullstop 0x4a1 -+#define GDK_kana_openingbracket 0x4a2 -+#define GDK_kana_closingbracket 0x4a3 -+#define GDK_kana_comma 0x4a4 -+#define GDK_kana_conjunctive 0x4a5 -+#define GDK_kana_middledot 0x4a5 -+#define GDK_kana_WO 0x4a6 -+#define GDK_kana_a 0x4a7 -+#define GDK_kana_i 0x4a8 -+#define GDK_kana_u 0x4a9 -+#define GDK_kana_e 0x4aa -+#define GDK_kana_o 0x4ab -+#define GDK_kana_ya 0x4ac -+#define GDK_kana_yu 0x4ad -+#define GDK_kana_yo 0x4ae -+#define GDK_kana_tsu 0x4af -+#define GDK_kana_tu 0x4af -+#define GDK_prolongedsound 0x4b0 -+#define GDK_kana_A 0x4b1 -+#define GDK_kana_I 0x4b2 -+#define GDK_kana_U 0x4b3 -+#define GDK_kana_E 0x4b4 -+#define GDK_kana_O 0x4b5 -+#define GDK_kana_KA 0x4b6 -+#define GDK_kana_KI 0x4b7 -+#define GDK_kana_KU 0x4b8 -+#define GDK_kana_KE 0x4b9 -+#define GDK_kana_KO 0x4ba -+#define GDK_kana_SA 0x4bb -+#define GDK_kana_SHI 0x4bc -+#define GDK_kana_SU 0x4bd -+#define GDK_kana_SE 0x4be -+#define GDK_kana_SO 0x4bf -+#define GDK_kana_TA 0x4c0 -+#define GDK_kana_CHI 0x4c1 -+#define GDK_kana_TI 0x4c1 -+#define GDK_kana_TSU 0x4c2 -+#define GDK_kana_TU 0x4c2 -+#define GDK_kana_TE 0x4c3 -+#define GDK_kana_TO 0x4c4 -+#define GDK_kana_NA 0x4c5 -+#define GDK_kana_NI 0x4c6 -+#define GDK_kana_NU 0x4c7 -+#define GDK_kana_NE 0x4c8 -+#define GDK_kana_NO 0x4c9 -+#define GDK_kana_HA 0x4ca -+#define GDK_kana_HI 0x4cb -+#define GDK_kana_FU 0x4cc -+#define GDK_kana_HU 0x4cc -+#define GDK_kana_HE 0x4cd -+#define GDK_kana_HO 0x4ce -+#define GDK_kana_MA 0x4cf -+#define GDK_kana_MI 0x4d0 -+#define GDK_kana_MU 0x4d1 -+#define GDK_kana_ME 0x4d2 -+#define GDK_kana_MO 0x4d3 -+#define GDK_kana_YA 0x4d4 -+#define GDK_kana_YU 0x4d5 -+#define GDK_kana_YO 0x4d6 -+#define GDK_kana_RA 0x4d7 -+#define GDK_kana_RI 0x4d8 -+#define GDK_kana_RU 0x4d9 -+#define GDK_kana_RE 0x4da -+#define GDK_kana_RO 0x4db -+#define GDK_kana_WA 0x4dc -+#define GDK_kana_N 0x4dd -+#define GDK_voicedsound 0x4de -+#define GDK_semivoicedsound 0x4df -+#define GDK_kana_switch 0xff7e -+#define GDK_Farsi_0 0x10006f0 -+#define GDK_Farsi_1 0x10006f1 -+#define GDK_Farsi_2 0x10006f2 -+#define GDK_Farsi_3 0x10006f3 -+#define GDK_Farsi_4 0x10006f4 -+#define GDK_Farsi_5 0x10006f5 -+#define GDK_Farsi_6 0x10006f6 -+#define GDK_Farsi_7 0x10006f7 -+#define GDK_Farsi_8 0x10006f8 -+#define GDK_Farsi_9 0x10006f9 -+#define GDK_Arabic_percent 0x100066a -+#define GDK_Arabic_superscript_alef 0x1000670 -+#define GDK_Arabic_tteh 0x1000679 -+#define GDK_Arabic_peh 0x100067e -+#define GDK_Arabic_tcheh 0x1000686 -+#define GDK_Arabic_ddal 0x1000688 -+#define GDK_Arabic_rreh 0x1000691 -+#define GDK_Arabic_comma 0x5ac -+#define GDK_Arabic_fullstop 0x10006d4 -+#define GDK_Arabic_0 0x1000660 -+#define GDK_Arabic_1 0x1000661 -+#define GDK_Arabic_2 0x1000662 -+#define GDK_Arabic_3 0x1000663 -+#define GDK_Arabic_4 0x1000664 -+#define GDK_Arabic_5 0x1000665 -+#define GDK_Arabic_6 0x1000666 -+#define GDK_Arabic_7 0x1000667 -+#define GDK_Arabic_8 0x1000668 -+#define GDK_Arabic_9 0x1000669 -+#define GDK_Arabic_semicolon 0x5bb -+#define GDK_Arabic_question_mark 0x5bf -+#define GDK_Arabic_hamza 0x5c1 -+#define GDK_Arabic_maddaonalef 0x5c2 -+#define GDK_Arabic_hamzaonalef 0x5c3 -+#define GDK_Arabic_hamzaonwaw 0x5c4 -+#define GDK_Arabic_hamzaunderalef 0x5c5 -+#define GDK_Arabic_hamzaonyeh 0x5c6 -+#define GDK_Arabic_alef 0x5c7 -+#define GDK_Arabic_beh 0x5c8 -+#define GDK_Arabic_tehmarbuta 0x5c9 -+#define GDK_Arabic_teh 0x5ca -+#define GDK_Arabic_theh 0x5cb -+#define GDK_Arabic_jeem 0x5cc -+#define GDK_Arabic_hah 0x5cd -+#define GDK_Arabic_khah 0x5ce -+#define GDK_Arabic_dal 0x5cf -+#define GDK_Arabic_thal 0x5d0 -+#define GDK_Arabic_ra 0x5d1 -+#define GDK_Arabic_zain 0x5d2 -+#define GDK_Arabic_seen 0x5d3 -+#define GDK_Arabic_sheen 0x5d4 -+#define GDK_Arabic_sad 0x5d5 -+#define GDK_Arabic_dad 0x5d6 -+#define GDK_Arabic_tah 0x5d7 -+#define GDK_Arabic_zah 0x5d8 -+#define GDK_Arabic_ain 0x5d9 -+#define GDK_Arabic_ghain 0x5da -+#define GDK_Arabic_tatweel 0x5e0 -+#define GDK_Arabic_feh 0x5e1 -+#define GDK_Arabic_qaf 0x5e2 -+#define GDK_Arabic_kaf 0x5e3 -+#define GDK_Arabic_lam 0x5e4 -+#define GDK_Arabic_meem 0x5e5 -+#define GDK_Arabic_noon 0x5e6 -+#define GDK_Arabic_ha 0x5e7 -+#define GDK_Arabic_heh 0x5e7 -+#define GDK_Arabic_waw 0x5e8 -+#define GDK_Arabic_alefmaksura 0x5e9 -+#define GDK_Arabic_yeh 0x5ea -+#define GDK_Arabic_fathatan 0x5eb -+#define GDK_Arabic_dammatan 0x5ec -+#define GDK_Arabic_kasratan 0x5ed -+#define GDK_Arabic_fatha 0x5ee -+#define GDK_Arabic_damma 0x5ef -+#define GDK_Arabic_kasra 0x5f0 -+#define GDK_Arabic_shadda 0x5f1 -+#define GDK_Arabic_sukun 0x5f2 -+#define GDK_Arabic_madda_above 0x1000653 -+#define GDK_Arabic_hamza_above 0x1000654 -+#define GDK_Arabic_hamza_below 0x1000655 -+#define GDK_Arabic_jeh 0x1000698 -+#define GDK_Arabic_veh 0x10006a4 -+#define GDK_Arabic_keheh 0x10006a9 -+#define GDK_Arabic_gaf 0x10006af -+#define GDK_Arabic_noon_ghunna 0x10006ba -+#define GDK_Arabic_heh_doachashmee 0x10006be -+#define GDK_Farsi_yeh 0x10006cc -+#define GDK_Arabic_farsi_yeh 0x10006cc -+#define GDK_Arabic_yeh_baree 0x10006d2 -+#define GDK_Arabic_heh_goal 0x10006c1 -+#define GDK_Arabic_switch 0xff7e -+#define GDK_Cyrillic_GHE_bar 0x1000492 -+#define GDK_Cyrillic_ghe_bar 0x1000493 -+#define GDK_Cyrillic_ZHE_descender 0x1000496 -+#define GDK_Cyrillic_zhe_descender 0x1000497 -+#define GDK_Cyrillic_KA_descender 0x100049a -+#define GDK_Cyrillic_ka_descender 0x100049b -+#define GDK_Cyrillic_KA_vertstroke 0x100049c -+#define GDK_Cyrillic_ka_vertstroke 0x100049d -+#define GDK_Cyrillic_EN_descender 0x10004a2 -+#define GDK_Cyrillic_en_descender 0x10004a3 -+#define GDK_Cyrillic_U_straight 0x10004ae -+#define GDK_Cyrillic_u_straight 0x10004af -+#define GDK_Cyrillic_U_straight_bar 0x10004b0 -+#define GDK_Cyrillic_u_straight_bar 0x10004b1 -+#define GDK_Cyrillic_HA_descender 0x10004b2 -+#define GDK_Cyrillic_ha_descender 0x10004b3 -+#define GDK_Cyrillic_CHE_descender 0x10004b6 -+#define GDK_Cyrillic_che_descender 0x10004b7 -+#define GDK_Cyrillic_CHE_vertstroke 0x10004b8 -+#define GDK_Cyrillic_che_vertstroke 0x10004b9 -+#define GDK_Cyrillic_SHHA 0x10004ba -+#define GDK_Cyrillic_shha 0x10004bb -+#define GDK_Cyrillic_SCHWA 0x10004d8 -+#define GDK_Cyrillic_schwa 0x10004d9 -+#define GDK_Cyrillic_I_macron 0x10004e2 -+#define GDK_Cyrillic_i_macron 0x10004e3 -+#define GDK_Cyrillic_O_bar 0x10004e8 -+#define GDK_Cyrillic_o_bar 0x10004e9 -+#define GDK_Cyrillic_U_macron 0x10004ee -+#define GDK_Cyrillic_u_macron 0x10004ef -+#define GDK_Serbian_dje 0x6a1 -+#define GDK_Macedonia_gje 0x6a2 -+#define GDK_Cyrillic_io 0x6a3 -+#define GDK_Ukrainian_ie 0x6a4 -+#define GDK_Ukranian_je 0x6a4 -+#define GDK_Macedonia_dse 0x6a5 -+#define GDK_Ukrainian_i 0x6a6 -+#define GDK_Ukranian_i 0x6a6 -+#define GDK_Ukrainian_yi 0x6a7 -+#define GDK_Ukranian_yi 0x6a7 -+#define GDK_Cyrillic_je 0x6a8 -+#define GDK_Serbian_je 0x6a8 -+#define GDK_Cyrillic_lje 0x6a9 -+#define GDK_Serbian_lje 0x6a9 -+#define GDK_Cyrillic_nje 0x6aa -+#define GDK_Serbian_nje 0x6aa -+#define GDK_Serbian_tshe 0x6ab -+#define GDK_Macedonia_kje 0x6ac -+#define GDK_Ukrainian_ghe_with_upturn 0x6ad -+#define GDK_Byelorussian_shortu 0x6ae -+#define GDK_Cyrillic_dzhe 0x6af -+#define GDK_Serbian_dze 0x6af -+#define GDK_numerosign 0x6b0 -+#define GDK_Serbian_DJE 0x6b1 -+#define GDK_Macedonia_GJE 0x6b2 -+#define GDK_Cyrillic_IO 0x6b3 -+#define GDK_Ukrainian_IE 0x6b4 -+#define GDK_Ukranian_JE 0x6b4 -+#define GDK_Macedonia_DSE 0x6b5 -+#define GDK_Ukrainian_I 0x6b6 -+#define GDK_Ukranian_I 0x6b6 -+#define GDK_Ukrainian_YI 0x6b7 -+#define GDK_Ukranian_YI 0x6b7 -+#define GDK_Cyrillic_JE 0x6b8 -+#define GDK_Serbian_JE 0x6b8 -+#define GDK_Cyrillic_LJE 0x6b9 -+#define GDK_Serbian_LJE 0x6b9 -+#define GDK_Cyrillic_NJE 0x6ba -+#define GDK_Serbian_NJE 0x6ba -+#define GDK_Serbian_TSHE 0x6bb -+#define GDK_Macedonia_KJE 0x6bc -+#define GDK_Ukrainian_GHE_WITH_UPTURN 0x6bd -+#define GDK_Byelorussian_SHORTU 0x6be -+#define GDK_Cyrillic_DZHE 0x6bf -+#define GDK_Serbian_DZE 0x6bf -+#define GDK_Cyrillic_yu 0x6c0 -+#define GDK_Cyrillic_a 0x6c1 -+#define GDK_Cyrillic_be 0x6c2 -+#define GDK_Cyrillic_tse 0x6c3 -+#define GDK_Cyrillic_de 0x6c4 -+#define GDK_Cyrillic_ie 0x6c5 -+#define GDK_Cyrillic_ef 0x6c6 -+#define GDK_Cyrillic_ghe 0x6c7 -+#define GDK_Cyrillic_ha 0x6c8 -+#define GDK_Cyrillic_i 0x6c9 -+#define GDK_Cyrillic_shorti 0x6ca -+#define GDK_Cyrillic_ka 0x6cb -+#define GDK_Cyrillic_el 0x6cc -+#define GDK_Cyrillic_em 0x6cd -+#define GDK_Cyrillic_en 0x6ce -+#define GDK_Cyrillic_o 0x6cf -+#define GDK_Cyrillic_pe 0x6d0 -+#define GDK_Cyrillic_ya 0x6d1 -+#define GDK_Cyrillic_er 0x6d2 -+#define GDK_Cyrillic_es 0x6d3 -+#define GDK_Cyrillic_te 0x6d4 -+#define GDK_Cyrillic_u 0x6d5 -+#define GDK_Cyrillic_zhe 0x6d6 -+#define GDK_Cyrillic_ve 0x6d7 -+#define GDK_Cyrillic_softsign 0x6d8 -+#define GDK_Cyrillic_yeru 0x6d9 -+#define GDK_Cyrillic_ze 0x6da -+#define GDK_Cyrillic_sha 0x6db -+#define GDK_Cyrillic_e 0x6dc -+#define GDK_Cyrillic_shcha 0x6dd -+#define GDK_Cyrillic_che 0x6de -+#define GDK_Cyrillic_hardsign 0x6df -+#define GDK_Cyrillic_YU 0x6e0 -+#define GDK_Cyrillic_A 0x6e1 -+#define GDK_Cyrillic_BE 0x6e2 -+#define GDK_Cyrillic_TSE 0x6e3 -+#define GDK_Cyrillic_DE 0x6e4 -+#define GDK_Cyrillic_IE 0x6e5 -+#define GDK_Cyrillic_EF 0x6e6 -+#define GDK_Cyrillic_GHE 0x6e7 -+#define GDK_Cyrillic_HA 0x6e8 -+#define GDK_Cyrillic_I 0x6e9 -+#define GDK_Cyrillic_SHORTI 0x6ea -+#define GDK_Cyrillic_KA 0x6eb -+#define GDK_Cyrillic_EL 0x6ec -+#define GDK_Cyrillic_EM 0x6ed -+#define GDK_Cyrillic_EN 0x6ee -+#define GDK_Cyrillic_O 0x6ef -+#define GDK_Cyrillic_PE 0x6f0 -+#define GDK_Cyrillic_YA 0x6f1 -+#define GDK_Cyrillic_ER 0x6f2 -+#define GDK_Cyrillic_ES 0x6f3 -+#define GDK_Cyrillic_TE 0x6f4 -+#define GDK_Cyrillic_U 0x6f5 -+#define GDK_Cyrillic_ZHE 0x6f6 -+#define GDK_Cyrillic_VE 0x6f7 -+#define GDK_Cyrillic_SOFTSIGN 0x6f8 -+#define GDK_Cyrillic_YERU 0x6f9 -+#define GDK_Cyrillic_ZE 0x6fa -+#define GDK_Cyrillic_SHA 0x6fb -+#define GDK_Cyrillic_E 0x6fc -+#define GDK_Cyrillic_SHCHA 0x6fd -+#define GDK_Cyrillic_CHE 0x6fe -+#define GDK_Cyrillic_HARDSIGN 0x6ff -+#define GDK_Greek_ALPHAaccent 0x7a1 -+#define GDK_Greek_EPSILONaccent 0x7a2 -+#define GDK_Greek_ETAaccent 0x7a3 -+#define GDK_Greek_IOTAaccent 0x7a4 -+#define GDK_Greek_IOTAdieresis 0x7a5 -+#define GDK_Greek_IOTAdiaeresis 0x7a5 -+#define GDK_Greek_OMICRONaccent 0x7a7 -+#define GDK_Greek_UPSILONaccent 0x7a8 -+#define GDK_Greek_UPSILONdieresis 0x7a9 -+#define GDK_Greek_OMEGAaccent 0x7ab -+#define GDK_Greek_accentdieresis 0x7ae -+#define GDK_Greek_horizbar 0x7af -+#define GDK_Greek_alphaaccent 0x7b1 -+#define GDK_Greek_epsilonaccent 0x7b2 -+#define GDK_Greek_etaaccent 0x7b3 -+#define GDK_Greek_iotaaccent 0x7b4 -+#define GDK_Greek_iotadieresis 0x7b5 -+#define GDK_Greek_iotaaccentdieresis 0x7b6 -+#define GDK_Greek_omicronaccent 0x7b7 -+#define GDK_Greek_upsilonaccent 0x7b8 -+#define GDK_Greek_upsilondieresis 0x7b9 -+#define GDK_Greek_upsilonaccentdieresis 0x7ba -+#define GDK_Greek_omegaaccent 0x7bb -+#define GDK_Greek_ALPHA 0x7c1 -+#define GDK_Greek_BETA 0x7c2 -+#define GDK_Greek_GAMMA 0x7c3 -+#define GDK_Greek_DELTA 0x7c4 -+#define GDK_Greek_EPSILON 0x7c5 -+#define GDK_Greek_ZETA 0x7c6 -+#define GDK_Greek_ETA 0x7c7 -+#define GDK_Greek_THETA 0x7c8 -+#define GDK_Greek_IOTA 0x7c9 -+#define GDK_Greek_KAPPA 0x7ca -+#define GDK_Greek_LAMDA 0x7cb -+#define GDK_Greek_LAMBDA 0x7cb -+#define GDK_Greek_MU 0x7cc -+#define GDK_Greek_NU 0x7cd -+#define GDK_Greek_XI 0x7ce -+#define GDK_Greek_OMICRON 0x7cf -+#define GDK_Greek_PI 0x7d0 -+#define GDK_Greek_RHO 0x7d1 -+#define GDK_Greek_SIGMA 0x7d2 -+#define GDK_Greek_TAU 0x7d4 -+#define GDK_Greek_UPSILON 0x7d5 -+#define GDK_Greek_PHI 0x7d6 -+#define GDK_Greek_CHI 0x7d7 -+#define GDK_Greek_PSI 0x7d8 -+#define GDK_Greek_OMEGA 0x7d9 -+#define GDK_Greek_alpha 0x7e1 -+#define GDK_Greek_beta 0x7e2 -+#define GDK_Greek_gamma 0x7e3 -+#define GDK_Greek_delta 0x7e4 -+#define GDK_Greek_epsilon 0x7e5 -+#define GDK_Greek_zeta 0x7e6 -+#define GDK_Greek_eta 0x7e7 -+#define GDK_Greek_theta 0x7e8 -+#define GDK_Greek_iota 0x7e9 -+#define GDK_Greek_kappa 0x7ea -+#define GDK_Greek_lamda 0x7eb -+#define GDK_Greek_lambda 0x7eb -+#define GDK_Greek_mu 0x7ec -+#define GDK_Greek_nu 0x7ed -+#define GDK_Greek_xi 0x7ee -+#define GDK_Greek_omicron 0x7ef -+#define GDK_Greek_pi 0x7f0 -+#define GDK_Greek_rho 0x7f1 -+#define GDK_Greek_sigma 0x7f2 -+#define GDK_Greek_finalsmallsigma 0x7f3 -+#define GDK_Greek_tau 0x7f4 -+#define GDK_Greek_upsilon 0x7f5 -+#define GDK_Greek_phi 0x7f6 -+#define GDK_Greek_chi 0x7f7 -+#define GDK_Greek_psi 0x7f8 -+#define GDK_Greek_omega 0x7f9 -+#define GDK_Greek_switch 0xff7e -+#define GDK_leftradical 0x8a1 -+#define GDK_topleftradical 0x8a2 -+#define GDK_horizconnector 0x8a3 -+#define GDK_topintegral 0x8a4 -+#define GDK_botintegral 0x8a5 -+#define GDK_vertconnector 0x8a6 -+#define GDK_topleftsqbracket 0x8a7 -+#define GDK_botleftsqbracket 0x8a8 -+#define GDK_toprightsqbracket 0x8a9 -+#define GDK_botrightsqbracket 0x8aa -+#define GDK_topleftparens 0x8ab -+#define GDK_botleftparens 0x8ac -+#define GDK_toprightparens 0x8ad -+#define GDK_botrightparens 0x8ae -+#define GDK_leftmiddlecurlybrace 0x8af -+#define GDK_rightmiddlecurlybrace 0x8b0 -+#define GDK_topleftsummation 0x8b1 -+#define GDK_botleftsummation 0x8b2 -+#define GDK_topvertsummationconnector 0x8b3 -+#define GDK_botvertsummationconnector 0x8b4 -+#define GDK_toprightsummation 0x8b5 -+#define GDK_botrightsummation 0x8b6 -+#define GDK_rightmiddlesummation 0x8b7 -+#define GDK_lessthanequal 0x8bc -+#define GDK_notequal 0x8bd -+#define GDK_greaterthanequal 0x8be -+#define GDK_integral 0x8bf -+#define GDK_therefore 0x8c0 -+#define GDK_variation 0x8c1 -+#define GDK_infinity 0x8c2 -+#define GDK_nabla 0x8c5 -+#define GDK_approximate 0x8c8 -+#define GDK_similarequal 0x8c9 -+#define GDK_ifonlyif 0x8cd -+#define GDK_implies 0x8ce -+#define GDK_identical 0x8cf -+#define GDK_radical 0x8d6 -+#define GDK_includedin 0x8da -+#define GDK_includes 0x8db -+#define GDK_intersection 0x8dc -+#define GDK_union 0x8dd -+#define GDK_logicaland 0x8de -+#define GDK_logicalor 0x8df -+#define GDK_partialderivative 0x8ef -+#define GDK_function 0x8f6 -+#define GDK_leftarrow 0x8fb -+#define GDK_uparrow 0x8fc -+#define GDK_rightarrow 0x8fd -+#define GDK_downarrow 0x8fe -+#define GDK_blank 0x9df -+#define GDK_soliddiamond 0x9e0 -+#define GDK_checkerboard 0x9e1 -+#define GDK_ht 0x9e2 -+#define GDK_ff 0x9e3 -+#define GDK_cr 0x9e4 -+#define GDK_lf 0x9e5 -+#define GDK_nl 0x9e8 -+#define GDK_vt 0x9e9 -+#define GDK_lowrightcorner 0x9ea -+#define GDK_uprightcorner 0x9eb -+#define GDK_upleftcorner 0x9ec -+#define GDK_lowleftcorner 0x9ed -+#define GDK_crossinglines 0x9ee -+#define GDK_horizlinescan1 0x9ef -+#define GDK_horizlinescan3 0x9f0 -+#define GDK_horizlinescan5 0x9f1 -+#define GDK_horizlinescan7 0x9f2 -+#define GDK_horizlinescan9 0x9f3 -+#define GDK_leftt 0x9f4 -+#define GDK_rightt 0x9f5 -+#define GDK_bott 0x9f6 -+#define GDK_topt 0x9f7 -+#define GDK_vertbar 0x9f8 -+#define GDK_emspace 0xaa1 -+#define GDK_enspace 0xaa2 -+#define GDK_em3space 0xaa3 -+#define GDK_em4space 0xaa4 -+#define GDK_digitspace 0xaa5 -+#define GDK_punctspace 0xaa6 -+#define GDK_thinspace 0xaa7 -+#define GDK_hairspace 0xaa8 -+#define GDK_emdash 0xaa9 -+#define GDK_endash 0xaaa -+#define GDK_signifblank 0xaac -+#define GDK_ellipsis 0xaae -+#define GDK_doubbaselinedot 0xaaf -+#define GDK_onethird 0xab0 -+#define GDK_twothirds 0xab1 -+#define GDK_onefifth 0xab2 -+#define GDK_twofifths 0xab3 -+#define GDK_threefifths 0xab4 -+#define GDK_fourfifths 0xab5 -+#define GDK_onesixth 0xab6 -+#define GDK_fivesixths 0xab7 -+#define GDK_careof 0xab8 -+#define GDK_figdash 0xabb -+#define GDK_leftanglebracket 0xabc -+#define GDK_decimalpoint 0xabd -+#define GDK_rightanglebracket 0xabe -+#define GDK_marker 0xabf -+#define GDK_oneeighth 0xac3 -+#define GDK_threeeighths 0xac4 -+#define GDK_fiveeighths 0xac5 -+#define GDK_seveneighths 0xac6 -+#define GDK_trademark 0xac9 -+#define GDK_signaturemark 0xaca -+#define GDK_trademarkincircle 0xacb -+#define GDK_leftopentriangle 0xacc -+#define GDK_rightopentriangle 0xacd -+#define GDK_emopencircle 0xace -+#define GDK_emopenrectangle 0xacf -+#define GDK_leftsinglequotemark 0xad0 -+#define GDK_rightsinglequotemark 0xad1 -+#define GDK_leftdoublequotemark 0xad2 -+#define GDK_rightdoublequotemark 0xad3 -+#define GDK_prescription 0xad4 -+#define GDK_minutes 0xad6 -+#define GDK_seconds 0xad7 -+#define GDK_latincross 0xad9 -+#define GDK_hexagram 0xada -+#define GDK_filledrectbullet 0xadb -+#define GDK_filledlefttribullet 0xadc -+#define GDK_filledrighttribullet 0xadd -+#define GDK_emfilledcircle 0xade -+#define GDK_emfilledrect 0xadf -+#define GDK_enopencircbullet 0xae0 -+#define GDK_enopensquarebullet 0xae1 -+#define GDK_openrectbullet 0xae2 -+#define GDK_opentribulletup 0xae3 -+#define GDK_opentribulletdown 0xae4 -+#define GDK_openstar 0xae5 -+#define GDK_enfilledcircbullet 0xae6 -+#define GDK_enfilledsqbullet 0xae7 -+#define GDK_filledtribulletup 0xae8 -+#define GDK_filledtribulletdown 0xae9 -+#define GDK_leftpointer 0xaea -+#define GDK_rightpointer 0xaeb -+#define GDK_club 0xaec -+#define GDK_diamond 0xaed -+#define GDK_heart 0xaee -+#define GDK_maltesecross 0xaf0 -+#define GDK_dagger 0xaf1 -+#define GDK_doubledagger 0xaf2 -+#define GDK_checkmark 0xaf3 -+#define GDK_ballotcross 0xaf4 -+#define GDK_musicalsharp 0xaf5 -+#define GDK_musicalflat 0xaf6 -+#define GDK_malesymbol 0xaf7 -+#define GDK_femalesymbol 0xaf8 -+#define GDK_telephone 0xaf9 -+#define GDK_telephonerecorder 0xafa -+#define GDK_phonographcopyright 0xafb -+#define GDK_caret 0xafc -+#define GDK_singlelowquotemark 0xafd -+#define GDK_doublelowquotemark 0xafe -+#define GDK_cursor 0xaff -+#define GDK_leftcaret 0xba3 -+#define GDK_rightcaret 0xba6 -+#define GDK_downcaret 0xba8 -+#define GDK_upcaret 0xba9 -+#define GDK_overbar 0xbc0 -+#define GDK_downtack 0xbc2 -+#define GDK_upshoe 0xbc3 -+#define GDK_downstile 0xbc4 -+#define GDK_underbar 0xbc6 -+#define GDK_jot 0xbca -+#define GDK_quad 0xbcc -+#define GDK_uptack 0xbce -+#define GDK_circle 0xbcf -+#define GDK_upstile 0xbd3 -+#define GDK_downshoe 0xbd6 -+#define GDK_rightshoe 0xbd8 -+#define GDK_leftshoe 0xbda -+#define GDK_lefttack 0xbdc -+#define GDK_righttack 0xbfc -+#define GDK_hebrew_doublelowline 0xcdf -+#define GDK_hebrew_aleph 0xce0 -+#define GDK_hebrew_bet 0xce1 -+#define GDK_hebrew_beth 0xce1 -+#define GDK_hebrew_gimel 0xce2 -+#define GDK_hebrew_gimmel 0xce2 -+#define GDK_hebrew_dalet 0xce3 -+#define GDK_hebrew_daleth 0xce3 -+#define GDK_hebrew_he 0xce4 -+#define GDK_hebrew_waw 0xce5 -+#define GDK_hebrew_zain 0xce6 -+#define GDK_hebrew_zayin 0xce6 -+#define GDK_hebrew_chet 0xce7 -+#define GDK_hebrew_het 0xce7 -+#define GDK_hebrew_tet 0xce8 -+#define GDK_hebrew_teth 0xce8 -+#define GDK_hebrew_yod 0xce9 -+#define GDK_hebrew_finalkaph 0xcea -+#define GDK_hebrew_kaph 0xceb -+#define GDK_hebrew_lamed 0xcec -+#define GDK_hebrew_finalmem 0xced -+#define GDK_hebrew_mem 0xcee -+#define GDK_hebrew_finalnun 0xcef -+#define GDK_hebrew_nun 0xcf0 -+#define GDK_hebrew_samech 0xcf1 -+#define GDK_hebrew_samekh 0xcf1 -+#define GDK_hebrew_ayin 0xcf2 -+#define GDK_hebrew_finalpe 0xcf3 -+#define GDK_hebrew_pe 0xcf4 -+#define GDK_hebrew_finalzade 0xcf5 -+#define GDK_hebrew_finalzadi 0xcf5 -+#define GDK_hebrew_zade 0xcf6 -+#define GDK_hebrew_zadi 0xcf6 -+#define GDK_hebrew_qoph 0xcf7 -+#define GDK_hebrew_kuf 0xcf7 -+#define GDK_hebrew_resh 0xcf8 -+#define GDK_hebrew_shin 0xcf9 -+#define GDK_hebrew_taw 0xcfa -+#define GDK_hebrew_taf 0xcfa -+#define GDK_Hebrew_switch 0xff7e -+#define GDK_Thai_kokai 0xda1 -+#define GDK_Thai_khokhai 0xda2 -+#define GDK_Thai_khokhuat 0xda3 -+#define GDK_Thai_khokhwai 0xda4 -+#define GDK_Thai_khokhon 0xda5 -+#define GDK_Thai_khorakhang 0xda6 -+#define GDK_Thai_ngongu 0xda7 -+#define GDK_Thai_chochan 0xda8 -+#define GDK_Thai_choching 0xda9 -+#define GDK_Thai_chochang 0xdaa -+#define GDK_Thai_soso 0xdab -+#define GDK_Thai_chochoe 0xdac -+#define GDK_Thai_yoying 0xdad -+#define GDK_Thai_dochada 0xdae -+#define GDK_Thai_topatak 0xdaf -+#define GDK_Thai_thothan 0xdb0 -+#define GDK_Thai_thonangmontho 0xdb1 -+#define GDK_Thai_thophuthao 0xdb2 -+#define GDK_Thai_nonen 0xdb3 -+#define GDK_Thai_dodek 0xdb4 -+#define GDK_Thai_totao 0xdb5 -+#define GDK_Thai_thothung 0xdb6 -+#define GDK_Thai_thothahan 0xdb7 -+#define GDK_Thai_thothong 0xdb8 -+#define GDK_Thai_nonu 0xdb9 -+#define GDK_Thai_bobaimai 0xdba -+#define GDK_Thai_popla 0xdbb -+#define GDK_Thai_phophung 0xdbc -+#define GDK_Thai_fofa 0xdbd -+#define GDK_Thai_phophan 0xdbe -+#define GDK_Thai_fofan 0xdbf -+#define GDK_Thai_phosamphao 0xdc0 -+#define GDK_Thai_moma 0xdc1 -+#define GDK_Thai_yoyak 0xdc2 -+#define GDK_Thai_rorua 0xdc3 -+#define GDK_Thai_ru 0xdc4 -+#define GDK_Thai_loling 0xdc5 -+#define GDK_Thai_lu 0xdc6 -+#define GDK_Thai_wowaen 0xdc7 -+#define GDK_Thai_sosala 0xdc8 -+#define GDK_Thai_sorusi 0xdc9 -+#define GDK_Thai_sosua 0xdca -+#define GDK_Thai_hohip 0xdcb -+#define GDK_Thai_lochula 0xdcc -+#define GDK_Thai_oang 0xdcd -+#define GDK_Thai_honokhuk 0xdce -+#define GDK_Thai_paiyannoi 0xdcf -+#define GDK_Thai_saraa 0xdd0 -+#define GDK_Thai_maihanakat 0xdd1 -+#define GDK_Thai_saraaa 0xdd2 -+#define GDK_Thai_saraam 0xdd3 -+#define GDK_Thai_sarai 0xdd4 -+#define GDK_Thai_saraii 0xdd5 -+#define GDK_Thai_saraue 0xdd6 -+#define GDK_Thai_sarauee 0xdd7 -+#define GDK_Thai_sarau 0xdd8 -+#define GDK_Thai_sarauu 0xdd9 -+#define GDK_Thai_phinthu 0xdda -+#define GDK_Thai_maihanakat_maitho 0xdde -+#define GDK_Thai_baht 0xddf -+#define GDK_Thai_sarae 0xde0 -+#define GDK_Thai_saraae 0xde1 -+#define GDK_Thai_sarao 0xde2 -+#define GDK_Thai_saraaimaimuan 0xde3 -+#define GDK_Thai_saraaimaimalai 0xde4 -+#define GDK_Thai_lakkhangyao 0xde5 -+#define GDK_Thai_maiyamok 0xde6 -+#define GDK_Thai_maitaikhu 0xde7 -+#define GDK_Thai_maiek 0xde8 -+#define GDK_Thai_maitho 0xde9 -+#define GDK_Thai_maitri 0xdea -+#define GDK_Thai_maichattawa 0xdeb -+#define GDK_Thai_thanthakhat 0xdec -+#define GDK_Thai_nikhahit 0xded -+#define GDK_Thai_leksun 0xdf0 -+#define GDK_Thai_leknung 0xdf1 -+#define GDK_Thai_leksong 0xdf2 -+#define GDK_Thai_leksam 0xdf3 -+#define GDK_Thai_leksi 0xdf4 -+#define GDK_Thai_lekha 0xdf5 -+#define GDK_Thai_lekhok 0xdf6 -+#define GDK_Thai_lekchet 0xdf7 -+#define GDK_Thai_lekpaet 0xdf8 -+#define GDK_Thai_lekkao 0xdf9 -+#define GDK_Hangul 0xff31 -+#define GDK_Hangul_Start 0xff32 -+#define GDK_Hangul_End 0xff33 -+#define GDK_Hangul_Hanja 0xff34 -+#define GDK_Hangul_Jamo 0xff35 -+#define GDK_Hangul_Romaja 0xff36 -+#define GDK_Hangul_Codeinput 0xff37 -+#define GDK_Hangul_Jeonja 0xff38 -+#define GDK_Hangul_Banja 0xff39 -+#define GDK_Hangul_PreHanja 0xff3a -+#define GDK_Hangul_PostHanja 0xff3b -+#define GDK_Hangul_SingleCandidate 0xff3c -+#define GDK_Hangul_MultipleCandidate 0xff3d -+#define GDK_Hangul_PreviousCandidate 0xff3e -+#define GDK_Hangul_Special 0xff3f -+#define GDK_Hangul_switch 0xff7e -+#define GDK_Hangul_Kiyeog 0xea1 -+#define GDK_Hangul_SsangKiyeog 0xea2 -+#define GDK_Hangul_KiyeogSios 0xea3 -+#define GDK_Hangul_Nieun 0xea4 -+#define GDK_Hangul_NieunJieuj 0xea5 -+#define GDK_Hangul_NieunHieuh 0xea6 -+#define GDK_Hangul_Dikeud 0xea7 -+#define GDK_Hangul_SsangDikeud 0xea8 -+#define GDK_Hangul_Rieul 0xea9 -+#define GDK_Hangul_RieulKiyeog 0xeaa -+#define GDK_Hangul_RieulMieum 0xeab -+#define GDK_Hangul_RieulPieub 0xeac -+#define GDK_Hangul_RieulSios 0xead -+#define GDK_Hangul_RieulTieut 0xeae -+#define GDK_Hangul_RieulPhieuf 0xeaf -+#define GDK_Hangul_RieulHieuh 0xeb0 -+#define GDK_Hangul_Mieum 0xeb1 -+#define GDK_Hangul_Pieub 0xeb2 -+#define GDK_Hangul_SsangPieub 0xeb3 -+#define GDK_Hangul_PieubSios 0xeb4 -+#define GDK_Hangul_Sios 0xeb5 -+#define GDK_Hangul_SsangSios 0xeb6 -+#define GDK_Hangul_Ieung 0xeb7 -+#define GDK_Hangul_Jieuj 0xeb8 -+#define GDK_Hangul_SsangJieuj 0xeb9 -+#define GDK_Hangul_Cieuc 0xeba -+#define GDK_Hangul_Khieuq 0xebb -+#define GDK_Hangul_Tieut 0xebc -+#define GDK_Hangul_Phieuf 0xebd -+#define GDK_Hangul_Hieuh 0xebe -+#define GDK_Hangul_A 0xebf -+#define GDK_Hangul_AE 0xec0 -+#define GDK_Hangul_YA 0xec1 -+#define GDK_Hangul_YAE 0xec2 -+#define GDK_Hangul_EO 0xec3 -+#define GDK_Hangul_E 0xec4 -+#define GDK_Hangul_YEO 0xec5 -+#define GDK_Hangul_YE 0xec6 -+#define GDK_Hangul_O 0xec7 -+#define GDK_Hangul_WA 0xec8 -+#define GDK_Hangul_WAE 0xec9 -+#define GDK_Hangul_OE 0xeca -+#define GDK_Hangul_YO 0xecb -+#define GDK_Hangul_U 0xecc -+#define GDK_Hangul_WEO 0xecd -+#define GDK_Hangul_WE 0xece -+#define GDK_Hangul_WI 0xecf -+#define GDK_Hangul_YU 0xed0 -+#define GDK_Hangul_EU 0xed1 -+#define GDK_Hangul_YI 0xed2 -+#define GDK_Hangul_I 0xed3 -+#define GDK_Hangul_J_Kiyeog 0xed4 -+#define GDK_Hangul_J_SsangKiyeog 0xed5 -+#define GDK_Hangul_J_KiyeogSios 0xed6 -+#define GDK_Hangul_J_Nieun 0xed7 -+#define GDK_Hangul_J_NieunJieuj 0xed8 -+#define GDK_Hangul_J_NieunHieuh 0xed9 -+#define GDK_Hangul_J_Dikeud 0xeda -+#define GDK_Hangul_J_Rieul 0xedb -+#define GDK_Hangul_J_RieulKiyeog 0xedc -+#define GDK_Hangul_J_RieulMieum 0xedd -+#define GDK_Hangul_J_RieulPieub 0xede -+#define GDK_Hangul_J_RieulSios 0xedf -+#define GDK_Hangul_J_RieulTieut 0xee0 -+#define GDK_Hangul_J_RieulPhieuf 0xee1 -+#define GDK_Hangul_J_RieulHieuh 0xee2 -+#define GDK_Hangul_J_Mieum 0xee3 -+#define GDK_Hangul_J_Pieub 0xee4 -+#define GDK_Hangul_J_PieubSios 0xee5 -+#define GDK_Hangul_J_Sios 0xee6 -+#define GDK_Hangul_J_SsangSios 0xee7 -+#define GDK_Hangul_J_Ieung 0xee8 -+#define GDK_Hangul_J_Jieuj 0xee9 -+#define GDK_Hangul_J_Cieuc 0xeea -+#define GDK_Hangul_J_Khieuq 0xeeb -+#define GDK_Hangul_J_Tieut 0xeec -+#define GDK_Hangul_J_Phieuf 0xeed -+#define GDK_Hangul_J_Hieuh 0xeee -+#define GDK_Hangul_RieulYeorinHieuh 0xeef -+#define GDK_Hangul_SunkyeongeumMieum 0xef0 -+#define GDK_Hangul_SunkyeongeumPieub 0xef1 -+#define GDK_Hangul_PanSios 0xef2 -+#define GDK_Hangul_KkogjiDalrinIeung 0xef3 -+#define GDK_Hangul_SunkyeongeumPhieuf 0xef4 -+#define GDK_Hangul_YeorinHieuh 0xef5 -+#define GDK_Hangul_AraeA 0xef6 -+#define GDK_Hangul_AraeAE 0xef7 -+#define GDK_Hangul_J_PanSios 0xef8 -+#define GDK_Hangul_J_KkogjiDalrinIeung 0xef9 -+#define GDK_Hangul_J_YeorinHieuh 0xefa -+#define GDK_Korean_Won 0xeff -+#define GDK_Armenian_ligature_ew 0x1000587 -+#define GDK_Armenian_full_stop 0x1000589 -+#define GDK_Armenian_verjaket 0x1000589 -+#define GDK_Armenian_separation_mark 0x100055d -+#define GDK_Armenian_but 0x100055d -+#define GDK_Armenian_hyphen 0x100058a -+#define GDK_Armenian_yentamna 0x100058a -+#define GDK_Armenian_exclam 0x100055c -+#define GDK_Armenian_amanak 0x100055c -+#define GDK_Armenian_accent 0x100055b -+#define GDK_Armenian_shesht 0x100055b -+#define GDK_Armenian_question 0x100055e -+#define GDK_Armenian_paruyk 0x100055e -+#define GDK_Armenian_AYB 0x1000531 -+#define GDK_Armenian_ayb 0x1000561 -+#define GDK_Armenian_BEN 0x1000532 -+#define GDK_Armenian_ben 0x1000562 -+#define GDK_Armenian_GIM 0x1000533 -+#define GDK_Armenian_gim 0x1000563 -+#define GDK_Armenian_DA 0x1000534 -+#define GDK_Armenian_da 0x1000564 -+#define GDK_Armenian_YECH 0x1000535 -+#define GDK_Armenian_yech 0x1000565 -+#define GDK_Armenian_ZA 0x1000536 -+#define GDK_Armenian_za 0x1000566 -+#define GDK_Armenian_E 0x1000537 -+#define GDK_Armenian_e 0x1000567 -+#define GDK_Armenian_AT 0x1000538 -+#define GDK_Armenian_at 0x1000568 -+#define GDK_Armenian_TO 0x1000539 -+#define GDK_Armenian_to 0x1000569 -+#define GDK_Armenian_ZHE 0x100053a -+#define GDK_Armenian_zhe 0x100056a -+#define GDK_Armenian_INI 0x100053b -+#define GDK_Armenian_ini 0x100056b -+#define GDK_Armenian_LYUN 0x100053c -+#define GDK_Armenian_lyun 0x100056c -+#define GDK_Armenian_KHE 0x100053d -+#define GDK_Armenian_khe 0x100056d -+#define GDK_Armenian_TSA 0x100053e -+#define GDK_Armenian_tsa 0x100056e -+#define GDK_Armenian_KEN 0x100053f -+#define GDK_Armenian_ken 0x100056f -+#define GDK_Armenian_HO 0x1000540 -+#define GDK_Armenian_ho 0x1000570 -+#define GDK_Armenian_DZA 0x1000541 -+#define GDK_Armenian_dza 0x1000571 -+#define GDK_Armenian_GHAT 0x1000542 -+#define GDK_Armenian_ghat 0x1000572 -+#define GDK_Armenian_TCHE 0x1000543 -+#define GDK_Armenian_tche 0x1000573 -+#define GDK_Armenian_MEN 0x1000544 -+#define GDK_Armenian_men 0x1000574 -+#define GDK_Armenian_HI 0x1000545 -+#define GDK_Armenian_hi 0x1000575 -+#define GDK_Armenian_NU 0x1000546 -+#define GDK_Armenian_nu 0x1000576 -+#define GDK_Armenian_SHA 0x1000547 -+#define GDK_Armenian_sha 0x1000577 -+#define GDK_Armenian_VO 0x1000548 -+#define GDK_Armenian_vo 0x1000578 -+#define GDK_Armenian_CHA 0x1000549 -+#define GDK_Armenian_cha 0x1000579 -+#define GDK_Armenian_PE 0x100054a -+#define GDK_Armenian_pe 0x100057a -+#define GDK_Armenian_JE 0x100054b -+#define GDK_Armenian_je 0x100057b -+#define GDK_Armenian_RA 0x100054c -+#define GDK_Armenian_ra 0x100057c -+#define GDK_Armenian_SE 0x100054d -+#define GDK_Armenian_se 0x100057d -+#define GDK_Armenian_VEV 0x100054e -+#define GDK_Armenian_vev 0x100057e -+#define GDK_Armenian_TYUN 0x100054f -+#define GDK_Armenian_tyun 0x100057f -+#define GDK_Armenian_RE 0x1000550 -+#define GDK_Armenian_re 0x1000580 -+#define GDK_Armenian_TSO 0x1000551 -+#define GDK_Armenian_tso 0x1000581 -+#define GDK_Armenian_VYUN 0x1000552 -+#define GDK_Armenian_vyun 0x1000582 -+#define GDK_Armenian_PYUR 0x1000553 -+#define GDK_Armenian_pyur 0x1000583 -+#define GDK_Armenian_KE 0x1000554 -+#define GDK_Armenian_ke 0x1000584 -+#define GDK_Armenian_O 0x1000555 -+#define GDK_Armenian_o 0x1000585 -+#define GDK_Armenian_FE 0x1000556 -+#define GDK_Armenian_fe 0x1000586 -+#define GDK_Armenian_apostrophe 0x100055a -+#define GDK_Georgian_an 0x10010d0 -+#define GDK_Georgian_ban 0x10010d1 -+#define GDK_Georgian_gan 0x10010d2 -+#define GDK_Georgian_don 0x10010d3 -+#define GDK_Georgian_en 0x10010d4 -+#define GDK_Georgian_vin 0x10010d5 -+#define GDK_Georgian_zen 0x10010d6 -+#define GDK_Georgian_tan 0x10010d7 -+#define GDK_Georgian_in 0x10010d8 -+#define GDK_Georgian_kan 0x10010d9 -+#define GDK_Georgian_las 0x10010da -+#define GDK_Georgian_man 0x10010db -+#define GDK_Georgian_nar 0x10010dc -+#define GDK_Georgian_on 0x10010dd -+#define GDK_Georgian_par 0x10010de -+#define GDK_Georgian_zhar 0x10010df -+#define GDK_Georgian_rae 0x10010e0 -+#define GDK_Georgian_san 0x10010e1 -+#define GDK_Georgian_tar 0x10010e2 -+#define GDK_Georgian_un 0x10010e3 -+#define GDK_Georgian_phar 0x10010e4 -+#define GDK_Georgian_khar 0x10010e5 -+#define GDK_Georgian_ghan 0x10010e6 -+#define GDK_Georgian_qar 0x10010e7 -+#define GDK_Georgian_shin 0x10010e8 -+#define GDK_Georgian_chin 0x10010e9 -+#define GDK_Georgian_can 0x10010ea -+#define GDK_Georgian_jil 0x10010eb -+#define GDK_Georgian_cil 0x10010ec -+#define GDK_Georgian_char 0x10010ed -+#define GDK_Georgian_xan 0x10010ee -+#define GDK_Georgian_jhan 0x10010ef -+#define GDK_Georgian_hae 0x10010f0 -+#define GDK_Georgian_he 0x10010f1 -+#define GDK_Georgian_hie 0x10010f2 -+#define GDK_Georgian_we 0x10010f3 -+#define GDK_Georgian_har 0x10010f4 -+#define GDK_Georgian_hoe 0x10010f5 -+#define GDK_Georgian_fi 0x10010f6 -+#define GDK_Xabovedot 0x1001e8a -+#define GDK_Ibreve 0x100012c -+#define GDK_Zstroke 0x10001b5 -+#define GDK_Gcaron 0x10001e6 -+#define GDK_Ocaron 0x10001d1 -+#define GDK_Obarred 0x100019f -+#define GDK_xabovedot 0x1001e8b -+#define GDK_ibreve 0x100012d -+#define GDK_zstroke 0x10001b6 -+#define GDK_gcaron 0x10001e7 -+#define GDK_ocaron 0x10001d2 -+#define GDK_obarred 0x1000275 -+#define GDK_SCHWA 0x100018f -+#define GDK_schwa 0x1000259 -+#define GDK_Lbelowdot 0x1001e36 -+#define GDK_lbelowdot 0x1001e37 -+#define GDK_Abelowdot 0x1001ea0 -+#define GDK_abelowdot 0x1001ea1 -+#define GDK_Ahook 0x1001ea2 -+#define GDK_ahook 0x1001ea3 -+#define GDK_Acircumflexacute 0x1001ea4 -+#define GDK_acircumflexacute 0x1001ea5 -+#define GDK_Acircumflexgrave 0x1001ea6 -+#define GDK_acircumflexgrave 0x1001ea7 -+#define GDK_Acircumflexhook 0x1001ea8 -+#define GDK_acircumflexhook 0x1001ea9 -+#define GDK_Acircumflextilde 0x1001eaa -+#define GDK_acircumflextilde 0x1001eab -+#define GDK_Acircumflexbelowdot 0x1001eac -+#define GDK_acircumflexbelowdot 0x1001ead -+#define GDK_Abreveacute 0x1001eae -+#define GDK_abreveacute 0x1001eaf -+#define GDK_Abrevegrave 0x1001eb0 -+#define GDK_abrevegrave 0x1001eb1 -+#define GDK_Abrevehook 0x1001eb2 -+#define GDK_abrevehook 0x1001eb3 -+#define GDK_Abrevetilde 0x1001eb4 -+#define GDK_abrevetilde 0x1001eb5 -+#define GDK_Abrevebelowdot 0x1001eb6 -+#define GDK_abrevebelowdot 0x1001eb7 -+#define GDK_Ebelowdot 0x1001eb8 -+#define GDK_ebelowdot 0x1001eb9 -+#define GDK_Ehook 0x1001eba -+#define GDK_ehook 0x1001ebb -+#define GDK_Etilde 0x1001ebc -+#define GDK_etilde 0x1001ebd -+#define GDK_Ecircumflexacute 0x1001ebe -+#define GDK_ecircumflexacute 0x1001ebf -+#define GDK_Ecircumflexgrave 0x1001ec0 -+#define GDK_ecircumflexgrave 0x1001ec1 -+#define GDK_Ecircumflexhook 0x1001ec2 -+#define GDK_ecircumflexhook 0x1001ec3 -+#define GDK_Ecircumflextilde 0x1001ec4 -+#define GDK_ecircumflextilde 0x1001ec5 -+#define GDK_Ecircumflexbelowdot 0x1001ec6 -+#define GDK_ecircumflexbelowdot 0x1001ec7 -+#define GDK_Ihook 0x1001ec8 -+#define GDK_ihook 0x1001ec9 -+#define GDK_Ibelowdot 0x1001eca -+#define GDK_ibelowdot 0x1001ecb -+#define GDK_Obelowdot 0x1001ecc -+#define GDK_obelowdot 0x1001ecd -+#define GDK_Ohook 0x1001ece -+#define GDK_ohook 0x1001ecf -+#define GDK_Ocircumflexacute 0x1001ed0 -+#define GDK_ocircumflexacute 0x1001ed1 -+#define GDK_Ocircumflexgrave 0x1001ed2 -+#define GDK_ocircumflexgrave 0x1001ed3 -+#define GDK_Ocircumflexhook 0x1001ed4 -+#define GDK_ocircumflexhook 0x1001ed5 -+#define GDK_Ocircumflextilde 0x1001ed6 -+#define GDK_ocircumflextilde 0x1001ed7 -+#define GDK_Ocircumflexbelowdot 0x1001ed8 -+#define GDK_ocircumflexbelowdot 0x1001ed9 -+#define GDK_Ohornacute 0x1001eda -+#define GDK_ohornacute 0x1001edb -+#define GDK_Ohorngrave 0x1001edc -+#define GDK_ohorngrave 0x1001edd -+#define GDK_Ohornhook 0x1001ede -+#define GDK_ohornhook 0x1001edf -+#define GDK_Ohorntilde 0x1001ee0 -+#define GDK_ohorntilde 0x1001ee1 -+#define GDK_Ohornbelowdot 0x1001ee2 -+#define GDK_ohornbelowdot 0x1001ee3 -+#define GDK_Ubelowdot 0x1001ee4 -+#define GDK_ubelowdot 0x1001ee5 -+#define GDK_Uhook 0x1001ee6 -+#define GDK_uhook 0x1001ee7 -+#define GDK_Uhornacute 0x1001ee8 -+#define GDK_uhornacute 0x1001ee9 -+#define GDK_Uhorngrave 0x1001eea -+#define GDK_uhorngrave 0x1001eeb -+#define GDK_Uhornhook 0x1001eec -+#define GDK_uhornhook 0x1001eed -+#define GDK_Uhorntilde 0x1001eee -+#define GDK_uhorntilde 0x1001eef -+#define GDK_Uhornbelowdot 0x1001ef0 -+#define GDK_uhornbelowdot 0x1001ef1 -+#define GDK_Ybelowdot 0x1001ef4 -+#define GDK_ybelowdot 0x1001ef5 -+#define GDK_Yhook 0x1001ef6 -+#define GDK_yhook 0x1001ef7 -+#define GDK_Ytilde 0x1001ef8 -+#define GDK_ytilde 0x1001ef9 -+#define GDK_Ohorn 0x10001a0 -+#define GDK_ohorn 0x10001a1 -+#define GDK_Uhorn 0x10001af -+#define GDK_uhorn 0x10001b0 -+#define GDK_EcuSign 0x10020a0 -+#define GDK_ColonSign 0x10020a1 -+#define GDK_CruzeiroSign 0x10020a2 -+#define GDK_FFrancSign 0x10020a3 -+#define GDK_LiraSign 0x10020a4 -+#define GDK_MillSign 0x10020a5 -+#define GDK_NairaSign 0x10020a6 -+#define GDK_PesetaSign 0x10020a7 -+#define GDK_RupeeSign 0x10020a8 -+#define GDK_WonSign 0x10020a9 -+#define GDK_NewSheqelSign 0x10020aa -+#define GDK_DongSign 0x10020ab -+#define GDK_EuroSign 0x20ac -+#define GDK_zerosuperior 0x1002070 -+#define GDK_foursuperior 0x1002074 -+#define GDK_fivesuperior 0x1002075 -+#define GDK_sixsuperior 0x1002076 -+#define GDK_sevensuperior 0x1002077 -+#define GDK_eightsuperior 0x1002078 -+#define GDK_ninesuperior 0x1002079 -+#define GDK_zerosubscript 0x1002080 -+#define GDK_onesubscript 0x1002081 -+#define GDK_twosubscript 0x1002082 -+#define GDK_threesubscript 0x1002083 -+#define GDK_foursubscript 0x1002084 -+#define GDK_fivesubscript 0x1002085 -+#define GDK_sixsubscript 0x1002086 -+#define GDK_sevensubscript 0x1002087 -+#define GDK_eightsubscript 0x1002088 -+#define GDK_ninesubscript 0x1002089 -+#define GDK_partdifferential 0x1002202 -+#define GDK_emptyset 0x1002205 -+#define GDK_elementof 0x1002208 -+#define GDK_notelementof 0x1002209 -+#define GDK_containsas 0x100220b -+#define GDK_squareroot 0x100221a -+#define GDK_cuberoot 0x100221b -+#define GDK_fourthroot 0x100221c -+#define GDK_dintegral 0x100222c -+#define GDK_tintegral 0x100222d -+#define GDK_because 0x1002235 -+#define GDK_approxeq 0x1002248 -+#define GDK_notapproxeq 0x1002247 -+#define GDK_notidentical 0x1002262 -+#define GDK_stricteq 0x1002263 -+#define GDK_braille_dot_1 0xfff1 -+#define GDK_braille_dot_2 0xfff2 -+#define GDK_braille_dot_3 0xfff3 -+#define GDK_braille_dot_4 0xfff4 -+#define GDK_braille_dot_5 0xfff5 -+#define GDK_braille_dot_6 0xfff6 -+#define GDK_braille_dot_7 0xfff7 -+#define GDK_braille_dot_8 0xfff8 -+#define GDK_braille_dot_9 0xfff9 -+#define GDK_braille_dot_10 0xfffa -+#define GDK_braille_blank 0x1002800 -+#define GDK_braille_dots_1 0x1002801 -+#define GDK_braille_dots_2 0x1002802 -+#define GDK_braille_dots_12 0x1002803 -+#define GDK_braille_dots_3 0x1002804 -+#define GDK_braille_dots_13 0x1002805 -+#define GDK_braille_dots_23 0x1002806 -+#define GDK_braille_dots_123 0x1002807 -+#define GDK_braille_dots_4 0x1002808 -+#define GDK_braille_dots_14 0x1002809 -+#define GDK_braille_dots_24 0x100280a -+#define GDK_braille_dots_124 0x100280b -+#define GDK_braille_dots_34 0x100280c -+#define GDK_braille_dots_134 0x100280d -+#define GDK_braille_dots_234 0x100280e -+#define GDK_braille_dots_1234 0x100280f -+#define GDK_braille_dots_5 0x1002810 -+#define GDK_braille_dots_15 0x1002811 -+#define GDK_braille_dots_25 0x1002812 -+#define GDK_braille_dots_125 0x1002813 -+#define GDK_braille_dots_35 0x1002814 -+#define GDK_braille_dots_135 0x1002815 -+#define GDK_braille_dots_235 0x1002816 -+#define GDK_braille_dots_1235 0x1002817 -+#define GDK_braille_dots_45 0x1002818 -+#define GDK_braille_dots_145 0x1002819 -+#define GDK_braille_dots_245 0x100281a -+#define GDK_braille_dots_1245 0x100281b -+#define GDK_braille_dots_345 0x100281c -+#define GDK_braille_dots_1345 0x100281d -+#define GDK_braille_dots_2345 0x100281e -+#define GDK_braille_dots_12345 0x100281f -+#define GDK_braille_dots_6 0x1002820 -+#define GDK_braille_dots_16 0x1002821 -+#define GDK_braille_dots_26 0x1002822 -+#define GDK_braille_dots_126 0x1002823 -+#define GDK_braille_dots_36 0x1002824 -+#define GDK_braille_dots_136 0x1002825 -+#define GDK_braille_dots_236 0x1002826 -+#define GDK_braille_dots_1236 0x1002827 -+#define GDK_braille_dots_46 0x1002828 -+#define GDK_braille_dots_146 0x1002829 -+#define GDK_braille_dots_246 0x100282a -+#define GDK_braille_dots_1246 0x100282b -+#define GDK_braille_dots_346 0x100282c -+#define GDK_braille_dots_1346 0x100282d -+#define GDK_braille_dots_2346 0x100282e -+#define GDK_braille_dots_12346 0x100282f -+#define GDK_braille_dots_56 0x1002830 -+#define GDK_braille_dots_156 0x1002831 -+#define GDK_braille_dots_256 0x1002832 -+#define GDK_braille_dots_1256 0x1002833 -+#define GDK_braille_dots_356 0x1002834 -+#define GDK_braille_dots_1356 0x1002835 -+#define GDK_braille_dots_2356 0x1002836 -+#define GDK_braille_dots_12356 0x1002837 -+#define GDK_braille_dots_456 0x1002838 -+#define GDK_braille_dots_1456 0x1002839 -+#define GDK_braille_dots_2456 0x100283a -+#define GDK_braille_dots_12456 0x100283b -+#define GDK_braille_dots_3456 0x100283c -+#define GDK_braille_dots_13456 0x100283d -+#define GDK_braille_dots_23456 0x100283e -+#define GDK_braille_dots_123456 0x100283f -+#define GDK_braille_dots_7 0x1002840 -+#define GDK_braille_dots_17 0x1002841 -+#define GDK_braille_dots_27 0x1002842 -+#define GDK_braille_dots_127 0x1002843 -+#define GDK_braille_dots_37 0x1002844 -+#define GDK_braille_dots_137 0x1002845 -+#define GDK_braille_dots_237 0x1002846 -+#define GDK_braille_dots_1237 0x1002847 -+#define GDK_braille_dots_47 0x1002848 -+#define GDK_braille_dots_147 0x1002849 -+#define GDK_braille_dots_247 0x100284a -+#define GDK_braille_dots_1247 0x100284b -+#define GDK_braille_dots_347 0x100284c -+#define GDK_braille_dots_1347 0x100284d -+#define GDK_braille_dots_2347 0x100284e -+#define GDK_braille_dots_12347 0x100284f -+#define GDK_braille_dots_57 0x1002850 -+#define GDK_braille_dots_157 0x1002851 -+#define GDK_braille_dots_257 0x1002852 -+#define GDK_braille_dots_1257 0x1002853 -+#define GDK_braille_dots_357 0x1002854 -+#define GDK_braille_dots_1357 0x1002855 -+#define GDK_braille_dots_2357 0x1002856 -+#define GDK_braille_dots_12357 0x1002857 -+#define GDK_braille_dots_457 0x1002858 -+#define GDK_braille_dots_1457 0x1002859 -+#define GDK_braille_dots_2457 0x100285a -+#define GDK_braille_dots_12457 0x100285b -+#define GDK_braille_dots_3457 0x100285c -+#define GDK_braille_dots_13457 0x100285d -+#define GDK_braille_dots_23457 0x100285e -+#define GDK_braille_dots_123457 0x100285f -+#define GDK_braille_dots_67 0x1002860 -+#define GDK_braille_dots_167 0x1002861 -+#define GDK_braille_dots_267 0x1002862 -+#define GDK_braille_dots_1267 0x1002863 -+#define GDK_braille_dots_367 0x1002864 -+#define GDK_braille_dots_1367 0x1002865 -+#define GDK_braille_dots_2367 0x1002866 -+#define GDK_braille_dots_12367 0x1002867 -+#define GDK_braille_dots_467 0x1002868 -+#define GDK_braille_dots_1467 0x1002869 -+#define GDK_braille_dots_2467 0x100286a -+#define GDK_braille_dots_12467 0x100286b -+#define GDK_braille_dots_3467 0x100286c -+#define GDK_braille_dots_13467 0x100286d -+#define GDK_braille_dots_23467 0x100286e -+#define GDK_braille_dots_123467 0x100286f -+#define GDK_braille_dots_567 0x1002870 -+#define GDK_braille_dots_1567 0x1002871 -+#define GDK_braille_dots_2567 0x1002872 -+#define GDK_braille_dots_12567 0x1002873 -+#define GDK_braille_dots_3567 0x1002874 -+#define GDK_braille_dots_13567 0x1002875 -+#define GDK_braille_dots_23567 0x1002876 -+#define GDK_braille_dots_123567 0x1002877 -+#define GDK_braille_dots_4567 0x1002878 -+#define GDK_braille_dots_14567 0x1002879 -+#define GDK_braille_dots_24567 0x100287a -+#define GDK_braille_dots_124567 0x100287b -+#define GDK_braille_dots_34567 0x100287c -+#define GDK_braille_dots_134567 0x100287d -+#define GDK_braille_dots_234567 0x100287e -+#define GDK_braille_dots_1234567 0x100287f -+#define GDK_braille_dots_8 0x1002880 -+#define GDK_braille_dots_18 0x1002881 -+#define GDK_braille_dots_28 0x1002882 -+#define GDK_braille_dots_128 0x1002883 -+#define GDK_braille_dots_38 0x1002884 -+#define GDK_braille_dots_138 0x1002885 -+#define GDK_braille_dots_238 0x1002886 -+#define GDK_braille_dots_1238 0x1002887 -+#define GDK_braille_dots_48 0x1002888 -+#define GDK_braille_dots_148 0x1002889 -+#define GDK_braille_dots_248 0x100288a -+#define GDK_braille_dots_1248 0x100288b -+#define GDK_braille_dots_348 0x100288c -+#define GDK_braille_dots_1348 0x100288d -+#define GDK_braille_dots_2348 0x100288e -+#define GDK_braille_dots_12348 0x100288f -+#define GDK_braille_dots_58 0x1002890 -+#define GDK_braille_dots_158 0x1002891 -+#define GDK_braille_dots_258 0x1002892 -+#define GDK_braille_dots_1258 0x1002893 -+#define GDK_braille_dots_358 0x1002894 -+#define GDK_braille_dots_1358 0x1002895 -+#define GDK_braille_dots_2358 0x1002896 -+#define GDK_braille_dots_12358 0x1002897 -+#define GDK_braille_dots_458 0x1002898 -+#define GDK_braille_dots_1458 0x1002899 -+#define GDK_braille_dots_2458 0x100289a -+#define GDK_braille_dots_12458 0x100289b -+#define GDK_braille_dots_3458 0x100289c -+#define GDK_braille_dots_13458 0x100289d -+#define GDK_braille_dots_23458 0x100289e -+#define GDK_braille_dots_123458 0x100289f -+#define GDK_braille_dots_68 0x10028a0 -+#define GDK_braille_dots_168 0x10028a1 -+#define GDK_braille_dots_268 0x10028a2 -+#define GDK_braille_dots_1268 0x10028a3 -+#define GDK_braille_dots_368 0x10028a4 -+#define GDK_braille_dots_1368 0x10028a5 -+#define GDK_braille_dots_2368 0x10028a6 -+#define GDK_braille_dots_12368 0x10028a7 -+#define GDK_braille_dots_468 0x10028a8 -+#define GDK_braille_dots_1468 0x10028a9 -+#define GDK_braille_dots_2468 0x10028aa -+#define GDK_braille_dots_12468 0x10028ab -+#define GDK_braille_dots_3468 0x10028ac -+#define GDK_braille_dots_13468 0x10028ad -+#define GDK_braille_dots_23468 0x10028ae -+#define GDK_braille_dots_123468 0x10028af -+#define GDK_braille_dots_568 0x10028b0 -+#define GDK_braille_dots_1568 0x10028b1 -+#define GDK_braille_dots_2568 0x10028b2 -+#define GDK_braille_dots_12568 0x10028b3 -+#define GDK_braille_dots_3568 0x10028b4 -+#define GDK_braille_dots_13568 0x10028b5 -+#define GDK_braille_dots_23568 0x10028b6 -+#define GDK_braille_dots_123568 0x10028b7 -+#define GDK_braille_dots_4568 0x10028b8 -+#define GDK_braille_dots_14568 0x10028b9 -+#define GDK_braille_dots_24568 0x10028ba -+#define GDK_braille_dots_124568 0x10028bb -+#define GDK_braille_dots_34568 0x10028bc -+#define GDK_braille_dots_134568 0x10028bd -+#define GDK_braille_dots_234568 0x10028be -+#define GDK_braille_dots_1234568 0x10028bf -+#define GDK_braille_dots_78 0x10028c0 -+#define GDK_braille_dots_178 0x10028c1 -+#define GDK_braille_dots_278 0x10028c2 -+#define GDK_braille_dots_1278 0x10028c3 -+#define GDK_braille_dots_378 0x10028c4 -+#define GDK_braille_dots_1378 0x10028c5 -+#define GDK_braille_dots_2378 0x10028c6 -+#define GDK_braille_dots_12378 0x10028c7 -+#define GDK_braille_dots_478 0x10028c8 -+#define GDK_braille_dots_1478 0x10028c9 -+#define GDK_braille_dots_2478 0x10028ca -+#define GDK_braille_dots_12478 0x10028cb -+#define GDK_braille_dots_3478 0x10028cc -+#define GDK_braille_dots_13478 0x10028cd -+#define GDK_braille_dots_23478 0x10028ce -+#define GDK_braille_dots_123478 0x10028cf -+#define GDK_braille_dots_578 0x10028d0 -+#define GDK_braille_dots_1578 0x10028d1 -+#define GDK_braille_dots_2578 0x10028d2 -+#define GDK_braille_dots_12578 0x10028d3 -+#define GDK_braille_dots_3578 0x10028d4 -+#define GDK_braille_dots_13578 0x10028d5 -+#define GDK_braille_dots_23578 0x10028d6 -+#define GDK_braille_dots_123578 0x10028d7 -+#define GDK_braille_dots_4578 0x10028d8 -+#define GDK_braille_dots_14578 0x10028d9 -+#define GDK_braille_dots_24578 0x10028da -+#define GDK_braille_dots_124578 0x10028db -+#define GDK_braille_dots_34578 0x10028dc -+#define GDK_braille_dots_134578 0x10028dd -+#define GDK_braille_dots_234578 0x10028de -+#define GDK_braille_dots_1234578 0x10028df -+#define GDK_braille_dots_678 0x10028e0 -+#define GDK_braille_dots_1678 0x10028e1 -+#define GDK_braille_dots_2678 0x10028e2 -+#define GDK_braille_dots_12678 0x10028e3 -+#define GDK_braille_dots_3678 0x10028e4 -+#define GDK_braille_dots_13678 0x10028e5 -+#define GDK_braille_dots_23678 0x10028e6 -+#define GDK_braille_dots_123678 0x10028e7 -+#define GDK_braille_dots_4678 0x10028e8 -+#define GDK_braille_dots_14678 0x10028e9 -+#define GDK_braille_dots_24678 0x10028ea -+#define GDK_braille_dots_124678 0x10028eb -+#define GDK_braille_dots_34678 0x10028ec -+#define GDK_braille_dots_134678 0x10028ed -+#define GDK_braille_dots_234678 0x10028ee -+#define GDK_braille_dots_1234678 0x10028ef -+#define GDK_braille_dots_5678 0x10028f0 -+#define GDK_braille_dots_15678 0x10028f1 -+#define GDK_braille_dots_25678 0x10028f2 -+#define GDK_braille_dots_125678 0x10028f3 -+#define GDK_braille_dots_35678 0x10028f4 -+#define GDK_braille_dots_135678 0x10028f5 -+#define GDK_braille_dots_235678 0x10028f6 -+#define GDK_braille_dots_1235678 0x10028f7 -+#define GDK_braille_dots_45678 0x10028f8 -+#define GDK_braille_dots_145678 0x10028f9 -+#define GDK_braille_dots_245678 0x10028fa -+#define GDK_braille_dots_1245678 0x10028fb -+#define GDK_braille_dots_345678 0x10028fc -+#define GDK_braille_dots_1345678 0x10028fd -+#define GDK_braille_dots_2345678 0x10028fe -+#define GDK_braille_dots_12345678 0x10028ff -+#define GDK_ModeLock 0x1008ff01 -+#define GDK_MonBrightnessUp 0x1008ff02 -+#define GDK_MonBrightnessDown 0x1008ff03 -+#define GDK_KbdLightOnOff 0x1008ff04 -+#define GDK_KbdBrightnessUp 0x1008ff05 -+#define GDK_KbdBrightnessDown 0x1008ff06 -+#define GDK_Standby 0x1008ff10 -+#define GDK_AudioLowerVolume 0x1008ff11 -+#define GDK_AudioMute 0x1008ff12 -+#define GDK_AudioRaiseVolume 0x1008ff13 -+#define GDK_AudioPlay 0x1008ff14 -+#define GDK_AudioStop 0x1008ff15 -+#define GDK_AudioPrev 0x1008ff16 -+#define GDK_AudioNext 0x1008ff17 -+#define GDK_HomePage 0x1008ff18 -+#define GDK_Mail 0x1008ff19 -+#define GDK_Start 0x1008ff1a -+#define GDK_Search 0x1008ff1b -+#define GDK_AudioRecord 0x1008ff1c -+#define GDK_Calculator 0x1008ff1d -+#define GDK_Memo 0x1008ff1e -+#define GDK_ToDoList 0x1008ff1f -+#define GDK_Calendar 0x1008ff20 -+#define GDK_PowerDown 0x1008ff21 -+#define GDK_ContrastAdjust 0x1008ff22 -+#define GDK_RockerUp 0x1008ff23 -+#define GDK_RockerDown 0x1008ff24 -+#define GDK_RockerEnter 0x1008ff25 -+#define GDK_Back 0x1008ff26 -+#define GDK_Forward 0x1008ff27 -+#define GDK_Stop 0x1008ff28 -+#define GDK_Refresh 0x1008ff29 -+#define GDK_PowerOff 0x1008ff2a -+#define GDK_WakeUp 0x1008ff2b -+#define GDK_Eject 0x1008ff2c -+#define GDK_ScreenSaver 0x1008ff2d -+#define GDK_WWW 0x1008ff2e -+#define GDK_Sleep 0x1008ff2f -+#define GDK_Favorites 0x1008ff30 -+#define GDK_AudioPause 0x1008ff31 -+#define GDK_AudioMedia 0x1008ff32 -+#define GDK_MyComputer 0x1008ff33 -+#define GDK_VendorHome 0x1008ff34 -+#define GDK_LightBulb 0x1008ff35 -+#define GDK_Shop 0x1008ff36 -+#define GDK_History 0x1008ff37 -+#define GDK_OpenURL 0x1008ff38 -+#define GDK_AddFavorite 0x1008ff39 -+#define GDK_HotLinks 0x1008ff3a -+#define GDK_BrightnessAdjust 0x1008ff3b -+#define GDK_Finance 0x1008ff3c -+#define GDK_Community 0x1008ff3d -+#define GDK_AudioRewind 0x1008ff3e -+#define GDK_BackForward 0x1008ff3f -+#define GDK_Launch0 0x1008ff40 -+#define GDK_Launch1 0x1008ff41 -+#define GDK_Launch2 0x1008ff42 -+#define GDK_Launch3 0x1008ff43 -+#define GDK_Launch4 0x1008ff44 -+#define GDK_Launch5 0x1008ff45 -+#define GDK_Launch6 0x1008ff46 -+#define GDK_Launch7 0x1008ff47 -+#define GDK_Launch8 0x1008ff48 -+#define GDK_Launch9 0x1008ff49 -+#define GDK_LaunchA 0x1008ff4a -+#define GDK_LaunchB 0x1008ff4b -+#define GDK_LaunchC 0x1008ff4c -+#define GDK_LaunchD 0x1008ff4d -+#define GDK_LaunchE 0x1008ff4e -+#define GDK_LaunchF 0x1008ff4f -+#define GDK_ApplicationLeft 0x1008ff50 -+#define GDK_ApplicationRight 0x1008ff51 -+#define GDK_Book 0x1008ff52 -+#define GDK_CD 0x1008ff53 -+#define GDK_WindowClear 0x1008ff55 -+#define GDK_Close 0x1008ff56 -+#define GDK_Copy 0x1008ff57 -+#define GDK_Cut 0x1008ff58 -+#define GDK_Display 0x1008ff59 -+#define GDK_DOS 0x1008ff5a -+#define GDK_Documents 0x1008ff5b -+#define GDK_Excel 0x1008ff5c -+#define GDK_Explorer 0x1008ff5d -+#define GDK_Game 0x1008ff5e -+#define GDK_Go 0x1008ff5f -+#define GDK_iTouch 0x1008ff60 -+#define GDK_LogOff 0x1008ff61 -+#define GDK_Market 0x1008ff62 -+#define GDK_Meeting 0x1008ff63 -+#define GDK_MenuKB 0x1008ff65 -+#define GDK_MenuPB 0x1008ff66 -+#define GDK_MySites 0x1008ff67 -+#define GDK_New 0x1008ff68 -+#define GDK_News 0x1008ff69 -+#define GDK_OfficeHome 0x1008ff6a -+#define GDK_Open 0x1008ff6b -+#define GDK_Option 0x1008ff6c -+#define GDK_Paste 0x1008ff6d -+#define GDK_Phone 0x1008ff6e -+#define GDK_Reply 0x1008ff72 -+#define GDK_Reload 0x1008ff73 -+#define GDK_RotateWindows 0x1008ff74 -+#define GDK_RotationPB 0x1008ff75 -+#define GDK_RotationKB 0x1008ff76 -+#define GDK_Save 0x1008ff77 -+#define GDK_ScrollUp 0x1008ff78 -+#define GDK_ScrollDown 0x1008ff79 -+#define GDK_ScrollClick 0x1008ff7a -+#define GDK_Send 0x1008ff7b -+#define GDK_Spell 0x1008ff7c -+#define GDK_SplitScreen 0x1008ff7d -+#define GDK_Support 0x1008ff7e -+#define GDK_TaskPane 0x1008ff7f -+#define GDK_Terminal 0x1008ff80 -+#define GDK_Tools 0x1008ff81 -+#define GDK_Travel 0x1008ff82 -+#define GDK_UserPB 0x1008ff84 -+#define GDK_User1KB 0x1008ff85 -+#define GDK_User2KB 0x1008ff86 -+#define GDK_Video 0x1008ff87 -+#define GDK_WheelButton 0x1008ff88 -+#define GDK_Word 0x1008ff89 -+#define GDK_Xfer 0x1008ff8a -+#define GDK_ZoomIn 0x1008ff8b -+#define GDK_ZoomOut 0x1008ff8c -+#define GDK_Away 0x1008ff8d -+#define GDK_Messenger 0x1008ff8e -+#define GDK_WebCam 0x1008ff8f -+#define GDK_MailForward 0x1008ff90 -+#define GDK_Pictures 0x1008ff91 -+#define GDK_Music 0x1008ff92 -+#define GDK_Battery 0x1008ff93 -+#define GDK_Bluetooth 0x1008ff94 -+#define GDK_WLAN 0x1008ff95 -+#define GDK_UWB 0x1008ff96 -+#define GDK_AudioForward 0x1008ff97 -+#define GDK_AudioRepeat 0x1008ff98 -+#define GDK_AudioRandomPlay 0x1008ff99 -+#define GDK_Subtitle 0x1008ff9a -+#define GDK_AudioCycleTrack 0x1008ff9b -+#define GDK_CycleAngle 0x1008ff9c -+#define GDK_FrameBack 0x1008ff9d -+#define GDK_FrameForward 0x1008ff9e -+#define GDK_Time 0x1008ff9f -+#define GDK_SelectButton 0x1008ffa0 -+#define GDK_View 0x1008ffa1 -+#define GDK_TopMenu 0x1008ffa2 -+#define GDK_Red 0x1008ffa3 -+#define GDK_Green 0x1008ffa4 -+#define GDK_Yellow 0x1008ffa5 -+#define GDK_Blue 0x1008ffa6 -+#define GDK_Suspend 0x1008ffa7 -+#define GDK_Hibernate 0x1008ffa8 -+#define GDK_TouchpadToggle 0x1008ffa9 -+#define GDK_Switch_VT_1 0x1008fe01 -+#define GDK_Switch_VT_2 0x1008fe02 -+#define GDK_Switch_VT_3 0x1008fe03 -+#define GDK_Switch_VT_4 0x1008fe04 -+#define GDK_Switch_VT_5 0x1008fe05 -+#define GDK_Switch_VT_6 0x1008fe06 -+#define GDK_Switch_VT_7 0x1008fe07 -+#define GDK_Switch_VT_8 0x1008fe08 -+#define GDK_Switch_VT_9 0x1008fe09 -+#define GDK_Switch_VT_10 0x1008fe0a -+#define GDK_Switch_VT_11 0x1008fe0b -+#define GDK_Switch_VT_12 0x1008fe0c -+#define GDK_Ungrab 0x1008fe20 -+#define GDK_ClearGrab 0x1008fe21 -+#define GDK_Next_VMode 0x1008fe22 -+#define GDK_Prev_VMode 0x1008fe23 -+ -+#endif /* __GDK_KEYSYMS_COMPAT_H__ */ -diff -up mozilla-aurora/widget/gtk/nsDeviceContextSpecG.h.build-gtk2 mozilla-aurora/widget/gtk/nsDeviceContextSpecG.h ---- mozilla-aurora/widget/gtk/nsDeviceContextSpecG.h.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/nsDeviceContextSpecG.h 2016-01-15 17:38:34.978272200 +0100 -@@ -16,7 +16,12 @@ - #include "nsCRT.h" /* should be ? */ - - #include -+#if (MOZ_WIDGET_GTK == 2) -+#include -+#include -+#else - #include -+#endif - - #define NS_PORTRAIT 0 - #define NS_LANDSCAPE 1 -diff -up mozilla-aurora/widget/gtk/nsFilePicker.cpp.build-gtk2 mozilla-aurora/widget/gtk/nsFilePicker.cpp ---- mozilla-aurora/widget/gtk/nsFilePicker.cpp.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/nsFilePicker.cpp 2016-01-15 17:38:34.978272200 +0100 -@@ -125,9 +125,11 @@ UpdateFilePreviewWidget(GtkFileChooser * - return; - } - -+#if GTK_CHECK_VERSION(2,12,0) - GdkPixbuf *preview_pixbuf_temp = preview_pixbuf; - preview_pixbuf = gdk_pixbuf_apply_embedded_orientation(preview_pixbuf_temp); - g_object_unref(preview_pixbuf_temp); -+#endif - - // This is the easiest way to do center alignment without worrying about containers - // Minimum 3px padding each side (hence the 6) just to make things nice -diff -up mozilla-aurora/widget/gtk/nsPrintDialogGTK.cpp.build-gtk2 mozilla-aurora/widget/gtk/nsPrintDialogGTK.cpp ---- mozilla-aurora/widget/gtk/nsPrintDialogGTK.cpp.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/nsPrintDialogGTK.cpp 2016-01-15 17:38:34.979272199 +0100 -@@ -4,7 +4,13 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #include -+#if (MOZ_WIDGET_GTK == 2) -+#include -+#include -+#include -+#else - #include -+#endif - #include - - #include "mozilla/ArrayUtils.h" -diff -up mozilla-aurora/widget/gtk/nsPrintSettingsGTK.h.build-gtk2 mozilla-aurora/widget/gtk/nsPrintSettingsGTK.h ---- mozilla-aurora/widget/gtk/nsPrintSettingsGTK.h.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/nsPrintSettingsGTK.h 2016-01-15 17:38:34.979272199 +0100 -@@ -11,7 +11,12 @@ - - extern "C" { - #include -+#if (MOZ_WIDGET_GTK == 2) -+#include -+#include -+#else - #include -+#endif - } - - #define NS_PRINTSETTINGSGTK_IID \ -diff -up mozilla-aurora/widget/gtk/nsWindow.cpp.build-gtk2 mozilla-aurora/widget/gtk/nsWindow.cpp ---- mozilla-aurora/widget/gtk/nsWindow.cpp.build-gtk2 2015-12-16 16:47:23.000000000 +0100 -+++ mozilla-aurora/widget/gtk/nsWindow.cpp 2016-01-15 17:38:34.980272198 +0100 -@@ -4895,7 +4895,8 @@ FullscreenTransitionWindow::FullscreenTr - bgColor.red = bgColor.green = bgColor.blue = 0; - gtk_widget_modify_bg(mWindow, GTK_STATE_NORMAL, &bgColor); - -- gtk_window_set_opacity(gtkWin, 0.0); -+ // Opacity not supported in gtk 2.10 -+ // gtk_window_set_opacity(gtkWin, 0.0); - gtk_widget_show(mWindow); - } - -@@ -4935,7 +4936,8 @@ FullscreenTransitionData::TimeoutCallbac - if (data->mStage == nsIWidget::eAfterFullscreenToggle) { - opacity = 1.0 - opacity; - } -- gtk_window_set_opacity(GTK_WINDOW(data->mWindow->mWindow), opacity); -+ // Opacity not supported in gtk 2.10 -+ // gtk_window_set_opacity(GTK_WINDOW(data->mWindow->mWindow), opacity); - - if (data->mStep != data->mTotalSteps) { - return TRUE; -diff -up mozilla-aurora/widget/gtk/nsBidiKeyboard.cpp.build-gtk2 mozilla-aurora/widget/gtk/nsBidiKeyboard.cpp ---- mozilla-aurora/widget/gtk/nsBidiKeyboard.cpp.build-gtk2 2016-01-18 09:41:47.302300030 +0100 -+++ mozilla-aurora/widget/gtk/nsBidiKeyboard.cpp 2016-01-18 09:43:50.663288859 +0100 -@@ -10,6 +10,11 @@ - #include "nsBidiKeyboard.h" - #include - -+#if (MOZ_WIDGET_GTK == 2) -+typedef gboolean (*GdkKeymapHaveBidiLayoutsType)(GdkKeymap *keymap); -+static GdkKeymapHaveBidiLayoutsType GdkKeymapHaveBidiLayouts = nullptr; -+#endif -+ - NS_IMPL_ISUPPORTS(nsBidiKeyboard, nsIBidiKeyboard) - - nsBidiKeyboard::nsBidiKeyboard() -@@ -20,21 +25,32 @@ nsBidiKeyboard::nsBidiKeyboard() - NS_IMETHODIMP - nsBidiKeyboard::Reset() - { -- // NB: The default keymap can be null (e.g. in xpcshell). In that case, -- // simply assume that we don't have bidi keyboards. -- mHaveBidiKeyboards = false; -+#if (MOZ_WIDGET_GTK == 2) -+ PRLibrary *gtklib = nullptr; -+#if defined(MOZ_X11) -+ if (!GdkKeymapHaveBidiLayouts) { -+ GdkKeymapHaveBidiLayouts = (GdkKeymapHaveBidiLayoutsType) -+ PR_FindFunctionSymbolAndLibrary("gdk_keymap_have_bidi_layouts", -+ >klib); -+ if (gtklib) -+ PR_UnloadLibrary(gtklib); -+ } -+#endif - -- GdkDisplay *display = gdk_display_get_default(); -- if (!display) -- return NS_OK; -- -- GdkKeymap *keymap = gdk_keymap_get_for_display(display); -- mHaveBidiKeyboards = keymap && gdk_keymap_have_bidi_layouts(keymap); -+ mHaveBidiKeyboards = false; -+ if (GdkKeymapHaveBidiLayouts) -+ mHaveBidiKeyboards = (*GdkKeymapHaveBidiLayouts)(nullptr); -+#else -+ mHaveBidiKeyboards = gdk_keymap_have_bidi_layouts(gdk_keymap_get_default()); -+#endif - return NS_OK; - } - - nsBidiKeyboard::~nsBidiKeyboard() - { -+#if (MOZ_WIDGET_GTK == 2) -+ GdkKeymapHaveBidiLayouts = nullptr; -+#endif - } - - NS_IMETHODIMP diff --git a/SOURCES/build-el5-nss.patch b/SOURCES/build-el5-nss.patch deleted file mode 100644 index 13c6dfd..0000000 --- a/SOURCES/build-el5-nss.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up mozilla-aurora/config/external/nss/Makefile.in.build-el5-nss mozilla-aurora/config/external/nss/Makefile.in ---- mozilla-aurora/config/external/nss/Makefile.in.build-el5-nss 2016-01-26 10:25:01.770613169 +0100 -+++ mozilla-aurora/config/external/nss/Makefile.in 2016-01-26 10:25:12.824599219 +0100 -@@ -298,7 +298,7 @@ NSS_DIRS += \ - endif - - ifneq (,$(filter %--build-id,$(LDFLAGS))) --DEFAULT_GMAKE_ENV = LDFLAGS=-Wl,--build-id -+#DEFAULT_GMAKE_ENV = LDFLAGS=-Wl,--build-id - endif - - ifdef MOZ_FOLD_LIBS diff --git a/SOURCES/build-el5-rapl.patch b/SOURCES/build-el5-rapl.patch deleted file mode 100644 index ec6f0b1..0000000 --- a/SOURCES/build-el5-rapl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up mozilla-aurora/tools/power/moz.build.rapl mozilla-aurora/tools/power/moz.build ---- mozilla-aurora/tools/power/moz.build.rapl 2016-01-18 10:55:59.461937398 +0100 -+++ mozilla-aurora/tools/power/moz.build 2016-01-18 10:56:04.483935330 +0100 -@@ -11,7 +11,7 @@ if CONFIG['OS_ARCH'] == 'Darwin' and CON - - if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TARGET'] != 'Android' and \ - CONFIG['CPU_ARCH'] in ('x86', 'x86_64'): -- do_rapl = True -+ do_rapl = False - - if do_rapl: - SimplePrograms([ diff --git a/SOURCES/build-el5-rt-tgsigqueueinfo.patch b/SOURCES/build-el5-rt-tgsigqueueinfo.patch deleted file mode 100644 index 2ca3218..0000000 --- a/SOURCES/build-el5-rt-tgsigqueueinfo.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -up mozilla-beta/xpcom/threads/ThreadStackHelper.cpp.rt-tgsigqueueinfo mozilla-beta/xpcom/threads/ThreadStackHelper.cpp ---- mozilla-beta/xpcom/threads/ThreadStackHelper.cpp.rt-tgsigqueueinfo 2015-04-16 23:45:29.000000000 +0200 -+++ mozilla-beta/xpcom/threads/ThreadStackHelper.cpp 2015-04-22 09:10:25.291166226 +0200 -@@ -240,10 +240,13 @@ ThreadStackHelper::GetStack(Stack& aStac - uinfo.si_pid = getpid(); - uinfo.si_uid = getuid(); - uinfo.si_value.sival_ptr = this; -+#ifdef SYS_rt_tgsigqueueinfo - if (::syscall(SYS_rt_tgsigqueueinfo, uinfo.si_pid, -- mThreadID, sFillStackSignum, &uinfo)) { -+ mThreadID, sFillStackSignum, &uinfo)) - // rt_tgsigqueueinfo was added in Linux 2.6.31. - // Could have failed because the syscall did not exist. -+#endif -+ { - return; - } - MOZ_ALWAYS_TRUE(!::sem_wait(&mSem)); diff --git a/SOURCES/build-el5-sandbox.patch b/SOURCES/build-el5-sandbox.patch deleted file mode 100644 index 170130d..0000000 --- a/SOURCES/build-el5-sandbox.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff -up mozilla-aurora/security/sandbox/linux/broker/SandboxBroker.cpp.build-sandbox mozilla-aurora/security/sandbox/linux/broker/SandboxBroker.cpp ---- mozilla-aurora/security/sandbox/linux/broker/SandboxBroker.cpp.build-sandbox 2015-12-16 16:47:02.000000000 +0100 -+++ mozilla-aurora/security/sandbox/linux/broker/SandboxBroker.cpp 2016-01-21 15:34:59.168878105 +0100 -@@ -201,7 +201,7 @@ AllowAccess(int aReqFlags, int aPerms) - // on this process. These shouldn't be relevant to the child process - // in any case due to the sandboxing restrictions on it. (See also - // the use of MSG_CMSG_CLOEXEC in SandboxBrokerCommon.cpp). --static const int kRequiredOpenFlags = O_CLOEXEC | O_NOCTTY; -+static const int kRequiredOpenFlags = O_NOCTTY; - - // Linux originally assigned a flag bit to O_SYNC but implemented the - // semantics standardized as O_DSYNC; later, that bit was renamed and -@@ -212,7 +212,7 @@ static const int kRequiredOpenFlags = O_ - static const int kAllowedOpenFlags = - O_APPEND | O_ASYNC | O_DIRECT | O_DIRECTORY | O_EXCL | O_LARGEFILE - | O_NOATIME | O_NOCTTY | O_NOFOLLOW | O_NONBLOCK | O_NDELAY | O_SYNC_NEW -- | O_TRUNC | O_CLOEXEC | O_CREAT; -+ | O_TRUNC | O_CREAT; - #undef O_SYNC_NEW - - static bool -@@ -358,6 +358,7 @@ SandboxBroker::ThreadMain(void) - // new ones). - openedFd = open(pathBuf, req.mFlags | kRequiredOpenFlags, 0600); - if (openedFd >= 0) { -+ fcntl(openedFd, F_SETFD, fcntl(openedFd, F_GETFD, 0) | FD_CLOEXEC); - resp.mError = 0; - } else { - resp.mError = errno; -diff -up mozilla-aurora/security/sandbox/linux/SandboxBrokerClient.cpp.build-sandbox mozilla-aurora/security/sandbox/linux/SandboxBrokerClient.cpp ---- mozilla-aurora/security/sandbox/linux/SandboxBrokerClient.cpp.build-sandbox 2016-01-21 15:48:55.807532739 +0100 -+++ mozilla-aurora/security/sandbox/linux/SandboxBrokerClient.cpp 2016-01-21 15:49:26.163518779 +0100 -@@ -149,9 +149,10 @@ SandboxBrokerClient::Open(const char* aP - int maybeFd = DoCall(&req, aPath, nullptr, true); - if (maybeFd >= 0) { - // NSPR has opinions about file flags. Fix O_CLOEXEC. -- if ((aFlags & O_CLOEXEC) == 0) { -- fcntl(maybeFd, F_SETFD, 0); -- } -+ // O_CLOEXEC is not available in RHEL5 -+ //if ((aFlags & O_CLOEXEC) == 0) { -+ // fcntl(maybeFd, F_SETFD, 0); -+ //} - } - return maybeFd; - } diff --git a/SOURCES/build-el5-stdint.patch b/SOURCES/build-el5-stdint.patch deleted file mode 100644 index d693e5c..0000000 --- a/SOURCES/build-el5-stdint.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -up mozilla-aurora/security/sandbox/linux/LinuxCapabilities.h.build-el5-stdint mozilla-aurora/security/sandbox/linux/LinuxCapabilities.h ---- mozilla-aurora/security/sandbox/linux/LinuxCapabilities.h.build-el5-stdint 2015-12-16 16:47:02.000000000 +0100 -+++ mozilla-aurora/security/sandbox/linux/LinuxCapabilities.h 2016-01-26 15:52:02.557401691 +0100 -@@ -7,7 +7,32 @@ - #ifndef mozilla_LinuxCapabilities_h - #define mozilla_LinuxCapabilities_h - -+#define int64_t int64_t_linux -+#define uint64_t uint64_t_linux -+#define loff_t loff_t_linux -+#define dev_t dev_t_linux -+#define timer_t timer_t_linux -+#define u_int64_t u_int64_t_linux -+#define fd_set fd_set_linux -+#define blkcnt_t blkcnt_t_linux -+#define gid_t gid_t_linux -+#define mode_t mode_t_linux -+#define nlink_t nlink_t_linux -+#define uid_t uid_t_linux - #include -+#undef int64_t -+#undef uint64_t -+#undef loff_t -+#undef dev_t -+#undef timer_t -+#undef u_int64_t -+#undef fd_set -+#undef blkcnt_t -+#undef gid_t -+#undef mode_t -+#undef nlink_t -+#undef uid_t -+ - #include - - #include "mozilla/Assertions.h" -diff -up mozilla-aurora/security/sandbox/linux/SandboxFilterUtil.cpp.build-el5-stdint mozilla-aurora/security/sandbox/linux/SandboxFilterUtil.cpp ---- mozilla-aurora/security/sandbox/linux/SandboxFilterUtil.cpp.build-el5-stdint 2016-01-25 20:56:57.937678560 +0100 -+++ mozilla-aurora/security/sandbox/linux/SandboxFilterUtil.cpp 2016-01-25 20:58:25.574613828 +0100 -@@ -13,6 +13,7 @@ - - #include "mozilla/UniquePtr.h" - #include "sandbox/linux/bpf_dsl/bpf_dsl.h" -+#include - - // Older kernel headers (mostly Android, but also some older desktop - // distributions) are missing some or all of these: diff --git a/SOURCES/build-el5-xlib-header.patch b/SOURCES/build-el5-xlib-header.patch deleted file mode 100644 index 247036c..0000000 --- a/SOURCES/build-el5-xlib-header.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -up mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/mouse_cursor_monitor_x11.cc.xlib-swap mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/mouse_cursor_monitor_x11.cc ---- mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/mouse_cursor_monitor_x11.cc.xlib-swap 2016-01-15 12:50:55.900989372 +0100 -+++ mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/mouse_cursor_monitor_x11.cc 2016-01-15 12:51:40.592950518 +0100 -@@ -10,8 +10,8 @@ - - #include "webrtc/modules/desktop_capture/mouse_cursor_monitor.h" - --#include - #include -+#include - #include - - #include "webrtc/base/scoped_ptr.h" -diff -up mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_x11.cc.xlib-swap mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_x11.cc ---- mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_x11.cc.xlib-swap 2016-01-15 12:50:48.652995674 +0100 -+++ mozilla-aurora/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_x11.cc 2016-01-15 12:51:34.005956245 +0100 -@@ -13,9 +13,9 @@ - #include - #include - -+#include - #include - #include --#include - #include - - #include "webrtc/base/scoped_ptr.h" diff --git a/SOURCES/build-fix-dupes.patch b/SOURCES/build-fix-dupes.patch new file mode 100644 index 0000000..7782dee --- /dev/null +++ b/SOURCES/build-fix-dupes.patch @@ -0,0 +1,11 @@ +diff -up thunderbird-52.0/mail/installer/Makefile.in.fix-dupes thunderbird-52.0/mail/installer/Makefile.in +--- thunderbird-52.0/mail/installer/Makefile.in.fix-dupes 2017-04-04 13:06:17.414621079 +0200 ++++ thunderbird-52.0/mail/installer/Makefile.in 2017-04-04 13:06:24.397611123 +0200 +@@ -15,6 +15,7 @@ ifndef SYSTEM_LIBXUL + MOZ_PKG_FATAL_WARNINGS = 1 + endif + MOZ_PKG_DUPEFLAGS = \ ++ -w \ + -f $(srcdir)/allowed-dupes.mn \ + -f $(MOZILLA_DIR)/browser/installer/allowed-dupes.mn \ + $(NULL) diff --git a/SOURCES/build-icu-big-endian.patch b/SOURCES/build-icu-big-endian.patch new file mode 100644 index 0000000..68fbea1 --- /dev/null +++ b/SOURCES/build-icu-big-endian.patch @@ -0,0 +1,12 @@ +diff -up mozilla-aurora/build/autoconf/icu.m4.icu-endian mozilla-aurora/build/autoconf/icu.m4 +--- mozilla-aurora/build/autoconf/icu.m4.icu-endian 2016-12-09 09:11:01.227317790 +0100 ++++ mozilla-aurora/build/autoconf/icu.m4 2016-12-09 09:18:40.608712247 +0100 +@@ -78,7 +78,7 @@ if test -n "$USE_ICU"; then + # TODO: the l is actually endian-dependent + # We could make this set as 'l' or 'b' for little or big, respectively, + # but we'd need to check in a big-endian version of the file. +- ICU_DATA_FILE="icudt${version}l.dat" ++ ICU_DATA_FILE="icudt${version}b.dat" + + dnl We won't build ICU data as a separate file when building + dnl JS standalone so that embedders don't have to deal with it. diff --git a/SOURCES/build-missing-getrandom.patch b/SOURCES/build-missing-getrandom.patch new file mode 100644 index 0000000..3a4adde --- /dev/null +++ b/SOURCES/build-missing-getrandom.patch @@ -0,0 +1,21 @@ +diff -up firefox-52.0b8/js/src/jsmath.cpp.missing-getrandom firefox-52.0b8/js/src/jsmath.cpp +--- firefox-52.0b8/js/src/jsmath.cpp.missing-getrandom 2017-02-22 08:09:21.764353407 +0100 ++++ firefox-52.0b8/js/src/jsmath.cpp 2017-02-22 08:10:36.939330775 +0100 +@@ -78,7 +78,7 @@ + static_assert(GETRANDOM_NR == SYS_getrandom, + "GETRANDOM_NR should match the actual SYS_getrandom value"); + # endif +-# else ++# elif defined(GETRANDOM_NR) + # define SYS_getrandom GETRANDOM_NR + # endif + +@@ -721,7 +721,7 @@ js::GenerateRandomSeed() + seed = (static_cast(arc4random()) << 32) | arc4random(); + #elif defined(XP_UNIX) + bool done = false; +-# if defined(__linux__) ++# if defined(__linux__) && defined(SYS_getrandom) + // Try the relatively new getrandom syscall first. It's the preferred way + // on Linux as /dev/urandom may not work inside chroots and is harder to + // sandbox (see bug 995069). diff --git a/SOURCES/build-nss-prbool.patch b/SOURCES/build-nss-prbool.patch new file mode 100644 index 0000000..491b2e1 --- /dev/null +++ b/SOURCES/build-nss-prbool.patch @@ -0,0 +1,22 @@ +diff -up firefox-52.0esr/security/certverifier/CTLogVerifier.cpp.nss-prbool firefox-52.0esr/security/certverifier/CTLogVerifier.cpp +--- firefox-52.0esr/security/certverifier/CTLogVerifier.cpp.nss-prbool 2017-02-28 02:56:03.000000000 +0100 ++++ firefox-52.0esr/security/certverifier/CTLogVerifier.cpp 2017-03-01 11:34:15.623577628 +0100 +@@ -7,6 +7,7 @@ + #include "CTLogVerifier.h" + + #include "CTSerialization.h" ++#include "prtypes.h" + #include "hasht.h" + #include "mozilla/ArrayUtils.h" + #include "mozilla/Assertions.h" +diff -up firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp.nss-prbool firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp +--- firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp.nss-prbool 2017-03-01 12:09:16.649945106 +0100 ++++ firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp 2017-03-01 12:09:35.749939355 +0100 +@@ -4,6 +4,7 @@ + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + ++#include "prtypes.h" + #include "mozilla/Casting.h" + #include "nsSSLStatus.h" + #include "nsIClassInfoImpl.h" diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch new file mode 100644 index 0000000..36c2632 --- /dev/null +++ b/SOURCES/build-nss-version.patch @@ -0,0 +1,12 @@ +diff -up firefox-52.0esr/old-configure.in.nss-ver firefox-52.0esr/old-configure.in +--- firefox-52.0esr/old-configure.in.nss-ver 2017-03-01 10:12:54.668047060 +0100 ++++ firefox-52.0esr/old-configure.in 2017-03-01 10:13:01.733044933 +0100 +@@ -2123,7 +2123,7 @@ MOZ_ARG_WITH_BOOL(system-nss, + _USE_SYSTEM_NSS=1 ) + + if test -n "$_USE_SYSTEM_NSS"; then +- AM_PATH_NSS(3.28.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) ++ AM_PATH_NSS(3.28.1, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) + fi + + if test -n "$MOZ_SYSTEM_NSS"; then diff --git a/SOURCES/build-nss.patch b/SOURCES/build-nss.patch deleted file mode 100644 index 7cf5fb6..0000000 --- a/SOURCES/build-nss.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up firefox-45.0.1esr/configure.in.nss firefox-45.0.1esr/configure.in ---- firefox-45.0.1esr/configure.in.nss 2016-04-06 10:20:01.000000000 +0200 -+++ firefox-45.0.1esr/configure.in 2016-04-06 10:25:56.998285981 +0200 -@@ -53,7 +53,7 @@ dnl ==================================== - MOZJPEG=62 - MOZPNG=10619 - NSPR_VERSION=4 --NSPR_MINVER=4.12 -+NSPR_MINVER=4.11 - NSS_VERSION=3 - - dnl Set the minimum version of toolkit libs used by mozilla -@@ -3451,7 +3451,7 @@ MOZ_ARG_WITH_BOOL(system-nss, - _USE_SYSTEM_NSS=1 ) - - if test -n "$_USE_SYSTEM_NSS"; then -- AM_PATH_NSS(3.21.3, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) -+ AM_PATH_NSS(3.21.0, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) - fi - - if test -n "$MOZ_NATIVE_NSS"; then diff --git a/SOURCES/build-s390-atomic.patch b/SOURCES/build-s390-atomic.patch new file mode 100644 index 0000000..3624b98 --- /dev/null +++ b/SOURCES/build-s390-atomic.patch @@ -0,0 +1,13 @@ +diff -up mozilla-aurora/js/src/jit/AtomicOperations.h.s390-atomic mozilla-aurora/js/src/jit/AtomicOperations.h +--- mozilla-aurora/js/src/jit/AtomicOperations.h.s390-atomic 2016-11-15 12:22:38.000000000 +0100 ++++ mozilla-aurora/js/src/jit/AtomicOperations.h 2016-12-08 15:36:11.792439891 +0100 +@@ -341,6 +341,9 @@ AtomicOperations::isLockfree(int32_t siz + # include "jit/none/AtomicOperations-ppc.h" + # elif defined(__aarch64__) + # include "jit/arm64/AtomicOperations-arm64.h" ++# elif defined(__s390__) ++ // Also works with ppc atomic operations ++# include "jit/none/AtomicOperations-ppc.h" + # else + # include "jit/none/AtomicOperations-none.h" // These MOZ_CRASH() always + # endif diff --git a/SOURCES/build-s390-missing-include.patch b/SOURCES/build-s390-missing-include.patch new file mode 100644 index 0000000..59157e6 --- /dev/null +++ b/SOURCES/build-s390-missing-include.patch @@ -0,0 +1,11 @@ +diff -up firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h.s390-build-includes-fix firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h +--- firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h.s390-build-includes-fix 2017-04-12 09:31:39.419402551 +0200 ++++ firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h 2017-04-12 09:31:53.392340589 +0200 +@@ -11,6 +11,7 @@ + #include "mozilla/ErrorResult.h" + #include "mozilla/dom/BindingDeclarations.h" + #include "nsCycleCollectionParticipant.h" ++#include "mozilla/dom/FileSystemDirectoryEntry.h" + #include "nsWrapperCache.h" + + namespace mozilla { diff --git a/SOURCES/mozilla-1005535.patch b/SOURCES/mozilla-1005535.patch deleted file mode 100644 index d84c913..0000000 --- a/SOURCES/mozilla-1005535.patch +++ /dev/null @@ -1,90 +0,0 @@ -# HG changeset patch -# Parent b7eb1ce0237d6125b75bc8ff1cb3afc328d6e78c -# User Steve Singer -Bug 1005535 - Get skia GPU building on big endian. - -diff -up mozilla-aurora/configure.in.mozbz-1005535 mozilla-aurora/configure.in ---- mozilla-aurora/configure.in.mozbz-1005535 2015-12-18 14:55:09.415983194 +0100 -+++ mozilla-aurora/configure.in 2015-12-18 14:58:46.301911086 +0100 -@@ -8279,12 +8279,12 @@ if test "$MOZ_ENABLE_SKIA"; then - AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK) - fi - -- if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then -+# if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then - SKIA_INCLUDES="$SKIA_INCLUDES /gfx/skia/skia/include/gpu /gfx/skia/skia/include/utils" - MOZ_ENABLE_SKIA_GPU=1 - AC_DEFINE(USE_SKIA_GPU) - AC_SUBST(MOZ_ENABLE_SKIA_GPU) -- fi -+# fi - fi - AC_SUBST(MOZ_ENABLE_SKIA) - AC_SUBST_LIST(SKIA_INCLUDES) -diff -up mozilla-aurora/gfx/skia/skia/include/config/SkUserConfig.h.mozbz-1005535 mozilla-aurora/gfx/skia/skia/include/config/SkUserConfig.h -diff -up mozilla-aurora/gfx/skia/skia/include/core/SkColorPriv.h.mozbz-1005535 mozilla-aurora/gfx/skia/skia/include/core/SkColorPriv.h ---- mozilla-aurora/gfx/skia/skia/include/core/SkColorPriv.h.mozbz-1005535 2015-12-16 16:47:08.000000000 +0100 -+++ mozilla-aurora/gfx/skia/skia/include/core/SkColorPriv.h 2015-12-18 14:55:09.416983194 +0100 -@@ -32,17 +32,7 @@ - * Here we enforce this constraint. - */ - --#ifdef SK_CPU_BENDIAN -- #define SK_RGBA_R32_SHIFT 24 -- #define SK_RGBA_G32_SHIFT 16 -- #define SK_RGBA_B32_SHIFT 8 -- #define SK_RGBA_A32_SHIFT 0 - -- #define SK_BGRA_B32_SHIFT 24 -- #define SK_BGRA_G32_SHIFT 16 -- #define SK_BGRA_R32_SHIFT 8 -- #define SK_BGRA_A32_SHIFT 0 --#else - #define SK_RGBA_R32_SHIFT 0 - #define SK_RGBA_G32_SHIFT 8 - #define SK_RGBA_B32_SHIFT 16 -@@ -52,7 +42,7 @@ - #define SK_BGRA_G32_SHIFT 8 - #define SK_BGRA_R32_SHIFT 16 - #define SK_BGRA_A32_SHIFT 24 --#endif -+ - - #if defined(SK_PMCOLOR_IS_RGBA) && defined(SK_PMCOLOR_IS_BGRA) - #error "can't define PMCOLOR to be RGBA and BGRA" -diff -up mozilla-aurora/gfx/skia/skia/include/core/SkImageInfo.h.mozbz-1005535 mozilla-aurora/gfx/skia/skia/include/core/SkImageInfo.h ---- mozilla-aurora/gfx/skia/skia/include/core/SkImageInfo.h.mozbz-1005535 2015-12-16 16:47:08.000000000 +0100 -+++ mozilla-aurora/gfx/skia/skia/include/core/SkImageInfo.h 2015-12-18 14:55:09.416983194 +0100 -@@ -88,9 +88,10 @@ enum SkColorType { - #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A) - kN32_SkColorType = kRGBA_8888_SkColorType, - #else --#error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order" -+ kN32_SkColorType = kBGRA_8888_SkColorType - #endif - -+ - #ifdef SK_SUPPORT_LEGACY_N32_NAME - kPMColor_SkColorType = kN32_SkColorType - #endif -diff -up mozilla-aurora/gfx/skia/skia/include/gpu/GrTypes.h.mozbz-1005535 mozilla-aurora/gfx/skia/skia/include/gpu/GrTypes.h ---- mozilla-aurora/gfx/skia/skia/include/gpu/GrTypes.h.mozbz-1005535 2015-12-16 16:47:08.000000000 +0100 -+++ mozilla-aurora/gfx/skia/skia/include/gpu/GrTypes.h 2015-12-18 14:55:09.416983194 +0100 -@@ -309,15 +309,13 @@ enum GrPixelConfig { - static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1; - - // Aliases for pixel configs that match skia's byte order. --#ifndef SK_CPU_LENDIAN -- #error "Skia gpu currently assumes little endian" --#endif -+ - #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A) - static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig; - #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A) - static const GrPixelConfig kSkia8888_GrPixelConfig = kRGBA_8888_GrPixelConfig; - #else -- #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format." -+ static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig; - #endif - - // Returns true if the pixel config is a GPU-specific compressed format diff --git a/SOURCES/mozilla-1134537-delete-gnomevfs-extension.patch b/SOURCES/mozilla-1134537-delete-gnomevfs-extension.patch deleted file mode 100644 index 2803525..0000000 --- a/SOURCES/mozilla-1134537-delete-gnomevfs-extension.patch +++ /dev/null @@ -1,1150 +0,0 @@ -diff -up thunderbird-45.0/mozilla/b2g/installer/package-manifest.in.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/b2g/installer/package-manifest.in ---- thunderbird-45.0/mozilla/b2g/installer/package-manifest.in.moz-1134537-gnomevfsservice 2016-04-07 23:33:14.000000000 +0200 -+++ thunderbird-45.0/mozilla/b2g/installer/package-manifest.in 2016-05-09 13:19:52.317048303 +0200 -@@ -912,6 +912,12 @@ bin/libfreebl_32int64_3.so - @RESPATH@/crashreporter-override.ini - #endif - -+; [Extensions] -+; -+#ifdef MOZ_ENABLE_GNOMEVFS -+bin/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@ -+#endif -+ - [b2g] - #ifndef MOZ_WIDGET_GONK - #ifdef XP_WIN32 -diff -up thunderbird-45.0/mozilla/browser/installer/package-manifest.in.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/browser/installer/package-manifest.in ---- thunderbird-45.0/mozilla/browser/installer/package-manifest.in.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.318048303 +0200 -+++ thunderbird-45.0/mozilla/browser/installer/package-manifest.in 2016-05-09 13:24:23.525852797 +0200 -@@ -495,6 +495,9 @@ - #ifdef XP_MACOSX - @RESPATH@/browser/components/SafariProfileMigrator.js - #endif -+#ifdef MOZ_ENABLE_GNOMEVFS -+@RESPATH@/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@ -+#endif - @RESPATH@/components/nsINIProcessor.manifest - @RESPATH@/components/nsINIProcessor.js - @RESPATH@/components/nsPrompter.manifest -diff -up thunderbird-45.0/mozilla/config/system-headers.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/config/system-headers ---- thunderbird-45.0/mozilla/config/system-headers.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.298048317 +0200 -+++ thunderbird-45.0/mozilla/config/system-headers 2016-05-09 13:19:52.318048303 +0200 -@@ -630,6 +630,14 @@ libgnome/libgnome.h - libgnomeui/gnome-icon-lookup.h - libgnomeui/gnome-icon-theme.h - libgnomeui/gnome-ui-init.h -+libgnomevfs/gnome-vfs-file-info.h -+libgnomevfs/gnome-vfs.h -+libgnomevfs/gnome-vfs-init.h -+libgnomevfs/gnome-vfs-mime.h -+libgnomevfs/gnome-vfs-mime-handlers.h -+libgnomevfs/gnome-vfs-mime-utils.h -+libgnomevfs/gnome-vfs-ops.h -+libgnomevfs/gnome-vfs-standard-callbacks.h - lib$routines.h - limits - limits.h -diff -up thunderbird-45.0/mozilla/configure.in.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/configure.in ---- thunderbird-45.0/mozilla/configure.in.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.299048316 +0200 -+++ thunderbird-45.0/mozilla/configure.in 2016-05-09 13:21:31.457976836 +0200 -@@ -71,6 +71,7 @@ GTK3_VERSION=3.4.0 - GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 - WINDRES_VERSION=2.14.90 - W32API_VERSION=3.14 -+GNOMEVFS_VERSION=2.0 - GNOMEUI_VERSION=2.2.0 - GCONF_VERSION=1.2.1 - STARTUP_NOTIFICATION_VERSION=0.8 -@@ -4632,7 +4633,7 @@ then - fi - - dnl ======================================================== --dnl = GIO and GConf support module -+dnl = GnomeVFS, GIO and GConf support module - dnl ======================================================== - - if test "$MOZ_X11" -@@ -4646,6 +4647,31 @@ then - fi - - dnl ======================================================== -+ dnl = GnomeVFS support module -+ dnl ======================================================== -+ MOZ_ARG_ENABLE_BOOL(gnomevfs, -+ [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)], -+ MOZ_ENABLE_GNOMEVFS=force, -+ MOZ_ENABLE_GNOMEVFS=) -+ -+ if test "$MOZ_ENABLE_GNOMEVFS" -+ then -+ PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[ -+ MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'` -+ MOZ_ENABLE_GNOMEVFS=1 -+ AC_DEFINE(MOZ_ENABLE_GNOMEVFS) -+ ],[ -+ if test "$MOZ_ENABLE_GNOMEVFS" = "force" -+ then -+ AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION]) -+ fi -+ MOZ_ENABLE_GNOMEVFS= -+ ]) -+ fi -+ -+ AC_SUBST(MOZ_ENABLE_GNOMEVFS) -+ -+ dnl ======================================================== - dnl = GIO support module - dnl ======================================================== - MOZ_ARG_DISABLE_BOOL(gio, -@@ -6297,6 +6323,19 @@ MOZ_ARG_ENABLE_STRING(extensions, - done], - MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT") - -+if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then -+ # Suppress warning on non-X11 platforms -+ if test -n "$MOZ_X11"; then -+ AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.]) -+ fi -+ MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'` -+fi -+ -+dnl Do not build gnomevfs with libxul based apps -+if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then -+ MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'` -+fi -+ - if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then - # Suppress warning on non-X11 platforms - if test -n "$MOZ_X11"; then -diff -up thunderbird-45.0/mozilla/extensions/gnomevfs/moz.build.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/extensions/gnomevfs/moz.build ---- thunderbird-45.0/mozilla/extensions/gnomevfs/moz.build.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.321048300 +0200 -+++ thunderbird-45.0/mozilla/extensions/gnomevfs/moz.build 2016-05-09 13:19:52.321048300 +0200 -@@ -0,0 +1,19 @@ -+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -+# vim: set filetype=python: -+# This Source Code Form is subject to the terms of the Mozilla Public -+# License, v. 2.0. If a copy of the MPL was not distributed with this -+# file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ -+SOURCES += [ -+ 'nsGnomeVFSProtocolHandler.cpp', -+] -+ -+XPCOMBinaryComponent('nkgnomevfs') -+ -+# make sure this component is never statically linked into the main -+# application. this is necessary since we don't want to force users -+# to install gnome-vfs2 in order to use the rest of mozilla ;-) -+ -+CXXFLAGS += CONFIG['MOZ_GNOMEVFS_CFLAGS'] -+ -+OS_LIBS += CONFIG['MOZ_GNOMEVFS_LIBS'] -diff -up thunderbird-45.0/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp ---- thunderbird-45.0/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.322048300 +0200 -+++ thunderbird-45.0/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp 2016-05-09 13:19:52.322048300 +0200 -@@ -0,0 +1,988 @@ -+/* vim:set ts=2 sw=2 et cindent: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+// GnomeVFS v2.2.2 is missing G_BEGIN_DECLS in gnome-vfs-module-callback.h -+extern "C" { -+#include -+#include -+#include -+} -+ -+#include -+ -+#include "nsServiceManagerUtils.h" -+#include "nsComponentManagerUtils.h" -+#include "mozilla/ModuleUtils.h" -+#include "nsIInterfaceRequestorUtils.h" -+#include "nsIPrefService.h" -+#include "nsIPrefBranch.h" -+#include "nsIObserver.h" -+#include "nsThreadUtils.h" -+#include "nsProxyRelease.h" -+#include "nsIAuthPrompt.h" -+#include "nsIStringBundle.h" -+#include "nsIStandardURL.h" -+#include "nsIURL.h" -+#include "nsMimeTypes.h" -+#include "nsNetUtil.h" -+#include "nsINetUtil.h" -+#include "nsAutoPtr.h" -+#include "nsError.h" -+#include "prlog.h" -+#include "prtime.h" -+#include "prprf.h" -+#include "plstr.h" -+#include "mozilla/Attributes.h" -+ -+#define MOZ_GNOMEVFS_SCHEME "moz-gnomevfs" -+#define MOZ_GNOMEVFS_SUPPORTED_PROTOCOLS "network.gnomevfs.supported-protocols" -+ -+//----------------------------------------------------------------------------- -+ -+// NSPR_LOG_MODULES=gnomevfs:5 -+#ifdef PR_LOGGING -+static PRLogModuleInfo *sGnomeVFSLog; -+#define LOG(args) PR_LOG(sGnomeVFSLog, PR_LOG_DEBUG, args) -+#else -+#define LOG(args) -+#endif -+ -+//----------------------------------------------------------------------------- -+ -+static nsresult -+MapGnomeVFSResult(GnomeVFSResult result) -+{ -+ switch (result) -+ { -+ case GNOME_VFS_OK: return NS_OK; -+ case GNOME_VFS_ERROR_NOT_FOUND: return NS_ERROR_FILE_NOT_FOUND; -+ case GNOME_VFS_ERROR_INTERNAL: return NS_ERROR_UNEXPECTED; -+ case GNOME_VFS_ERROR_BAD_PARAMETERS: return NS_ERROR_INVALID_ARG; -+ case GNOME_VFS_ERROR_NOT_SUPPORTED: return NS_ERROR_NOT_AVAILABLE; -+ case GNOME_VFS_ERROR_CORRUPTED_DATA: return NS_ERROR_FILE_CORRUPTED; -+ case GNOME_VFS_ERROR_TOO_BIG: return NS_ERROR_FILE_TOO_BIG; -+ case GNOME_VFS_ERROR_NO_SPACE: return NS_ERROR_FILE_NO_DEVICE_SPACE; -+ case GNOME_VFS_ERROR_READ_ONLY: -+ case GNOME_VFS_ERROR_READ_ONLY_FILE_SYSTEM: return NS_ERROR_FILE_READ_ONLY; -+ case GNOME_VFS_ERROR_INVALID_URI: -+ case GNOME_VFS_ERROR_INVALID_HOST_NAME: return NS_ERROR_MALFORMED_URI; -+ case GNOME_VFS_ERROR_ACCESS_DENIED: -+ case GNOME_VFS_ERROR_NOT_PERMITTED: -+ case GNOME_VFS_ERROR_LOGIN_FAILED: return NS_ERROR_FILE_ACCESS_DENIED; -+ case GNOME_VFS_ERROR_EOF: return NS_BASE_STREAM_CLOSED; -+ case GNOME_VFS_ERROR_NOT_A_DIRECTORY: return NS_ERROR_FILE_NOT_DIRECTORY; -+ case GNOME_VFS_ERROR_IN_PROGRESS: return NS_ERROR_IN_PROGRESS; -+ case GNOME_VFS_ERROR_FILE_EXISTS: return NS_ERROR_FILE_ALREADY_EXISTS; -+ case GNOME_VFS_ERROR_IS_DIRECTORY: return NS_ERROR_FILE_IS_DIRECTORY; -+ case GNOME_VFS_ERROR_NO_MEMORY: return NS_ERROR_OUT_OF_MEMORY; -+ case GNOME_VFS_ERROR_HOST_NOT_FOUND: -+ case GNOME_VFS_ERROR_HOST_HAS_NO_ADDRESS: return NS_ERROR_UNKNOWN_HOST; -+ case GNOME_VFS_ERROR_CANCELLED: -+ case GNOME_VFS_ERROR_INTERRUPTED: return NS_ERROR_ABORT; -+ case GNOME_VFS_ERROR_DIRECTORY_NOT_EMPTY: return NS_ERROR_FILE_DIR_NOT_EMPTY; -+ case GNOME_VFS_ERROR_NAME_TOO_LONG: return NS_ERROR_FILE_NAME_TOO_LONG; -+ case GNOME_VFS_ERROR_SERVICE_NOT_AVAILABLE: return NS_ERROR_UNKNOWN_PROTOCOL; -+ -+ /* No special mapping for these error codes... -+ -+ case GNOME_VFS_ERROR_GENERIC: -+ case GNOME_VFS_ERROR_IO: -+ case GNOME_VFS_ERROR_WRONG_FORMAT: -+ case GNOME_VFS_ERROR_BAD_FILE: -+ case GNOME_VFS_ERROR_NOT_OPEN: -+ case GNOME_VFS_ERROR_INVALID_OPEN_MODE: -+ case GNOME_VFS_ERROR_TOO_MANY_OPEN_FILES: -+ case GNOME_VFS_ERROR_LOOP: -+ case GNOME_VFS_ERROR_DIRECTORY_BUSY: -+ case GNOME_VFS_ERROR_TOO_MANY_LINKS: -+ case GNOME_VFS_ERROR_NOT_SAME_FILE_SYSTEM: -+ case GNOME_VFS_ERROR_SERVICE_OBSOLETE: -+ case GNOME_VFS_ERROR_PROTOCOL_ERROR: -+ case GNOME_VFS_ERROR_NO_MASTER_BROWSER: -+ -+ */ -+ -+ // Make GCC happy -+ default: -+ return NS_ERROR_FAILURE; -+ } -+ -+ return NS_ERROR_FAILURE; -+} -+ -+//----------------------------------------------------------------------------- -+ -+static void -+ProxiedAuthCallback(gconstpointer in, -+ gsize in_size, -+ gpointer out, -+ gsize out_size, -+ gpointer callback_data) -+{ -+ GnomeVFSModuleCallbackAuthenticationIn *authIn = -+ (GnomeVFSModuleCallbackAuthenticationIn *) in; -+ GnomeVFSModuleCallbackAuthenticationOut *authOut = -+ (GnomeVFSModuleCallbackAuthenticationOut *) out; -+ -+ LOG(("gnomevfs: ProxiedAuthCallback [uri=%s]\n", authIn->uri)); -+ -+ // Without a channel, we have no way of getting a prompter. -+ nsIChannel *channel = (nsIChannel *) callback_data; -+ if (!channel) -+ return; -+ -+ nsCOMPtr prompt; -+ NS_QueryNotificationCallbacks(channel, prompt); -+ -+ // If no auth prompt, then give up. We could failover to using the -+ // WindowWatcher service, but that might defeat a consumer's purposeful -+ // attempt to disable authentication (for whatever reason). -+ if (!prompt) -+ return; -+ -+ // Parse out the host and port... -+ nsCOMPtr uri; -+ channel->GetURI(getter_AddRefs(uri)); -+ if (!uri) -+ return; -+ -+#ifdef DEBUG -+ { -+ // -+ // Make sure authIn->uri is consistent with the channel's URI. -+ // -+ // XXX This check is probably not IDN safe, and it might incorrectly -+ // fire as a result of escaping differences. It's unclear what -+ // kind of transforms GnomeVFS might have applied to the URI spec -+ // that we originally gave to it. In spite of the likelihood of -+ // false hits, this check is probably still valuable. -+ // -+ nsAutoCString spec; -+ uri->GetSpec(spec); -+ int uriLen = strlen(authIn->uri); -+ if (!StringHead(spec, uriLen).Equals(nsDependentCString(authIn->uri, uriLen))) -+ { -+ LOG(("gnomevfs: [spec=%s authIn->uri=%s]\n", spec.get(), authIn->uri)); -+ NS_ERROR("URI mismatch"); -+ } -+ } -+#endif -+ -+ nsAutoCString scheme, hostPort; -+ uri->GetScheme(scheme); -+ uri->GetHostPort(hostPort); -+ -+ // It doesn't make sense for either of these strings to be empty. What kind -+ // of funky URI is this? -+ if (scheme.IsEmpty() || hostPort.IsEmpty()) -+ return; -+ -+ // Construct the single signon key. Altering the value of this key will -+ // cause people's remembered passwords to be forgotten. Think carefully -+ // before changing the way this key is constructed. -+ nsAutoString key, realm; -+ -+ NS_ConvertUTF8toUTF16 dispHost(scheme); -+ dispHost.AppendLiteral("://"); -+ dispHost.Append(NS_ConvertUTF8toUTF16(hostPort)); -+ -+ key = dispHost; -+ if (authIn->realm) -+ { -+ // We assume the realm string is ASCII. That might be a bogus assumption, -+ // but we have no idea what encoding GnomeVFS is using, so for now we'll -+ // limit ourselves to ISO-Latin-1. XXX What is a better solution? -+ realm.Append('"'); -+ realm.Append(NS_ConvertASCIItoUTF16(authIn->realm)); -+ realm.Append('"'); -+ key.Append(' '); -+ key.Append(realm); -+ } -+ -+ // Construct the message string... -+ // -+ // We use Necko's string bundle here. This code really should be encapsulated -+ // behind some Necko API, after all this code is based closely on the code in -+ // nsHttpChannel.cpp. -+ -+ nsCOMPtr bundleSvc = -+ do_GetService(NS_STRINGBUNDLE_CONTRACTID); -+ if (!bundleSvc) -+ return; -+ -+ nsCOMPtr bundle; -+ bundleSvc->CreateBundle("chrome://global/locale/commonDialogs.properties", -+ getter_AddRefs(bundle)); -+ if (!bundle) -+ return; -+ -+ nsString message; -+ if (!realm.IsEmpty()) -+ { -+ const char16_t *strings[] = { realm.get(), dispHost.get() }; -+ bundle->FormatStringFromName(MOZ_UTF16("EnterUserPasswordForRealm"), -+ strings, 2, getter_Copies(message)); -+ } -+ else -+ { -+ const char16_t *strings[] = { dispHost.get() }; -+ bundle->FormatStringFromName(MOZ_UTF16("EnterUserPasswordFor"), -+ strings, 1, getter_Copies(message)); -+ } -+ if (message.IsEmpty()) -+ return; -+ -+ // Prompt the user... -+ nsresult rv; -+ bool retval = false; -+ char16_t *user = nullptr, *pass = nullptr; -+ -+ rv = prompt->PromptUsernameAndPassword(nullptr, message.get(), -+ key.get(), -+ nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, -+ &user, &pass, &retval); -+ if (NS_FAILED(rv)) -+ return; -+ if (!retval || !user || !pass) -+ return; -+ -+ // XXX We need to convert the UTF-16 username and password from our dialog to -+ // strings that GnomeVFS can understand. It's unclear what encoding GnomeVFS -+ // expects, so for now we assume 7-bit ASCII. Hopefully, we can get a better -+ // solution at some point. -+ -+ // One copy is never enough... -+ authOut->username = g_strdup(NS_LossyConvertUTF16toASCII(user).get()); -+ authOut->password = g_strdup(NS_LossyConvertUTF16toASCII(pass).get()); -+ -+ nsMemory::Free(user); -+ nsMemory::Free(pass); -+} -+ -+struct nsGnomeVFSAuthCallbackEvent : public nsRunnable -+{ -+ gconstpointer in; -+ gsize in_size; -+ gpointer out; -+ gsize out_size; -+ gpointer callback_data; -+ -+ NS_IMETHOD Run() { -+ ProxiedAuthCallback(in, in_size, out, out_size, callback_data); -+ return NS_OK; -+ } -+}; -+ -+static void -+AuthCallback(gconstpointer in, -+ gsize in_size, -+ gpointer out, -+ gsize out_size, -+ gpointer callback_data) -+{ -+ // Need to proxy this callback over to the main thread. Synchronous dispatch -+ // is required in order to provide data to the GnomeVFS callback. -+ -+ nsRefPtr ev = new nsGnomeVFSAuthCallbackEvent(); -+ if (!ev) -+ return; // OOM -+ -+ ev->in = in; -+ ev->in_size = in_size; -+ ev->out = out; -+ ev->out_size = out_size; -+ ev->callback_data = callback_data; -+ -+ NS_DispatchToMainThread(ev, NS_DISPATCH_SYNC); -+} -+ -+//----------------------------------------------------------------------------- -+ -+static gint -+FileInfoComparator(gconstpointer a, gconstpointer b) -+{ -+ const GnomeVFSFileInfo *ia = (const GnomeVFSFileInfo *) a; -+ const GnomeVFSFileInfo *ib = (const GnomeVFSFileInfo *) b; -+ -+ return strcasecmp(ia->name, ib->name); -+} -+ -+//----------------------------------------------------------------------------- -+ -+class nsGnomeVFSInputStream : public nsIInputStream -+{ -+ public: -+ NS_DECL_THREADSAFE_ISUPPORTS -+ NS_DECL_NSIINPUTSTREAM -+ -+ nsGnomeVFSInputStream(const nsCString &uriSpec) -+ : mSpec(uriSpec) -+ , mChannel(nullptr) -+ , mHandle(nullptr) -+ , mBytesRemaining(UINT64_MAX) -+ , mStatus(NS_OK) -+ , mDirList(nullptr) -+ , mDirListPtr(nullptr) -+ , mDirBufCursor(0) -+ , mDirOpen(false) {} -+ -+ ~nsGnomeVFSInputStream() { Close(); } -+ -+ void SetChannel(nsIChannel *channel) -+ { -+ // We need to hold an owning reference to our channel. This is done -+ // so we can access the channel's notification callbacks to acquire -+ // a reference to a nsIAuthPrompt if we need to handle a GnomeVFS -+ // authentication callback. -+ // -+ // However, the channel can only be accessed on the main thread, so -+ // we have to be very careful with ownership. Moreover, it doesn't -+ // support threadsafe addref/release, so proxying is the answer. -+ // -+ // Also, it's important to note that this likely creates a reference -+ // cycle since the channel likely owns this stream. This reference -+ // cycle is broken in our Close method. -+ -+ NS_ADDREF(mChannel = channel); -+ } -+ -+ private: -+ GnomeVFSResult DoOpen(); -+ GnomeVFSResult DoRead(char *aBuf, uint32_t aCount, uint32_t *aCountRead); -+ nsresult SetContentTypeOfChannel(const char *contentType); -+ -+ private: -+ nsCString mSpec; -+ nsIChannel *mChannel; // manually refcounted -+ GnomeVFSHandle *mHandle; -+ uint64_t mBytesRemaining; -+ nsresult mStatus; -+ GList *mDirList; -+ GList *mDirListPtr; -+ nsCString mDirBuf; -+ uint32_t mDirBufCursor; -+ bool mDirOpen; -+}; -+ -+GnomeVFSResult -+nsGnomeVFSInputStream::DoOpen() -+{ -+ GnomeVFSResult rv; -+ -+ NS_ASSERTION(mHandle == nullptr, "already open"); -+ -+ // Push a callback handler on the stack for this thread, so we can intercept -+ // authentication requests from GnomeVFS. We'll use the channel to get a -+ // nsIAuthPrompt instance. -+ -+ gnome_vfs_module_callback_push(GNOME_VFS_MODULE_CALLBACK_AUTHENTICATION, -+ AuthCallback, mChannel, nullptr); -+ -+ // Query the mime type first (this could return nullptr). -+ // -+ // XXX We need to do this up-front in order to determine how to open the URI. -+ // Unfortunately, the error code GNOME_VFS_ERROR_IS_DIRECTORY is not -+ // always returned by gnome_vfs_open when we pass it a URI to a directory! -+ // Otherwise, we could have used that as a way to failover to opening the -+ // URI as a directory. Also, it would have been ideal if -+ // gnome_vfs_get_file_info_from_handle were actually implemented by the -+ // smb:// module, since that would have allowed us to potentially save a -+ // round trip to the server to discover the mime type of the document in -+ // the case where gnome_vfs_open would have been used. (Oh well! /me -+ // throws hands up in the air and moves on...) -+ -+ GnomeVFSFileInfo info = {0}; -+ rv = gnome_vfs_get_file_info(mSpec.get(), &info, GnomeVFSFileInfoOptions( -+ GNOME_VFS_FILE_INFO_DEFAULT | -+ GNOME_VFS_FILE_INFO_FOLLOW_LINKS)); -+ if (rv == GNOME_VFS_OK) -+ { -+ if (info.type == GNOME_VFS_FILE_TYPE_DIRECTORY) -+ { -+ rv = gnome_vfs_directory_list_load(&mDirList, mSpec.get(), -+ GNOME_VFS_FILE_INFO_DEFAULT); -+ -+ LOG(("gnomevfs: gnome_vfs_directory_list_load returned %d (%s) [spec=\"%s\"]\n", -+ rv, gnome_vfs_result_to_string(rv), mSpec.get())); -+ } -+ else -+ { -+ rv = gnome_vfs_open(&mHandle, mSpec.get(), GNOME_VFS_OPEN_READ); -+ -+ LOG(("gnomevfs: gnome_vfs_open returned %d (%s) [spec=\"%s\"]\n", -+ rv, gnome_vfs_result_to_string(rv), mSpec.get())); -+ } -+ } -+ -+ gnome_vfs_module_callback_pop(GNOME_VFS_MODULE_CALLBACK_AUTHENTICATION); -+ -+ if (rv == GNOME_VFS_OK) -+ { -+ if (mHandle) -+ { -+ // Here we set the content type of the channel to the value of the mime -+ // type determined by GnomeVFS. However, if GnomeVFS is telling us that -+ // the document is binary, we'll ignore that and keep the channel's -+ // content type unspecified. That will enable our content type sniffing -+ // algorithms. This should provide more consistent mime type handling. -+ -+ if (info.mime_type && (strcmp(info.mime_type, APPLICATION_OCTET_STREAM) != 0)) -+ SetContentTypeOfChannel(info.mime_type); -+ -+ mBytesRemaining = info.size; -+ -+ // Update the content length attribute on the channel. We do this -+ // synchronously without proxying. This hack is not as bad as it looks! -+ if (mBytesRemaining > INT64_MAX) { -+ mChannel->SetContentLength(-1); -+ } else { -+ mChannel->SetContentLength(mBytesRemaining); -+ } -+ } -+ else -+ { -+ mDirOpen = true; -+ -+ // Sort mDirList -+ mDirList = g_list_sort(mDirList, FileInfoComparator); -+ mDirListPtr = mDirList; -+ -+ // Write base URL (make sure it ends with a '/') -+ mDirBuf.AppendLiteral("300: "); -+ mDirBuf.Append(mSpec); -+ if (mSpec.get()[mSpec.Length() - 1] != '/') -+ mDirBuf.Append('/'); -+ mDirBuf.Append('\n'); -+ -+ // Write column names -+ mDirBuf.AppendLiteral("200: filename content-length last-modified file-type\n"); -+ -+ // Write charset (assume UTF-8) -+ // XXX is this correct? -+ mDirBuf.AppendLiteral("301: UTF-8\n"); -+ -+ SetContentTypeOfChannel(APPLICATION_HTTP_INDEX_FORMAT); -+ } -+ } -+ -+ gnome_vfs_file_info_clear(&info); -+ return rv; -+} -+ -+GnomeVFSResult -+nsGnomeVFSInputStream::DoRead(char *aBuf, uint32_t aCount, uint32_t *aCountRead) -+{ -+ GnomeVFSResult rv; -+ -+ if (mHandle) -+ { -+ GnomeVFSFileSize bytesRead; -+ rv = gnome_vfs_read(mHandle, aBuf, aCount, &bytesRead); -+ if (rv == GNOME_VFS_OK) -+ { -+ // aCount is 32-bit, so aCountRead is under 32-bit value. -+ *aCountRead = (uint32_t) bytesRead; -+ mBytesRemaining -= *aCountRead; -+ } -+ } -+ else if (mDirOpen) -+ { -+ rv = GNOME_VFS_OK; -+ -+ while (aCount && rv != GNOME_VFS_ERROR_EOF) -+ { -+ // Copy data out of our buffer -+ uint32_t bufLen = mDirBuf.Length() - mDirBufCursor; -+ if (bufLen) -+ { -+ uint32_t n = std::min(bufLen, aCount); -+ memcpy(aBuf, mDirBuf.get() + mDirBufCursor, n); -+ *aCountRead += n; -+ aBuf += n; -+ aCount -= n; -+ mDirBufCursor += n; -+ } -+ -+ if (!mDirListPtr) // Are we at the end of the directory list? -+ { -+ rv = GNOME_VFS_ERROR_EOF; -+ } -+ else if (aCount) // Do we need more data? -+ { -+ GnomeVFSFileInfo *info = (GnomeVFSFileInfo *) mDirListPtr->data; -+ -+ // Prune '.' and '..' from directory listing. -+ if (info->name[0] == '.' && -+ (info->name[1] == '\0' || -+ (info->name[1] == '.' && info->name[2] == '\0'))) -+ { -+ mDirListPtr = mDirListPtr->next; -+ continue; -+ } -+ -+ mDirBuf.AssignLiteral("201: "); -+ -+ // The "filename" field -+ nsCString escName; -+ nsCOMPtr nu = do_GetService(NS_NETUTIL_CONTRACTID); -+ if (nu) { -+ nu->EscapeString(nsDependentCString(info->name), -+ nsINetUtil::ESCAPE_URL_PATH, escName); -+ -+ mDirBuf.Append(escName); -+ mDirBuf.Append(' '); -+ } -+ -+ // The "content-length" field -+ // XXX truncates size from 64-bit to 32-bit -+ mDirBuf.AppendInt(int32_t(info->size)); -+ mDirBuf.Append(' '); -+ -+ // The "last-modified" field -+ // -+ // NSPR promises: PRTime is compatible with time_t -+ // we just need to convert from seconds to microseconds -+ PRExplodedTime tm; -+ PRTime pt = ((PRTime) info->mtime) * 1000000; -+ PR_ExplodeTime(pt, PR_GMTParameters, &tm); -+ { -+ char buf[64]; -+ PR_FormatTimeUSEnglish(buf, sizeof(buf), -+ "%a,%%20%d%%20%b%%20%Y%%20%H:%M:%S%%20GMT ", &tm); -+ mDirBuf.Append(buf); -+ } -+ -+ // The "file-type" field -+ switch (info->type) -+ { -+ case GNOME_VFS_FILE_TYPE_REGULAR: -+ mDirBuf.AppendLiteral("FILE "); -+ break; -+ case GNOME_VFS_FILE_TYPE_DIRECTORY: -+ mDirBuf.AppendLiteral("DIRECTORY "); -+ break; -+ case GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK: -+ mDirBuf.AppendLiteral("SYMBOLIC-LINK "); -+ break; -+ default: -+ break; -+ } -+ -+ mDirBuf.Append('\n'); -+ -+ mDirBufCursor = 0; -+ mDirListPtr = mDirListPtr->next; -+ } -+ } -+ } -+ else -+ { -+ NS_NOTREACHED("reading from what?"); -+ rv = GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ return rv; -+} -+ -+// This class is used to implement SetContentTypeOfChannel. -+class nsGnomeVFSSetContentTypeEvent : public nsRunnable -+{ -+ public: -+ nsGnomeVFSSetContentTypeEvent(nsIChannel *channel, const char *contentType) -+ : mChannel(channel), mContentType(contentType) -+ { -+ // stash channel reference in mChannel. no AddRef here! see note -+ // in SetContentTypeOfchannel. -+ } -+ -+ NS_IMETHOD Run() -+ { -+ mChannel->SetContentType(mContentType); -+ return NS_OK; -+ } -+ -+ private: -+ nsIChannel *mChannel; -+ nsCString mContentType; -+}; -+ -+nsresult -+nsGnomeVFSInputStream::SetContentTypeOfChannel(const char *contentType) -+{ -+ // We need to proxy this call over to the main thread. We post an -+ // asynchronous event in this case so that we don't delay reading data, and -+ // we know that this is safe to do since the channel's reference will be -+ // released asynchronously as well. We trust the ordering of the main -+ // thread's event queue to protect us against memory corruption. -+ -+ nsresult rv; -+ nsCOMPtr ev = -+ new nsGnomeVFSSetContentTypeEvent(mChannel, contentType); -+ if (!ev) -+ { -+ rv = NS_ERROR_OUT_OF_MEMORY; -+ } -+ else -+ { -+ rv = NS_DispatchToMainThread(ev); -+ } -+ return rv; -+} -+ -+NS_IMPL_ISUPPORTS(nsGnomeVFSInputStream, nsIInputStream) -+ -+NS_IMETHODIMP -+nsGnomeVFSInputStream::Close() -+{ -+ if (mHandle) -+ { -+ gnome_vfs_close(mHandle); -+ mHandle = nullptr; -+ } -+ -+ if (mDirList) -+ { -+ // Destroy the list of GnomeVFSFileInfo objects... -+ g_list_foreach(mDirList, (GFunc) gnome_vfs_file_info_unref, nullptr); -+ g_list_free(mDirList); -+ mDirList = nullptr; -+ mDirListPtr = nullptr; -+ } -+ -+ if (mChannel) -+ { -+ nsresult rv = NS_OK; -+ -+ nsCOMPtr thread = do_GetMainThread(); -+ if (thread) -+ rv = NS_ProxyRelease(thread, mChannel); -+ -+ NS_ASSERTION(thread && NS_SUCCEEDED(rv), "leaking channel reference"); -+ mChannel = nullptr; -+ } -+ -+ mSpec.Truncate(); // free memory -+ -+ // Prevent future reads from re-opening the handle. -+ if (NS_SUCCEEDED(mStatus)) -+ mStatus = NS_BASE_STREAM_CLOSED; -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSInputStream::Available(uint64_t *aResult) -+{ -+ if (NS_FAILED(mStatus)) -+ return mStatus; -+ -+ *aResult = mBytesRemaining; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSInputStream::Read(char *aBuf, -+ uint32_t aCount, -+ uint32_t *aCountRead) -+{ -+ *aCountRead = 0; -+ -+ if (mStatus == NS_BASE_STREAM_CLOSED) -+ return NS_OK; -+ if (NS_FAILED(mStatus)) -+ return mStatus; -+ -+ GnomeVFSResult rv = GNOME_VFS_OK; -+ -+ // If this is our first-time through here, then open the URI. -+ if (!mHandle && !mDirOpen) -+ rv = DoOpen(); -+ -+ if (rv == GNOME_VFS_OK) -+ rv = DoRead(aBuf, aCount, aCountRead); -+ -+ if (rv != GNOME_VFS_OK) -+ { -+ // If we reach here, we hit some kind of error. EOF is not an error. -+ mStatus = MapGnomeVFSResult(rv); -+ if (mStatus == NS_BASE_STREAM_CLOSED) -+ return NS_OK; -+ -+ LOG(("gnomevfs: result %d [%s] mapped to 0x%x\n", -+ rv, gnome_vfs_result_to_string(rv), mStatus)); -+ } -+ return mStatus; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSInputStream::ReadSegments(nsWriteSegmentFun aWriter, -+ void *aClosure, -+ uint32_t aCount, -+ uint32_t *aResult) -+{ -+ // There is no way to implement this using GnomeVFS, but fortunately -+ // that doesn't matter. Because we are a blocking input stream, Necko -+ // isn't going to call our ReadSegments method. -+ NS_NOTREACHED("nsGnomeVFSInputStream::ReadSegments"); -+ return NS_ERROR_NOT_IMPLEMENTED; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSInputStream::IsNonBlocking(bool *aResult) -+{ -+ *aResult = false; -+ return NS_OK; -+} -+ -+//----------------------------------------------------------------------------- -+ -+class nsGnomeVFSProtocolHandler : public nsIProtocolHandler -+ , public nsIObserver -+{ -+ public: -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIPROTOCOLHANDLER -+ NS_DECL_NSIOBSERVER -+ -+ nsresult Init(); -+ -+ private: -+ void InitSupportedProtocolsPref(nsIPrefBranch *prefs); -+ bool IsSupportedProtocol(const nsCString &spec); -+ -+ nsCString mSupportedProtocols; -+}; -+ -+NS_IMPL_ISUPPORTS(nsGnomeVFSProtocolHandler, nsIProtocolHandler, nsIObserver) -+ -+nsresult -+nsGnomeVFSProtocolHandler::Init() -+{ -+#ifdef PR_LOGGING -+ sGnomeVFSLog = PR_NewLogModule("gnomevfs"); -+#endif -+ -+ if (!gnome_vfs_initialized()) -+ { -+ if (!gnome_vfs_init()) -+ { -+ NS_WARNING("gnome_vfs_init failed"); -+ return NS_ERROR_UNEXPECTED; -+ } -+ } -+ -+ nsCOMPtr prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); -+ if (prefs) -+ { -+ InitSupportedProtocolsPref(prefs); -+ prefs->AddObserver(MOZ_GNOMEVFS_SUPPORTED_PROTOCOLS, this, false); -+ } -+ -+ return NS_OK; -+} -+ -+void -+nsGnomeVFSProtocolHandler::InitSupportedProtocolsPref(nsIPrefBranch *prefs) -+{ -+ // read preferences -+ nsresult rv = prefs->GetCharPref(MOZ_GNOMEVFS_SUPPORTED_PROTOCOLS, -+ getter_Copies(mSupportedProtocols)); -+ if (NS_SUCCEEDED(rv)) { -+ mSupportedProtocols.StripWhitespace(); -+ ToLowerCase(mSupportedProtocols); -+ } -+ else -+ mSupportedProtocols.AssignLiteral("smb:,sftp:"); // use defaults -+ -+ LOG(("gnomevfs: supported protocols \"%s\"\n", mSupportedProtocols.get())); -+} -+ -+bool -+nsGnomeVFSProtocolHandler::IsSupportedProtocol(const nsCString &aSpec) -+{ -+ const char *specString = aSpec.get(); -+ const char *colon = strchr(specString, ':'); -+ if (!colon) -+ return false; -+ -+ uint32_t length = colon - specString + 1; -+ -+ // + ':' -+ nsCString scheme(specString, length); -+ -+ char *found = PL_strcasestr(mSupportedProtocols.get(), scheme.get()); -+ if (!found) -+ return false; -+ -+ if (found[length] != ',' && found[length] != '\0') -+ return false; -+ -+ return true; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::GetScheme(nsACString &aScheme) -+{ -+ aScheme.Assign(MOZ_GNOMEVFS_SCHEME); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::GetDefaultPort(int32_t *aDefaultPort) -+{ -+ *aDefaultPort = -1; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::GetProtocolFlags(uint32_t *aProtocolFlags) -+{ -+ // Is URI_STD true of all GnomeVFS URI types? -+ *aProtocolFlags = URI_STD | URI_DANGEROUS_TO_LOAD; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::NewURI(const nsACString &aSpec, -+ const char *aOriginCharset, -+ nsIURI *aBaseURI, -+ nsIURI **aResult) -+{ -+ const nsCString flatSpec(aSpec); -+ LOG(("gnomevfs: NewURI [spec=%s]\n", flatSpec.get())); -+ -+ if (!aBaseURI) -+ { -+ // -+ // XXX This check is used to limit the gnome-vfs protocols we support. For -+ // security reasons, it is best that we limit the protocols we support to -+ // those with known characteristics. We might want to lessen this -+ // restriction if it proves to be too heavy handed. A black list of -+ // protocols we don't want to support might be better. For example, we -+ // probably don't want to try to load "start-here:" inside the browser. -+ // There are others that fall into this category, which are best handled -+ // externally by Nautilus (or another app like it). -+ // -+ if (!IsSupportedProtocol(flatSpec)) -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ -+ // Verify that GnomeVFS supports this URI scheme. -+ GnomeVFSURI *uri = gnome_vfs_uri_new(flatSpec.get()); -+ if (!uri) -+ return NS_ERROR_UNKNOWN_PROTOCOL; -+ } -+ -+ // -+ // XXX Can we really assume that all gnome-vfs URIs can be parsed using -+ // nsStandardURL? We probably really need to implement nsIURI/nsIURL -+ // in terms of the gnome_vfs_uri_XXX methods, but at least this works -+ // correctly for smb:// URLs ;-) -+ // -+ // Also, it might not be possible to fully implement nsIURI/nsIURL in -+ // terms of GnomeVFSURI since some Necko methods have no GnomeVFS -+ // equivalent. -+ // -+ nsresult rv; -+ nsCOMPtr url = -+ do_CreateInstance(NS_STANDARDURL_CONTRACTID, &rv); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ rv = url->Init(nsIStandardURL::URLTYPE_STANDARD, -1, flatSpec, -+ aOriginCharset, aBaseURI); -+ if (NS_SUCCEEDED(rv)) -+ rv = CallQueryInterface(url, aResult); -+ -+ return rv; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::NewChannel2(nsIURI* aURI, -+ nsILoadInfo* aLoadInfo, -+ nsIChannel** aResult) -+{ -+ NS_ENSURE_ARG_POINTER(aURI); -+ nsresult rv; -+ -+ nsAutoCString spec; -+ rv = aURI->GetSpec(spec); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ nsRefPtr stream = new nsGnomeVFSInputStream(spec); -+ if (!stream) -+ { -+ rv = NS_ERROR_OUT_OF_MEMORY; -+ } -+ else -+ { -+ // start out assuming an unknown content-type. we'll set the content-type -+ // to something better once we open the URI. -+ rv = NS_NewInputStreamChannel(aResult, aURI, stream, -+ NS_LITERAL_CSTRING(UNKNOWN_CONTENT_TYPE)); -+ if (NS_SUCCEEDED(rv)) -+ stream->SetChannel(*aResult); -+ } -+ return rv; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::NewChannel(nsIURI *aURI, nsIChannel **aResult) -+{ -+ return NewChannel2(aURI, nullptr, aResult); -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::AllowPort(int32_t aPort, -+ const char *aScheme, -+ bool *aResult) -+{ -+ // Don't override anything. -+ *aResult = false; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSProtocolHandler::Observe(nsISupports *aSubject, -+ const char *aTopic, -+ const char16_t *aData) -+{ -+ if (strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) == 0) { -+ nsCOMPtr prefs = do_QueryInterface(aSubject); -+ InitSupportedProtocolsPref(prefs); -+ } -+ return NS_OK; -+} -+ -+//----------------------------------------------------------------------------- -+ -+#define NS_GNOMEVFSPROTOCOLHANDLER_CID \ -+{ /* 9b6dc177-a2e4-49e1-9c98-0a8384de7f6c */ \ -+ 0x9b6dc177, \ -+ 0xa2e4, \ -+ 0x49e1, \ -+ {0x9c, 0x98, 0x0a, 0x83, 0x84, 0xde, 0x7f, 0x6c} \ -+} -+ -+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGnomeVFSProtocolHandler, Init) -+NS_DEFINE_NAMED_CID(NS_GNOMEVFSPROTOCOLHANDLER_CID); -+ -+static const mozilla::Module::CIDEntry kVFSCIDs[] = { -+ { &kNS_GNOMEVFSPROTOCOLHANDLER_CID, false, nullptr, nsGnomeVFSProtocolHandlerConstructor }, -+ { nullptr } -+}; -+ -+static const mozilla::Module::ContractIDEntry kVFSContracts[] = { -+ { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MOZ_GNOMEVFS_SCHEME, &kNS_GNOMEVFSPROTOCOLHANDLER_CID }, -+ { nullptr } -+}; -+ -+static const mozilla::Module kVFSModule = { -+ mozilla::Module::kVersion, -+ kVFSCIDs, -+ kVFSContracts -+}; -+ -+NSMODULE_DEFN(nsGnomeVFSModule) = &kVFSModule; -diff -up thunderbird-45.0/mozilla/mobile/android/installer/package-manifest.in.moz-1134537-gnomevfsservice thunderbird-45.0/mozilla/mobile/android/installer/package-manifest.in ---- thunderbird-45.0/mozilla/mobile/android/installer/package-manifest.in.moz-1134537-gnomevfsservice 2016-05-09 13:19:52.322048300 +0200 -+++ thunderbird-45.0/mozilla/mobile/android/installer/package-manifest.in 2016-05-09 13:25:02.680824572 +0200 -@@ -613,6 +613,12 @@ bin/libfreebl_32int64_3.so - @BINPATH@/crashreporter-override.ini - #endif - -+; [Extensions] -+; -+#ifdef MOZ_ENABLE_GNOMEVFS -+bin/components/@DLL_PREFIX@nkgnomevfs@DLL_SUFFIX@ -+#endif -+ - [mobile] - @BINPATH@/chrome/icons/ - @BINPATH@/chrome/chrome@JAREXT@ diff --git a/SOURCES/mozilla-1134537-delete-nsgnomevfsservice.patch b/SOURCES/mozilla-1134537-delete-nsgnomevfsservice.patch deleted file mode 100644 index 1fa54f0..0000000 --- a/SOURCES/mozilla-1134537-delete-nsgnomevfsservice.patch +++ /dev/null @@ -1,413 +0,0 @@ -diff -up thunderbird-45.0/mozilla/toolkit/system/gnome/moz.build.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/toolkit/system/gnome/moz.build ---- thunderbird-45.0/mozilla/toolkit/system/gnome/moz.build.moz-1134537-delete-nsgnomevfsservice 2016-04-07 23:33:34.000000000 +0200 -+++ thunderbird-45.0/mozilla/toolkit/system/gnome/moz.build 2016-05-11 13:56:15.863034987 +0200 -@@ -15,6 +15,12 @@ if CONFIG['MOZ_ENABLE_GCONF']: - 'nsGConfService.cpp', - ] - -+if CONFIG['MOZ_ENABLE_GNOMEVFS']: -+ SOURCES += [ -+ 'nsGnomeVFSService.cpp', -+ ] -+ -+ - if CONFIG['MOZ_ENABLE_GIO']: - SOURCES += [ - 'nsGIOService.cpp', -@@ -29,6 +35,7 @@ LOCAL_INCLUDES += [ - ] - - CXXFLAGS += CONFIG['MOZ_GCONF_CFLAGS'] -+CXXFLAGS += CONFIG['MOZ_GNOMEVFS_CFLAGS'] - CXXFLAGS += CONFIG['MOZ_GIO_CFLAGS'] - CXXFLAGS += CONFIG['GLIB_CFLAGS'] - CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS'] -@@ -38,3 +45,5 @@ if CONFIG['MOZ_ENABLE_GTK']: - - if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wshadow'] -+ -+OS_LIBS += CONFIG['MOZ_GNOMEVFS_LIBS'] -\ No newline at end of file -diff -up thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeModule.cpp.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeModule.cpp ---- thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeModule.cpp.moz-1134537-delete-nsgnomevfsservice 2016-04-07 23:33:34.000000000 +0200 -+++ thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeModule.cpp 2016-05-11 13:54:01.306097859 +0200 -@@ -12,6 +12,10 @@ - #include "nsGConfService.h" - NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGConfService, Init) - #endif -+#ifdef MOZ_ENABLE_GNOMEVFS -+#include "nsGnomeVFSService.h" -+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGnomeVFSService, Init) -+#endif - #ifdef MOZ_ENABLE_GIO - #include "nsGIOService.h" - #include "nsGSettingsService.h" -@@ -26,6 +30,9 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSy - #ifdef MOZ_ENABLE_GCONF - NS_DEFINE_NAMED_CID(NS_GCONFSERVICE_CID); - #endif -+#ifdef MOZ_ENABLE_GNOMEVFS -+NS_DEFINE_NAMED_CID(NS_GNOMEVFSSERVICE_CID); -+#endif - #ifdef MOZ_ENABLE_GIO - NS_DEFINE_NAMED_CID(NS_GIOSERVICE_CID); - NS_DEFINE_NAMED_CID(NS_GSETTINGSSERVICE_CID); -@@ -37,6 +44,9 @@ static const mozilla::Module::CIDEntry k - #ifdef MOZ_ENABLE_GCONF - { &kNS_GCONFSERVICE_CID, false, nullptr, nsGConfServiceConstructor }, - #endif -+#ifdef MOZ_ENABLE_GNOMEVFS -+ { &kNS_GNOMEVFSSERVICE_CID, false, nullptr, nsGnomeVFSServiceConstructor }, -+#endif - #ifdef MOZ_ENABLE_GIO - { &kNS_GIOSERVICE_CID, false, nullptr, nsGIOServiceConstructor }, - { &kNS_GSETTINGSSERVICE_CID, false, nullptr, nsGSettingsServiceConstructor }, -@@ -50,6 +60,9 @@ static const mozilla::Module::ContractID - #ifdef MOZ_ENABLE_GCONF - { NS_GCONFSERVICE_CONTRACTID, &kNS_GCONFSERVICE_CID }, - #endif -+#ifdef MOZ_ENABLE_GNOMEVFS -+ { NS_GNOMEVFSSERVICE_CONTRACTID, &kNS_GNOMEVFSSERVICE_CID }, -+#endif - #ifdef MOZ_ENABLE_GIO - { NS_GIOSERVICE_CONTRACTID, &kNS_GIOSERVICE_CID }, - { NS_GSETTINGSSERVICE_CONTRACTID, &kNS_GSETTINGSSERVICE_CID }, -diff -up thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.cpp.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.cpp ---- thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.cpp.moz-1134537-delete-nsgnomevfsservice 2016-05-11 13:54:01.306097859 +0200 -+++ thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.cpp 2016-05-11 13:54:01.306097859 +0200 -@@ -0,0 +1,225 @@ -+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "nsGnomeVFSService.h" -+#include "nsStringGlue.h" -+#include "nsIURI.h" -+#include "nsTArray.h" -+#include "nsIStringEnumerator.h" -+#include "nsAutoPtr.h" -+ -+extern "C" { -+#include -+#include -+#include -+} -+ -+class nsGnomeVFSMimeApp : public nsIGnomeVFSMimeApp -+{ -+public: -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIGNOMEVFSMIMEAPP -+ -+ nsGnomeVFSMimeApp(GnomeVFSMimeApplication* aApp) : mApp(aApp) {} -+ -+private: -+ ~nsGnomeVFSMimeApp() { gnome_vfs_mime_application_free(mApp); } -+ GnomeVFSMimeApplication *mApp; -+}; -+ -+NS_IMPL_ISUPPORTS(nsGnomeVFSMimeApp, nsIGnomeVFSMimeApp) -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetId(nsACString& aId) -+{ -+ aId.Assign(mApp->id); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetName(nsACString& aName) -+{ -+ aName.Assign(mApp->name); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetCommand(nsACString& aCommand) -+{ -+ aCommand.Assign(mApp->command); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetCanOpenMultipleFiles(bool* aCanOpen) -+{ -+ *aCanOpen = mApp->can_open_multiple_files; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetExpectsURIs(int32_t* aExpects) -+{ -+ *aExpects = mApp->expects_uris; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::Launch(const nsACString &aUri) -+{ -+ char *uri = gnome_vfs_make_uri_from_input(PromiseFlatCString(aUri).get()); -+ -+ if (! uri) -+ return NS_ERROR_FAILURE; -+ -+ GList uris = { 0 }; -+ uris.data = uri; -+ -+ GnomeVFSResult result = gnome_vfs_mime_application_launch(mApp, &uris); -+ g_free(uri); -+ -+ if (result != GNOME_VFS_OK) -+ return NS_ERROR_FAILURE; -+ -+ return NS_OK; -+} -+ -+class UTF8StringEnumerator : public nsIUTF8StringEnumerator -+{ -+public: -+ UTF8StringEnumerator() : mIndex(0) { } -+private: -+ ~UTF8StringEnumerator() { } -+ -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIUTF8STRINGENUMERATOR -+public: -+ nsTArray mStrings; -+ uint32_t mIndex; -+}; -+ -+NS_IMPL_ISUPPORTS(UTF8StringEnumerator, nsIUTF8StringEnumerator) -+ -+NS_IMETHODIMP -+UTF8StringEnumerator::HasMore(bool *aResult) -+{ -+ *aResult = mIndex < mStrings.Length(); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+UTF8StringEnumerator::GetNext(nsACString& aResult) -+{ -+ if (mIndex >= mStrings.Length()) -+ return NS_ERROR_UNEXPECTED; -+ -+ aResult.Assign(mStrings[mIndex]); -+ ++mIndex; -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetSupportedURISchemes(nsIUTF8StringEnumerator** aSchemes) -+{ -+ *aSchemes = nullptr; -+ -+ RefPtr array = new UTF8StringEnumerator(); -+ NS_ENSURE_TRUE(array, NS_ERROR_OUT_OF_MEMORY); -+ -+ for (GList *list = mApp->supported_uri_schemes; list; list = list->next) { -+ if (!array->mStrings.AppendElement((char*) list->data)) { -+ return NS_ERROR_OUT_OF_MEMORY; -+ } -+ } -+ -+ NS_ADDREF(*aSchemes = array); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSMimeApp::GetRequiresTerminal(bool* aRequires) -+{ -+ *aRequires = mApp->requires_terminal; -+ return NS_OK; -+} -+ -+nsresult -+nsGnomeVFSService::Init() -+{ -+ return gnome_vfs_init() ? NS_OK : NS_ERROR_FAILURE; -+} -+ -+NS_IMPL_ISUPPORTS(nsGnomeVFSService, nsIGnomeVFSService) -+ -+NS_IMETHODIMP -+nsGnomeVFSService::GetMimeTypeFromExtension(const nsACString &aExtension, -+ nsACString& aMimeType) -+{ -+ nsAutoCString fileExtToUse("."); -+ fileExtToUse.Append(aExtension); -+ -+ const char *mimeType = gnome_vfs_mime_type_from_name(fileExtToUse.get()); -+ aMimeType.Assign(mimeType); -+ -+ // |mimeType| points to internal gnome-vfs data, so don't free it. -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSService::GetAppForMimeType(const nsACString &aMimeType, -+ nsIGnomeVFSMimeApp** aApp) -+{ -+ *aApp = nullptr; -+ GnomeVFSMimeApplication *app = -+ gnome_vfs_mime_get_default_application(PromiseFlatCString(aMimeType).get()); -+ -+ if (app) { -+ nsGnomeVFSMimeApp *mozApp = new nsGnomeVFSMimeApp(app); -+ NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY); -+ -+ NS_ADDREF(*aApp = mozApp); -+ } -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSService::GetDescriptionForMimeType(const nsACString &aMimeType, -+ nsACString& aDescription) -+{ -+ const char *desc = -+ gnome_vfs_mime_get_description(PromiseFlatCString(aMimeType).get()); -+ aDescription.Assign(desc); -+ -+ // |desc| points to internal gnome-vfs data, so don't free it. -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSService::ShowURI(nsIURI *aURI) -+{ -+ nsAutoCString spec; -+ aURI->GetSpec(spec); -+ -+ if (gnome_vfs_url_show_with_env(spec.get(), nullptr) == GNOME_VFS_OK) -+ return NS_OK; -+ -+ return NS_ERROR_FAILURE; -+} -+ -+NS_IMETHODIMP -+nsGnomeVFSService::ShowURIForInput(const nsACString &aUri) -+{ -+ char* spec = gnome_vfs_make_uri_from_input(PromiseFlatCString(aUri).get()); -+ nsresult rv = NS_ERROR_FAILURE; -+ -+ if (gnome_vfs_url_show_with_env(spec, nullptr) == GNOME_VFS_OK) -+ rv = NS_OK; -+ -+ g_free(spec); -+ return rv; -+} -diff -up thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.h.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.h ---- thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.h.moz-1134537-delete-nsgnomevfsservice 2016-05-11 13:54:01.307097859 +0200 -+++ thunderbird-45.0/mozilla/toolkit/system/gnome/nsGnomeVFSService.h 2016-05-11 13:54:01.307097859 +0200 -@@ -0,0 +1,26 @@ -+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef nsGnomeVFSService_h_ -+#define nsGnomeVFSService_h_ -+ -+#include "nsIGnomeVFSService.h" -+#include "mozilla/Attributes.h" -+ -+#define NS_GNOMEVFSSERVICE_CID \ -+{0x5f43022c, 0x6194, 0x4b37, {0xb2, 0x6d, 0xe4, 0x10, 0x24, 0x62, 0x52, 0x64}} -+ -+class nsGnomeVFSService : public nsIGnomeVFSService -+{ -+public: -+ NS_DECL_ISUPPORTS -+ NS_DECL_NSIGNOMEVFSSERVICE -+ -+ nsresult Init(); -+private: -+ ~nsGnomeVFSService() { }; -+}; -+ -+#endif -diff -up thunderbird-45.0/mozilla/xpcom/system/moz.build.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/xpcom/system/moz.build ---- thunderbird-45.0/mozilla/xpcom/system/moz.build.moz-1134537-delete-nsgnomevfsservice 2016-04-07 23:33:35.000000000 +0200 -+++ thunderbird-45.0/mozilla/xpcom/system/moz.build 2016-05-11 13:54:01.307097859 +0200 -@@ -11,6 +11,7 @@ XPIDL_SOURCES += [ - 'nsIGConfService.idl', - 'nsIGeolocationProvider.idl', - 'nsIGIOService.idl', -+ 'nsIGnomeVFSService.idl', - 'nsIGSettingsService.idl', - 'nsIHapticFeedback.idl', - 'nsIPackageKitService.idl', -diff -up thunderbird-45.0/mozilla/xpcom/system/nsIGnomeVFSService.idl.moz-1134537-delete-nsgnomevfsservice thunderbird-45.0/mozilla/xpcom/system/nsIGnomeVFSService.idl ---- thunderbird-45.0/mozilla/xpcom/system/nsIGnomeVFSService.idl.moz-1134537-delete-nsgnomevfsservice 2016-05-11 13:54:01.307097859 +0200 -+++ thunderbird-45.0/mozilla/xpcom/system/nsIGnomeVFSService.idl 2016-05-11 13:54:01.307097859 +0200 -@@ -0,0 +1,64 @@ -+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "nsISupports.idl" -+ -+interface nsIUTF8StringEnumerator; -+interface nsIURI; -+ -+/* nsIGnomeVFSMimeApp holds information about an application that is looked up -+ with nsIGnomeVFSService::GetAppForMimeType. */ -+ -+[scriptable, uuid(66009894-9877-405b-9321-bf30420e34e6)] -+interface nsIGnomeVFSMimeApp : nsISupports -+{ -+ const long EXPECTS_URIS = 0; -+ const long EXPECTS_PATHS = 1; -+ const long EXPECTS_URIS_FOR_NON_FILES = 2; -+ -+ readonly attribute AUTF8String id; -+ readonly attribute AUTF8String name; -+ readonly attribute AUTF8String command; -+ readonly attribute boolean canOpenMultipleFiles; -+ readonly attribute long expectsURIs; // see constants above -+ readonly attribute nsIUTF8StringEnumerator supportedURISchemes; -+ readonly attribute boolean requiresTerminal; -+ -+ void launch(in AUTF8String uri); -+}; -+ -+/* -+ * The VFS service makes use of a registry for information. -+ * -+ * The MIME registry holds information about MIME types, such as which -+ * extensions map to a given MIME type. The MIME registry also stores the -+ * id of the application selected to handle each MIME type. -+ */ -+ -+[scriptable, uuid(d1ac73a6-2ceb-4164-8142-215afe7fe8a6)] -+interface nsIGnomeVFSService : nsISupports -+{ -+ /*** MIME registry methods ***/ -+ -+ /* Obtain the MIME type registered for an extension. The extension -+ should not include a leading dot. */ -+ AUTF8String getMimeTypeFromExtension(in AUTF8String extension); -+ -+ /* Obtain the preferred application for opening a given MIME type */ -+ nsIGnomeVFSMimeApp getAppForMimeType(in AUTF8String mimeType); -+ -+ /* Obtain a description for the given MIME type */ -+ AUTF8String getDescriptionForMimeType(in AUTF8String mimeType); -+ -+ /*** Misc. methods ***/ -+ -+ /* Open the given URI in the default application */ -+ void showURI(in nsIURI uri); -+ [noscript] void showURIForInput(in ACString uri); -+}; -+ -+%{C++ -+#define NS_GNOMEVFSSERVICE_CONTRACTID "@mozilla.org/gnome-vfs-service;1" -+%} diff --git a/SOURCES/mozilla-1134537-only-support-gio-in-nsioservice.patch b/SOURCES/mozilla-1134537-only-support-gio-in-nsioservice.patch deleted file mode 100644 index 9cba59b..0000000 --- a/SOURCES/mozilla-1134537-only-support-gio-in-nsioservice.patch +++ /dev/null @@ -1,71 +0,0 @@ -# HG changeset patch -# User Alex Henrie -# Date 1425704794 25200 -# Fri Mar 06 22:06:34 2015 -0700 -# Node ID 7421abd87f753042bfe4f26c7cff1ebb0d047cef -# Parent 43fb1f92e8d41f1dc086b336532d9fa5720b6475 -Bug 1134537 - Only support GIO in nsIOService. - -diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp ---- a/netwerk/base/nsIOService.cpp -+++ b/netwerk/base/nsIOService.cpp -@@ -434,17 +434,17 @@ nsIOService::GetProtocolHandler(const ch - ToLowerCase(contractID); - - rv = CallGetService(contractID.get(), result); - if (NS_SUCCEEDED(rv)) { - CacheProtocolHandler(scheme, *result); - return rv; - } - --#ifdef MOZ_X11 -+#ifdef MOZ_ENABLE_GIO - // check to see whether GVFS can handle this URI scheme. if it can - // create a nsIURI for the "scheme:", then we assume it has support for - // the requested protocol. otherwise, we failover to using the default - // protocol handler. - - rv = CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"moz-gio", - result); - if (NS_SUCCEEDED(rv)) { -@@ -455,40 +455,16 @@ nsIOService::GetProtocolHandler(const ch - rv = (*result)->NewURI(spec, nullptr, nullptr, &uri); - if (NS_SUCCEEDED(rv)) { - NS_RELEASE(uri); - return rv; - } - - NS_RELEASE(*result); - } -- -- // check to see whether GnomeVFS can handle this URI scheme. if it can -- // create a nsIURI for the "scheme:", then we assume it has support for -- // the requested protocol. otherwise, we failover to using the default -- // protocol handler. -- -- // XXX should this be generalized into something that searches a -- // category? (see bug 234714) -- -- rv = CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"moz-gnomevfs", -- result); -- if (NS_SUCCEEDED(rv)) { -- nsAutoCString spec(scheme); -- spec.Append(':'); -- -- nsIURI *uri; -- rv = (*result)->NewURI(spec, nullptr, nullptr, &uri); -- if (NS_SUCCEEDED(rv)) { -- NS_RELEASE(uri); -- return rv; -- } -- -- NS_RELEASE(*result); -- } - #endif - } - - // Okay we don't have a protocol handler to handle this url type, so use - // the default protocol handler. This will cause urls to get dispatched - // out to the OS ('cause we can't do anything with them) when we try to - // read from a channel created by the default protocol handler. - diff --git a/SOURCES/mozilla-1158578-recursion-fix.patch b/SOURCES/mozilla-1158578-recursion-fix.patch new file mode 100644 index 0000000..77bc6ef --- /dev/null +++ b/SOURCES/mozilla-1158578-recursion-fix.patch @@ -0,0 +1,147 @@ +# vim: se ft=diff : +# HG changeset patch +# User Jan Horak +# Date 2017-04-26 02:36 +# Parent 540cd06b1aea0bfa6f906b86393f5480914c01c2 +Bug 1158578 - fix crash when compacting IMAP account. r=jorgk + +diff --git a/mailnews/base/src/nsMsgFolderCompactor.cpp b/mailnews/base/src/nsMsgFolderCompactor.cpp +--- a/mailnews/base/src/nsMsgFolderCompactor.cpp ++++ b/mailnews/base/src/nsMsgFolderCompactor.cpp +@@ -31,16 +31,17 @@ + #include "nsIMsgStatusFeedback.h" + #include "nsMsgBaseCID.h" + #include "nsIMsgFolderNotificationService.h" + #include "nsIMsgPluggableStore.h" + #include "nsMsgFolderCompactor.h" + #include + #include "nsIOutputStream.h" + #include "nsIInputStream.h" ++#include "nsPrintfCString.h" + + + ////////////////////////////////////////////////////////////////////////////// + // nsFolderCompactState + ////////////////////////////////////////////////////////////////////////////// + + NS_IMPL_ISUPPORTS(nsFolderCompactState, nsIMsgFolderCompactor, nsIRequestObserver, nsIStreamListener, nsICopyMessageStreamListener, nsIUrlListener) + +@@ -1096,16 +1097,24 @@ nsOfflineStoreCompactState::OnStopReques + // check for it specifically and don't terminate the compaction. + if (NS_FAILED(rv) && rv != NS_MSG_ERROR_MSG_NOT_OFFLINE) + goto done; + uri = do_QueryInterface(ctxt, &rv); + if (NS_FAILED(rv)) goto done; + rv = GetMessage(getter_AddRefs(msgHdr)); + if (NS_FAILED(rv)) goto done; + ++ // This is however an unexpected condition, so let's print a warning. ++ if (rv == NS_MSG_ERROR_MSG_NOT_OFFLINE) { ++ nsAutoCString spec; ++ uri->GetSpec(spec); ++ nsPrintfCString msg("Message expectedly not available offline: %s", spec.get()); ++ NS_WARNING(msg.get()); ++ } ++ + if (msgHdr) + { + if (NS_SUCCEEDED(status)) + { + msgHdr->SetMessageOffset(m_startOfNewMsg); + char storeToken[100]; + PR_snprintf(storeToken, sizeof(storeToken), "%lld", m_startOfNewMsg); + msgHdr->SetStringProperty("storeToken", storeToken); +diff --git a/mailnews/imap/src/nsImapProtocol.cpp b/mailnews/imap/src/nsImapProtocol.cpp +--- a/mailnews/imap/src/nsImapProtocol.cpp ++++ b/mailnews/imap/src/nsImapProtocol.cpp +@@ -9500,35 +9500,66 @@ nsresult nsImapMockChannel::ReadFromMemC + // Content is modified so return an error so we try to open it the + // old fashioned way. + rv = NS_ERROR_FAILURE; + } + + return rv; + } + ++class nsReadFromImapConnectionFailure : public mozilla::Runnable ++{ ++public: ++ nsReadFromImapConnectionFailure(nsImapMockChannel *aChannel) ++ : mImapMockChannel(aChannel) ++ {} ++ ++ NS_IMETHOD Run() ++ { ++ if (mImapMockChannel) { ++ mImapMockChannel->RunOnStopRequestFailure(); ++ } ++ return NS_OK; ++ } ++private: ++ RefPtr mImapMockChannel; ++}; ++ ++ ++nsresult nsImapMockChannel::RunOnStopRequestFailure() ++{ ++ if (m_channelListener) { ++ m_channelListener->OnStopRequest(this, m_channelContext, ++ NS_MSG_ERROR_MSG_NOT_OFFLINE); ++ } ++ return NS_OK; ++} ++ + // the requested url isn't in any of our caches so create an imap connection + // to process it. + nsresult nsImapMockChannel::ReadFromImapConnection() + { + nsresult rv = NS_OK; + nsCOMPtr imapUrl = do_QueryInterface(m_url); + nsCOMPtr mailnewsUrl = do_QueryInterface(m_url); + + bool localOnly = false; + imapUrl->GetLocalFetchOnly(&localOnly); + if (localOnly) + { + // This will cause an OnStartRunningUrl, and the subsequent close + // will then cause an OnStopRunningUrl with the cancel status. + NotifyStartEndReadFromCache(true); + Cancel(NS_MSG_ERROR_MSG_NOT_OFFLINE); +- if (m_channelListener) +- m_channelListener->OnStopRequest(this, m_channelContext, +- NS_MSG_ERROR_MSG_NOT_OFFLINE); ++ ++ // Dispatch error notification, so ReadFromImapConnection() returns *before* ++ // the error is sent to the listener's OnStopRequest(). This avoids ++ // endless recursion where the caller relies on async execution. ++ nsCOMPtr event = new nsReadFromImapConnectionFailure(this); ++ NS_DispatchToCurrentThread(event); + return NS_MSG_ERROR_MSG_NOT_OFFLINE; + } + + nsCOMPtr loadGroup; + GetLoadGroup(getter_AddRefs(loadGroup)); + if (!loadGroup) // if we don't have one, the url will snag one from the msg window... + mailnewsUrl->GetLoadGroup(getter_AddRefs(loadGroup)); + +diff --git a/mailnews/imap/src/nsImapProtocol.h b/mailnews/imap/src/nsImapProtocol.h +--- a/mailnews/imap/src/nsImapProtocol.h ++++ b/mailnews/imap/src/nsImapProtocol.h +@@ -714,16 +714,17 @@ public: + NS_DECL_NSIIMAPMOCKCHANNEL + NS_DECL_NSICHANNEL + NS_DECL_NSIREQUEST + NS_DECL_NSICACHEENTRYOPENCALLBACK + NS_DECL_NSITRANSPORTEVENTSINK + + nsImapMockChannel(); + static nsresult Create (const nsIID& iid, void **result); ++ nsresult RunOnStopRequestFailure(); + + protected: + virtual ~nsImapMockChannel(); + nsCOMPtr m_url; + + nsCOMPtr m_originalUrl; + nsCOMPtr m_loadGroup; + nsCOMPtr m_loadInfo; diff --git a/SOURCES/mozilla-1253216-disable-ion.patch b/SOURCES/mozilla-1253216-disable-ion.patch deleted file mode 100644 index 6de0720..0000000 --- a/SOURCES/mozilla-1253216-disable-ion.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-45.0/firefox-45.0/js/src/jit/AtomicOperations.h.old firefox-45.0/firefox-45.0/js/src/jit/AtomicOperations.h ---- firefox-45.0/firefox-45.0/js/src/jit/AtomicOperations.h.old 2016-03-01 09:45:01.000000000 +0100 -+++ firefox-45.0/firefox-45.0/js/src/jit/AtomicOperations.h 2016-03-03 13:13:34.915015391 +0100 -@@ -305,7 +305,7 @@ AtomicOperations::isLockfree(int32_t siz - || defined(__ppc__) || defined(__PPC__) - # include "jit/none/AtomicOperations-ppc.h" - #elif defined(JS_CODEGEN_NONE) --# include "jit/none/AtomicOperations-none.h" -+# include "jit/none/AtomicOperations-ppc.h" - #elif defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64) - # include "jit/x86-shared/AtomicOperations-x86-shared.h" - #else diff --git a/SOURCES/mozilla-256180.patch b/SOURCES/mozilla-256180.patch new file mode 100644 index 0000000..13a1c97 --- /dev/null +++ b/SOURCES/mozilla-256180.patch @@ -0,0 +1,11 @@ +--- a/layout/generic/nsIFrame.h.old 2016-07-11 13:41:39.688276559 +0200 ++++ b/layout/generic/nsIFrame.h 2016-07-11 13:42:12.791406976 +0200 +@@ -13,7 +13,7 @@ + #error This header/class should only be used within Mozilla code. It should not be used by extensions. + #endif + +-#define MAX_REFLOW_DEPTH 200 ++#define MAX_REFLOW_DEPTH 1000 + + /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is eventually + going to be eliminated, and all callers will use nsFrame instead. At the moment diff --git a/SOURCES/mozilla-694870-backout.patch b/SOURCES/mozilla-694870-backout.patch deleted file mode 100644 index d5dc410..0000000 --- a/SOURCES/mozilla-694870-backout.patch +++ /dev/null @@ -1,334 +0,0 @@ -diff -up thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsGNOMERegistry.cpp.moz-694870-backout thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsGNOMERegistry.cpp ---- thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsGNOMERegistry.cpp.moz-694870-backout 2016-04-07 23:33:34.000000000 +0200 -+++ thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsGNOMERegistry.cpp 2016-05-10 15:17:28.973860591 +0200 -@@ -6,50 +6,95 @@ - #include "nsGNOMERegistry.h" - #include "nsString.h" - #include "nsIComponentManager.h" -+#include "nsIFile.h" - #include "nsMIMEInfoUnix.h" - #include "nsAutoPtr.h" -+#include "nsIGConfService.h" -+#include "nsIGnomeVFSService.h" - #include "nsIGIOService.h" - -+#ifdef MOZ_WIDGET_GTK -+#include -+#include -+#endif -+ - /* static */ bool - nsGNOMERegistry::HandlerExists(const char *aProtocolScheme) - { - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) { -- return false; -- } -+ nsCOMPtr gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID); -+ if (giovfs) { -+ nsCOMPtr app; -+ if (NS_FAILED(giovfs->GetAppForURIScheme(nsDependentCString(aProtocolScheme), -+ getter_AddRefs(app)))) -+ return false; -+ else -+ return true; -+ } else if (gconf) { -+ bool isEnabled; -+ nsAutoCString handler; -+ if (NS_FAILED(gconf->GetAppForProtocol(nsDependentCString(aProtocolScheme), &isEnabled, handler))) -+ return false; - -- nsCOMPtr app; -- return NS_SUCCEEDED(giovfs->GetAppForURIScheme(nsDependentCString(aProtocolScheme), -- getter_AddRefs(app))); -+ return isEnabled; -+ } -+ return false; - } - - // XXX Check HandlerExists() before calling LoadURL. -+// -+// If there is not a registered handler for the protocol, gnome_url_show() -+// falls back to using gnomevfs modules. See bug 389632. We don't want -+// this fallback to happen as we are not sure of the safety of all gnomevfs -+// modules and MIME-default applications. (gnomevfs should be handled in -+// nsGnomeVFSProtocolHandler.) - - /* static */ nsresult - nsGNOMERegistry::LoadURL(nsIURI *aURL) - { - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) { -- return NS_ERROR_FAILURE; -- } -+ if (giovfs) -+ return giovfs->ShowURI(aURL); -+ nsCOMPtr gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID); -+ if (gnomevfs) -+ return gnomevfs->ShowURI(aURL); - -- return giovfs->ShowURI(aURL); -+ return NS_ERROR_FAILURE; - } - - /* static */ void - nsGNOMERegistry::GetAppDescForScheme(const nsACString& aScheme, - nsAString& aDesc) - { -+ nsCOMPtr gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID); - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) -+ if (!gconf && !giovfs) - return; - - nsAutoCString name; -- nsCOMPtr app; -- if (NS_FAILED(giovfs->GetAppForURIScheme(aScheme, getter_AddRefs(app)))) -- return; -- -- app->GetName(name); -+ if (giovfs) { -+ nsCOMPtr app; -+ if (NS_FAILED(giovfs->GetAppForURIScheme(aScheme, getter_AddRefs(app)))) -+ return; -+ -+ app->GetName(name); -+ } else { -+ bool isEnabled; -+ if (NS_FAILED(gconf->GetAppForProtocol(aScheme, &isEnabled, name))) -+ return; -+ -+ if (!name.IsEmpty()) { -+ // Try to only provide the executable name, as it is much simpler than with the path and arguments -+ int32_t firstSpace = name.FindChar(' '); -+ if (firstSpace != kNotFound) { -+ name.Truncate(firstSpace); -+ int32_t lastSlash = name.RFindChar('/'); -+ if (lastSlash != kNotFound) { -+ name.Cut(0, lastSlash + 1); -+ } -+ } -+ } -+ } - - CopyUTF8toUTF16(name, aDesc); - } -@@ -60,15 +105,22 @@ nsGNOMERegistry::GetFromExtension(const - { - nsAutoCString mimeType; - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) { -- return nullptr; -- } -- -- // Get the MIME type from the extension, then call GetFromType to -- // fill in the MIMEInfo. -- if (NS_FAILED(giovfs->GetMimeTypeFromExtension(aFileExt, mimeType)) || -- mimeType.EqualsLiteral("application/octet-stream")) { -- return nullptr; -+ if (giovfs) { -+ // Get the MIME type from the extension, then call GetFromType to -+ // fill in the MIMEInfo. -+ if (NS_FAILED(giovfs->GetMimeTypeFromExtension(aFileExt, mimeType)) || -+ mimeType.EqualsLiteral("application/octet-stream")) { -+ return nullptr; -+ } -+ } else { -+ /* Fallback to GnomeVFS */ -+ nsCOMPtr gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID); -+ if (!gnomevfs) -+ return nullptr; -+ -+ if (NS_FAILED(gnomevfs->GetMimeTypeFromExtension(aFileExt, mimeType)) || -+ mimeType.EqualsLiteral("application/octet-stream")) -+ return nullptr; - } - - RefPtr mi = GetFromType(mimeType); -@@ -89,17 +141,28 @@ nsGNOMERegistry::GetFromType(const nsACS - nsAutoCString description; - - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) { -- return nullptr; -- } -- -- nsCOMPtr gioHandlerApp; -- if (NS_FAILED(giovfs->GetAppForMimeType(aMIMEType, getter_AddRefs(gioHandlerApp))) || -- !gioHandlerApp) { -- return nullptr; -+ if (giovfs) { -+ nsCOMPtr gioHandlerApp; -+ if (NS_FAILED(giovfs->GetAppForMimeType(aMIMEType, getter_AddRefs(gioHandlerApp))) || -+ !gioHandlerApp) { -+ return nullptr; -+ } -+ gioHandlerApp->GetName(name); -+ giovfs->GetDescriptionForMimeType(aMIMEType, description); -+ } else { -+ /* Fallback to GnomeVFS*/ -+ nsCOMPtr gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID); -+ if (!gnomevfs) -+ return nullptr; -+ -+ nsCOMPtr gnomeHandlerApp; -+ if (NS_FAILED(gnomevfs->GetAppForMimeType(aMIMEType, getter_AddRefs(gnomeHandlerApp))) || -+ !gnomeHandlerApp) { -+ return nullptr; -+ } -+ gnomeHandlerApp->GetName(name); -+ gnomevfs->GetDescriptionForMimeType(aMIMEType, description); - } -- gioHandlerApp->GetName(name); -- giovfs->GetDescriptionForMimeType(aMIMEType, description); - - mimeInfo->SetDefaultDescription(NS_ConvertUTF8toUTF16(name)); - mimeInfo->SetPreferredAction(nsIMIMEInfo::useSystemDefault); -diff -up thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp.moz-694870-backout thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp ---- thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp.moz-694870-backout 2016-04-07 23:33:34.000000000 +0200 -+++ thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp 2016-05-11 08:24:13.869018683 +0200 -@@ -16,6 +16,7 @@ - #include "nsIGIOService.h" - #include "nsNetCID.h" - #include "nsIIOService.h" -+#include "nsIGnomeVFSService.h" - #include "nsAutoPtr.h" - #ifdef MOZ_ENABLE_DBUS - #include "nsDBusHandlerApp.h" -@@ -103,26 +104,51 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns - #endif - - nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID); -- if (!giovfs) { -- return NS_ERROR_FAILURE; -- } -- -- // nsGIOMimeApp->Launch wants a URI string instead of local file -- nsresult rv; -- nsCOMPtr ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv); -- NS_ENSURE_SUCCESS(rv, rv); -- nsCOMPtr uri; -- rv = ioservice->NewFileURI(aFile, getter_AddRefs(uri)); -- NS_ENSURE_SUCCESS(rv, rv); - nsAutoCString uriSpec; -- uri->GetSpec(uriSpec); -+ if (giovfs) { -+ // nsGIOMimeApp->Launch wants a URI string instead of local file -+ nsresult rv; -+ nsCOMPtr ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv); -+ NS_ENSURE_SUCCESS(rv, rv); -+ nsCOMPtr uri; -+ rv = ioservice->NewFileURI(aFile, getter_AddRefs(uri)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ uri->GetSpec(uriSpec); -+ } -+ -+ nsCOMPtr gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID); -+ if (giovfs) { -+ nsCOMPtr app; -+ if (NS_SUCCEEDED(giovfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app) -+ return app->Launch(uriSpec); -+ } else if (gnomevfs) { -+ /* Fallback to GnomeVFS */ -+ nsCOMPtr app; -+ if (NS_SUCCEEDED(gnomevfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app) -+ return app->Launch(nativePath); -+ } -+ -+ // If we haven't got an app we try to get a valid one by searching for the -+ // extension mapped type -+ RefPtr mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath); -+ if (mimeInfo) { -+ nsAutoCString type; -+ mimeInfo->GetType(type); -+ if (giovfs) { -+ nsCOMPtr app; -+ if (NS_SUCCEEDED(giovfs->GetAppForMimeType(type, getter_AddRefs(app))) && app) -+ return app->Launch(uriSpec); -+ } else if (gnomevfs) { -+ nsCOMPtr app; -+ if (NS_SUCCEEDED(gnomevfs->GetAppForMimeType(type, getter_AddRefs(app))) && app) -+ return app->Launch(nativePath); -+ } -+ } - -- nsCOMPtr app; -- if (NS_FAILED(giovfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) || !app) { -+ if (!mDefaultApplication) - return NS_ERROR_FILE_NOT_FOUND; -- } - -- return app->Launch(uriSpec); -+ return LaunchWithIProcess(mDefaultApplication, nativePath); - } - - #if defined(MOZ_ENABLE_CONTENTACTION) -diff -up thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsOSHelperAppService.cpp.moz-694870-backout thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsOSHelperAppService.cpp ---- thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsOSHelperAppService.cpp.moz-694870-backout 2016-04-07 23:33:34.000000000 +0200 -+++ thunderbird-45.0/mozilla/uriloader/exthandler/unix/nsOSHelperAppService.cpp 2016-05-10 15:17:28.974860591 +0200 -@@ -1150,7 +1150,7 @@ nsresult nsOSHelperAppService::OSProtoco - #endif - - #ifdef MOZ_WIDGET_GTK -- // Check the GNOME registry for a protocol handler -+ // Check the GConf registry for a protocol handler - *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme); - #endif - -@@ -1369,6 +1369,22 @@ nsOSHelperAppService::GetFromType(const - NS_LossyConvertUTF16toASCII(handler).get(), - NS_LossyConvertUTF16toASCII(mailcap_description).get())); - -+#ifdef MOZ_WIDGET_GTK -+ RefPtr gnomeInfo; -+ if (handler.IsEmpty()) { -+ // No useful data yet. Check the GNOME registry. Unfortunately, newer -+ // GNOME versions no longer have type-to-extension mappings, so we might -+ // get back a MIMEInfo without any extensions set. In that case we'll have -+ // to look in our mime.types files for the extensions. -+ LOG(("Looking in GNOME registry\n")); -+ gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType); -+ if (gnomeInfo && gnomeInfo->HasExtensions()) { -+ LOG(("Got MIMEInfo from GNOME registry, and it has extensions set\n")); -+ return gnomeInfo.forget(); -+ } -+ } -+#endif -+ - // Now look up our extensions - nsAutoString extensions, mime_types_description; - LookUpExtensionsAndDescription(majorType, -@@ -1377,16 +1393,13 @@ nsOSHelperAppService::GetFromType(const - mime_types_description); - - #ifdef MOZ_WIDGET_GTK -- if (handler.IsEmpty()) { -- RefPtr gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType); -- if (gnomeInfo) { -- LOG(("Got MIMEInfo from GNOME registry without extensions; setting them " -- "to %s\n", NS_LossyConvertUTF16toASCII(extensions).get())); -- -- NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?"); -- gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions)); -- return gnomeInfo.forget(); -- } -+ if (gnomeInfo) { -+ LOG(("Got MIMEInfo from GNOME registry without extensions; setting them " -+ "to %s\n", NS_LossyConvertUTF16toASCII(extensions).get())); -+ -+ NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?"); -+ gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions)); -+ return gnomeInfo.forget(); - } - #endif - -@@ -1513,6 +1526,9 @@ nsOSHelperAppService::GetProtocolHandler - { - NS_ASSERTION(!aScheme.IsEmpty(), "No scheme was specified!"); - -+ // We must check that a registered handler exists so that gnome_url_show -+ // doesn't fallback to gnomevfs. -+ // See nsGNOMERegistry::LoadURL and bug 389632. - nsresult rv = OSProtocolHandlerExists(nsPromiseFlatCString(aScheme).get(), - found); - if (NS_FAILED(rv)) diff --git a/SOURCES/rhbz-1150082.patch b/SOURCES/rhbz-1150082.patch deleted file mode 100644 index 4091cdb..0000000 --- a/SOURCES/rhbz-1150082.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up mozilla-esr31/media/webrtc/trunk/Makefile.old mozilla-esr31/media/webrtc/trunk/Makefile -diff -up mozilla-esr31/toolkit/components/osfile/modules/osfile_unix_front.jsm.old mozilla-esr31/toolkit/components/osfile/modules/osfile_unix_front.jsm ---- mozilla-esr31/toolkit/components/osfile/modules/osfile_unix_front.jsm.old 2014-10-11 17:00:02.000000000 +0200 -+++ mozilla-esr31/toolkit/components/osfile/modules/osfile_unix_front.jsm 2014-11-10 13:28:58.474001916 +0100 -@@ -574,7 +574,7 @@ - }; - - // Fortunately, under Linux, that pumping function can be optimized. -- if (UnixFile.splice) { -+ if (0) { - const BUFSIZE = 1 << 17; - - // An implementation of |pump| using |splice| (for Linux/Android) diff --git a/SOURCES/rhbz-1414535.patch b/SOURCES/rhbz-1414535.patch new file mode 100644 index 0000000..f9cc7c2 --- /dev/null +++ b/SOURCES/rhbz-1414535.patch @@ -0,0 +1,37 @@ +diff -up ./CertVerifier.cpp.ignoreBuiltinStatus ./CertVerifier.cpp +--- ./security/certverifier/CertVerifier.cpp.ignoreBuiltinStatus 2016-10-31 21:15:28.000000000 +0100 ++++ ./security/certverifier/CertVerifier.cpp 2016-12-16 21:35:32.155105623 +0100 +@@ -65,6 +65,9 @@ InitCertVerifierLog() + Result + IsCertChainRootBuiltInRoot(const UniqueCERTCertList& chain, bool& result) + { ++ result = false; ++ return Success; ++#if 0 + if (!chain || CERT_LIST_EMPTY(chain)) { + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } +@@ -77,12 +80,15 @@ IsCertChainRootBuiltInRoot(const UniqueC + return Result::FATAL_ERROR_LIBRARY_FAILURE; + } + return IsCertBuiltInRoot(root, result); ++#endif + } + + Result + IsCertBuiltInRoot(CERTCertificate* cert, bool& result) + { + result = false; ++ return Success; ++#if 0 + #ifdef DEBUG + nsCOMPtr component(do_GetService(PSM_COMPONENT_CONTRACTID)); + if (!component) { +@@ -114,6 +120,7 @@ IsCertBuiltInRoot(CERTCertificate* cert, + } + } + return Success; ++#endif + } + + static Result diff --git a/SOURCES/rhbz-1423012.patch b/SOURCES/rhbz-1423012.patch new file mode 100644 index 0000000..f5344c2 --- /dev/null +++ b/SOURCES/rhbz-1423012.patch @@ -0,0 +1,15 @@ +diff -up firefox-52.0b8/gfx/2d/HelpersCairo.h.old firefox-52.0b8/gfx/2d/HelpersCairo.h +--- firefox-52.0b8/gfx/2d/HelpersCairo.h.old 2017-03-02 09:23:01.230766731 -0500 ++++ firefox-52.0b8/gfx/2d/HelpersCairo.h 2017-03-02 09:23:49.711930251 -0500 +@@ -239,9 +239,9 @@ CairoFormatToGfxFormat(cairo_format_t fo + { + switch (format) { + case CAIRO_FORMAT_ARGB32: +- return SurfaceFormat::A8R8G8B8_UINT32; ++ return SurfaceFormat::B8G8R8A8; + case CAIRO_FORMAT_RGB24: +- return SurfaceFormat::X8R8G8B8_UINT32; ++ return SurfaceFormat::B8G8R8X8; + case CAIRO_FORMAT_A8: + return SurfaceFormat::A8; + case CAIRO_FORMAT_RGB16_565: diff --git a/SOURCES/thunderbird-enable-addons.patch b/SOURCES/thunderbird-enable-addons.patch index 4f78187..349438a 100644 --- a/SOURCES/thunderbird-enable-addons.patch +++ b/SOURCES/thunderbird-enable-addons.patch @@ -10,29 +10,3 @@ diff -up comm-esr31/mail/app/profile/all-thunderbird.js.addons comm-esr31/mail/a // Preferences for AMO integration pref("extensions.getAddons.cache.enabled", true); -diff -up comm-esr31/mozilla/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons comm-esr31/mozilla/toolkit/mozapps/extensions/internal/XPIProvider.jsm ---- comm-esr31/mozilla/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons 2014-07-29 15:29:11.951728146 +0200 -+++ comm-esr31/mozilla/toolkit/mozapps/extensions/internal/XPIProvider.jsm 2014-07-29 15:30:51.879030210 +0200 -@@ -2102,11 +2102,7 @@ this.XPIProvider = { - - AddonManagerPrivate.markProviderSafe(this); - -- if (aAppChanged === undefined) { -- // For new profiles we will never need to show the add-on selection UI -- Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true); -- } -- else if (aAppChanged && !this.allAppGlobal && -+ if (aAppChanged && !this.allAppGlobal && - Preferences.get(PREF_EM_SHOW_MISMATCH_UI, true)) { - if (!Preferences.get(PREF_SHOWN_SELECTION_UI, false)) { - // Flip a flag to indicate that we interrupted startup with an interactive prompt -@@ -2126,6 +2122,9 @@ this.XPIProvider = { - flushCaches = true; - } - } -+ } else { -+ // For new profiles we will never need to show the add-on selection UI -+ Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true); - } - - if (flushCaches) { diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig index b5fc95d..1b4984c 100644 --- a/SOURCES/thunderbird-mozconfig +++ b/SOURCES/thunderbird-mozconfig @@ -1,36 +1,24 @@ mk_add_options MOZ_CO_PROJECT=mail ac_add_options --enable-application=mail -mk_add_options AUTOCONF=autoconf-2.13 - -ac_add_options --disable-cpp-exceptions ac_add_options --disable-crashreporter -ac_add_options --disable-exact-rooting -ac_add_options --disable-installer -ac_add_options --disable-javaxpcom ac_add_options --disable-libjpeg-turbo -ac_add_options --disable-mochitest ac_add_options --disable-necko-wifi ac_add_options --disable-strip ac_add_options --disable-tests ac_add_options --disable-updater -ac_add_options --disable-xprint ac_add_options --enable-calendar -ac_add_options --enable-canvas ac_add_options --enable-default-toolkit=cairo-gtk2 -ac_add_options --enable-libnotify -ac_add_options --enable-pango ac_add_options --enable-release ac_add_options --enable-safe-browsing -ac_add_options --enable-skia ac_add_options --enable-startup-notification -ac_add_options --enable-svg -ac_add_options --enable-xinerama ac_add_options --libdir="$LIBDIR" ac_add_options --prefix="$PREFIX" ac_add_options --with-l10n-base=../../l10n-merged ac_add_options --without-system-libvpx ac_add_options --with-pthreads ac_add_options --with-system-zlib +ac_add_options --enable-system-hunspell +ac_add_options --with-system-jpeg export BUILD_OFFICIAL=1 export CFLAGS="$CFLAGS -gdwarf-2" export CXXFLAGS="$CXXFLAGS -gdwarf-2" diff --git a/SOURCES/thunderbird-open-browser.sh b/SOURCES/thunderbird-open-browser.sh deleted file mode 100644 index c9cefb4..0000000 --- a/SOURCES/thunderbird-open-browser.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -## Copyright (C) 2004 Warren Togami -## Contributors: David Hill -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# -# open-browser.sh for MozillaThunderbird -# Release 5 -# -# This script is called by MozillaThunderbird in order to launch the web -# browser specified in gconf key /desktop/gnome/url-handlers/http/command -# - -# Exit with Error Message -function error_exit() { - echo "$1" - if [ -a /usr/bin/zenity ]; then - /usr/bin/zenity --error --text="$1" - else - xmessage "$1" & - fi - exit 1 -} - -# No URL specified so set to blank -url=$1 -if [ -z $url ]; then - url=about:blank -fi - -# Use xdg-open if it exists (Gnome 2.6+ only) -if [ -f /usr/bin/xdg-open ]; then - OUTPUT="$(/usr/bin/xdg-open "$url" 2>&1)" - if [ $? -ne 0 ]; then - error_exit "$OUTPUT" - fi - exit 0 -fi - -# Pull key from gconf, remove %s or "%s", trim leading & trailing spaces -GCONF=$(gconftool-2 -g /desktop/gnome/url-handlers/http/command 2>/dev/null | sed -e 's/%s//; s/\"\"//; s/^\ *//; s/\ *$//') -NEEDTERM=$(gconftool-2 -g /desktop/gnome/url-handlers/http/need-terminal 2>/dev/null | sed -e 's/^\ *//; s/\ *$//') - -# Check if browser really exists -which $GCONF 2> /dev/null > /dev/null -if [ $? -ne 0 ]; then - error_exit "ERROR: The browser $GCONF specified in Preferences -> Preferred Applications does not exist." -fi - -# Check if text-mode browser -if [ "$NEEDTERM" == "true" ]; then - PREFTERM=$(gconftool-2 -g /desktop/gnome/applications/terminal/exec 2>/dev/null | sed -e 's/^\ *//; s/\ *$//') - TERMARGS=$(gconftool-2 -g /desktop/gnome/applications/terminal/exec_arg 2>/dev/null | sed -e 's/^\ *//; s/\ *$//') - # Check if terminal exists - which $PREFTERM 2> /dev/null > /dev/null - if [ $? -ne 0 ]; then - error_exit "ERROR: The terminal $GCONF specified in Preferences -> Preferred Applications does not exist." - fi - # Execute - exec $PREFTERM $TERMARGS $GCONF "$url" -fi - -exec $GCONF "$url" - diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.el5 b/SOURCES/thunderbird-redhat-default-prefs.js.el5 deleted file mode 100644 index ac28b82..0000000 --- a/SOURCES/thunderbird-redhat-default-prefs.js.el5 +++ /dev/null @@ -1,27 +0,0 @@ -pref("app.update.enabled", false); -pref("app.update.autoInstallEnabled", false); -# Allow users to set custom colors -# pref("browser.display.use_system_colors", true); -pref("general.useragent.vendor", "CentOS"); -pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); -pref("intl.locale.matchOS", true); -pref("mail.shell.checkDefaultClient", false); -pref("toolkit.networkmanager.disable", false); - -# Make hyperlinks work -pref("network.protocol-handler.app.http", "COMMAND"); -pref("network.protocol-handler.app.https", "COMMAND"); -pref("network.protocol-handler.app.ftp", "COMMAND"); - -# Disable global indexing by default -pref("mailnews.database.global.indexer.enabled", false); - -# Do not switch to Smart Folders after upgrade to 3.0b4 -pref("mail.folder.views.version", "1") - -/* Workaround for rhbz#1134876 */ -pref("javascript.options.baselinejit", false); -/* Workaround for rhbz#1110291 */ -pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); -/* Workaround for mozbz#1063315 */ -pref("security.use_mozillapkix_verification", false); diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.el6 b/SOURCES/thunderbird-redhat-default-prefs.js.el6 deleted file mode 100644 index 013aa21..0000000 --- a/SOURCES/thunderbird-redhat-default-prefs.js.el6 +++ /dev/null @@ -1,28 +0,0 @@ -pref("app.update.enabled", false); -pref("app.update.autoInstallEnabled", false); -# Allow users to set custom colors -# pref("browser.display.use_system_colors", true); -pref("general.useragent.vendor", "CentOS"); -pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); -pref("intl.locale.matchOS", true); -pref("mail.shell.checkDefaultClient", false); -pref("toolkit.networkmanager.disable", false); -pref("offline.autoDetect", true); - -# Disable global indexing by default -pref("mailnews.database.global.indexer.enabled", false); - -# Do not switch to Smart Folders after upgrade to 3.0b4 -pref("mail.folder.views.version", "1") -pref("extensions.shownSelectionUI", true); -pref("extensions.autoDisableScope", 0); - -# For rhbz#1024232 -pref("ui.SpellCheckerUnderlineStyle", 1); - -/* Workaround for rhbz#1134876 */ -pref("javascript.options.baselinejit", false); -/* Workaround for rhbz#1110291 */ -pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); -/* Workaround for mozbz#1063315 */ -pref("security.use_mozillapkix_verification", false); diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.el7 b/SOURCES/thunderbird-redhat-default-prefs.js.el7 deleted file mode 100644 index 013aa21..0000000 --- a/SOURCES/thunderbird-redhat-default-prefs.js.el7 +++ /dev/null @@ -1,28 +0,0 @@ -pref("app.update.enabled", false); -pref("app.update.autoInstallEnabled", false); -# Allow users to set custom colors -# pref("browser.display.use_system_colors", true); -pref("general.useragent.vendor", "CentOS"); -pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); -pref("intl.locale.matchOS", true); -pref("mail.shell.checkDefaultClient", false); -pref("toolkit.networkmanager.disable", false); -pref("offline.autoDetect", true); - -# Disable global indexing by default -pref("mailnews.database.global.indexer.enabled", false); - -# Do not switch to Smart Folders after upgrade to 3.0b4 -pref("mail.folder.views.version", "1") -pref("extensions.shownSelectionUI", true); -pref("extensions.autoDisableScope", 0); - -# For rhbz#1024232 -pref("ui.SpellCheckerUnderlineStyle", 1); - -/* Workaround for rhbz#1134876 */ -pref("javascript.options.baselinejit", false); -/* Workaround for rhbz#1110291 */ -pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); -/* Workaround for mozbz#1063315 */ -pref("security.use_mozillapkix_verification", false); diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 b/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 new file mode 100644 index 0000000..af23193 --- /dev/null +++ b/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 @@ -0,0 +1,28 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +# Allow users to set custom colors +# pref("browser.display.use_system_colors", true); +pref("general.useragent.vendor", "Red Hat"); +pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); +pref("intl.locale.matchOS", true); +pref("mail.shell.checkDefaultClient", false); +pref("toolkit.networkmanager.disable", false); +pref("offline.autoDetect", true); + +# Disable global indexing by default +pref("mailnews.database.global.indexer.enabled", false); + +# Do not switch to Smart Folders after upgrade to 3.0b4 +pref("mail.folder.views.version", "1") +pref("extensions.shownSelectionUI", true); +pref("extensions.autoDisableScope", 0); + +# For rhbz#1024232 +pref("ui.SpellCheckerUnderlineStyle", 1); + +/* Workaround for rhbz#1134876 */ +pref("javascript.options.baselinejit", false); +/* Workaround for rhbz#1110291 */ +pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); +/* Workaround for mozbz#1063315 */ +pref("security.use_mozillapkix_verification", false); diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 new file mode 100644 index 0000000..af23193 --- /dev/null +++ b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 @@ -0,0 +1,28 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +# Allow users to set custom colors +# pref("browser.display.use_system_colors", true); +pref("general.useragent.vendor", "Red Hat"); +pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); +pref("intl.locale.matchOS", true); +pref("mail.shell.checkDefaultClient", false); +pref("toolkit.networkmanager.disable", false); +pref("offline.autoDetect", true); + +# Disable global indexing by default +pref("mailnews.database.global.indexer.enabled", false); + +# Do not switch to Smart Folders after upgrade to 3.0b4 +pref("mail.folder.views.version", "1") +pref("extensions.shownSelectionUI", true); +pref("extensions.autoDisableScope", 0); + +# For rhbz#1024232 +pref("ui.SpellCheckerUnderlineStyle", 1); + +/* Workaround for rhbz#1134876 */ +pref("javascript.options.baselinejit", false); +/* Workaround for rhbz#1110291 */ +pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); +/* Workaround for mozbz#1063315 */ +pref("security.use_mozillapkix_verification", false); diff --git a/SOURCES/thunderbird.sh.in.rhel5 b/SOURCES/thunderbird.sh.in.rhel5 deleted file mode 100644 index 940b3aa..0000000 --- a/SOURCES/thunderbird.sh.in.rhel5 +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/sh -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): -# - -## -## Usage: -## -## $ thunderbird -## -## This script is meant to run a mozilla program from the mozilla -## rpm installation. -## -## The script will setup all the environment voodoo needed to make -## mozilla work. - -cmdname=`basename $0` - -# BEAST fix -NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1} -export NSS_SSL_CBC_RANDOM_IV - -## -## Variables -## -MOZ_ARCH=$(uname -m) -case $MOZ_ARCH in - x86_64 | s390x | sparc64) - MOZ_LIB_DIR="/usr/lib64" - SECONDARY_LIB_DIR="/usr/lib" - ;; - * ) - MOZ_LIB_DIR="/usr/lib" - SECONDARY_LIB_DIR="/usr/lib64" - ;; -esac - -if [ ! -x $MOZ_LIB_DIR/thunderbird/thunderbird ]; then - if [ ! -x $SECONDARY_LIB_DIR/thunderbird/thunderbird ]; then - echo "Error: $MOZ_LIB_DIR/thunderbird/thunderbird not found" - if [ -d $SECONDARY_LIB_DIR ]; then - echo " $SECONDARY_LIB_DIR/thunderbird/thunderbird not found" - fi - exit 1 - fi - MOZ_LIB_DIR="$SECONDARY_LIB_DIR" -fi - -MOZ_DIST_BIN="$MOZ_LIB_DIR/thunderbird" -MOZ_PROGRAM="$MOZ_DIST_BIN/thunderbird" -MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks" -MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{3550f703-e582-4d05-9a08-453d09bdfdc6}" - -## -## Set MOZ_ENABLE_PANGO is no longer used because Pango is enabled by default -## you may use MOZ_DISABLE_PANGO=1 to force disabling of pango -## -#MOZ_DISABLE_PANGO=1 -#export MOZ_DISABLE_PANGO - -## -## Set MOZ_APP_LAUNCHER for gnome-session -## -export MOZ_APP_LAUNCHER="/usr/bin/thunderbird" - -## -## Disable the GNOME crash dialog, Moz has it's own -## -GNOME_DISABLE_CRASH_DIALOG=1 -export GNOME_DISABLE_CRASH_DIALOG - -## -## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1 -## in your environment before launching Firefox. -## -# -# MOZ_DISABLE_LANGPACKS=1 -# export MOZ_DISABLE_LANGPACKS -# - -## -## Automatically installed langpacks are tracked by .fedora-langpack-install -## config file. -## -FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install" - -# MOZ_DISABLE_LANGPACKS disables language packs completely -MOZILLA_DOWN=0 -if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then - pidof thunderbird > /dev/null 2>&1 - MOZILLA_DOWN=$? -fi - -# Modify language pack configuration only when thunderbird is not running -# and language packs are not disabled -if [ $MOZILLA_DOWN -ne 0 ]; then - - # Clear already installed langpacks - mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR - if [ -f $FEDORA_LANGPACK_CONFIG ]; then - rm `cat $FEDORA_LANGPACK_CONFIG` > /dev/null 2>&1 - rm $FEDORA_LANGPACK_CONFIG > /dev/null 2>&1 - fi - - # Get locale from system - CURRENT_LOCALE=$LC_ALL - CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES} - CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG} - - # Try without a local variant first, then with a local variant - # So that pt-BR doesn't try to use pt for example - SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"` - MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"` - - function create_langpack_link() { - local language=$* - local langpack=langpack-${language}@thunderbird.mozilla.org.xpi - if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then - rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack - ln -s $MOZ_LANGPACKS_DIR/$langpack \ - $MOZ_EXTENSIONS_PROFILE_DIR/$langpack - echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG - return 0 - fi - return 1 - } - - create_langpack_link $SHORTMOZLOCALE || create_langpack_link $MOZLOCALE || true -fi - -exec $MOZ_PROGRAM "$@" diff --git a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch index fe404ca..d0c3d8c 100644 --- a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch +++ b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch @@ -1,12 +1,12 @@ -diff -up xulrunner-24.0/mozilla-release/memory/mozjemalloc/jemalloc.c.jemalloc-ppc xulrunner-24.0/mozilla-release/memory/mozjemalloc/jemalloc.c ---- xulrunner-24.0/mozilla-release/memory/mozjemalloc/jemalloc.c.jemalloc-ppc 2013-09-11 01:15:18.000000000 +0200 -+++ xulrunner-24.0/mozilla-release/memory/mozjemalloc/jemalloc.c 2013-09-13 13:36:34.171680919 +0200 -@@ -1104,7 +1104,7 @@ static unsigned ncpus; +diff -up mozilla-aurora/memory/mozjemalloc/jemalloc.c.jemalloc-ppc.patch mozilla-aurora/memory/mozjemalloc/jemalloc.c +--- mozilla-aurora/memory/mozjemalloc/jemalloc.c.jemalloc-ppc.patch 2016-11-18 08:56:32.242742746 +0100 ++++ mozilla-aurora/memory/mozjemalloc/jemalloc.c 2016-11-18 08:59:51.809071876 +0100 +@@ -1096,7 +1096,7 @@ static const bool config_recycle = false * controlling the malloc behavior are defined as compile-time constants * for best performance and cannot be altered at runtime. */ --#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) -+#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !(defined(__powerpc__)) +-#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__) ++#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__) && !defined(__powerpc__) #define MALLOC_STATIC_SIZES 1 #endif diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec index d14bd30..7dd7bdd 100644 --- a/SPECS/thunderbird.spec +++ b/SPECS/thunderbird.spec @@ -1,8 +1,6 @@ - -# FIXME: HAVE TO USE SYSTEM NSS IN FINAL RELEASE!!! %define system_nss 1 -%global nspr_version 4.11.0 -%global nss_version 3.21.0 +%global nspr_version 4.13.1 +%global nss_version 3.28.2 %define system_sqlite 0 %define sqlite_version 3.8.4.2 %define system_ffi 1 @@ -12,15 +10,10 @@ %define python_version 2.7.8 %define use_bundled_gcc 0 %define gcc_version 4.8.2-16 -%define enable_gstreamer 0 %define system_cairo 0 %define cairo_version 1.10.2 %define freetype_version 2.1.9 -%define system_jpeg 1 -%define system_gio 1 -%define system_hunspell 1 %define system_libatomic 0 -%define use_baselinejit 1 %define official_branding 1 %define libnotify_version 0.4 %define debug_build 0 @@ -47,31 +40,20 @@ %define use_bundled_gcc 1 %define use_bundled_yasm 1 %define system_ffi 0 -%define enable_gstreamer 0 %define use_bundled_binutils 1 %endif -# RHEL5 -%if 0%{?rhel} == 5 -%define use_bundled_python 1 -%define use_bundled_gcc 1 -%define use_bundled_yasm 1 -%define system_ffi 0 -%define enable_gstreamer 0 -%define use_bundled_binutils 1 -%define system_jpeg 0 -%define system_gio 0 -%define system_hunspell 0 -%define enable_gnomevfs 1 -# ppc and ia64 no longer supported (rhbz#1214863, rhbz#1214865) -ExcludeArch: ppc ia64 -%define system_libatomic 1 -%endif - # Require libatomic for ppc %ifarch ppc %define system_libatomic 1 %endif +# Big endian platforms +%ifarch ppc ppc64 s390 s390x +# Javascript Intl API is not supported on big endian platforms right now: +# https://bugzilla.mozilla.org/show_bug.cgi?id=1322212 +%define with_intl_api 1 +%define big_endian 1 +%endif # ============================================================================ @@ -92,22 +74,19 @@ ExcludeArch: ppc ia64 Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 45.8.0 +Version: 52.1.0 Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet -%if 0%{?rhel} == 5 -ExcludeArch: ppc ppc64 ia64 s390 s390x -%endif -%define tarballdir thunderbird-45.8.0 +%define tarballdir thunderbird-52.1.0 %define objdir objdir # From ftp://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?ext_version}/source Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz %if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}%{?ext_version}-20170307.tar.xz +Source1: thunderbird-langpacks-%{version}%{?ext_version}-20170502.tar.xz %endif # Locales for lightning Source2: l10n-lightning-%{version}.tar.xz @@ -117,18 +96,15 @@ Source10: thunderbird-mozconfig Source11: thunderbird-mozconfig-branded Source20: thunderbird.desktop Source21: thunderbird.sh.in -Source30: thunderbird-open-browser.sh Source100: find-external-requires Source200: https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz Source300: gcc48-%{gcc_version}.el5.src.rpm Source301: yasm-1.2.0-3.el5.src.rpm Source302: devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm -Source500: thunderbird.sh.in.rhel5 -Source501: thunderbird-redhat-default-prefs.js.el5 Source600: thunderbird.sh.in.rhel6 -Source601: thunderbird-redhat-default-prefs.js.el6 +Source601: thunderbird-redhat-default-prefs.js.rhel6 Source700: thunderbird.sh.in.rhel7 -Source701: thunderbird-redhat-default-prefs.js.el7 +Source701: thunderbird-redhat-default-prefs.js.rhel7 # Mozilla (XULRunner) patches Patch0: firefox-install-dir.patch @@ -137,40 +113,31 @@ Patch0: firefox-install-dir.patch Patch5: xulrunner-24.0-jemalloc-ppc.patch Patch6: webrtc-arch-cpu.patch Patch8: firefox-ppc64le.patch -Patch16: mozilla-1253216-disable-ion.patch -Patch17: build-nss.patch +Patch9: build-s390-missing-include.patch +Patch20: build-s390-atomic.patch +Patch21: build-icu-big-endian.patch +Patch22: build-missing-getrandom.patch +Patch23: build-nss-version.patch +Patch24: build-nss-prbool.patch # RHEL patches Patch103: rhbz-966424.patch -Patch109: aarch64-fix-skia.patch Patch110: mozilla-1170092-etc-conf.patch Patch111: rhbz-1173156.patch -Patch112: rhbz-1150082.patch +Patch112: mozilla-256180.patch +Patch113: rhbz-1414535.patch +Patch114: rhbz-1423012.patch # Upstream patches -Patch201: mozilla-1005535.patch # Kaie's patch, we'll most likely need this one Patch202: mozilla-1152515.patch - -# RHEL5 patches -Patch500: build-el5-build-id.patch -Patch501: build-el5-sandbox.patch -Patch502: build-el5-gtk2-2.10.patch -Patch503: build-el5-xlib-header.patch -Patch504: build-el5-rt-tgsigqueueinfo.patch -Patch505: build-el5-rapl.patch -Patch506: build-el5-fontconfig.patch -Patch507: build-el5-stdint.patch -Patch508: build-el5-nss.patch -Patch509: mozilla-694870-backout.patch -Patch510: mozilla-1134537-delete-nsgnomevfsservice.patch -Patch511: mozilla-1134537-only-support-gio-in-nsioservice.patch -Patch512: mozilla-1134537-delete-gnomevfs-extension.patch +Patch203: mozilla-1158578-recursion-fix.patch # Thunderbird patches Patch1000: thunderbird-objdir.patch Patch1001: lightning-bad-langs.patch Patch1002: thunderbird-enable-addons.patch +Patch1003: build-fix-dupes.patch # --------------------------------------------------- BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) @@ -222,17 +189,9 @@ Requires: sqlite >= %{sqlite_build_version} BuildRequires: libffi-devel >= %{ffi_version} Requires: libffi >= %{ffi_version} %endif -%if %{?enable_gstreamer} -BuildRequires: gstreamer1-devel -BuildRequires: gstreamer1-plugins-base-devel -%endif BuildRequires: libpng-devel -%if %{?system_jpeg} BuildRequires: libjpeg-devel -%endif -%if %{?system_hunspell} BuildRequires: hunspell-devel -%endif %if %{system_libatomic} BuildRequires: libatomic Requires: libatomic @@ -256,13 +215,6 @@ Requires: liberation-fonts-common Requires: liberation-sans-fonts %endif -# RHEL5 requires -%if 0%{?rhel} == 5 -BuildRequires: libXcomposite-devel -BuildRequires: libXdamage-devel -BuildRequires: xorg-x11-proto-devel -%endif - Obsoletes: thunderbird-lightning Obsoletes: thunderbird-lightning-gdata %if %{use_bundled_python} @@ -399,46 +351,38 @@ cd mozilla # Build patches # We have to keep original patch backup extension to go thru configure without problems with tests %patch0 -p1 -b .orig -%patch5 -p2 -b .jemalloc-ppc.patch +%patch5 -p1 -b .jemalloc-ppc.patch %patch6 -p1 -b .webrtc-arch-cpu %patch8 -p2 -b .ppc64le -%patch16 -p2 -b .moz-1253216-disable-ion -%patch17 -p1 -b .build-nss +%patch9 -p1 -b .s390-missing-include +%patch20 -p1 -b .s390-atomic +%patch22 -p1 -b .missing-getrandom +%patch23 -p1 -b .nss-version +%patch24 -p1 -b .nss-prbool # RPM specific patches %patch103 -p1 -b .rhbz-966424 -%patch109 -p1 -b .aarch64 %patch110 -p1 -b .moz-1170092-etc-conf %patch111 -p2 -b .rhbz-1173156 -%patch112 -p1 -b .rhbz-1150082 +%patch112 -p1 -b .mozbz-256180 +%patch113 -p1 -b .rhbz-1414535 +%patch114 -p1 -b .rhbz-1423012 # Upstream patches -%patch201 -p1 -b .mozbz-1005535 -# FIXME: will require this?: by kai %patch202 -p1 -b .mozbz-1152515 - -# RHEL5 only patches -%if 0%{?rhel} == 5 -%patch500 -p1 -b .gnu-build-id -%patch501 -p1 -b .build-sandbox -%patch502 -p1 -b .build-gtk2 -%patch503 -p1 -b .build-xlib-swap -%patch504 -p1 -b .build-rt-tgsigqueueinfo -%patch505 -p1 -b .build-el5-rapl -%patch506 -p1 -b .build-el5-fontconfig -%patch507 -p1 -b .build-el5-stdint -%patch508 -p1 -b .build-el5-nss -%patch509 -p2 -b .moz-694870-backout -%patch510 -p2 -b .moz-1134537-delete-nsgnomevfsservice -%patch511 -p1 -R -b .moz-1134537-only-support-gio-in-nsioservice -%patch512 -p2 -b .moz-1134537-gnomevfsservice +# Patch for big endian platforms only +%if 0%{?big_endian} +%patch21 -p1 -b .big-endian-icu %endif + cd .. +%patch203 -p1 -b .mozbz-1158578-recursion-fix %patch1000 -p2 -b .objdir %patch1001 -p1 -b .badlangs %patch1002 -p1 -b .addons +%patch1003 -p1 -b .fix-dupes #%patch301 -p1 -b .ppc64le-build # fixme? @@ -478,24 +422,11 @@ function add_to_mozconfig() { add_to_mozconfig "without-system-nss" %endif -%if %{?enable_gstreamer} - add_to_mozconfig "enable-gstreamer=1.0" -%else - add_to_mozconfig "disable-gstreamer" -%endif - -%if %{?system_jpeg} - add_to_mozconfig "with-system-jpeg" -%else - add_to_mozconfig "without-system-jpeg" -%endif -%if %{?system_hunspell} - add_to_mozconfig "enable-system-hunspell" -%endif +add_to_mozconfig "with-system-jpeg" +add_to_mozconfig "enable-system-hunspell" # RHEL 7 mozconfig changes: %if 0%{?rhel} >= 6 - add_to_mozconfig "enable-libnotify" add_to_mozconfig "enable-startup-notification" add_to_mozconfig "enable-jemalloc" %endif @@ -504,22 +435,19 @@ function add_to_mozconfig() { %if 0%{?rhel} == 6 # Disable dbus, because we're unable to build with its support in brew add_to_mozconfig "disable-dbus" -%endif - -%if 0%{?rhel} == 5 - add_to_mozconfig "disable-pulseaudio" + # ctypes require system libffi for these platforms and RHEL6 does not have libffi >= 3.0.9 available + %ifarch ppc64 ppc64le ppc s390 s390x + add_to_mozconfig "disable-ctypes" + %endif %endif %ifarch aarch64 add_to_mozconfig "disable-ion" %endif -%if %{system_gio} - add_to_mozconfig "enable-gio" - add_to_mozconfig "disable-gnomevfs" -%else - add_to_mozconfig "disable-gio" - add_to_mozconfig "enable-gnomevfs" +add_to_mozconfig "enable-gio" +%ifarch aarch64 ppc ppc64 s390 s390x + add_to_mozconfig "disable-skia" %endif # Debug build flags @@ -531,6 +459,8 @@ function add_to_mozconfig() { add_to_mozconfig "enable-optimize" %endif +add_to_mozconfig "with-intl-api" + #FIXME RTTI?? RHEL5/6 # ac_add_options --enable-cpp-rtti # RHEL7: ac_add_options --with-system-bz2 @@ -607,17 +537,7 @@ function build_bundled_package() { # Install local GCC if needed # ====================================== %if %{use_bundled_gcc} - %if %{rhel} == 5 - %ifarch ppc64 - export STRIP="/bin/true" - %endif - %endif build_bundled_package 'gcc48-%{gcc_version}*.rpm' 'gcc48-*.rpm' '%{SOURCE300}' - %if %{rhel} == 5 - %ifarch ppc64 - unset STRIP - %endif - %endif export CXX=g++ %endif @@ -655,6 +575,23 @@ function build_bundled_package() { echo "Building Thunderbird"; echo "===============================" cd %{tarballdir} +# Hack for missing shell when building in brew on RHEL6 and RHEL5 +%if 0%{?rhel} <= 6 +export SHELL=/bin/sh +%endif + + +echo "Generate big endian version of config/external/icu/data/icud58l.dat" +%if 0%{?big_endian} + echo "Generate big endian version of config/external/icu/data/icud58l.dat" + cd mozilla + ./mach python intl/icu_sources_data.py . + ls -l config/external/icu/data + rm -f config/external/icu/data/icudt*l.dat + cd .. +%endif + + # 1. Mozilla builds with -Wall with exception of a few warnings which show up # everywhere in the code; so, don't override that. # 2. -Werror=format-security causes build failures when -Wno-format is explicitly given @@ -681,16 +618,6 @@ MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -Wl,--no-keep-memory -Wl,--reduce-memory-overhea %endif %endif -%if 0%{?rhel} == 5 - %if %{system_libatomic} - # Force to use ld.bfd linker instead of ld.gold - MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fuse-ld=bfd -l:libatomic.so.1" - %endif - %ifarch i386 i686 - MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-march=i386/-march=i586/') - %endif -%endif - %if %{?debug_build} MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif @@ -733,31 +660,24 @@ cd - #=============================================================================== %install +# Hack for missing shell when building in brew on RHEL6 and RHEL5 +%if 0%{?rhel} <= 6 +export SHELL=/bin/sh +%endif + cd %{tarballdir} %{__rm} -rf $RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT make -C objdir install -%if 0%{?rhel} == 5 -desktop-file-install --vendor mozilla \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - --add-category Network \ - --add-category Email \ - %{SOURCE20} -%else desktop-file-install \ --dir $RPM_BUILD_ROOT%{_datadir}/applications \ %{SOURCE20} -%endif # Set up the thunderbird start script, unfortunatelly it is different for each RHEL rm -rf $RPM_BUILD_ROOT%{_bindir}/thunderbird THUNDERBIRD_SH_SOURCE=%{SOURCE700} THUNDERBIRD_PREF_SOURCE=%{SOURCE701} -%if 0%{?rhel} == 5 - THUNDERBIRD_SH_SOURCE=%{SOURCE500} - THUNDERBIRD_PREF_SOURCE=%{SOURCE501} -%endif %if 0%{?rhel} == 6 THUNDERBIRD_SH_SOURCE=%{SOURCE600} THUNDERBIRD_PREF_SOURCE=%{SOURCE601} @@ -773,13 +693,6 @@ cp $THUNDERBIRD_SH_SOURCE $RPM_BUILD_ROOT%{_bindir}/thunderbird %{__install} -D $RPM_BUILD_ROOT/rh-default-prefs $RPM_BUILD_ROOT/%{mozappdir}/defaults/pref/all-redhat.js %{__rm} $RPM_BUILD_ROOT/rh-default-prefs -# Hyperlink opening script for rhel5 -%if 0%{?rhel} == 5 - install -Dm755 %{SOURCE30} $RPM_BUILD_ROOT/%{mozappdir}/open-browser.sh - %{__sed} -i -e 's|LIBDIR|%{_libdir}|g' $RPM_BUILD_ROOT/%{mozappdir}/open-browser.sh -%endif - - # install icons for s in 16 22 24 32 48 256; do %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps @@ -854,10 +767,8 @@ install -c -m 644 LICENSE $RPM_BUILD_ROOT%{mozappdir} cd - # Use the system dictionaries for system hunspell -%if %{system_hunspell} - %{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries - ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries -%endif +%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries # ghost files %{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components @@ -897,11 +808,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %files -f %{name}.lang %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/thunderbird -%if 0%{?rhel} == 5 -%attr(644,root,root) %{_datadir}/applications/mozilla-thunderbird.desktop -%else %attr(644,root,root) %{_datadir}/applications/thunderbird.desktop -%endif %dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id} %dir %{_libdir}/mozilla/extensions/%{thunderbird_app_id} %dir %{mozappdir} @@ -940,15 +847,23 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %exclude %{_includedir}/%{name}-%{version} %{mozappdir}/dependentlibs.list %{mozappdir}/distribution -%if 0%{?rhel} < 6 -%{mozappdir}/open-browser.sh +%if 0%{?big_endian} +%{mozappdir}/icudt58b.dat +%else +%{mozappdir}/icudt58l.dat %endif +%{mozappdir}/chrome.manifest +%{mozappdir}/fonts/EmojiOneMozilla.ttf + #=============================================================================== %changelog -* Wed Mar 15 2017 Johnny Hughes - 45.8.0-1 -- Manual CentOS Debranding +* Tue May 2 2017 Jan Horak - 52.1.0-1 +- Update to 52.1.0 + +* Thu Apr 13 2017 Jan Horak - 52.0.1-1 +- Update to 52.0.1 * Tue Mar 7 2017 Jan Horak - 45.8.0-1 - Update to 45.8.0