summaryrefslogtreecommitdiffstats
path: root/build-aux/osx/build/modulesets/patches
diff options
context:
space:
mode:
Diffstat (limited to 'build-aux/osx/build/modulesets/patches')
-rw-r--r--build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch20
-rw-r--r--build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch20
-rw-r--r--build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch368
-rw-r--r--build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch97
-rw-r--r--build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch40
-rw-r--r--build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch63
-rw-r--r--build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch63
-rw-r--r--build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch28
-rw-r--r--build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch20
-rw-r--r--build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch274
-rw-r--r--build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch39
-rw-r--r--build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch5
-rw-r--r--build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch39
-rw-r--r--build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch28
-rw-r--r--build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch97
-rw-r--r--build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch33
-rw-r--r--build-aux/osx/build/modulesets/patches/readline/readline62-00146
-rw-r--r--build-aux/osx/build/modulesets/patches/readline/readline62-00257
-rw-r--r--build-aux/osx/build/modulesets/patches/readline/readline62-00376
-rw-r--r--build-aux/osx/build/modulesets/patches/readline/readline62-004108
-rw-r--r--build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch42
21 files changed, 1563 insertions, 0 deletions
diff --git a/build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch b/build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch
new file mode 100644
index 0000000..398aa1d
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch
@@ -0,0 +1,20 @@
+--- src/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
++++ src/dbinc/atomic.h.change 2013-03-12 14:06:35.000000000 -0400
+@@ -144,7 +144,7 @@
+ #define atomic_inc(env, p) __atomic_inc(p)
+ #define atomic_dec(env, p) __atomic_dec(p)
+ #define atomic_compare_exchange(env, p, o, n) \
+- __atomic_compare_exchange((p), (o), (n))
++ __atomic_compare_exchange_db((p), (o), (n))
+ static inline int __atomic_inc(db_atomic_t *p)
+ {
+ int temp;
+@@ -176,7 +176,7 @@
+ * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
+ * which configure could be changed to use.
+ */
+-static inline int __atomic_compare_exchange(
++static inline int __atomic_compare_exchange_db(
+ db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
+ {
+ atomic_value_t was;
diff --git a/build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch b/build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch
new file mode 100644
index 0000000..398aa1d
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch
@@ -0,0 +1,20 @@
+--- src/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
++++ src/dbinc/atomic.h.change 2013-03-12 14:06:35.000000000 -0400
+@@ -144,7 +144,7 @@
+ #define atomic_inc(env, p) __atomic_inc(p)
+ #define atomic_dec(env, p) __atomic_dec(p)
+ #define atomic_compare_exchange(env, p, o, n) \
+- __atomic_compare_exchange((p), (o), (n))
++ __atomic_compare_exchange_db((p), (o), (n))
+ static inline int __atomic_inc(db_atomic_t *p)
+ {
+ int temp;
+@@ -176,7 +176,7 @@
+ * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
+ * which configure could be changed to use.
+ */
+-static inline int __atomic_compare_exchange(
++static inline int __atomic_compare_exchange_db(
+ db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
+ {
+ atomic_value_t was;
diff --git a/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch
new file mode 100644
index 0000000..f6f1f65
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch
@@ -0,0 +1,368 @@
+--- a/configure.in (revision 30591)
++++ b/configure.in (working copy)
+@@ -33,4 +33,5 @@
+ AC_PROG_CC
+ AC_PROG_CPP
++AC_PROG_OBJC
+ AC_PROG_INSTALL
+ AC_PROG_LN_S
+--- a/src/applespell/Makefile.am 2010-04-01 22:53:37.000000000 +0200
++++ b/src/applespell/Makefile.am 2012-01-11 22:42:13.000000000 +0100
+@@ -1,4 +1,13 @@
+-EXTRA_DIST= \
+- applespell_checker.h \
+- applespell_checker.mm \
+- AppleSpell.config
++target_lib = libenchant_applespell.la
++
++INCLUDES=-I$(top_srcdir)/src $(ENCHANT_CFLAGS) $(CC_WARN_CFLAGS) -DXP_TARGET_COCOA -xobjective-c -D_ENCHANT_BUILD=1
++
++applespell_LTLIBRARIES = $(target_lib)
++applespelldir= $(libdir)/enchant
++
++libenchant_applespell_la_LIBADD= $(ENCHANT_LIBS) -lobjc $(top_builddir)/src/libenchant.la
++libenchant_applespell_la_LDFLAGS = -module -avoid-version -no-undefined -framework Cocoa
++libenchant_applespell_la_SOURCES = applespell_provider.m
++libenchant_applespell_la_LIBTOOLFLAGS = --tag=CC
++
++libenchant_applespell_lalibdir=$(libdir)/enchant
+--- a/src/applespell/applespell_provider.m 2012-01-11 22:46:35.000000000 +0100
++++ b/src/applespell/applespell_provider.m 2012-01-11 22:39:17.000000000 +0100
+@@ -0,0 +1,337 @@
++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++/* enchant
++ * Copyright (C) 2004 Remi Payette
++ * Copyright (C) 2004 Francis James Franklin
++ *
++ * 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; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * 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
++ * 02110-1301, USA.
++ */
++
++#include <glib.h>
++#include <gmodule.h>
++#include <Cocoa/Cocoa.h>
++#include <AvailabilityMacros.h>
++
++#include "enchant-provider.h"
++
++#ifdef __cplusplus
++extern "C"
++{
++#endif
++
++ENCHANT_MODULE_EXPORT (EnchantProvider *)
++init_enchant_provider (void);
++
++ENCHANT_MODULE_EXPORT (void)
++configure_enchant_provider (EnchantProvider *provider, const gchar *module_dir);
++
++#ifdef __cplusplus
++}
++#endif
++
++ENCHANT_PLUGIN_DECLARE("AppleSpell")
++
++typedef struct
++{
++ NSSpellChecker *checker;
++ NSString *language;
++} Dictionary;
++
++static Dictionary *
++dictionary_new (NSSpellChecker *checker,
++ NSString *language)
++{
++ Dictionary *ret;
++
++ ret = g_slice_new (Dictionary);
++
++ ret->checker = checker;
++ ret->language = language;
++
++ return ret;
++}
++
++static void
++dictionary_free (Dictionary *dictionary)
++{
++ [dictionary->language release];
++ g_slice_free (Dictionary, dictionary);
++}
++
++static gchar **
++applespell_dict_suggest (EnchantDict *dict,
++ const gchar * const word,
++ size_t len,
++ size_t *out_n_suggs)
++{
++ NSAutoreleasePool *pool;
++ gchar **ret = NULL;
++ NSString *str;
++ Dictionary *d;
++ NSArray *words;
++ NSRange range;
++ guint i = 0;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ d = dict->user_data;
++
++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding];
++
++ range.location = 0;
++ range.length = [str length];
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5
++ words = [d->checker guessesForWordRange:range
++ inString:str
++ language:d->language
++ inSpellDocumentWithTag:0];
++#else
++ [d->checker setLanguage:d->language];
++ words = [d->checker guessesForWord:str];
++#endif
++
++ *out_n_suggs = [words count];
++
++ ret = g_new0 (gchar *, *out_n_suggs + 1);
++
++ for (i = 0; i < [words count]; ++i)
++ {
++ ret[i] = g_strdup ([[words objectAtIndex:i] UTF8String]);
++ }
++
++ [str release];
++ [pool release];
++
++ return ret;
++}
++
++static gint
++applespell_dict_check (EnchantDict *dict,
++ const gchar * const word,
++ size_t len)
++{
++ NSAutoreleasePool *pool;
++ gint result = 0;
++ NSString *str;
++ Dictionary *d;
++ NSRange range;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ d = dict->user_data;
++
++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding];
++
++ range = [d->checker checkSpellingOfString:str
++ startingAt:0
++ language:d->language
++ wrap:true
++ inSpellDocumentWithTag:0
++ wordCount:NULL];
++
++ result = range.length > 0 ? 1 : 0;
++
++ [str release];
++ [pool release];
++
++ return result;
++}
++
++static EnchantDict *
++applespell_provider_request_dict (EnchantProvider *provider,
++ const char * const tag)
++{
++ NSAutoreleasePool *pool;
++ EnchantDict *dict;
++ NSString *str;
++
++ pool = [[NSAutoreleasePool alloc] init];
++ str = [[NSString alloc] initWithUTF8String:tag];
++
++ dict = g_new0 (EnchantDict, 1);
++
++ dict->check = applespell_dict_check;
++ dict->suggest = applespell_dict_suggest;
++
++ dict->user_data = dictionary_new (provider->user_data,
++ str);
++
++ [str retain];
++
++ [pool release];
++ return dict;
++}
++
++static void
++applespell_provider_dispose_dict (EnchantProvider *provider,
++ EnchantDict *dict)
++{
++ NSAutoreleasePool *pool;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ dictionary_free (dict->user_data);
++ g_free (dict);
++
++ [pool release];
++}
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
++static gchar const *available_languages[] = {
++ "en",
++ "en_GB",
++ "en_AU",
++ "de",
++ "fr",
++ "nl",
++ "pl",
++ NULL
++};
++
++#endif
++
++static gint
++applespell_provider_dictionary_exists (EnchantProvider *provider,
++ const gchar * const tag)
++{
++ NSAutoreleasePool *pool;
++ gint result = 0;
++ NSSpellChecker *checker;
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ NSArray *languages;
++ guint i;
++#else
++ gchar const **ptr;
++#endif
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ checker = provider->user_data;
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ languages = [checker availableLanguages];
++
++ for (i = 0; i < [languages count]; ++i)
++ {
++ if (g_strcmp0 (tag, [[languages objectAtIndex:i] UTF8String]) == 0)
++ {
++ result = 1;
++ break;
++ }
++ }
++#else
++ ptr = available_languages;
++
++ while (ptr && *ptr)
++ {
++ if (g_strcmp0 (tag, *ptr) == 0)
++ {
++ result = 1;
++ break;
++ }
++ ++ptr;
++ }
++#endif
++
++ [pool release];
++
++ return result;
++}
++
++static void
++applespell_provider_dispose (EnchantProvider *provider)
++{
++ g_free (provider);
++}
++
++static const gchar *
++applespell_provider_identify (EnchantProvider *provider)
++{
++ return "AppleSpell";
++}
++
++static const gchar *
++applespell_provider_describe (EnchantProvider *provider)
++{
++ return "AppleSpell Provider";
++}
++
++static gchar **
++applespell_provider_list_dicts (EnchantProvider *provider,
++ size_t *out_n_dicts)
++{
++ NSSpellChecker *checker;
++ NSAutoreleasePool *pool;
++ gchar **ret = NULL;
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ NSArray *languages;
++ guint i = 0;
++#endif
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ checker = provider->user_data;
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ languages = [checker availableLanguages];
++ *out_n_dicts = [languages count];
++
++ ret = g_new0 (gchar *, *out_n_dicts + 1);
++
++ for (i = 0; i < [languages count]; ++i)
++ {
++ ret[i] = g_strdup ([[languages objectAtIndex:i] UTF8String]);
++ }
++#else
++ ret = g_strdupv ((gchar **)available_languages);
++#endif
++
++ [pool release];
++
++ return ret;
++}
++
++ENCHANT_MODULE_EXPORT (EnchantProvider *)
++init_enchant_provider (void)
++{
++ NSAutoreleasePool *pool;
++ EnchantProvider *provider;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ provider = g_new0 (EnchantProvider, 1);
++
++ provider->dispose = applespell_provider_dispose;
++ provider->request_dict = applespell_provider_request_dict;
++ provider->dispose_dict = applespell_provider_dispose_dict;
++ provider->dictionary_exists = applespell_provider_dictionary_exists;
++ provider->identify = applespell_provider_identify;
++ provider->describe = applespell_provider_describe;
++ provider->list_dicts = applespell_provider_list_dicts;
++
++ provider->user_data = [NSSpellChecker sharedSpellChecker];
++
++ [pool release];
++
++ return provider;
++}
++
++ENCHANT_MODULE_EXPORT (void)
++configure_enchant_provider (EnchantProvider *provider,
++ const gchar *module_dir)
++{
++ return;
++}
diff --git a/build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch
new file mode 100644
index 0000000..5bfba14
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch
@@ -0,0 +1,97 @@
+--- a/src/ispell/ispell_checker.cpp Thu Apr 1 13:53:37 2010
++++ b/src/ispell/ispell_checker.cpp Mon Feb 24 15:35:49 2014
+@@ -162,7 +162,7 @@
+ else
+ {
+ /* convert to 8bit string and null terminate */
+- size_t len_in, len_out, result;
++ gsize len_in, len_out, result;
+ // the 8bit encodings use precomposed forms
+ char *normalizedWord = g_utf8_normalize (utf8Word, length, G_NORMALIZE_NFC);
+ char *In = normalizedWord;
+@@ -172,7 +172,7 @@
+ len_out = sizeof( szWord ) - 1;
+ result = g_iconv(m_translate_in, &In, &len_in, &Out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return false;
+ *Out = '\0';
+ }
+@@ -210,7 +210,7 @@
+ {
+ /* convert to 8bit string and null terminate */
+
+- size_t len_in, len_out, result;
++ gsize len_in, len_out, result;
+ // the 8bit encodings use precomposed forms
+ char *normalizedWord = g_utf8_normalize (utf8Word, length, G_NORMALIZE_NFC);
+ char *In = normalizedWord;
+@@ -219,7 +219,7 @@
+ len_out = sizeof( word8 ) - 1;
+ result = g_iconv(m_translate_in, &In, &len_in, &Out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return NULL;
+ *Out = '\0';
+ }
+@@ -252,13 +252,13 @@
+ {
+ /* convert to 32bit string and null terminate */
+
+- size_t len_in, len_out;
++ gsize len_in, len_out;
+ char *In = m_possibilities[c];
+ char *Out = reinterpret_cast<char *>(utf8Sugg);
+
+ len_in = l;
+ len_out = INPUTWORDLEN + MAXAFFIXLEN;
+- if ((size_t)-1 == g_iconv(m_translate_out, &In, &len_in, &Out, &len_out)) {
++ if ((gsize)-1 == g_iconv(m_translate_out, &In, &len_in, &Out, &len_out)) {
+ *out_n_suggestions = c;
+ return sugg_arr;
+ }
+--- a/src/myspell/myspell_checker.cpp Thu Apr 1 13:53:37 2010
++++ b/src/myspell/myspell_checker.cpp Mon Feb 24 15:37:56 2014
+@@ -159,11 +159,11 @@
+ char *in = normalizedWord;
+ char word8[MAXWORDLEN + 1];
+ char *out = word8;
+- size_t len_in = strlen(in);
+- size_t len_out = sizeof( word8 ) - 1;
+- size_t result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
++ gsize len_in = strlen(in);
++ gsize len_out = sizeof( word8 ) - 1;
++ gsize result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return false;
+ *out = '\0';
+ if (myspell->spell(word8))
+@@ -185,11 +185,11 @@
+ char *in = normalizedWord;
+ char word8[MAXWORDLEN + 1];
+ char *out = word8;
+- size_t len_in = strlen(in);
+- size_t len_out = sizeof(word8) - 1;
+- size_t result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
++ gsize len_in = strlen(in);
++ gsize len_out = sizeof(word8) - 1;
++ gsize result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return NULL;
+
+ *out = '\0';
+@@ -203,7 +203,7 @@
+ len_out = MAXWORDLEN;
+ char *word = g_new0(char, len_out + 1);
+ out = reinterpret_cast<char *>(word);
+- if ((size_t)-1 == g_iconv(m_translate_out, &in, &len_in, &out, &len_out)) {
++ if ((gsize)-1 == g_iconv(m_translate_out, &in, &len_in, &out, &len_out)) {
+ for (size_t j = i; j < *nsug; j++)
+ free(sugMS[j]);
+ free(sugMS);
diff --git a/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch
new file mode 100644
index 0000000..7e56eb7
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch
@@ -0,0 +1,40 @@
+--- a/src/enchant.c 2010-04-01 22:53:37.000000000 +0200
++++ b/src/enchant.c 2014-08-26 21:32:21.000000000 +0200
+@@ -210,6 +210,13 @@
+ char * module_dir = NULL;
+ char * prefix = NULL;
+
++ const char *envdir = g_getenv ("ENCHANT_MODULES_DIR");
++
++ if (envdir != NULL && *envdir != '\0')
++ {
++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (envdir));
++ }
++
+ {
+ char* user_module_dir;
+
+@@ -239,7 +246,8 @@
+ module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir);
+
+ #if defined(ENCHANT_GLOBAL_MODULE_DIR)
+- module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
++ if (envdir == NULL || *envdir == '\0')
++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
+ #else
+ /* Dynamically locate library and search for modules relative to it. */
+ prefix = enchant_get_prefix_dir();
+@@ -278,6 +286,13 @@
+ if (ordering_dir)
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir);
+
++ const char *envdir = g_getenv ("ENCHANT_DATA_DIR");
++
++ if (envdir != NULL && *envdir != '\0')
++ {
++ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup (envdir));
++ }
++
+ /* Dynamically locate library and search for files relative to it. */
+ prefix = enchant_get_prefix_dir();
+ if(prefix)
diff --git a/build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch b/build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch
new file mode 100644
index 0000000..eda2932
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch
@@ -0,0 +1,63 @@
+
+--- a/gettext-tools/libgettextpo/string.in.h Sun Apr 25 02:22:40 2010
++++ b/gettext-tools/libgettextpo/string.in.h Tue Oct 4 14:36:31 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+ Rename module 'memxfrm' to 'amemxfrm'.
+--- a/gettext-tools/gnulib-lib/string.in.h Mon May 24 02:42:47 2010
++++ b/gettext-tools/gnulib-lib/string.in.h Tue Oct 4 14:35:46 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+--- a/gettext-runtime/gnulib-lib/string.in.h Sun Apr 25 02:20:42 2010
++++ b/gettext-runtime/gnulib-lib/string.in.h Tue Oct 4 14:34:57 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+--- a/gettext-tools/configure Sun Jun 6 13:12:20 2010
++++ b/gettext-tools/configure Tue Oct 4 16:29:27 2011
+@@ -40562,6 +40562,16 @@
+
+
+
++ ac_fn_c_check_decl "$LINENO" "stpncpy" "ac_cv_have_decl_stpncpy" "$ac_includes_default"
++if test "x$ac_cv_have_decl_stpncpy" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_STPNCPY $ac_have_decl
++_ACEOF
+
+
+
+@@ -40606,7 +40616,9 @@
+ #include <stdlib.h>
+ #include <string.h> /* for strcpy */
+ /* The stpncpy prototype is missing in <string.h> on AIX 4. */
++#if !HAVE_DECL_STPNCPY
+ extern char *stpncpy (char *dest, const char *src, size_t n);
++#endif
+ int main () {
+ const char *src = "Hello";
+ char dest[10];
diff --git a/build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch b/build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch
new file mode 100644
index 0000000..eda2932
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch
@@ -0,0 +1,63 @@
+
+--- a/gettext-tools/libgettextpo/string.in.h Sun Apr 25 02:22:40 2010
++++ b/gettext-tools/libgettextpo/string.in.h Tue Oct 4 14:36:31 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+ Rename module 'memxfrm' to 'amemxfrm'.
+--- a/gettext-tools/gnulib-lib/string.in.h Mon May 24 02:42:47 2010
++++ b/gettext-tools/gnulib-lib/string.in.h Tue Oct 4 14:35:46 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+--- a/gettext-runtime/gnulib-lib/string.in.h Sun Apr 25 02:20:42 2010
++++ b/gettext-runtime/gnulib-lib/string.in.h Tue Oct 4 14:34:57 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+--- a/gettext-tools/configure Sun Jun 6 13:12:20 2010
++++ b/gettext-tools/configure Tue Oct 4 16:29:27 2011
+@@ -40562,6 +40562,16 @@
+
+
+
++ ac_fn_c_check_decl "$LINENO" "stpncpy" "ac_cv_have_decl_stpncpy" "$ac_includes_default"
++if test "x$ac_cv_have_decl_stpncpy" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_STPNCPY $ac_have_decl
++_ACEOF
+
+
+
+@@ -40606,7 +40616,9 @@
+ #include <stdlib.h>
+ #include <string.h> /* for strcpy */
+ /* The stpncpy prototype is missing in <string.h> on AIX 4. */
++#if !HAVE_DECL_STPNCPY
+ extern char *stpncpy (char *dest, const char *src, size_t n);
++#endif
+ int main () {
+ const char *src = "Hello";
+ char dest[10];
diff --git a/build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch b/build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch
new file mode 100644
index 0000000..0e62201
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch
@@ -0,0 +1,28 @@
+From 1b21a85f1914eecc107319cb94e8c8517291599b Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Mon, 17 Feb 2014 15:51:38 -0800
+Subject: [PATCH] Bug 724590 - GSlice slab_stack corruption
+
+Dereference allocation->contention_counters before trying to take the
+address of an element.
+---
+ glib/gslice.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/glib/gslice.c b/glib/gslice.c
+index 0563d80..2c5f4fb 100644
+--- a/glib/gslice.c
++++ b/glib/gslice.c
+@@ -715,7 +715,8 @@ static ChunkLink*
+ magazine_cache_pop_magazine (guint ix,
+ gsize *countp)
+ {
+- g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
++ guint *counters = allocator->contention_counters;
++ g_mutex_lock_a (&allocator->magazine_mutex, &counters[ix]);
+ if (!allocator->magazines[ix])
+ {
+ guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
+--
+1.8.3.rc0
+
diff --git a/build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch b/build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch
new file mode 100644
index 0000000..76d2bee
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch
@@ -0,0 +1,20 @@
+diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
+index 6a40398..40f1fc0 100644
+--- a/giscanner/scannerlexer.l
++++ b/giscanner/scannerlexer.l
+@@ -108,6 +108,7 @@ stringtext ([^\\\"])|(\\.)
+ "|" { return '|'; }
+ "~" { return '~'; }
+ "!" { return '!'; }
++"@" { return '@'; }
+ "=" { return '='; }
+ "<" { return '<'; }
+ ">" { return '>'; }
+@@ -199,6 +200,7 @@ stringtext ([^\\\"])|(\\.)
+
+ "\""{stringtext}*"\"" { return STRING; }
+ "L\""{stringtext}*"\"" { return STRING; }
++"@\""{stringtext}*"\"" { return STRING; }
+
+ . { if (yytext[0]) fprintf(stderr, "%s:%d: unexpected character `%c'\n", scanner->current_filename, lineno, yytext[0]); }
+
diff --git a/build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch b/build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch
new file mode 100644
index 0000000..b0a1ef5
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch
@@ -0,0 +1,274 @@
+From dcd9ab00c64a1df63fd5fa58c2ca25efd9b3e09e Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Sat, 24 Sep 2011 18:14:09 -0700
+Subject: [PATCH 06/15] Bug 658722 - Drag and Drop sometimes stops working
+
+First, rather than assuming that there's already an event queued up if
+_gdk_quartz_drag_source_context isn't NULL, assume that it just didn't get
+cleaned up the last time it ran and abort it.
+
+This naturally requires implementing gdk_quartz_drag_abort(), so remove the
+code from [GdkQuartzNSWindow draggedImage:endedAt:operation:] and move it to
+gdkdnd_quartz.c as static void gdk_quartz_drag_end(). Implement both
+gdk_quartz_drag_drop() and gdk_quartz_drag_abort() by calling
+gdk_quartz_drag_end().
+
+Next, try to get rid of the memory cycle between gtk_drag_source_info.context
+and _gdk_quartz_drag_source_context (which carries the GtkQuartzDragSourceInfo
+struct as qdata). Replace gtk_drag_source_clear_info() by using a
+g_object_set_qdata_full() for context in gtk_drag_get_source_context, calling
+gtk_drag_source_info_destroy() as the destructor. This eliminates the need to
+queue a cleanup idle event. I use g_object_run_dispose() on
+_gtk_quartz_drag_source_context to force the deletion of the info stored as
+qdata, which in turn unrefs the info->context pointer. Ordinarily this gets
+fired off from draggedImage:endedAt:operation:, meaning that the special
+dragging CFRunLoop is complete and NSEvents are again flowing, so queuing a
+cleanup event isn't necessary. The advantage is that it can also be run from
+gdk_drag_abort, so if Gdk thinks there's a drag but CF doesn't all of the
+memory still gets cleaned up.
+---
+ gdk/quartz/GdkQuartzWindow.c | 16 +-------
+ gdk/quartz/gdkdnd-quartz.c | 35 +++++++++++++--
+ gtk/gtkdnd-quartz.c | 96 ++++++++++++++++-------------------------
+ 3 files changed, 69 insertions(+), 78 deletions(-)
+
+diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzWindow.c
+index dcd7250..20ed80e 100644
+--- a/gdk/quartz/GdkQuartzWindow.c
++++ b/gdk/quartz/GdkQuartzWindow.c
+@@ -560,21 +560,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
+
+ - (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation
+ {
+- GdkEvent event;
+-
+- g_assert (_gdk_quartz_drag_source_context != NULL);
+-
+- event.dnd.type = GDK_DROP_FINISHED;
+- event.dnd.window = g_object_ref ([[self contentView] gdkWindow]);
+- event.dnd.send_event = FALSE;
+- event.dnd.context = _gdk_quartz_drag_source_context;
+-
+- (*_gdk_event_func) (&event, _gdk_event_data);
+-
+- g_object_unref (event.dnd.window);
+-
+- g_object_unref (_gdk_quartz_drag_source_context);
+- _gdk_quartz_drag_source_context = NULL;
++ gdk_drag_drop (_gdk_quartz_drag_source_context, (guint32)g_get_real_time());
+ }
+
+ @end
+diff --git a/gdk/quartz/gdkdnd-quartz.c b/gdk/quartz/gdkdnd-quartz.c
+index bb70b71..143a8ed 100644
+--- a/gdk/quartz/gdkdnd-quartz.c
++++ b/gdk/quartz/gdkdnd-quartz.c
+@@ -111,11 +111,20 @@ GdkDragContext *
+ gdk_drag_begin (GdkWindow *window,
+ GList *targets)
+ {
+- g_assert (_gdk_quartz_drag_source_context == NULL);
++ if (_gdk_quartz_drag_source_context != NULL)
++ {
++ /* Something is amiss with the existing drag, so log a message
++ and abort it */
++ g_warning ("Drag begun with existing context; aborting the preexisting drag");
++ gdk_drag_abort (_gdk_quartz_drag_source_context,
++ (guint32)g_get_real_time ());
++ }
++
+
+ /* Create fake context */
+ _gdk_quartz_drag_source_context = gdk_drag_context_new ();
+ _gdk_quartz_drag_source_context->is_source = TRUE;
++ _gdk_quartz_drag_source_context->source_window = window;
+
+ return _gdk_quartz_drag_source_context;
+ }
+@@ -155,20 +164,36 @@ gdk_drag_find_window_for_screen (GdkDragContext *context,
+ /* FIXME: Implement */
+ }
+
++static void
++gdk_quartz_drag_end (GdkDragContext *context)
++{
++ GdkEvent event;
++
++ g_assert (context != NULL);
++ event.dnd.type = GDK_DROP_FINISHED;
++ event.dnd.window = g_object_ref (context->source_window);
++ event.dnd.send_event = FALSE;
++ event.dnd.context = context;
++
++ (*_gdk_event_func) (&event, _gdk_event_data);
++
++ g_object_run_dispose (_gdk_quartz_drag_source_context);
++ _gdk_quartz_drag_source_context = NULL;
++}
++
+ void
+ gdk_drag_drop (GdkDragContext *context,
+ guint32 time)
+ {
+- /* FIXME: Implement */
++ gdk_quartz_drag_end (context);
+ }
+
+ void
+ gdk_drag_abort (GdkDragContext *context,
+ guint32 time)
+ {
+- g_return_if_fail (context != NULL);
+-
+- /* FIXME: Implement */
++ g_warning ("Gdk-quartz-drag-drop, aborting\n");
++ gdk_quartz_drag_end (context);
+ }
+
+ void
+diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
+index 5688568..be92a22 100644
+--- a/gtk/gtkdnd-quartz.c
++++ b/gtk/gtkdnd-quartz.c
+@@ -269,6 +269,39 @@ gtk_drag_dest_info_destroy (gpointer data)
+ g_free (info);
+ }
+
++static void
++gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
++{
++ NSPasteboard *pasteboard;
++ NSAutoreleasePool *pool;
++
++ if (info->icon_pixbuf)
++ g_object_unref (info->icon_pixbuf);
++
++ g_signal_emit_by_name (info->widget, "drag-end",
++ info->context);
++
++ if (info->source_widget)
++ g_object_unref (info->source_widget);
++
++ if (info->widget)
++ g_object_unref (info->widget);
++
++ gtk_target_list_unref (info->target_list);
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ /* Empty the pasteboard, so that it will not accidentally access
++ * info->context after it has been destroyed.
++ */
++ pasteboard = [NSPasteboard pasteboardWithName: NSDragPboard];
++ [pasteboard declareTypes: nil owner: nil];
++
++ [pool release];
++
++ g_free (info);
++}
++
+ static GtkDragDestInfo *
+ gtk_drag_get_dest_info (GdkDragContext *context,
+ gboolean create)
+@@ -308,18 +341,14 @@ gtk_drag_get_source_info (GdkDragContext *context,
+ {
+ info = g_new0 (GtkDragSourceInfo, 1);
+ info->context = context;
+- g_object_set_qdata (G_OBJECT (context), dest_info_quark, info);
++ g_object_ref (info->context);
++ g_object_set_qdata_full (G_OBJECT (context), dest_info_quark,
++ info, gtk_drag_source_info_destroy);
+ }
+
+ return info;
+ }
+
+-static void
+-gtk_drag_clear_source_info (GdkDragContext *context)
+-{
+- g_object_set_qdata (G_OBJECT (context), dest_info_quark, NULL);
+-}
+-
+ GtkWidget *
+ gtk_drag_get_source_widget (GdkDragContext *context)
+ {
+@@ -1089,7 +1118,8 @@ gtk_drag_begin_idle (gpointer arg)
+ [owner release];
+ [types release];
+
+- if ((nswindow = get_toplevel_nswindow (info->source_widget)) == NULL)
++ if (info->source_widget == NULL
++ || (nswindow = get_toplevel_nswindow (info->source_widget)) == NULL)
+ return FALSE;
+
+ /* Ref the context. It's unreffed when the drag has been aborted */
+@@ -1108,7 +1138,6 @@ gtk_drag_begin_idle (gpointer arg)
+ source:nswindow
+ slideBack:YES];
+
+- [info->nsevent release];
+ [drag_image release];
+
+ [pool release];
+@@ -1833,61 +1862,12 @@ gtk_drag_set_default_icon (GdkColormap *colormap,
+ }
+
+ static void
+-gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
+-{
+- NSPasteboard *pasteboard;
+- NSAutoreleasePool *pool;
+-
+- if (info->icon_pixbuf)
+- g_object_unref (info->icon_pixbuf);
+-
+- g_signal_emit_by_name (info->widget, "drag-end",
+- info->context);
+-
+- if (info->source_widget)
+- g_object_unref (info->source_widget);
+-
+- if (info->widget)
+- g_object_unref (info->widget);
+-
+- gtk_target_list_unref (info->target_list);
+-
+- pool = [[NSAutoreleasePool alloc] init];
+-
+- /* Empty the pasteboard, so that it will not accidentally access
+- * info->context after it has been destroyed.
+- */
+- pasteboard = [NSPasteboard pasteboardWithName: NSDragPboard];
+- [pasteboard declareTypes: nil owner: nil];
+-
+- [pool release];
+-
+- gtk_drag_clear_source_info (info->context);
+- g_object_unref (info->context);
+-
+- g_free (info);
+- info = NULL;
+-}
+-
+-static gboolean
+-drag_drop_finished_idle_cb (gpointer data)
+-{
+- gtk_drag_source_info_destroy (data);
+- return FALSE;
+-}
+-
+-static void
+ gtk_drag_drop_finished (GtkDragSourceInfo *info)
+ {
+ if (info->success && info->delete)
+ g_signal_emit_by_name (info->source_widget, "drag-data-delete",
+ info->context);
+
+- /* Workaround for the fact that the NS API blocks until the drag is
+- * over. This way the context is still valid when returning from
+- * drag_begin, even if it will still be quite useless. See bug #501588.
+- */
+- g_idle_add (drag_drop_finished_idle_cb, info);
+ }
+
+ /*************************************************************
diff --git a/build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch b/build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch
new file mode 100644
index 0000000..5b9153c
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch
@@ -0,0 +1,39 @@
+From 259563958047ccbf6f61578f2d724fc731218304 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Sun, 25 Sep 2011 12:03:54 -0700
+Subject: [PATCH 08/15] Implement GtkDragSourceOwner pasteboardChangedOwner:
+
+---
+ gtk/gtkdnd-quartz.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
+index 084aada..21ce11a 100644
+--- a/gtk/gtkdnd-quartz.c
++++ b/gtk/gtkdnd-quartz.c
+@@ -149,6 +149,8 @@ struct _GtkDragFindData
+ guint target_info;
+ GtkSelectionData selection_data;
+
++ g_return_if_fail(info->source_widget != NULL);
++ g_return_if_fail(info->target_list != NULL);
+ selection_data.selection = GDK_NONE;
+ selection_data.data = NULL;
+ selection_data.length = -1;
+@@ -171,6 +173,15 @@ struct _GtkDragFindData
+ }
+ }
+
++- (void)pasteboardChangedOwner: (NSPasteboard*)sender
++{
++ if (!info) return;
++
++ info->target_list = NULL;
++ info->widget = NULL;
++ info->source_widget = NULL;
++}
++
+ - (id)initWithInfo:(GtkDragSourceInfo *)anInfo
+ {
+ self = [super init];
+
diff --git a/build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch b/build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch
new file mode 100644
index 0000000..26321b7
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch
@@ -0,0 +1,5 @@
+diff -uN gtk+-2.24.21/m4/.bogus gtk+-2.24.21.save/m4/.bogus
+--- gtk+-2.24.21/m4/.bogus 2013-10-02 08:01:33.000000000 -0700
++++ gtk+-2.24.21.save/m4/.bogus 2013-10-02 08:03:40.000000000 -0700
+@@ -0,0 +1 @@
++A phony file to enable making a patch to create this directory.
diff --git a/build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch b/build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch
new file mode 100644
index 0000000..87151bb
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch
@@ -0,0 +1,39 @@
+From cd3a21ff115cd6c6c11ce39aa62eaf912c78b060 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Mon, 30 Dec 2013 12:20:26 -0800
+Subject: [PATCH] Fix unhandled exception from attempting to access menu
+ itemAtIndex:-1
+
+---
+ src/cocoa_menu_item.c | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/cocoa_menu_item.c b/src/cocoa_menu_item.c
+index 793c254..dd46586 100644
+--- a/src/cocoa_menu_item.c
++++ b/src/cocoa_menu_item.c
+@@ -550,12 +550,16 @@ cocoa_menu_item_add_item (NSMenu* cocoa_menu, GtkWidget* menu_item, int index)
+ /* Clean up adjacent separators: */
+ if ([cocoa_menu numberOfItems] > 0)
+ {
+- if (([cocoa_menu numberOfItems] == index ||
+- [[cocoa_menu itemAtIndex: index] isSeparatorItem]) &&
+- [[cocoa_menu itemAtIndex: index - 1] isSeparatorItem])
++ if (index == 0)
++ {
++ if ([[cocoa_menu itemAtIndex: index] isSeparatorItem])
++ [cocoa_menu removeItemAtIndex: index];
++ }
++ else if (([cocoa_menu numberOfItems] == index ||
++ [[cocoa_menu itemAtIndex: index] isSeparatorItem]) &&
++ [[cocoa_menu itemAtIndex: index - 1] isSeparatorItem])
+ [cocoa_menu removeItemAtIndex: index - 1];
+- if (index == 0 && [[cocoa_menu itemAtIndex: index] isSeparatorItem])
+- [cocoa_menu removeItemAtIndex: index];
++
+ }
+ }
+
+--
+1.8.3.rc0
+
diff --git a/build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch b/build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch
new file mode 100644
index 0000000..51a25c0
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch
@@ -0,0 +1,28 @@
+From d6ef86e2fb7bf9ddf888521e2c7dc5b5b7e4b6d8 Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@gnome.org>
+Date: Fri, 10 Jan 2014 23:50:52 -0600
+Subject: [PATCH] build: use $PYTHON when testing for libxml2
+
+/usr/bin/python is a symlink to /usr/bin/python3 on some systems.
+In this case, configure unconditionally checks for the Python 3 version
+of libxml2. Instead, use the version of Python found by AM_PATH_PYTHON.
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c29efad..dbd0c7f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,7 +14,7 @@ AM_PATH_PYTHON([2.6])
+
+ py_module=libxml2
+ AC_MSG_CHECKING(for python module $py_module)
+-echo "import $py_module" | python - &>/dev/null
++echo "import $py_module" | $PYTHON - &>/dev/null
+ if test $? -ne 0; then
+ AC_MSG_RESULT(not found)
+ AC_MSG_ERROR(Python module $py_module is needed to run this package)
+--
+1.8.5.2
+
diff --git a/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch b/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch
new file mode 100644
index 0000000..5e6beb5
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch
@@ -0,0 +1,97 @@
+diff -c /Users/john/Development/gtk-sources/libgcrypt-1.5.3/cipher/rijndael.c\~ /Users/john/Development/gtk-sources/libgcrypt-1.5.3/cipher/rijndael.c
+--- a/cipher/rijndael.c Tue Oct 15 11:09:37 2013
++++ b/cipher/rijndael.c
+ Tue Oct 15 11:53:22 2013
+@@ -725,13 +725,13 @@
+ "movdqa 0x90(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
+- "cmp $10, %[rounds]\n\t"
++ "cmpl $10, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
+- "cmp $12, %[rounds]\n\t"
++ "cmpl $12, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
+@@ -780,13 +780,13 @@
+ "movdqa 0x90(%%esi), %%xmm1\n\t"
+ aesdec_xmm1_xmm0
+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
+- "cmp $10, %[rounds]\n\t"
++ "cmpl $10, %[rounds]\n\t"
+ "jz .Ldeclast%=\n\t"
+ aesdec_xmm1_xmm0
+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
+ aesdec_xmm1_xmm0
+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
+- "cmp $12, %[rounds]\n\t"
++ "cmpl $12, %[rounds]\n\t"
+ "jz .Ldeclast%=\n\t"
+ aesdec_xmm1_xmm0
+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
+@@ -839,13 +839,13 @@
+ "movdqa 0x90(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
+- "cmp $10, %[rounds]\n\t"
++ "cmpl $10, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
+- "cmp $12, %[rounds]\n\t"
++ "cmpl $12, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
+@@ -857,7 +857,7 @@
+ "movdqu %[src], %%xmm1\n\t" /* Save input. */
+ "pxor %%xmm1, %%xmm0\n\t" /* xmm0 = input ^ IV */
+
+- "cmp $1, %[decrypt]\n\t"
++ "cmpl $1, %[decrypt]\n\t"
+ "jz .Ldecrypt_%=\n\t"
+ "movdqa %%xmm0, %[iv]\n\t" /* [encrypt] Store IV. */
+ "jmp .Lleave_%=\n"
+@@ -918,13 +918,13 @@
+ "movdqa 0x90(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
+- "cmp $10, %[rounds]\n\t"
++ "cmpl $10, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
+- "cmp $12, %[rounds]\n\t"
++ "cmpl $12, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
+@@ -1045,7 +1045,7 @@
+ aesenc_xmm1_xmm3
+ aesenc_xmm1_xmm4
+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
+- "cmp $10, %[rounds]\n\t"
++ "cmpl $10, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ aesenc_xmm1_xmm2
+@@ -1057,7 +1057,7 @@
+ aesenc_xmm1_xmm3
+ aesenc_xmm1_xmm4
+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
+- "cmp $12, %[rounds]\n\t"
++ "cmpl $12, %[rounds]\n\t"
+ "jz .Lenclast%=\n\t"
+ aesenc_xmm1_xmm0
+ aesenc_xmm1_xmm2
+
+Diff finished. Tue Oct 15 11:53:31 2013
diff --git a/build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch b/build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch
new file mode 100644
index 0000000..8f42220
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch
@@ -0,0 +1,33 @@
+From 3f6cfbd1d38d0634a2ddcb9a0a13e1b5a2195a5e Mon Sep 17 00:00:00 2001
+From: Friedrich Haubensak <hsk@fli-leibniz.de>
+Date: Wed, 12 Sep 2012 15:34:53 +0000
+Subject: Fix a thread portability problem
+
+cannot compile libxml2-2.9.0 using studio 12.1 compiler on solaris 10
+
+I.M.O. structure initializer (as PTHREAD_ONCE_INIT) cannot be used in
+a structure assignment anyway
+---
+diff --git a/threads.c b/threads.c
+index f206149..7e85a26 100644
+--- a/threads.c
++++ b/threads.c
+@@ -146,6 +146,7 @@ struct _xmlRMutex {
+ static pthread_key_t globalkey;
+ static pthread_t mainthread;
+ static pthread_once_t once_control = PTHREAD_ONCE_INIT;
++static pthread_once_t once_control_init = PTHREAD_ONCE_INIT;
+ static pthread_mutex_t global_init_lock = PTHREAD_MUTEX_INITIALIZER;
+ #elif defined HAVE_WIN32_THREADS
+ #if defined(HAVE_COMPILER_TLS)
+@@ -915,7 +916,7 @@ xmlCleanupThreads(void)
+ #ifdef HAVE_PTHREAD_H
+ if ((libxml_is_threaded) && (pthread_key_delete != NULL))
+ pthread_key_delete(globalkey);
+- once_control = PTHREAD_ONCE_INIT;
++ once_control = once_control_init;
+ #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
+ if (globalkey != TLS_OUT_OF_INDEXES) {
+ xmlGlobalStateCleanupHelperParams *p;
+--
+cgit v0.9.0.2
diff --git a/build-aux/osx/build/modulesets/patches/readline/readline62-001 b/build-aux/osx/build/modulesets/patches/readline/readline62-001
new file mode 100644
index 0000000..d4563c3
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/readline/readline62-001
@@ -0,0 +1,46 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-001
+
+Bug-Reported-by: Clark J. Wang <dearvoid@gmail.com>
+Bug-Reference-ID: <AANLkTimGbW7aC4E5infXP6ku5WPci4t=xVc+L1SyHqrD@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html
+
+Bug-Description:
+
+The readline vi-mode `cc', `dd', and `yy' commands failed to modify the
+entire line.
+
+[This patch intentionally does not modify patchlevel]
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/vi_mode.c 2010-11-20 19:51:39.000000000 -0500
+--- vi_mode.c 2011-02-17 20:24:25.000000000 -0500
+***************
+*** 1115,1119 ****
+ _rl_vi_last_motion = c;
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+! return (0);
+ }
+ #if defined (READLINE_CALLBACKS)
+--- 1115,1119 ----
+ _rl_vi_last_motion = c;
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+! return (vidomove_dispatch (m));
+ }
+ #if defined (READLINE_CALLBACKS)
+*** ../readline-6.2-patched/callback.c 2010-06-06 12:18:58.000000000 -0400
+--- callback.c 2011-02-17 20:43:28.000000000 -0500
+***************
+*** 149,152 ****
+--- 149,155 ----
+ /* Should handle everything, including cleanup, numeric arguments,
+ and turning off RL_STATE_VIMOTION */
++ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
++ _rl_internal_char_cleanup ();
++
+ return;
+ }
diff --git a/build-aux/osx/build/modulesets/patches/readline/readline62-002 b/build-aux/osx/build/modulesets/patches/readline/readline62-002
new file mode 100644
index 0000000..3dc2604
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/readline/readline62-002
@@ -0,0 +1,57 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-002
+
+Bug-Reported-by: Vincent Sheffer <vince.sheffer@apisphere.com>
+Bug-Reference-ID: <F13C1C4F-C44C-4071-BFED-4BB6D13CF92F@apisphere.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html
+
+Bug-Description:
+
+The readline shared library helper script needs to be updated for Mac OS X
+10.7 (Lion, darwin11).
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/support/shobj-conf 2009-10-28 09:20:21.000000000 -0400
+--- support/shobj-conf 2011-08-27 13:25:23.000000000 -0400
+***************
+*** 158,162 ****
+
+ # Darwin/MacOS X
+! darwin[89]*|darwin10*)
+ SHOBJ_STATUS=supported
+ SHLIB_STATUS=supported
+--- 172,176 ----
+
+ # Darwin/MacOS X
+! darwin[89]*|darwin1[012]*)
+ SHOBJ_STATUS=supported
+ SHLIB_STATUS=supported
+***************
+*** 187,191 ****
+
+ case "${host_os}" in
+! darwin[789]*|darwin10*) SHOBJ_LDFLAGS=''
+ SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ ;;
+--- 201,205 ----
+
+ case "${host_os}" in
+! darwin[789]*|darwin1[012]*) SHOBJ_LDFLAGS=''
+ SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ ;;
+
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 1
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 2
diff --git a/build-aux/osx/build/modulesets/patches/readline/readline62-003 b/build-aux/osx/build/modulesets/patches/readline/readline62-003
new file mode 100644
index 0000000..0462242
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/readline/readline62-003
@@ -0,0 +1,76 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-003
+
+Bug-Reported-by: Max Horn <max@quendi.de>
+Bug-Reference-ID: <20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html
+
+Bug-Description:
+
+A change between readline-6.1 and readline-6.2 to prevent the readline input
+hook from being called too frequently had the side effect of causing delays
+when reading pasted input on systems such as Mac OS X. This patch fixes
+those delays while retaining the readline-6.2 behavior.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/input.c 2010-05-30 18:33:01.000000000 -0400
+--- input.c 2012-06-25 21:08:42.000000000 -0400
+***************
+*** 410,414 ****
+ rl_read_key ()
+ {
+! int c;
+
+ rl_key_sequence_length++;
+--- 412,416 ----
+ rl_read_key ()
+ {
+! int c, r;
+
+ rl_key_sequence_length++;
+***************
+*** 430,441 ****
+ while (rl_event_hook)
+ {
+! if (rl_gather_tyi () < 0) /* XXX - EIO */
+ {
+ rl_done = 1;
+ return ('\n');
+ }
+ RL_CHECK_SIGNALS ();
+- if (rl_get_char (&c) != 0)
+- break;
+ if (rl_done) /* XXX - experimental */
+ return ('\n');
+--- 432,447 ----
+ while (rl_event_hook)
+ {
+! if (rl_get_char (&c) != 0)
+! break;
+!
+! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */
+ {
+ rl_done = 1;
+ return ('\n');
+ }
++ else if (r == 1) /* read something */
++ continue;
++
+ RL_CHECK_SIGNALS ();
+ if (rl_done) /* XXX - experimental */
+ return ('\n');
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 2
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 3
diff --git a/build-aux/osx/build/modulesets/patches/readline/readline62-004 b/build-aux/osx/build/modulesets/patches/readline/readline62-004
new file mode 100644
index 0000000..5f3ba9b
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/readline/readline62-004
@@ -0,0 +1,108 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-004
+
+Bug-Reported-by: Jakub Filak
+Bug-Reference-ID:
+Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289
+
+Bug-Description:
+
+Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
+commands leads to an infinite loop.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/vi_mode.c 2011-02-25 11:17:02.000000000 -0500
+--- vi_mode.c 2012-06-02 12:24:47.000000000 -0400
+***************
+*** 1235,1243 ****
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing)
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1297,1313 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing) /* handle redoing `dd' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1317,1325 ****
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing)
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1387,1403 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing) /* handle redoing `cc' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1378,1381 ****
+--- 1456,1472 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ r = rl_domove_motion_callback (_rl_vimvcxt);
++ }
++ else if (vi_redoing) /* handle redoing `yy' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 3
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 4
diff --git a/build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch b/build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch
new file mode 100644
index 0000000..f2007d2
--- /dev/null
+++ b/build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch
@@ -0,0 +1,42 @@
+From bfb2d780ff11cb547cc20d31c473be35cacb4509 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Tue, 8 Oct 2013 11:33:11 -0700
+Subject: [PATCH] Bug 70255 - Build fails with glib-2.38
+
+---
+ configure.ac | 3 +++
+ test-tree-magic.c | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 68007c9..60a4c4d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -29,6 +29,9 @@ dnl Check whether libxml and glib are present is installed
+ PKG_CHECK_MODULES(ALL, \
+ libxml-2.0 >= 2.4 \
+ glib-2.0 >= 2.6.0)
++PKG_CHECK_MODULES(GLIB_2_36, glib-2.0 >= 2.36.0,
++ [AC_DEFINE([HAVE_GLIB_2_36], [1], [Configure g_type_init deprecation])],
++ [PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.6.0)])
+ AC_SUBST(ALL_CFLAGS)
+ AC_SUBST(ALL_LIBS)
+
+diff --git a/test-tree-magic.c b/test-tree-magic.c
+index 9b4dfaf..ec44a29 100644
+--- a/test-tree-magic.c
++++ b/test-tree-magic.c
+@@ -637,8 +637,9 @@ int main (int argc, char **argv)
+ char *content, **lines;
+ guint i;
+
++#ifndef HAVE_GLIB_2_36
+ g_type_init ();
+-
++#endif
+ if (argc != 2) {
+ g_print ("Usage: %s [file]\n", argv[0]);
+ g_print ("Where file contains, on each line, a directory path,\n"
+--
+1.8.3.rc0
+