Project import generated by Copybara.
NOKEYCHECK=True
GitOrigin-RevId: e1f58695188a0bdf7dc32a9893f3b3d04e4719ed
diff --git a/opencflite.patches/opencflite-50.patch b/opencflite.patches/opencflite-50.patch
new file mode 100644
index 0000000..10013ff
--- /dev/null
+++ b/opencflite.patches/opencflite-50.patch
@@ -0,0 +1,63 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c 2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.c 2010-10-01 14:31:38.286830645 -0700
+@@ -1062,4 +1062,20 @@
+ #endif
+ #endif
+
+-
++#if defined(__arm__)
++__asm__ (
++".text\n"
++" .align 2\n"
++#if DEPLOYMENT_TARGET_MACOSX
++".private_extern ___HALT\n"
++"___HALT:\n"
++#elif DEPLOYMENT_TARGET_LINUX
++".globl __HALT\n"
++"__HALT:\n"
++#else
++".globl ___HALT\n"
++"___HALT:\n"
++#endif
++" bkpt\n"
++);
++#endif /* defined(__arm__) */
+diff -aruN a/CFBase.h b/CFBase.h
+--- a/CFBase.h 2009-02-19 16:25:06.000000000 -0800
++++ b/CFBase.h 2010-10-01 14:30:23.799644073 -0700
+@@ -50,6 +50,10 @@
+ #define __LITTLE_ENDIAN__ 1
+ #endif
+
++#if (defined(__ARMEL__) && !defined(__LITTLE_ENDIAN__))
++ #define __LITTLE_ENDIAN__ 1
++#endif
++
+ #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+ #error Do not know the endianess of this architecture
+ #endif
+diff -aruN a/CFInternal.h b/CFInternal.h
+--- a/CFInternal.h 2009-02-19 16:25:06.000000000 -0800
++++ b/CFInternal.h 2010-10-01 14:05:48.926799829 -0700
+@@ -121,6 +121,8 @@
+ #else
+ #error Compiler not supported
+ #endif
++#elif defined(__arm__)
++ #define HALT asm __volatile__("bkpt")
+ #endif
+
+ #if defined(DEBUG)
+diff -aruN a/include/AvailabilityMacros.h b/include/AvailabilityMacros.h
+--- a/include/AvailabilityMacros.h 2009-02-04 10:42:19.000000000 -0800
++++ b/include/AvailabilityMacros.h 2010-10-01 14:07:14.999780293 -0700
+@@ -84,7 +84,7 @@
+ #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ #define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ #else
+- #if __ppc64__ || __i386__ || __x86_64__
++ #if __ppc64__ || __i386__ || __x86_64__ || __arm__
+ #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
+ #else
+ #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_1
diff --git a/opencflite.patches/opencflite-51.patch b/opencflite.patches/opencflite-51.patch
new file mode 100644
index 0000000..77d173c
--- /dev/null
+++ b/opencflite.patches/opencflite-51.patch
@@ -0,0 +1,23 @@
+diff -aruN a/configure b/configure
+--- a/configure 2009-03-10 23:44:34.000000000 -0700
++++ b/configure 2010-10-20 13:12:19.000000000 -0700
+@@ -18528,6 +18528,8 @@
+ fi
+
+ UUID_saved_libs="${LIBS}"
++ UUID_saved_ldflags="${LDFLAGS}"
++ LDFLAGS="${UUID_LDFLAGS} ${LDFLAGS}"
+ LIBS=""
+
+
+@@ -18603,8 +18605,10 @@
+
+
+ UUID_LIBS="${UUID_LDFLAGS} ${LIBS}"
++ LDFLAGS="${UUID_saved_ldflags}"
+ LIBS="${UUID_saved_libs}"
+ unset UUID_saved_libs
++ unset UUID_saved_ldflags
+
+ elif test "x${UUID_CONFIG}" != "x"; then
+ UUID_CPPFLAGS="`${UUID_CONFIG} --cflags`"
diff --git a/opencflite.patches/opencflite-52.patch b/opencflite.patches/opencflite-52.patch
new file mode 100644
index 0000000..560f4a4
--- /dev/null
+++ b/opencflite.patches/opencflite-52.patch
@@ -0,0 +1,1664 @@
+diff -aruN a/include/AssertMacros.h b/include/AssertMacros.h
+--- a/include/AssertMacros.h 2009-02-03 21:28:26.000000000 -0800
++++ b/include/AssertMacros.h 2009-04-13 10:08:23.000000000 -0700
+@@ -1,26 +1,51 @@
+ /*
+- File: AssertMacros.h
+-
+- Contains: This file defines structured error handling and assertion macros for
+- programming in C. Originally used in QuickDraw GX and later enhanced.
+- These macros are used throughout Apple's software.
+-
+- See "Living In an Exceptional World" by Sean Parent
+- (develop, The Apple Technical Journal, Issue 11, August/September 1992)
+- <http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml>
+- for the methodology behind these error handling and assertion macros.
+-
+- Copyright: © 2002 by Apple Computer, Inc., all rights reserved.
+-
+- Bugs?: For bug reports, consult the following page on
+- the World Wide Web:
++ * Copyright (c) 2002-2008 by Apple Inc.. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++
++/*
++ File: AssertMacros.h
+
+- http://developer.apple.com/bugreporter/
++ Contains: This file defines structured error handling and assertion macros for
++ programming in C. Originally used in QuickDraw GX and later enhanced.
++ These macros are used throughout Apple's software.
++
++ New code may not want to begin adopting these macros and instead use
++ existing language functionality.
++
++ See "Living In an Exceptional World" by Sean Parent
++ (develop, The Apple Technical Journal, Issue 11, August/September 1992)
++ <http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml> or
++ <http://www.mactech.com/articles/develop/issue_11/Parent_final.html>
++ for the methodology behind these error handling and assertion macros.
++
++ Bugs?: For bug reports, consult the following page on
++ the World Wide Web:
++
++ http://developer.apple.com/bugreporter/
+ */
+ #ifndef __ASSERTMACROS__
+ #define __ASSERTMACROS__
+
+-
+ /*
+ * Macro overview:
+ *
+@@ -60,6 +85,27 @@
+ * By default, all messages write to stderr. If you would like to write a custom
+ * error message formater, defined DEBUG_ASSERT_MESSAGE to your function name.
+ *
++ * Each individual macro will only be defined if it is not already defined, so
++ * you can redefine their behavior singly by providing your own definition before
++ * this file is included.
++ *
++ * If you define __ASSERTMACROS__ before this file is included, then nothing in
++ * this file will take effect.
++ *
++ * Prior to Mac OS X 10.6 the macro names used in this file conflicted with some
++ * user code, including libraries in boost and the proposed C++ standards efforts,
++ * and there was no way for a client of this header to resolve this conflict. Because
++ * of this, most of the macros have been changed so that they are prefixed with
++ * __ and contain at least one capital letter, which should alleviate the current
++ * and future conflicts. However, to allow current sources to continue to compile,
++ * compatibility macros are defined at the end with the old names. A tops script
++ * at the end of this file will convert all of the old macro names used in a directory
++ * to the new names. Clients are recommended to migrate over to these new macros as
++ * they update their sources because a future release of Mac OS X will remove the
++ * old macro definitions ( without the double-underscore prefix ). Clients who
++ * want to compile without the old macro definitions can define the macro
++ * __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES to 0 before this file is
++ * included.
+ */
+
+
+@@ -165,9 +211,9 @@
+ */
+ #ifndef DEBUG_ASSERT_MESSAGE
+ #ifdef KERNEL
+- #include <syslog.h>
++ #include <libkern/libkern.h>
+ #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+- syslog(LOG_ERR, "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
++ printf( "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
+ #else
+ #include <stdio.h>
+ #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+@@ -180,7 +226,7 @@
+
+
+ /*
+- * debug_string(message)
++ * __Debug_String(message)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+@@ -193,26 +239,27 @@
+ * The C string to display.
+ *
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define debug_string(message)
+-#else
+- #define debug_string(message) \
+- do \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- "", \
+- 0, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- } while ( 0 )
++#ifndef __Debug_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Debug_String(message)
++ #else
++ #define __Debug_String(message) \
++ do \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ "", \
++ 0, \
++ message, \
++ __FILE__, \
++ __LINE__, \
++ 0); \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * check(assertion)
++ * __Check(assertion)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+@@ -225,32 +272,29 @@
+ * assertion:
+ * The assertion expression.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define check(assertion)
+-#else
+- #define check(assertion) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- 0, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- } \
+- } while ( 0 )
++#ifndef __Check
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Check(assertion)
++ #else
++ #define __Check(assertion) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, 0, 0, __FILE__, __LINE__, 0 ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-#define ncheck(assertion) \
+- check(!(assertion))
+-
++#ifndef __nCheck
++ #define __nCheck(assertion) __Check(!(assertion))
++#endif
+
+ /*
+- * check_string(assertion, message)
++ * __Check_String(assertion, message)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+@@ -266,32 +310,29 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define check_string(assertion, message)
+-#else
+- #define check_string(assertion, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- 0, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- } \
+- } while ( 0 )
++#ifndef __Check_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Check_String(assertion, message)
++ #else
++ #define __Check_String(assertion, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, 0, message, __FILE__, __LINE__, 0 ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-#define ncheck_string(assertion, message) \
+- check_string(!(assertion), message)
+-
++#ifndef __nCheck_String
++ #define __nCheck_String(assertion, message) __Check_String(!(assertion), message)
++#endif
+
+ /*
+- * check_noerr(errorCode)
++ * __Check_noErr(errorCode)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+@@ -304,30 +345,26 @@
+ * errorCode:
+ * The errorCode expression to compare with 0.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define check_noerr(errorCode)
+-#else
+- #define check_noerr(errorCode) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- 0, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- } \
+- } while ( 0 )
++#ifndef __Check_noErr
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Check_noErr(errorCode)
++ #else
++ #define __Check_noErr(errorCode) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * check_noerr_string(errorCode, message)
++ * __Check_noErr_String(errorCode, message)
+ *
+ * Summary:
+ * Production builds: check_noerr_string() does nothing and produces
+@@ -344,30 +381,26 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define check_noerr_string(errorCode, message)
+-#else
+- #define check_noerr_string(errorCode, message) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- 0, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- } \
+- } while ( 0 )
++#ifndef __Check_noErr_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Check_noErr_String(errorCode, message)
++ #else
++ #define __Check_noErr_String(errorCode, message) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * verify(assertion)
++ * __Verify(assertion)
+ *
+ * Summary:
+ * Production builds: evaluate the assertion expression, but ignore
+@@ -381,38 +414,35 @@
+ * assertion:
+ * The assertion expression.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define verify(assertion) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- } \
+- } while ( 0 )
+-#else
+- #define verify(assertion) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- 0, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- } \
+- } while ( 0 )
++#ifndef __Verify
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify(assertion) \
++ do \
++ { \
++ if ( !(assertion) ) \
++ { \
++ } \
++ } while ( 0 )
++ #else
++ #define __Verify(assertion) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, 0, 0, __FILE__, __LINE__, 0 ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-#define nverify(assertion) \
+- verify(!(assertion))
+-
++#ifndef __nVerify
++ #define __nVerify(assertion) __Verify(!(assertion))
++#endif
+
+ /*
+- * verify_string(assertion, message)
++ * __Verify_String(assertion, message)
+ *
+ * Summary:
+ * Production builds: evaluate the assertion expression, but ignore
+@@ -429,38 +459,35 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define verify_string(assertion, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- } \
+- } while ( 0 )
+-#else
+- #define verify_string(assertion, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- 0, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- } \
+- } while ( 0 )
++#ifndef __Verify_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify_String(assertion, message) \
++ do \
++ { \
++ if ( !(assertion) ) \
++ { \
++ } \
++ } while ( 0 )
++ #else
++ #define __Verify_String(assertion, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, 0, message, __FILE__, __LINE__, 0 ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-#define nverify_string(assertion, message) \
+- verify_string(!(assertion), message)
+-
++#ifndef __nVerify_String
++ #define __nVerify_String(assertion, message) __Verify_String(!(assertion), message)
++#endif
+
+ /*
+- * verify_noerr(errorCode)
++ * __Verify_noErr(errorCode)
+ *
+ * Summary:
+ * Production builds: evaluate the errorCode expression, but ignore
+@@ -474,36 +501,32 @@
+ * errorCode:
+ * The expression to compare to 0.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define verify_noerr(errorCode) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- } \
+- } while ( 0 )
+-#else
+- #define verify_noerr(errorCode) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- 0, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- } \
+- } while ( 0 )
++#ifndef __Verify_noErr
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify_noErr(errorCode) \
++ do \
++ { \
++ if ( 0 != (errorCode) ) \
++ { \
++ } \
++ } while ( 0 )
++ #else
++ #define __Verify_noErr(errorCode) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, evalOnceErrorCode ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * verify_noerr_string(errorCode, message)
++ * __Verify_noErr_String(errorCode, message)
+ *
+ * Summary:
+ * Production builds: evaluate the errorCode expression, but ignore
+@@ -520,36 +543,71 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define verify_noerr_string(errorCode, message) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- } \
+- } while ( 0 )
+-#else
+- #define verify_noerr_string(errorCode, message) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- 0, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- } \
+- } while ( 0 )
++#ifndef __Verify_noErr_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify_noErr_String(errorCode, message) \
++ do \
++ { \
++ if ( 0 != (errorCode) ) \
++ { \
++ } \
++ } while ( 0 )
++ #else
++ #define __Verify_noErr_String(errorCode, message) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", 0, message, __FILE__, __LINE__, evalOnceErrorCode ); \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
++/*
++ * __Verify_noErr_Action(errorCode, action)
++ *
++ * Summary:
++ * Production builds: if the errorCode expression does not equal 0 (noErr),
++ * execute the action statement or compound statement (block).
++ *
++ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
++ * call DEBUG_ASSERT_MESSAGE and then execute the action statement or compound
++ * statement (block).
++ *
++ * Parameters:
++ *
++ * errorCode:
++ * The expression to compare to 0.
++ *
++ * action:
++ * The statement or compound statement (block).
++ */
++#ifndef __Verify_noErr_Action
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify_noErr_Action(errorCode, action) \
++ if ( 0 != (errorCode) ) { \
++ action; \
++ } \
++ else do {} while (0)
++ #else
++ #define __Verify_noErr_Action(errorCode, action) \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", 0, 0, __FILE__, __LINE__, 0 ); \
++ action; \
++ } \
++ else do {} while (0)
++ #endif
++#endif
+
+ /*
+- * verify_action(assertion, action)
++ * __Verify_Action(assertion, action)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+@@ -567,37 +625,27 @@
+ * action:
+ * The statement or compound statement (block).
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define verify_action(assertion, action) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- action; \
+- } \
+- } while ( 0 )
+-#else
+- #define verify_action(assertion, action) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- 0, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- { action; } \
+- } \
+- } while ( 0 )
++#ifndef __Verify_Action
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Verify_Action(assertion, action) \
++ if ( __builtin_expect(!(assertion), 0) ) { \
++ action; \
++ } \
++ else do {} while (0)
++ #else
++ #define __Verify_Action(assertion, action) \
++ if ( __builtin_expect(!(assertion), 0) ) { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, 0, 0, __FILE__, __LINE__, 0 ); \
++ action; \
++ } \
++ else do {} while (0)
++ #endif
+ #endif
+
+-
+ /*
+- * require(assertion, exceptionLabel)
++ * __Require(assertion, exceptionLabel)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+@@ -614,40 +662,36 @@
+ * exceptionLabel:
+ * The label.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require(assertion, exceptionLabel) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require(assertion, exceptionLabel) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- #exceptionLabel, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require(assertion, exceptionLabel) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require(assertion, exceptionLabel) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, #exceptionLabel, 0, __FILE__, __LINE__, 0); \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-#define nrequire(assertion, exceptionLabel) \
+- require(!(assertion), exceptionLabel)
+-
++#ifndef __nRequire
++ #define __nRequire(assertion, exceptionLabel) __Require(!(assertion), exceptionLabel)
++#endif
+
+ /*
+- * require_action(assertion, exceptionLabel, action)
++ * __Require_Action(assertion, exceptionLabel, action)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+@@ -669,46 +713,44 @@
+ * action:
+ * The statement or compound statement (block).
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_action(assertion, exceptionLabel, action) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_action(assertion, exceptionLabel, action) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- #exceptionLabel, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_Action
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_Action(assertion, exceptionLabel, action) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_Action(assertion, exceptionLabel, action) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, #exceptionLabel, 0, __FILE__, __LINE__, 0); \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
++#endif
++
++#ifndef __nRequire_Action
++ #define __nRequire_Action(assertion, exceptionLabel, action) \
++ __Require_Action(!(assertion), exceptionLabel, action)
+ #endif
+
+-#define nrequire_action(assertion, exceptionLabel, action) \
+- require_action(!(assertion), exceptionLabel, action)
+-
+-
+ /*
+- * require_quiet(assertion, exceptionLabel)
++ * __Require_Quiet(assertion, exceptionLabel)
+ *
+ * Summary:
+ * If the assertion expression evaluates to false, goto exceptionLabel.
+@@ -721,21 +763,23 @@
+ * exceptionLabel:
+ * The label.
+ */
+-#define require_quiet(assertion, exceptionLabel) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-
+-#define nrequire_quiet(assertion, exceptionLabel) \
+- require_quiet(!(assertion), exceptionLabel)
++#ifndef __Require_Quiet
++ #define __Require_Quiet(assertion, exceptionLabel) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++#endif
+
++#ifndef __nRequire_Quiet
++ #define __nRequire_Quiet(assertion, exceptionLabel) __Require_Quiet(!(assertion), exceptionLabel)
++#endif
+
+ /*
+- * require_action_quiet(assertion, exceptionLabel, action)
++ * __Require_Action_Quiet(assertion, exceptionLabel, action)
+ *
+ * Summary:
+ * If the assertion expression evaluates to false, execute the action
+@@ -752,24 +796,27 @@
+ * action:
+ * The statement or compound statement (block).
+ */
+-#define require_action_quiet(assertion, exceptionLabel, action) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-
+-#define nrequire_action_quiet(assertion, exceptionLabel, action) \
+- require_action_quiet(!(assertion), exceptionLabel, action)
+-
++#ifndef __Require_Action_Quiet
++ #define __Require_Action_Quiet(assertion, exceptionLabel, action) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++#endif
++
++#ifndef __nRequire_Action_Quiet
++ #define __nRequire_Action_Quiet(assertion, exceptionLabel, action) \
++ __Require_Action_Quiet(!(assertion), exceptionLabel, action)
++#endif
+
+ /*
+- * require_string(assertion, exceptionLabel, message)
++ * __Require_String(assertion, exceptionLabel, message)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+@@ -789,40 +836,38 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_string(assertion, exceptionLabel, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_string(assertion, exceptionLabel, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- #exceptionLabel, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_String(assertion, exceptionLabel, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_String(assertion, exceptionLabel, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, #exceptionLabel, message, __FILE__, __LINE__, 0); \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
++#endif
++
++#ifndef __nRequire_String
++ #define __nRequire_String(assertion, exceptionLabel, string) \
++ __Require_String(!(assertion), exceptionLabel, string)
+ #endif
+
+-#define nrequire_string(assertion, exceptionLabel, string) \
+- require_string(!(assertion), exceptionLabel, string)
+-
+-
+ /*
+- * require_action_string(assertion, exceptionLabel, action, message)
++ * __Require_Action_String(assertion, exceptionLabel, action, message)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+@@ -847,46 +892,44 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_action_string(assertion, exceptionLabel, action, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_action_string(assertion, exceptionLabel, action, message) \
+- do \
+- { \
+- if ( !(assertion) ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #assertion, \
+- #exceptionLabel, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- 0); \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_Action_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_Action_String(assertion, exceptionLabel, action, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_Action_String(assertion, exceptionLabel, action, message) \
++ do \
++ { \
++ if ( __builtin_expect(!(assertion), 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #assertion, #exceptionLabel, message, __FILE__, __LINE__, 0); \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
++#endif
++
++#ifndef __nRequire_Action_String
++ #define __nRequire_Action_String(assertion, exceptionLabel, action, message) \
++ __Require_Action_String(!(assertion), exceptionLabel, action, message)
+ #endif
+
+-#define nrequire_action_string(assertion, exceptionLabel, action, message) \
+- require_action_string(!(assertion), exceptionLabel, action, message)
+-
+-
+ /*
+- * require_noerr(errorCode, exceptionLabel)
++ * __Require_noErr(errorCode, exceptionLabel)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -903,37 +946,34 @@
+ * exceptionLabel:
+ * The label.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_noerr(errorCode, exceptionLabel) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_noerr(errorCode, exceptionLabel) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- #exceptionLabel, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_noErr
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_noErr(errorCode, exceptionLabel) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_noErr(errorCode, exceptionLabel) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", #exceptionLabel, 0, __FILE__, __LINE__, evalOnceErrorCode); \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+ /*
+- * require_noerr_action(errorCode, exceptionLabel, action)
++ * __Require_noErr_Action(errorCode, exceptionLabel, action)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -955,44 +995,40 @@
+ * action:
+ * The statement or compound statement (block).
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_noerr_action(errorCode, exceptionLabel, action) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_noerr_action(errorCode, exceptionLabel, action) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- #exceptionLabel, \
+- 0, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_noErr_Action
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_noErr_Action(errorCode, exceptionLabel, action) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_noErr_Action(errorCode, exceptionLabel, action) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", #exceptionLabel, 0, __FILE__, __LINE__, evalOnceErrorCode); \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * require_noerr_quiet(errorCode, exceptionLabel)
++ * __Require_noErr_Quiet(errorCode, exceptionLabel)
+ *
+ * Summary:
+ * If the errorCode expression does not equal 0 (noErr),
+@@ -1006,18 +1042,19 @@
+ * exceptionLabel:
+ * The label.
+ */
+-#define require_noerr_quiet(errorCode, exceptionLabel) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-
++#ifndef __Require_noErr_Quiet
++ #define __Require_noErr_Quiet(errorCode, exceptionLabel) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++#endif
+
+ /*
+- * require_noerr_action_quiet(errorCode, exceptionLabel, action)
++ * __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
+ *
+ * Summary:
+ * If the errorCode expression does not equal 0 (noErr),
+@@ -1035,21 +1072,22 @@
+ * action:
+ * The statement or compound statement (block).
+ */
+-#define require_noerr_action_quiet(errorCode, exceptionLabel, action) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-
++#ifndef __Require_noErr_Action_Quiet
++ #define __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++#endif
+
+ /*
+- * require_noerr_string(errorCode, exceptionLabel, message)
++ * __Require_noErr_String(errorCode, exceptionLabel, message)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1069,38 +1107,34 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_noerr_string(errorCode, exceptionLabel, message) \
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_noerr_string(errorCode, exceptionLabel, message) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- #exceptionLabel, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
++#ifndef __Require_noErr_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_noErr_String(errorCode, exceptionLabel, message) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_noErr_String(errorCode, exceptionLabel, message) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", #exceptionLabel, message, __FILE__, __LINE__, evalOnceErrorCode); \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
+ #endif
+
+-
+ /*
+- * require_noerr_action_string(errorCode, exceptionLabel, action, message)
++ * __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+@@ -1125,41 +1159,270 @@
+ * message:
+ * The C string to display.
+ */
+-#if DEBUG_ASSERT_PRODUCTION_CODE
+- #define require_noerr_action_string(errorCode, exceptionLabel, action, message)\
+- do \
+- { \
+- if ( 0 != (errorCode) ) \
+- { \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#else
+- #define require_noerr_action_string(errorCode, exceptionLabel, action, message) \
+- do \
+- { \
+- int evalOnceErrorCode = (errorCode); \
+- if ( 0 != evalOnceErrorCode ) \
+- { \
+- DEBUG_ASSERT_MESSAGE( \
+- DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+- #errorCode " == 0 ", \
+- #exceptionLabel, \
+- message, \
+- __FILE__, \
+- __LINE__, \
+- evalOnceErrorCode); \
+- { \
+- action; \
+- } \
+- goto exceptionLabel; \
+- } \
+- } while ( 0 )
+-#endif
++#ifndef __Require_noErr_Action_String
++ #if DEBUG_ASSERT_PRODUCTION_CODE
++ #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++ do \
++ { \
++ if ( __builtin_expect(0 != (errorCode), 0) ) \
++ { \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #else
++ #define __Require_noErr_Action_String(errorCode, exceptionLabel, action, message) \
++ do \
++ { \
++ long evalOnceErrorCode = (errorCode); \
++ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
++ { \
++ DEBUG_ASSERT_MESSAGE( \
++ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
++ #errorCode " == 0 ", #exceptionLabel, message, __FILE__, __LINE__, evalOnceErrorCode); \
++ { \
++ action; \
++ } \
++ goto exceptionLabel; \
++ } \
++ } while ( 0 )
++ #endif
++#endif
++
++/*
++ * __Check_Compile_Time(expr)
++ *
++ * Summary:
++ * any build: if the expression is not true, generated a compile time error.
++ *
++ * Parameters:
++ *
++ * expr:
++ * The compile time expression that should evaluate to non-zero.
++ *
++ * Discussion:
++ * This declares an array with a size that is determined by a compile-time expression.
++ * If false, it declares a negatively sized array, which generates a compile-time error.
++ *
++ * Examples:
++ * __Check_Compile_Time( sizeof( int ) == 4 );
++ * __Check_Compile_Time( offsetof( MyStruct, myField ) == 4 );
++ * __Check_Compile_Time( ( kMyBufferSize % 512 ) == 0 );
++ *
++ * Note: This only works with compile-time expressions.
++ * Note: This only works in places where extern declarations are allowed (e.g. global scope).
++ */
++#ifndef __Check_Compile_Time
++ #ifdef __GNUC__
++ #define __Check_Compile_Time( expr ) \
++ extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ] __attribute__( ( unused ) )
++ #else
++ #define __Check_Compile_Time( expr ) \
++ extern int compile_time_assert_failed[ ( expr ) ? 1 : -1 ]
++ #endif
++#endif
++
++/*
++ * For time immemorial, Mac OS X has defined version of most of these macros without the __ prefix, which
++ * could collide with similarly named functions or macros in user code, including new functionality in
++ * Boost and the C++ standard library.
++ *
++ * A future release of Mac OS X will no longer do this, and will require that clients move to the
++ * new macros as defined above. However, in the interim both the new and old macros will work, unless
++ * clients define a macro __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES before this file is included
++ * in their compilations. Clients who do not want the older macros defined can accomplish this by adding
++ * #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
++ * at the top of their sources, or my adding -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 to the
++ * gcc compilation options.
++ *
++ * To aid users of these macros in converting their sources, the following tops script will convert usages
++ * of the old macros into the new equivalents. To do so, in Terminal go into the directory containing the
++ * sources to be converted and run this command.
++ *
++ find . -name '*.[c|cc|cp|cpp|m|mm|h]' -print0 | xargs -0 tops -verbose \
++ replace "check(<b args>)" with "__Check(<args>)" \
++ replace "check_noerr(<b args>)" with "__Check_noErr(<args>)" \
++ replace "check_noerr_string(<b args>)" with "__Check_noErr_String(<args>)" \
++ replace "check_string(<b args>)" with "__Check_String(<args>)" \
++ replace "require(<b args>)" with "__Require(<args>)" \
++ replace "require_action(<b args>)" with "__Require_Action(<args>)" \
++ replace "require_action_string(<b args>)" with "__Require_Action_String(<args>)" \
++ replace "require_noerr(<b args>)" with "__Require_noErr(<args>)" \
++ replace "require_noerr_action(<b args>)" with "__Require_noErr_Action(<args>)" \
++ replace "require_noerr_action_string(<b args>)" with "__Require_noErr_Action_String(<args>)" \
++ replace "require_noerr_string(<b args>)" with "__Require_noErr_String(<args>)" \
++ replace "require_string(<b args>)" with "__Require_String(<args>)" \
++ replace "verify(<b args>)" with "__Verify(<args>)" \
++ replace "verify_action(<b args>)" with "__Verify_Action(<args>)" \
++ replace "verify_noerr(<b args>)" with "__Verify_noErr(<args>)" \
++ replace "verify_noerr_action(<b args>)" with "__Verify_noErr_Action(<args>)" \
++ replace "verify_noerr_string(<b args>)" with "__Verify_noErr_String(<args>)" \
++ replace "verify_string(<b args>)" with "__Verify_String(<args>)" \
++ replace "ncheck(<b args>)" with "__nCheck(<args>)" \
++ replace "ncheck_string(<b args>)" with "__nCheck_String(<args>)" \
++ replace "nrequire(<b args>)" with "__nRequire(<args>)" \
++ replace "nrequire_action(<b args>)" with "__nRequire_Action(<args>)" \
++ replace "nrequire_action_quiet(<b args>)" with "__nRequire_Action_Quiet(<args>)" \
++ replace "nrequire_action_string(<b args>)" with "__nRequire_Action_String(<args>)" \
++ replace "nrequire_quiet(<b args>)" with "__nRequire_Quiet(<args>)" \
++ replace "nrequire_string(<b args>)" with "__nRequire_String(<args>)" \
++ replace "nverify(<b args>)" with "__nVerify(<args>)" \
++ replace "nverify_string(<b args>)" with "__nVerify_String(<args>)" \
++ replace "require_action_quiet(<b args>)" with "__Require_Action_Quiet(<args>)" \
++ replace "require_noerr_action_quiet(<b args>)" with "__Require_noErr_Action_Quiet(<args>)" \
++ replace "require_noerr_quiet(<b args>)" with "__Require_noErr_Quiet(<args>)" \
++ replace "require_quiet(<b args>)" with "__Require_Quiet(<args>)" \
++ replace "check_compile_time(<b args>)" with "__Check_Compile_Time(<args>)" \
++ replace "debug_string(<b args>)" with "__Debug_String(<args>)"
++ *
++ */
++
++#ifndef __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++ /* If we haven't set this yet, it defaults to on. In the next release, this will default to off. */
++ #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 1
++#endif
++
++#if __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES
++
++ #ifndef check
++ #define check(assertion) __Check(assertion)
++ #endif
++
++ #ifndef check_noerr
++ #define check_noerr(errorCode) __Check_noErr(errorCode)
++ #endif
++
++ #ifndef check_noerr_string
++ #define check_noerr_string(errorCode, message) __Check_noErr_String(errorCode, message)
++ #endif
++
++ #ifndef check_string
++ #define check_string(assertion, message) __Check_String(assertion, message)
++ #endif
++
++ #ifndef require
++ #define require(assertion, exceptionLabel) __Require(assertion, exceptionLabel)
++ #endif
++
++ #ifndef require_action
++ #define require_action(assertion, exceptionLabel, action) __Require_Action(assertion, exceptionLabel, action)
++ #endif
++
++ #ifndef require_action_string
++ #define require_action_string(assertion, exceptionLabel, action, message) __Require_Action_String(assertion, exceptionLabel, action, message)
++ #endif
++
++ #ifndef require_noerr
++ #define require_noerr(errorCode, exceptionLabel) __Require_noErr(errorCode, exceptionLabel)
++ #endif
++
++ #ifndef require_noerr_action
++ #define require_noerr_action(errorCode, exceptionLabel, action) __Require_noErr_Action(errorCode, exceptionLabel, action)
++ #endif
++
++ #ifndef require_noerr_action_string
++ #define require_noerr_action_string(errorCode, exceptionLabel, action, message) __Require_noErr_Action_String(errorCode, exceptionLabel, action, message)
++ #endif
++
++ #ifndef require_noerr_string
++ #define require_noerr_string(errorCode, exceptionLabel, message) __Require_noErr_String(errorCode, exceptionLabel, message)
++ #endif
++
++ #ifndef require_string
++ #define require_string(assertion, exceptionLabel, message) __Require_String(assertion, exceptionLabel, message)
++ #endif
++
++ #ifndef verify
++ #define verify(assertion) __Verify(assertion)
++ #endif
++
++ #ifndef verify_action
++ #define verify_action(assertion, action) __Verify_Action(assertion, action)
++ #endif
++
++ #ifndef verify_noerr
++ #define verify_noerr(errorCode) __Verify_noErr(errorCode)
++ #endif
++
++ #ifndef verify_noerr_action
++ #define verify_noerr_action(errorCode, action) __Verify_noErr_Action(errorCode, action)
++ #endif
++
++ #ifndef verify_noerr_string
++ #define verify_noerr_string(errorCode, message) __Verify_noErr_String(errorCode, message)
++ #endif
++
++ #ifndef verify_string
++ #define verify_string(assertion, message) __Verify_String(assertion, message)
++ #endif
++
++ #ifndef ncheck
++ #define ncheck(assertion) __nCheck(assertion)
++ #endif
++
++ #ifndef ncheck_string
++ #define ncheck_string(assertion, message) __nCheck_String(assertion, message)
++ #endif
++
++ #ifndef nrequire
++ #define nrequire(assertion, exceptionLabel) __nRequire(assertion, exceptionLabel)
++ #endif
++
++ #ifndef nrequire_action
++ #define nrequire_action(assertion, exceptionLabel, action) __nRequire_Action(assertion, exceptionLabel, action)
++ #endif
++
++ #ifndef nrequire_action_quiet
++ #define nrequire_action_quiet(assertion, exceptionLabel, action) __nRequire_Action_Quiet(assertion, exceptionLabel, action)
++ #endif
++
++ #ifndef nrequire_action_string
++ #define nrequire_action_string(assertion, exceptionLabel, action, message) __nRequire_Action_String(assertion, exceptionLabel, action, message)
++ #endif
++
++ #ifndef nrequire_quiet
++ #define nrequire_quiet(assertion, exceptionLabel) __nRequire_Quiet(assertion, exceptionLabel)
++ #endif
++
++ #ifndef nrequire_string
++ #define nrequire_string(assertion, exceptionLabel, string) __nRequire_String(assertion, exceptionLabel, string)
++ #endif
++
++ #ifndef nverify
++ #define nverify(assertion) __nVerify(assertion)
++ #endif
++
++ #ifndef nverify_string
++ #define nverify_string(assertion, message) __nVerify_String(assertion, message)
++ #endif
++
++ #ifndef require_action_quiet
++ #define require_action_quiet(assertion, exceptionLabel, action) __Require_Action_Quiet(assertion, exceptionLabel, action)
++ #endif
++
++ #ifndef require_noerr_action_quiet
++ #define require_noerr_action_quiet(errorCode, exceptionLabel, action) __Require_noErr_Action_Quiet(errorCode, exceptionLabel, action)
++ #endif
++
++ #ifndef require_noerr_quiet
++ #define require_noerr_quiet(errorCode, exceptionLabel) __Require_noErr_Quiet(errorCode, exceptionLabel)
++ #endif
++
++ #ifndef require_quiet
++ #define require_quiet(assertion, exceptionLabel) __Require_Quiet(assertion, exceptionLabel)
++ #endif
++
++ #ifndef check_compile_time
++ #define check_compile_time( expr ) __Check_Compile_Time( expr )
++ #endif
++
++ #ifndef debug_string
++ #define debug_string(message) __Debug_String(message)
++ #endif
++
++#endif /* ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES */
+
+
+ #endif /* __ASSERTMACROS__ */
+-
diff --git a/opencflite.patches/opencflite-53.patch b/opencflite.patches/opencflite-53.patch
new file mode 100644
index 0000000..ef6c37f
--- /dev/null
+++ b/opencflite.patches/opencflite-53.patch
@@ -0,0 +1,26 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c 2011-08-10 16:29:04.841083602 -0700
++++ b/CFBase.c 2011-08-10 15:46:44.000000000 -0700
+@@ -44,6 +44,7 @@
+ #include <mach/mach.h>
+ #include <dlfcn.h>
+ #elif DEPLOYMENT_TARGET_LINUX
++#include <mcheck.h>
+ #include <pthread.h>
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #include <windows.h>
+@@ -281,6 +282,14 @@
+ }
+
+ static void __CFAllocatorSystemDeallocate(void *ptr, void *info) {
++#if defined(DEBUG)
++ const enum mcheck_status status = mprobe(ptr);
++
++ CFAssert3(status == MCHECK_OK || status == MCHECK_DISABLED,
++ __kCFLogAssertion, "%s: ptr %p status %d",
++ __PRETTY_FUNCTION__, ptr, status);
++#endif
++
+ free(ptr);
+ }
+ #endif
diff --git a/opencflite.patches/opencflite-54.patch b/opencflite.patches/opencflite-54.patch
new file mode 100644
index 0000000..f65ab05
--- /dev/null
+++ b/opencflite.patches/opencflite-54.patch
@@ -0,0 +1,30 @@
+diff -aruN a/CFBase.c b/CFBase.c
+--- a/CFBase.c 2011-08-10 16:29:35.458178493 -0700
++++ b/CFBase.c 2011-08-10 16:31:27.000000000 -0700
+@@ -270,7 +270,7 @@
+ malloc_zone_free((malloc_zone_t*)info, ptr);
+ }
+
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+
+ #if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+ static void *__CFAllocatorSystemAllocate(CFIndex size, CFOptionFlags hint, void *info) {
+@@ -685,7 +685,7 @@
+ malloc_zone_free((malloc_zone_t *)allocator, ptr);
+ return NULL;
+ }
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+ if (NULL != deallocateFunc) {
+ INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
+@@ -722,7 +722,7 @@
+ #endif
+ return malloc_zone_free((malloc_zone_t *)allocator, ptr);
+ }
+-#endif
++#endif /* DEPLOYMENT_TARGET_MACOSX */
+ deallocateFunc = __CFAllocatorGetDeallocateFunction(&allocator->_context);
+ if (NULL != ptr && NULL != deallocateFunc) {
+ INVOKE_CALLBACK2(deallocateFunc, ptr, allocator->_context.info);
diff --git a/opencflite.patches/opencflite-55.patch b/opencflite.patches/opencflite-55.patch
new file mode 100644
index 0000000..36cd340
--- /dev/null
+++ b/opencflite.patches/opencflite-55.patch
@@ -0,0 +1,54 @@
+diff -aruN a/CFRuntime.c b/CFRuntime.c
+--- a/CFRuntime.c 2009-02-19 08:32:54.000000000 -0800
++++ b/CFRuntime.c 2011-08-10 16:32:44.000000000 -0700
+@@ -73,11 +73,6 @@
+ CF_INLINE size_t malloc_size(void* memblock) {
+ return _msize(memblock);
+ }
+-#elif DEPLOYMENT_TARGET_LINUX
+-#include <malloc.h>
+-CF_INLINE size_t malloc_size(const void *memblock) {
+- return malloc_usable_size((void *)memblock);
+-}
+ #endif
+
+ extern void __HALT(void);
+@@ -264,12 +259,21 @@
+ if (NULL == memory) {
+ return NULL;
+ }
+-#if DEPLOYMENT_TARGET_WINDOWS || DEPLOYMENT_TARGET_LINUX
++#if DEPLOYMENT_TARGET_WINDOWS
+ // malloc_size won't work if the memory address has been moved
+ // (such as a custom allocator that adds its own metadata
+ // (e.g. under/overflow guard data), so don't attempt to call it
+ // on the allocation return.
+ size_t msize = (usesSystemDefaultAllocator) ? malloc_size(memory) : size;
++#elif DEPLOYMENT_TARGET_LINUX
++ // On Linux, across various architectures and versions of the GNU
++ // C Library, malloc_usable_size has been observed to at times return
++ // incorrect values. Since the introspection value-add it provides to
++ // CoreFoundation seems to be of limited utility, we eliminate it and
++ // simpy use the caller-requested size. In addition, memsetting this
++ // small tail block has also been found to cause heap consistency
++ // problems.
++ size_t msize = size;
+ #else
+ size_t msize = malloc_size(memory);
+ #endif
+@@ -1098,6 +1100,7 @@
+ usesSystemDefaultAllocator = (allocator == kCFAllocatorSystemDefault);
+
+ if (__CFZombieLevel & (1 << 0)) {
++#if !DEPLOYMENT_TARGET_LINUX
+ uint8_t *ptr = (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef));
+ size_t size = malloc_size(ptr);
+ uint8_t byte = 0xFC;
+@@ -1109,6 +1112,7 @@
+ byte = (__CFZombieLevel >> 8) & 0xFF;
+ }
+ memset(ptr, byte, size);
++#endif /* !DEPLOYMENT_TARGET_LINUX */
+ }
+ if (!(__CFZombieLevel & (1 << 4))) {
+ CFAllocatorDeallocate(allocator, (uint8_t *)cf - (usesSystemDefaultAllocator ? 0 : sizeof(CFAllocatorRef)));
diff --git a/opencflite.patches/opencflite-56.patch b/opencflite.patches/opencflite-56.patch
new file mode 100644
index 0000000..b403a63
--- /dev/null
+++ b/opencflite.patches/opencflite-56.patch
@@ -0,0 +1,22 @@
+diff -aruN a/CFSet.c b/CFSet.c
+--- a/CFSet.c 2009-02-19 08:32:54.000000000 -0800
++++ b/CFSet.c 2011-09-06 17:05:25.000000000 -0700
+@@ -1089,15 +1089,14 @@
+ if (CFDictionary) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_apply:context:", applier, context);
+ if (CFSet) CF_OBJC_FUNCDISPATCH2(__kCFHashTypeID, void, hc, "_applyValues:context:", applier, context);
+ __CFGenericValidateType(hc, __kCFHashTypeID);
+- any_t *keys = hc->_keys;
+ for (CFIndex idx = 0, nbuckets = hc->_bucketsNum; idx < nbuckets; idx++) {
+- if (__CFHashKeyIsValue(hc, keys[idx])) {
++ if (__CFHashKeyIsValue(hc, hc->_keys[idx])) {
+ for (CFIndex cnt = __CFHashGetOccurrenceCount(hc, idx); cnt--;) {
+ #if CFDictionary
+- INVOKE_CALLBACK3(applier, (const_any_pointer_t)keys[idx], (const_any_pointer_t)hc->_values[idx], context);
++ INVOKE_CALLBACK3(applier, (const_any_pointer_t)hc->_keys[idx], (const_any_pointer_t)hc->_values[idx], context);
+ #endif
+ #if CFSet || CFBag
+- INVOKE_CALLBACK2(applier, (const_any_pointer_t)keys[idx], context);
++ INVOKE_CALLBACK2(applier, (const_any_pointer_t)hc->_keys[idx], context);
+ #endif
+ }
+ }
diff --git a/opencflite.patches/opencflite-57.patch b/opencflite.patches/opencflite-57.patch
new file mode 100644
index 0000000..184f57c
--- /dev/null
+++ b/opencflite.patches/opencflite-57.patch
@@ -0,0 +1,32 @@
+diff -aruN a/CFLocale.c b/CFLocale.c
+--- a/CFLocale.c 2009-02-22 21:56:00.000000000 -0800
++++ b/CFLocale.c 2012-04-20 12:14:07.061605103 -0700
+@@ -223,6 +223,19 @@
+ WindowsLocales = CFArrayCreate(kCFAllocatorSystemDefault, (const void**)s_WindowsInstalledLocales, s_num_installed_localesI, &kCFTypeArrayCallBacks);
+ return (WindowsLocales);
+ }
++#elif DEPLOYMENT_TARGET_LINUX
++static CFStringRef __CFLocaleCopyPOSIXLocaleName(void)
++{
++ const char *p = NULL;
++ CFStringRef identifier = NULL;
++
++ p = getenv("LC_ALL");
++
++ if (NULL == p) p = getenv("LANG");
++ if (NULL != p) identifier = CFStringCreateWithCString(kCFAllocatorDefault, p, kCFStringEncodingASCII);
++
++ return (identifier);
++}
+ #endif // DEPLOYMENT_TARGET_WINDOWS
+
+ static Boolean __CFLocaleEqual(CFTypeRef cf1, CFTypeRef cf2) {
+@@ -335,6 +348,8 @@
+
+ #ifdef DEPLOYMENT_TARGET_WINDOWS
+ identifier = __CFLocaleWindowsLCIDToISOLocaleName(LOCALE_USER_DEFAULT);
++#elif DEPLOYMENT_TARGET_LINUX
++ identifier = __CFLocaleCopyPOSIXLocaleName();
+ #endif
+
+ struct __CFLocale *locale;
diff --git a/opencflite.patches/opencflite-58.patch b/opencflite.patches/opencflite-58.patch
new file mode 100644
index 0000000..db1f9ce
--- /dev/null
+++ b/opencflite.patches/opencflite-58.patch
@@ -0,0 +1,38 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c 2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c 2012-04-25 10:35:53.000000000 -0700
+@@ -238,9 +238,10 @@
+ }
+
+
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <stdio.h>
+ #include <sys/fcntl.h>
+
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+ */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -264,6 +269,6 @@
+ if (atomic) {
+ CFURLRef dir = CFURLCreateCopyDeletingLastPathComponent(kCFAllocatorSystemDefault, url);
+- CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXX"), false);
++ CFURLRef tempFile = CFURLCreateCopyAppendingPathComponent(kCFAllocatorSystemDefault, dir, CFSTR("cf#XXXXXX"), false);
+ CFRelease(dir);
+ if (!CFURLGetFileSystemRepresentation(tempFile, true, (uint8_t *)auxPath, CFMaxPathSize)) {
+ CFRelease(tempFile);
+@@ -339,12 +346,12 @@
+ CFRelease(binStream);
+ if (data) {
+ SInt32 mode;
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+ mode = isWorldReadable ? S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH : S_IRUSR|S_IWUSR;
+ #else
+ mode = 0666;
+ #endif
+-#if DEPLOYMENT_TARGET_MACOSX
++#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
+ { // Try quick atomic way first, then fallback to slower ways and error cases
+ CFStringRef scheme = CFURLCopyScheme(url);
+ if (!scheme) {
diff --git a/opencflite.patches/opencflite-59.patch b/opencflite.patches/opencflite-59.patch
new file mode 100644
index 0000000..cc73877
--- /dev/null
+++ b/opencflite.patches/opencflite-59.patch
@@ -0,0 +1,29 @@
+diff -aruN a/CFXMLPreferencesDomain.c b/CFXMLPreferencesDomain.c
+--- a/CFXMLPreferencesDomain.c 2009-02-19 08:32:54.000000000 -0800
++++ b/CFXMLPreferencesDomain.c 2012-04-25 10:35:53.000000000 -0700
+@@ -239,9 +239,13 @@
+
+
+ #if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_LINUX
++#include <grp.h>
+ #include <stdio.h>
+ #include <sys/fcntl.h>
+
++#define __kCFAdminGroupName "admin"
++#define __kCFAdminFallbackGroupID 80
++
+ /* __CFWriteBytesToFileWithAtomicity is a "safe save" facility. Write the bytes using the specified mode on the file to the provided URL. If the atomic flag is true, try to do it in a fashion that will enable a safe save.
+ */
+ static Boolean __CFWriteBytesToFileWithAtomicity(CFURLRef url, const void *bytes, int length, SInt32 mode, Boolean atomic) {
+@@ -265,8 +270,10 @@
+ } else {
+ mode = 0664;
+ if (writingFileAsRoot && (0 == strncmp(cpath, "/Library/Preferences", 20))) {
++ const struct group *grent;
+ owner = geteuid();
+- group = 80;
++ grent = getgrnam(__kCFAdminGroupName);
++ group = grent ? grent->gr_gid : __kCFAdminFallbackGroupID;
+ }
+ }
+ }
diff --git a/opencflite.patches/opencflite-60.patch b/opencflite.patches/opencflite-60.patch
new file mode 100644
index 0000000..bf01af4
--- /dev/null
+++ b/opencflite.patches/opencflite-60.patch
@@ -0,0 +1,93 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c 2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c 2016-06-03 16:45:46.707080496 -0700
+@@ -67,7 +67,7 @@
+ #if DEPLOYMENT_TARGET_MACOSX
+ #define __kCFCharacterSetDir "/System/Library/CoreServices"
+ #elif DEPLOYMENT_TARGET_LINUX || DEPLOYMENT_TARGET_FREEBSD
+-#define __kCFCharacterSetDir "/usr/local/share/CoreFoundation"
++#define __kCFCharacterSetDir __kCFDataDir "/CoreFoundation"
+ #elif DEPLOYMENT_TARGET_WINDOWS
+ #define __kCFCharacterSetDir "\\Windows\\CoreFoundation"
+ #define MAXPATHLEN MAX_PATH
+@@ -129,6 +129,26 @@
+ strlcpy(cpath, _CFDLLPath(), MAXPATHLEN);
+ #else
+ strlcpy(cpath, __kCFCharacterSetDir, MAXPATHLEN);
++ // For non-absolute paths, prefix them with the path to this executable
++ if (*cpath != '/') {
++ int len;
++ char *lastslash;
++
++ len = readlink("/proc/self/exe", cpath, MAXPATHLEN);
++ if (len < 0) {
++ cpath[0] = '\0';
++ } else {
++ cpath[len] = '\0';
++ }
++
++ // Would have used dirname(), but it was behaving badly, and this works in place
++ lastslash = strrchr(cpath, '/');
++ if (lastslash != NULL) {
++ *(lastslash + 1) = '\0';
++ }
++
++ strlcat(cpath, __kCFCharacterSetDir, MAXPATHLEN);
++ }
+ #endif
+
+ #if DEPLOYMENT_TARGET_WINDOWS || 0
+diff -aruN a/configure b/configure
+--- a/configure 2016-06-03 16:43:52.651387528 -0700
++++ b/configure 2016-06-03 16:44:19.875314281 -0700
+@@ -1305,7 +1305,7 @@
+
+ # Be sure to have absolute directory names.
+ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+- datadir sysconfdir sharedstatedir localstatedir includedir \
++ sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+ do
+diff -aruN a/Makefile.am b/Makefile.am
+--- a/Makefile.am 2009-03-10 16:31:21.000000000 -0700
++++ b/Makefile.am 2016-06-03 16:44:19.879314270 -0700
+@@ -25,7 +25,7 @@
+ # Unicode character mappings.
+ #
+
+-libCoreFoundation_la_datadir = ${datadir}/CoreServices
++libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets
+
+ libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap \
+ CFUniCharPropertyDatabase.data \
+@@ -35,7 +35,7 @@
+ CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS) \
+ -DU_SHOW_DRAFT_API=1 \
+ -DCF_BUILDING_CF=1 \
+- -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++ -D__kCFDataDir=\"${datadir}\" \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5 \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/mach_support
+diff -aruN a/Makefile.in b/Makefile.in
+--- a/Makefile.in 2009-03-10 23:44:36.000000000 -0700
++++ b/Makefile.in 2016-06-03 16:44:19.879314270 -0700
+@@ -535,7 +535,7 @@
+ # Define where we will install and where CoreFoundation can find its
+ # Unicode character mappings.
+ #
+-libCoreFoundation_la_datadir = ${datadir}/CoreServices
++libCoreFoundation_la_datadir = ${datadir}/CoreFoundation/CharacterSets
+ libCoreFoundation_la_data_DATA = CFCharacterSetBitmaps.bitmap \
+ CFUniCharPropertyDatabase.data \
+ CFUnicodeData-B.mapping \
+@@ -544,7 +544,7 @@
+ CF_COMMON_CPPFLAGS = $(AM_CPPFLAGS) \
+ -DU_SHOW_DRAFT_API=1 \
+ -DCF_BUILDING_CF=1 \
+- -D__kCFCharacterSetDir=\"${libCoreFoundation_la_datadir}\" \
++ -D__kCFDataDir=\"${datadir}\" \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5 \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/mach_support
diff --git a/opencflite.patches/opencflite-61.patch b/opencflite.patches/opencflite-61.patch
new file mode 100644
index 0000000..b724c34
--- /dev/null
+++ b/opencflite.patches/opencflite-61.patch
@@ -0,0 +1,24 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c 2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c 2012-04-25 22:58:38.968005637 -0700
+@@ -574,18 +576,10 @@
+
+ static CFSpinLock_t __CFUniCharMappingTableLock = CFSpinLockInit;
+
+-#if __CF_BIG_ENDIAN__
+ #if USE_MACHO_SEGMENT
+ #define MAPPING_TABLE_FILE "__data"
+ #else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-B.mapping"
+-#endif
+-#else
+-#if USE_MACHO_SEGMENT
+-#define MAPPING_TABLE_FILE "__data"
+-#else
+-#define MAPPING_TABLE_FILE "CFUnicodeData-L.mapping"
+-#endif
++#define MAPPING_TABLE_FILE "CFUnicodeData.mapping"
+ #endif
+
+ __private_extern__ const void *CFUniCharGetMappingData(uint32_t type) {
+diff -aruN a/Makefile.am b/Makefile.am
diff --git a/opencflite.patches/opencflite-62.patch b/opencflite.patches/opencflite-62.patch
new file mode 100644
index 0000000..e58f77a
--- /dev/null
+++ b/opencflite.patches/opencflite-62.patch
@@ -0,0 +1,16 @@
+diff -aruN a/CFUniChar.c b/CFUniChar.c
+--- a/CFUniChar.c 2009-02-19 16:25:06.000000000 -0800
++++ b/CFUniChar.c 2012-04-25 22:58:38.968005637 -0700
+@@ -221,10 +221,12 @@
+
+ int no_hang_fd = open("/dev/autofs_nowait", 0);
+ if ((fd = open(fileName, O_RDONLY, 0)) < 0) {
++ CFLog(__kCFLogAssertion, CFSTR("%s(): could not open %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+ close(no_hang_fd);
+ return false;
+ }
+ if (fstat(fd, &statBuf) < 0 || (*bytes = mmap(0, statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)-1) {
++ CFLog(__kCFLogAssertion, CFSTR("%s(): could not map %s for read-only access."), __PRETTY_FUNCTION__, fileName);
+ close(fd);
+ return false;
+ }
diff --git a/opencflite.patches/opencflite-63.patch b/opencflite.patches/opencflite-63.patch
new file mode 100644
index 0000000..2775a4f
--- /dev/null
+++ b/opencflite.patches/opencflite-63.patch
@@ -0,0 +1,28 @@
+diff -aruN a/CFBundle_Resources.c b/CFBundle_Resources.c
+--- a/CFBundle_Resources.c 2018-02-23 11:18:07.687746791 -0800
++++ b/CFBundle_Resources.c 2018-02-23 11:18:16.813307627 -0800
+@@ -792,7 +792,6 @@
+
+ result = (CFStringRef)CFDictionaryGetValue(stringTable, key);
+ if (!result) {
+- static int capitalize = -1;
+ if (!value) {
+ result = (CFStringRef)CFRetain(key);
+ } else if (CFEqual(value, CFSTR(""))) {
+@@ -800,15 +799,7 @@
+ } else {
+ result = (CFStringRef)CFRetain(value);
+ }
+- if (capitalize != 0) {
+- if (capitalize != 0) {
+- CFMutableStringRef capitalizedResult = CFStringCreateMutableCopy(CFGetAllocator(bundle), 0, result);
+- CFLog(__kCFLogBundle, CFSTR("Localizable string \"%@\" not found in strings table \"%@\" of bundle %@."), key, tableName, bundle);
+- CFStringUppercase(capitalizedResult, NULL);
+- CFRelease(result);
+- result = capitalizedResult;
+- }
+- }
++ CFLog(__kCFLogBundle, CFSTR("Localizable string \"%@\" not found in strings table \"%@\" of bundle %@."), key, tableName, bundle);
+ } else {
+ CFRetain(result);
+ }
diff --git a/opencflite.tar.gz b/opencflite.tar.gz
new file mode 100644
index 0000000..cff4fd0
--- /dev/null
+++ b/opencflite.tar.gz
Binary files differ
diff --git a/opencflite.url b/opencflite.url
new file mode 100644
index 0000000..90a49dc
--- /dev/null
+++ b/opencflite.url
@@ -0,0 +1 @@
+http://download.sourceforge.net/opencflite/opencflite-476.17.2.tar.gz
diff --git a/opencflite.version b/opencflite.version
new file mode 100644
index 0000000..7b60178
--- /dev/null
+++ b/opencflite.version
@@ -0,0 +1 @@
+476.17.2