OSDN Git Service

add some file to compile svnlibdiff
authorFrank Li <lznuaa@gmail.com>
Tue, 16 Dec 2008 13:48:10 +0000 (21:48 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 16 Dec 2008 13:48:10 +0000 (21:48 +0800)
20 files changed:
src/TortoiseMerge/TortoiseMerge.vcproj
src/TortoiseMerge/libsvn_diff/diff3.c
src/TortoiseMerge/libsvn_diff/diff4.c
src/TortoiseMerge/svninclude/apr.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_errno.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_file_info.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_file_io.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_general.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_getopt.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_hash.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_mmap.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_pools.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_sha1.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_tables.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_time.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/apr_want.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/svn_error.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/svn_error_codes.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/svn_pools.h [new file with mode: 0644]
src/TortoiseMerge/svninclude/svn_types.h [new file with mode: 0644]

index de2ff97..4981c77 100644 (file)
@@ -47,7 +47,7 @@
                        <Tool\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
-                               AdditionalIncludeDirectories="..\Git"\r
+                               AdditionalIncludeDirectories="svninclude;..\Utils;..\Git;..\Utils\MiscUI"\r
                                PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;APR_DECLARE_STATIC;APU_DECLARE_STATIC"\r
                                MinimalRebuild="true"\r
                                BasicRuntimeChecks="3"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="3"\r
                                FavorSizeOrSpeed="2"\r
-                               AdditionalIncludeDirectories="..\Utils;..\Git;..\Utils\MiscUI"\r
+                               AdditionalIncludeDirectories="svninclude;..\Utils;..\Git;..\Utils\MiscUI"\r
                                PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;APR_DECLARE_STATIC;APU_DECLARE_STATIC"\r
                                MinimalRebuild="false"\r
                                RuntimeLibrary="2"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="3"\r
                                FavorSizeOrSpeed="2"\r
-                               AdditionalIncludeDirectories="..\Git"\r
+                               AdditionalIncludeDirectories="svninclude;..\Utils;..\Git;..\Utils\MiscUI"\r
                                PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;APR_DECLARE_STATIC;APU_DECLARE_STATIC"\r
                                MinimalRebuild="false"\r
                                RuntimeLibrary="0"\r
                                Name="VCCLCompilerTool"\r
                                Optimization="0"\r
                                FavorSizeOrSpeed="2"\r
-                               AdditionalIncludeDirectories="..\Git"\r
+                               AdditionalIncludeDirectories="svninclude;..\Utils;..\Git;..\Utils\MiscUI"\r
                                PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;APR_DECLARE_STATIC;APU_DECLARE_STATIC"\r
                                MinimalRebuild="false"\r
                                RuntimeLibrary="1"\r
                                </File>\r
                        </Filter>\r
                </Filter>\r
+               <Filter\r
+                       Name="libsvndiff"\r
+                       >\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff3.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff4.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff_file.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\diff_memory.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\lcs.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\token.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\libsvn_diff\util.c"\r
+                               >\r
+                               <FileConfiguration\r
+                                       Name="Debug|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="Release|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="release_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                               <FileConfiguration\r
+                                       Name="debug_static|Win32"\r
+                                       >\r
+                                       <Tool\r
+                                               Name="VCCLCompilerTool"\r
+                                               UsePrecompiledHeader="0"\r
+                                       />\r
+                               </FileConfiguration>\r
+                       </File>\r
+               </Filter>\r
        </Files>\r
        <Globals>\r
                <Global\r
index 9bf4157..6602328 100644 (file)
@@ -18,7 +18,7 @@
 \r
 \r
 #include <apr.h>\r
-#include <apr_pools.h>\r
+//#include <apr_pools.h>\r
 #include <apr_general.h>\r
 \r
 #include "svn_pools.h"\r
index 3698cc8..f57eece 100644 (file)
@@ -18,7 +18,7 @@
 \r
 \r
 #include <apr.h>\r
-#include <apr_pools.h>\r
+//#include <apr_pools.h>\r
 #include <apr_general.h>\r
 \r
 #include "svn_pools.h"\r
diff --git a/src/TortoiseMerge/svninclude/apr.h b/src/TortoiseMerge/svninclude/apr.h
new file mode 100644 (file)
index 0000000..1e8c2b8
--- /dev/null
@@ -0,0 +1,638 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more\r
+ * contributor license agreements.  See the NOTICE file distributed with\r
+ * this work for additional information regarding copyright ownership.\r
+ * The ASF licenses this file to You under the Apache License, Version 2.0\r
+ * (the "License"); you may not use this file except in compliance with\r
+ * the License.  You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef APR_H\r
+#define APR_H\r
+\r
+/* GENERATED FILE WARNING!  DO NOT EDIT apr.h\r
+ *\r
+ * You must modify apr.hw instead.\r
+ *\r
+ * And please, make an effort to stub apr.hnw and apr.h.in in the process.\r
+ *\r
+ * This is the Win32 specific version of apr.h.  It is copied from\r
+ * apr.hw by the apr.dsp and libapr.dsp projects. \r
+ */\r
+\r
+/**\r
+ * @file apr.h\r
+ * @brief APR Platform Definitions\r
+ * @remark This is a generated header generated from include/apr.h.in by\r
+ * ./configure, or copied from include/apr.hw or include/apr.hnw \r
+ * for Win32 or Netware by those build environments, respectively.\r
+ */\r
+\r
+#if defined(WIN32) || defined(DOXYGEN)\r
+\r
+/* Ignore most warnings (back down to /W3) for poorly constructed headers\r
+ */\r
+#if defined(_MSC_VER) && _MSC_VER >= 1200\r
+#pragma warning(push, 3)\r
+#endif\r
+\r
+/* disable or reduce the frequency of...\r
+ *   C4057: indirection to slightly different base types\r
+ *   C4075: slight indirection changes (unsigned short* vs short[])\r
+ *   C4100: unreferenced formal parameter\r
+ *   C4127: conditional expression is constant\r
+ *   C4163: '_rotl64' : not available as an intrinsic function\r
+ *   C4201: nonstandard extension nameless struct/unions\r
+ *   C4244: int to char/short - precision loss\r
+ *   C4514: unreferenced inline function removed\r
+ */\r
+#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244)\r
+\r
+/* Ignore Microsoft's interpretation of secure development\r
+ * and the POSIX string handling API\r
+ */\r
+#if defined(_MSC_VER) && _MSC_VER >= 1400\r
+#ifndef _CRT_SECURE_NO_DEPRECATE\r
+#define _CRT_SECURE_NO_DEPRECATE\r
+#endif\r
+#pragma warning(disable: 4996)\r
+#endif\r
+\r
+/* Has windows.h already been included?  If so, our preferences don't matter,\r
+ * but we will still need the winsock things no matter what was included.\r
+ * If not, include a restricted set of windows headers to our tastes.\r
+ */\r
+#ifndef _WINDOWS_\r
+#ifndef WIN32_LEAN_AND_MEAN\r
+#define WIN32_LEAN_AND_MEAN\r
+#endif\r
+#ifndef _WIN32_WINNT\r
+\r
+/* Restrict the server to a subset of Windows XP header files by default\r
+ */\r
+#define _WIN32_WINNT 0x0501\r
+#endif\r
+#ifndef NOUSER\r
+#define NOUSER\r
+#endif\r
+#ifndef NOMCX\r
+#define NOMCX\r
+#endif\r
+#ifndef NOIME\r
+#define NOIME\r
+#endif\r
+#include <windows.h>\r
+/* \r
+ * Add a _very_few_ declarations missing from the restricted set of headers\r
+ * (If this list becomes extensive, re-enable the required headers above!)\r
+ * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now\r
+ */\r
+#define SW_HIDE             0\r
+#ifndef _WIN32_WCE\r
+#include <winsock2.h>\r
+#include <mswsock.h>\r
+#include <ws2tcpip.h>\r
+#include <tlhelp32.h>\r
+#else\r
+#include <winsock.h>\r
+#endif\r
+#endif /* !_WINDOWS_ */\r
+\r
+/**\r
+ * @defgroup APR Apache Portability Runtime library\r
+ * @{\r
+ */\r
+/**\r
+ * @defgroup apr_platform Platform Definitions\r
+ * @{\r
+ * @warning\r
+ * <strong><em>The actual values of macros and typedefs on this page<br>\r
+ * are platform specific and should NOT be relied upon!</em></strong>\r
+ */\r
+\r
+#define APR_INLINE __inline\r
+#define APR_HAS_INLINE          1\r
+#if !defined(__GNUC__) && !defined(__attribute__)\r
+#define __attribute__(__x)\r
+#endif\r
+\r
+#ifndef _WIN32_WCE\r
+#define APR_HAVE_ARPA_INET_H    0\r
+#define APR_HAVE_CONIO_H        1\r
+#define APR_HAVE_CRYPT_H        0\r
+#define APR_HAVE_CTYPE_H        1\r
+#define APR_HAVE_DIRENT_H       0\r
+#define APR_HAVE_ERRNO_H        1\r
+#define APR_HAVE_FCNTL_H        1\r
+#define APR_HAVE_IO_H           1\r
+#define APR_HAVE_LIMITS_H       1\r
+#define APR_HAVE_NETDB_H        0\r
+#define APR_HAVE_NETINET_IN_H   0\r
+#define APR_HAVE_NETINET_SCTP_H 0\r
+#define APR_HAVE_NETINET_SCTP_UIO_H 0\r
+#define APR_HAVE_NETINET_TCP_H  0\r
+#define APR_HAVE_PTHREAD_H      0\r
+#define APR_HAVE_SEMAPHORE_H    0\r
+#define APR_HAVE_SIGNAL_H       1\r
+#define APR_HAVE_STDARG_H       1\r
+#define APR_HAVE_STDINT_H       0\r
+#define APR_HAVE_STDIO_H        1\r
+#define APR_HAVE_STDLIB_H       1\r
+#define APR_HAVE_STRING_H       1\r
+#define APR_HAVE_STRINGS_H      0\r
+#define APR_HAVE_SYS_IOCTL_H    0\r
+#define APR_HAVE_SYS_SENDFILE_H 0\r
+#define APR_HAVE_SYS_SIGNAL_H   0\r
+#define APR_HAVE_SYS_SOCKET_H   0\r
+#define APR_HAVE_SYS_SOCKIO_H   0\r
+#define APR_HAVE_SYS_SYSLIMITS_H 0\r
+#define APR_HAVE_SYS_TIME_H     0\r
+#define APR_HAVE_SYS_TYPES_H    1\r
+#define APR_HAVE_SYS_UIO_H      0\r
+#define APR_HAVE_SYS_UN_H       0\r
+#define APR_HAVE_SYS_WAIT_H     0\r
+#define APR_HAVE_TIME_H         1\r
+#define APR_HAVE_UNISTD_H       0\r
+#define APR_HAVE_STDDEF_H       1\r
+#define APR_HAVE_PROCESS_H      1\r
+#else\r
+#define APR_HAVE_ARPA_INET_H    0\r
+#define APR_HAVE_CONIO_H        0\r
+#define APR_HAVE_CRYPT_H        0\r
+#define APR_HAVE_CTYPE_H        0\r
+#define APR_HAVE_DIRENT_H       0\r
+#define APR_HAVE_ERRNO_H        0\r
+#define APR_HAVE_FCNTL_H        0\r
+#define APR_HAVE_IO_H           0\r
+#define APR_HAVE_LIMITS_H       0\r
+#define APR_HAVE_NETDB_H        0\r
+#define APR_HAVE_NETINET_IN_H   0\r
+#define APR_HAVE_NETINET_SCTP_H 0\r
+#define APR_HAVE_NETINET_SCTP_UIO_H 0\r
+#define APR_HAVE_NETINET_TCP_H  0\r
+#define APR_HAVE_PTHREAD_H      0\r
+#define APR_HAVE_SEMAPHORE_H    0\r
+#define APR_HAVE_SIGNAL_H       0\r
+#define APR_HAVE_STDARG_H       0\r
+#define APR_HAVE_STDINT_H       0\r
+#define APR_HAVE_STDIO_H        1\r
+#define APR_HAVE_STDLIB_H       1\r
+#define APR_HAVE_STRING_H       1\r
+#define APR_HAVE_STRINGS_H      0\r
+#define APR_HAVE_SYS_IOCTL_H    0\r
+#define APR_HAVE_SYS_SENDFILE_H 0\r
+#define APR_HAVE_SYS_SIGNAL_H   0\r
+#define APR_HAVE_SYS_SOCKET_H   0\r
+#define APR_HAVE_SYS_SOCKIO_H   0\r
+#define APR_HAVE_SYS_SYSLIMITS_H 0\r
+#define APR_HAVE_SYS_TIME_H     0\r
+#define APR_HAVE_SYS_TYPES_H    0\r
+#define APR_HAVE_SYS_UIO_H      0\r
+#define APR_HAVE_SYS_UN_H       0\r
+#define APR_HAVE_SYS_WAIT_H     0\r
+#define APR_HAVE_TIME_H         0\r
+#define APR_HAVE_UNISTD_H       0\r
+#define APR_HAVE_STDDEF_H       0\r
+#define APR_HAVE_PROCESS_H      0\r
+#endif\r
+\r
+/** @} */\r
+/** @} */\r
+\r
+/* We don't include our conditional headers within the doxyblocks \r
+ * or the extern "C" namespace \r
+ */\r
+\r
+#if APR_HAVE_STDLIB_H\r
+#include <stdlib.h>\r
+#endif\r
+#if APR_HAVE_STDIO_H\r
+#include <stdio.h>\r
+#endif\r
+#if APR_HAVE_SYS_TYPES_H\r
+#include <sys/types.h>\r
+#endif\r
+#if APR_HAVE_STDDEF_H\r
+#include <stddef.h>\r
+#endif\r
+#if APR_HAVE_TIME_H\r
+#include <time.h>\r
+#endif\r
+#if APR_HAVE_PROCESS_H\r
+#include <process.h>\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**\r
+ * @addtogroup apr_platform\r
+ * @ingroup APR \r
+ * @{\r
+ */\r
+\r
+#define APR_HAVE_SHMEM_MMAP_TMP     0\r
+#define APR_HAVE_SHMEM_MMAP_SHM     0\r
+#define APR_HAVE_SHMEM_MMAP_ZERO    0\r
+#define APR_HAVE_SHMEM_SHMGET_ANON  0\r
+#define APR_HAVE_SHMEM_SHMGET       0\r
+#define APR_HAVE_SHMEM_MMAP_ANON    0\r
+#define APR_HAVE_SHMEM_BEOS         0\r
+\r
+#define APR_USE_SHMEM_MMAP_TMP     0\r
+#define APR_USE_SHMEM_MMAP_SHM     0\r
+#define APR_USE_SHMEM_MMAP_ZERO    0\r
+#define APR_USE_SHMEM_SHMGET_ANON  0\r
+#define APR_USE_SHMEM_SHMGET       0\r
+#define APR_USE_SHMEM_MMAP_ANON    0\r
+#define APR_USE_SHMEM_BEOS         0\r
+\r
+#define APR_USE_FLOCK_SERIALIZE           0 \r
+#define APR_USE_POSIXSEM_SERIALIZE        0\r
+#define APR_USE_SYSVSEM_SERIALIZE         0\r
+#define APR_USE_FCNTL_SERIALIZE           0\r
+#define APR_USE_PROC_PTHREAD_SERIALIZE    0 \r
+#define APR_USE_PTHREAD_SERIALIZE         0 \r
+\r
+#define APR_HAS_FLOCK_SERIALIZE           0\r
+#define APR_HAS_SYSVSEM_SERIALIZE         0\r
+#define APR_HAS_POSIXSEM_SERIALIZE        0\r
+#define APR_HAS_FCNTL_SERIALIZE           0\r
+#define APR_HAS_PROC_PTHREAD_SERIALIZE    0\r
+\r
+#define APR_PROCESS_LOCK_IS_GLOBAL        0\r
+\r
+#define APR_HAVE_CORKABLE_TCP   0\r
+#define APR_HAVE_GETRLIMIT      0\r
+#define APR_HAVE_ICONV          0\r
+#define APR_HAVE_IN_ADDR        1\r
+#define APR_HAVE_INET_ADDR      1\r
+#define APR_HAVE_INET_NETWORK   0\r
+#define APR_HAVE_IPV6           0\r
+#define APR_HAVE_MEMMOVE        1\r
+#define APR_HAVE_SETRLIMIT      0\r
+#define APR_HAVE_SIGACTION      0\r
+#define APR_HAVE_SIGSUSPEND     0\r
+#define APR_HAVE_SIGWAIT        0\r
+#define APR_HAVE_STRCASECMP     0\r
+#define APR_HAVE_STRDUP         1\r
+#define APR_HAVE_STRNCASECMP    0\r
+#define APR_HAVE_STRSTR         1\r
+#define APR_HAVE_MEMCHR         1\r
+#define APR_HAVE_STRUCT_RLIMIT  0\r
+#define APR_HAVE_UNION_SEMUN    0\r
+#define APR_HAVE_SCTP           0\r
+#define APR_HAVE_IOVEC          0\r
+\r
+#ifndef _WIN32_WCE\r
+#define APR_HAVE_STRICMP        1\r
+#define APR_HAVE_STRNICMP       1\r
+#else\r
+#define APR_HAVE_STRICMP        0\r
+#define APR_HAVE_STRNICMP       0\r
+#endif\r
+\r
+/*  APR Feature Macros */\r
+#define APR_HAS_SHARED_MEMORY     1\r
+#define APR_HAS_THREADS           1\r
+#define APR_HAS_MMAP              1\r
+#define APR_HAS_FORK              0\r
+#define APR_HAS_RANDOM            1\r
+#define APR_HAS_OTHER_CHILD       1\r
+#define APR_HAS_DSO               1\r
+#define APR_HAS_SO_ACCEPTFILTER   0\r
+#define APR_HAS_UNICODE_FS        1\r
+#define APR_HAS_PROC_INVOKED      1\r
+#define APR_HAS_OS_UUID           1\r
+\r
+#ifndef _WIN32_WCE\r
+#define APR_HAS_SENDFILE          1\r
+#define APR_HAS_USER              1\r
+#define APR_HAS_LARGE_FILES       1\r
+#define APR_HAS_XTHREAD_FILES     1\r
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1\r
+#else\r
+#define APR_HAS_SENDFILE          0\r
+#define APR_HAS_USER              0\r
+#define APR_HAS_LARGE_FILES       0\r
+#define APR_HAS_XTHREAD_FILES     0\r
+#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0\r
+#endif\r
+\r
+/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible\r
+ * to poll on files/pipes.\r
+ */\r
+#define APR_FILES_AS_SOCKETS      0\r
+\r
+/* This macro indicates whether or not EBCDIC is the native character set.\r
+ */\r
+#define APR_CHARSET_EBCDIC        0\r
+\r
+/* If we have a TCP implementation that can be "corked", what flag\r
+ * do we use?\r
+ */\r
+#define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@\r
+\r
+/* Is the TCP_NODELAY socket option inherited from listening sockets?\r
+ */\r
+#define APR_TCP_NODELAY_INHERITED 1\r
+\r
+/* Is the O_NONBLOCK flag inherited from listening sockets?\r
+ */\r
+#define APR_O_NONBLOCK_INHERITED  1\r
+\r
+/* Typedefs that APR needs. */\r
+\r
+typedef  unsigned char     apr_byte_t;\r
+\r
+typedef  short             apr_int16_t;\r
+typedef  unsigned short    apr_uint16_t;\r
+\r
+typedef  int               apr_int32_t;\r
+typedef  unsigned int      apr_uint32_t;\r
+\r
+typedef  __int64           apr_int64_t;\r
+typedef  unsigned __int64  apr_uint64_t;\r
+\r
+typedef  size_t      apr_size_t;\r
+#if APR_HAVE_STDDEF_H\r
+typedef  ptrdiff_t   apr_ssize_t;\r
+#else\r
+typedef  int         apr_ssize_t;\r
+#endif\r
+#if APR_HAS_LARGE_FILES\r
+typedef  __int64     apr_off_t;\r
+#else\r
+typedef  int         apr_off_t;\r
+#endif\r
+typedef  int         apr_socklen_t;\r
+typedef  apr_uint64_t      apr_ino_t;\r
+\r
+#ifdef WIN64\r
+#define APR_SIZEOF_VOIDP   8\r
+#else\r
+#define APR_SIZEOF_VOIDP   4\r
+#endif\r
+\r
+#if APR_SIZEOF_VOIDP == 8\r
+typedef  apr_uint64_t            apr_uintptr_t;\r
+#else\r
+typedef  apr_uint32_t            apr_uintptr_t;\r
+#endif\r
+\r
+/* Are we big endian? */\r
+/* XXX: Fatal assumption on Alpha platforms */\r
+#define APR_IS_BIGENDIAN       0\r
+\r
+/* Mechanisms to properly type numeric literals */\r
+\r
+#ifndef __GNUC__\r
+#define APR_INT64_C(val) (val##i64)\r
+#define APR_UINT64_C(val) (val##Ui64)\r
+#else\r
+#define APR_INT64_C(val) (val##LL)\r
+#define APR_UINT64_C(val) (val##ULL)\r
+#endif\r
+\r
+#ifdef INT16_MIN\r
+#define APR_INT16_MIN   INT16_MIN\r
+#else\r
+#define APR_INT16_MIN   (-0x7fff - 1)\r
+#endif\r
+\r
+#ifdef INT16_MAX\r
+#define APR_INT16_MAX  INT16_MAX\r
+#else\r
+#define APR_INT16_MAX   (0x7fff)\r
+#endif\r
+\r
+#ifdef UINT16_MAX\r
+#define APR_UINT16_MAX  UINT16_MAX\r
+#else\r
+#define APR_UINT16_MAX  (0xffff)\r
+#endif\r
+\r
+#ifdef INT32_MIN\r
+#define APR_INT32_MIN   INT32_MIN\r
+#else\r
+#define APR_INT32_MIN   (-0x7fffffff - 1)\r
+#endif\r
+\r
+#ifdef INT32_MAX\r
+#define APR_INT32_MAX  INT32_MAX\r
+#else\r
+#define APR_INT32_MAX  0x7fffffff\r
+#endif\r
+\r
+#ifdef UINT32_MAX\r
+#define APR_UINT32_MAX  UINT32_MAX\r
+#else\r
+#define APR_UINT32_MAX  (0xffffffffU)\r
+#endif\r
+\r
+#ifdef INT64_MIN\r
+#define APR_INT64_MIN   INT64_MIN\r
+#else\r
+#define APR_INT64_MIN   (APR_INT64_C(-0x7fffffffffffffff) - 1)\r
+#endif\r
+\r
+#ifdef INT64_MAX\r
+#define APR_INT64_MAX   INT64_MAX\r
+#else\r
+#define APR_INT64_MAX   APR_INT64_C(0x7fffffffffffffff)\r
+#endif\r
+\r
+#ifdef UINT64_MAX\r
+#define APR_UINT64_MAX  UINT64_MAX\r
+#else\r
+#define APR_UINT64_MAX  APR_UINT64_C(0xffffffffffffffff)\r
+#endif\r
+\r
+#define APR_SIZE_MAX    (~((apr_size_t)0))\r
+\r
+/* Definitions that APR programs need to work properly. */\r
+\r
+/**\r
+ * APR public API wrap for C++ compilers.\r
+ */\r
+#ifdef __cplusplus\r
+#define APR_BEGIN_DECLS     extern "C" {\r
+#define APR_END_DECLS       }\r
+#else\r
+#define APR_BEGIN_DECLS\r
+#define APR_END_DECLS\r
+#endif\r
+\r
+/** \r
+ * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, \r
+ * so that they follow the platform's calling convention.\r
+ * <PRE>\r
+ *\r
+ * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);\r
+ *\r
+ * </PRE>\r
+ */\r
+#define APR_THREAD_FUNC  __stdcall\r
+\r
+\r
+#if defined(DOXYGEN) || !defined(WIN32)\r
+\r
+/**\r
+ * The public APR functions are declared with APR_DECLARE(), so they may\r
+ * use the most appropriate calling convention.  Public APR functions with \r
+ * variable arguments must use APR_DECLARE_NONSTD().\r
+ *\r
+ * @remark Both the declaration and implementations must use the same macro.\r
+ *\r
+ * <PRE>\r
+ * APR_DECLARE(rettype) apr_func(args)\r
+ * </PRE>\r
+ * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA\r
+ * @remark Note that when APR compiles the library itself, it passes the \r
+ * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) \r
+ * to export public symbols from the dynamic library build.\n\r
+ * The user must define the APR_DECLARE_STATIC when compiling to target\r
+ * the static APR library on some platforms (e.g. Win32.)  The public symbols \r
+ * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n\r
+ * By default, compiling an application and including the APR public\r
+ * headers, without defining APR_DECLARE_STATIC, will prepare the code to be\r
+ * linked to the dynamic library.\r
+ */\r
+#define APR_DECLARE(type)            type \r
+\r
+/**\r
+ * The public APR functions using variable arguments are declared with \r
+ * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.\r
+ * @see APR_DECLARE @see APR_DECLARE_DATA\r
+ * @remark Both the declaration and implementations must use the same macro.\r
+ * <PRE>\r
+ *\r
+ * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);\r
+ *\r
+ * </PRE>\r
+ */\r
+#define APR_DECLARE_NONSTD(type)     type\r
+\r
+/**\r
+ * The public APR variables are declared with AP_MODULE_DECLARE_DATA.\r
+ * This assures the appropriate indirection is invoked at compile time.\r
+ * @see APR_DECLARE @see APR_DECLARE_NONSTD\r
+ * @remark Note that the declaration and implementations use different forms,\r
+ * but both must include the macro.\r
+ * \r
+ * <PRE>\r
+ *\r
+ * extern APR_DECLARE_DATA type apr_variable;\n\r
+ * APR_DECLARE_DATA type apr_variable = value;\r
+ *\r
+ * </PRE>\r
+ */\r
+#define APR_DECLARE_DATA\r
+\r
+#elif defined(APR_DECLARE_STATIC)\r
+#define APR_DECLARE(type)            type __stdcall\r
+#define APR_DECLARE_NONSTD(type)     type __cdecl\r
+#define APR_DECLARE_DATA\r
+#elif defined(APR_DECLARE_EXPORT)\r
+#define APR_DECLARE(type)            __declspec(dllexport) type __stdcall\r
+#define APR_DECLARE_NONSTD(type)     __declspec(dllexport) type __cdecl\r
+#define APR_DECLARE_DATA             __declspec(dllexport)\r
+#else\r
+#define APR_DECLARE(type)            __declspec(dllimport) type __stdcall\r
+#define APR_DECLARE_NONSTD(type)     __declspec(dllimport) type __cdecl\r
+#define APR_DECLARE_DATA             __declspec(dllimport)\r
+#endif\r
+\r
+#ifdef WIN64\r
+#define APR_SSIZE_T_FMT          "I64d"\r
+#define APR_SIZE_T_FMT           "I64u"\r
+#else\r
+#define APR_SSIZE_T_FMT          "d"\r
+#define APR_SIZE_T_FMT           "u"\r
+#endif\r
+\r
+#if APR_HAS_LARGE_FILES\r
+#define APR_OFF_T_FMT            "I64d"\r
+#else\r
+#define APR_OFF_T_FMT            "d"\r
+#endif\r
+\r
+#define APR_PID_T_FMT            "d"\r
+\r
+#define APR_INT64_T_FMT          "I64d"\r
+#define APR_UINT64_T_FMT         "I64u"\r
+#define APR_UINT64_T_HEX_FMT     "I64x"\r
+\r
+/* No difference between PROC and GLOBAL mutex */\r
+#define APR_PROC_MUTEX_IS_GLOBAL      1\r
+\r
+/* Local machine definition for console and log output. */\r
+#define APR_EOL_STR              "\r\n"\r
+\r
+typedef int apr_wait_t;\r
+\r
+#if APR_HAS_UNICODE_FS\r
+/* An arbitrary size that is digestable. True max is a bit less than 32000 */\r
+#define APR_PATH_MAX 8192\r
+#else /* !APR_HAS_UNICODE_FS */\r
+#define APR_PATH_MAX MAX_PATH\r
+#endif\r
+\r
+#define APR_DSOPATH "PATH"\r
+\r
+/** @} */\r
+\r
+/* Definitions that only Win32 programs need to compile properly. */\r
+\r
+/* XXX These simply don't belong here, perhaps in apr_portable.h\r
+ * based on some APR_HAVE_PID/GID/UID?\r
+ */\r
+#ifndef __GNUC__\r
+typedef  int         pid_t;\r
+#endif\r
+typedef  int         uid_t;\r
+typedef  int         gid_t;\r
+\r
+/* Win32 .h ommissions we really need */\r
+#define STDIN_FILENO  0\r
+#define STDOUT_FILENO 1\r
+#define STDERR_FILENO 2\r
+\r
+#if APR_HAVE_IPV6\r
+\r
+/* Appears in later flavors, not the originals. */\r
+#ifndef in_addr6\r
+#define  in6_addr    in_addr6\r
+#endif\r
+\r
+#ifndef WS2TCPIP_INLINE\r
+#define IN6_IS_ADDR_V4MAPPED(a) \\r
+    (   (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \\r
+     && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))\r
+#endif\r
+\r
+#endif /* APR_HAS_IPV6 */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+/* Done with badly written headers\r
+ */\r
+#if defined(_MSC_VER) && _MSC_VER >= 1200\r
+#pragma warning(pop)\r
+#pragma warning(disable: 4996)\r
+#endif\r
+\r
+#endif /* WIN32 */\r
+\r
+#endif /* APR_H */\r
diff --git a/src/TortoiseMerge/svninclude/apr_errno.h b/src/TortoiseMerge/svninclude/apr_errno.h
new file mode 100644 (file)
index 0000000..30f42f6
--- /dev/null
@@ -0,0 +1,1312 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more\r
+ * contributor license agreements.  See the NOTICE file distributed with\r
+ * this work for additional information regarding copyright ownership.\r
+ * The ASF licenses this file to You under the Apache License, Version 2.0\r
+ * (the "License"); you may not use this file except in compliance with\r
+ * the License.  You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef APR_ERRNO_H\r
+#define APR_ERRNO_H\r
+\r
+/**\r
+ * @file apr_errno.h\r
+ * @brief APR Error Codes\r
+ */\r
+\r
+#include "apr.h"\r
+\r
+#if APR_HAVE_ERRNO_H\r
+#include <errno.h>\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/**\r
+ * @defgroup apr_errno Error Codes\r
+ * @ingroup APR \r
+ * @{\r
+ */\r
+\r
+/**\r
+ * Type for specifying an error or status code.\r
+ */\r
+typedef int apr_status_t;\r
+\r
+/**\r
+ * Return a human readable string describing the specified error.\r
+ * @param statcode The error code the get a string for.\r
+ * @param buf A buffer to hold the error string.\r
+ * @param bufsize Size of the buffer to hold the string.\r
+ */\r
+APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, \r
+                                 apr_size_t bufsize);\r
+\r
+#if defined(DOXYGEN)\r
+/**\r
+ * @def APR_FROM_OS_ERROR(os_err_type syserr)\r
+ * Fold a platform specific error into an apr_status_t code.\r
+ * @return apr_status_t\r
+ * @param e The platform os error code.\r
+ * @warning  macro implementation; the syserr argument may be evaluated\r
+ *      multiple times.\r
+ */\r
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)\r
+\r
+/**\r
+ * @def APR_TO_OS_ERROR(apr_status_t statcode)\r
+ * @return os_err_type\r
+ * Fold an apr_status_t code back to the native platform defined error.\r
+ * @param e The apr_status_t folded platform os error code.\r
+ * @warning  macro implementation; the statcode argument may be evaluated\r
+ *      multiple times.  If the statcode was not created by apr_get_os_error \r
+ *      or APR_FROM_OS_ERROR, the results are undefined.\r
+ */\r
+#define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)\r
+\r
+/** @def apr_get_os_error()\r
+ * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms\r
+ * @remark This retrieves errno, or calls a GetLastError() style function, and\r
+ *      folds it with APR_FROM_OS_ERROR.  Some platforms (such as OS2) have no\r
+ *      such mechanism, so this call may be unsupported.  Do NOT use this\r
+ *      call for socket errors from socket, send, recv etc!\r
+ */\r
+\r
+/** @def apr_set_os_error(e)\r
+ * Reset the last platform error, unfolded from an apr_status_t, on some platforms\r
+ * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR()\r
+ * @warning This is a macro implementation; the statcode argument may be evaluated\r
+ *      multiple times.  If the statcode was not created by apr_get_os_error\r
+ *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets\r
+ *      errno, or calls a SetLastError() style function, unfolding statcode\r
+ *      with APR_TO_OS_ERROR.  Some platforms (such as OS2) have no such\r
+ *      mechanism, so this call may be unsupported.\r
+ */\r
+\r
+/** @def apr_get_netos_error()\r
+ * Return the last socket error, folded into apr_status_t, on all platforms\r
+ * @remark This retrieves errno or calls a GetLastSocketError() style function,\r
+ *      and folds it with APR_FROM_OS_ERROR.\r
+ */\r
+\r
+/** @def apr_set_netos_error(e)\r
+ * Reset the last socket error, unfolded from an apr_status_t\r
+ * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR()\r
+ * @warning This is a macro implementation; the statcode argument may be evaluated\r
+ *      multiple times.  If the statcode was not created by apr_get_os_error\r
+ *      or APR_FROM_OS_ERROR, the results are undefined.  This macro sets\r
+ *      errno, or calls a WSASetLastError() style function, unfolding \r
+ *      socketcode with APR_TO_OS_ERROR.\r
+ */\r
+\r
+#endif /* defined(DOXYGEN) */\r
+\r
+/**\r
+ * APR_OS_START_ERROR is where the APR specific error values start.\r
+ */\r
+#define APR_OS_START_ERROR     20000\r
+/**\r
+ * APR_OS_ERRSPACE_SIZE is the maximum number of errors you can fit\r
+ *    into one of the error/status ranges below -- except for\r
+ *    APR_OS_START_USERERR, which see.\r
+ */\r
+#define APR_OS_ERRSPACE_SIZE 50000\r
+/**\r
+ * APR_UTIL_ERRSPACE_SIZE is the size of the space that is reserved for\r
+ * use within apr-util. This space is reserved above that used by APR\r
+ * internally.\r
+ * @note This number MUST be smaller than APR_OS_ERRSPACE_SIZE by a\r
+ *       large enough amount that APR has sufficient room for it's\r
+ *       codes.\r
+ */\r
+#define APR_UTIL_ERRSPACE_SIZE 20000\r
+/**\r
+ * APR_OS_START_STATUS is where the APR specific status codes start.\r
+ */\r
+#define APR_OS_START_STATUS    (APR_OS_START_ERROR + APR_OS_ERRSPACE_SIZE)\r
+/**\r
+ * APR_UTIL_START_STATUS is where APR-Util starts defining it's\r
+ * status codes.\r
+ */\r
+#define APR_UTIL_START_STATUS   (APR_OS_START_STATUS + \\r
+                           (APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE))\r
+/**\r
+ * APR_OS_START_USERERR are reserved for applications that use APR that\r
+ *     layer their own error codes along with APR's.  Note that the\r
+ *     error immediately following this one is set ten times farther\r
+ *     away than usual, so that users of apr have a lot of room in\r
+ *     which to declare custom error codes.\r
+ *\r
+ * In general applications should try and create unique error codes. To try\r
+ * and assist in finding suitable ranges of numbers to use, the following\r
+ * ranges are known to be used by the listed applications. If your \r
+ * application defines error codes please advise the range of numbers it\r
+ * uses to dev@apr.apache.org for inclusion in this list.\r
+ *\r
+ * Ranges shown are in relation to APR_OS_START_USERERR\r
+ *\r
+ * Subversion - Defined ranges, of less than 100, at intervals of 5000\r
+ *              starting at an offset of 5000, e.g.\r
+ *               +5000 to 5100,  +10000 to 10100\r
+ */\r
+#define APR_OS_START_USERERR    (APR_OS_START_STATUS + APR_OS_ERRSPACE_SIZE)\r
+/**\r
+ * APR_OS_START_USEERR is obsolete, defined for compatibility only.\r
+ * Use APR_OS_START_USERERR instead.\r
+ */\r
+#define APR_OS_START_USEERR     APR_OS_START_USERERR\r
+/**\r
+ * APR_OS_START_CANONERR is where APR versions of errno values are defined\r
+ *     on systems which don't have the corresponding errno.\r
+ */\r
+#define APR_OS_START_CANONERR  (APR_OS_START_USERERR \\r
+                                 + (APR_OS_ERRSPACE_SIZE * 10))\r
+/**\r
+ * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into \r
+ *     apr_status_t values.\r
+ */\r
+#define APR_OS_START_EAIERR    (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE)\r
+/**\r
+ * APR_OS_START_SYSERR folds platform-specific system error values into \r
+ *     apr_status_t values.\r
+ */\r
+#define APR_OS_START_SYSERR    (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE)\r
+\r
+/**\r
+ * @defgroup APR_ERROR_map APR Error Space\r
+ * <PRE>\r
+ * The following attempts to show the relation of the various constants\r
+ * used for mapping APR Status codes.\r
+ *\r
+ *       0          \r
+ *\r
+ *  20,000     APR_OS_START_ERROR\r
+ *\r
+ *         + APR_OS_ERRSPACE_SIZE (50,000)\r
+ *\r
+ *  70,000      APR_OS_START_STATUS\r
+ *\r
+ *         + APR_OS_ERRSPACE_SIZE - APR_UTIL_ERRSPACE_SIZE (30,000)\r
+ *\r
+ * 100,000      APR_UTIL_START_STATUS\r
+ *\r
+ *         + APR_UTIL_ERRSPACE_SIZE (20,000)\r
+ *\r
+ * 120,000      APR_OS_START_USERERR\r
+ *\r
+ *         + 10 x APR_OS_ERRSPACE_SIZE (50,000 * 10)\r
+ *\r
+ * 620,000      APR_OS_START_CANONERR\r
+ *\r
+ *         + APR_OS_ERRSPACE_SIZE (50,000)\r
+ *\r
+ * 670,000      APR_OS_START_EAIERR\r
+ *\r
+ *         + APR_OS_ERRSPACE_SIZE (50,000)\r
+ *\r
+ * 720,000      APR_OS_START_SYSERR\r
+ *\r
+ * </PRE>\r
+ */\r
+\r
+/** no error. */\r
+#define APR_SUCCESS 0\r
+\r
+/** \r
+ * @defgroup APR_Error APR Error Values\r
+ * <PRE>\r
+ * <b>APR ERROR VALUES</b>\r
+ * APR_ENOSTAT      APR was unable to perform a stat on the file \r
+ * APR_ENOPOOL      APR was not provided a pool with which to allocate memory\r
+ * APR_EBADDATE     APR was given an invalid date \r
+ * APR_EINVALSOCK   APR was given an invalid socket\r
+ * APR_ENOPROC      APR was not given a process structure\r
+ * APR_ENOTIME      APR was not given a time structure\r
+ * APR_ENODIR       APR was not given a directory structure\r
+ * APR_ENOLOCK      APR was not given a lock structure\r
+ * APR_ENOPOLL      APR was not given a poll structure\r
+ * APR_ENOSOCKET    APR was not given a socket\r
+ * APR_ENOTHREAD    APR was not given a thread structure\r
+ * APR_ENOTHDKEY    APR was not given a thread key structure\r
+ * APR_ENOSHMAVAIL  There is no more shared memory available\r
+ * APR_EDSOOPEN     APR was unable to open the dso object.  For more \r
+ *                  information call apr_dso_error().\r
+ * APR_EGENERAL     General failure (specific information not available)\r
+ * APR_EBADIP       The specified IP address is invalid\r
+ * APR_EBADMASK     The specified netmask is invalid\r
+ * APR_ESYMNOTFOUND Could not find the requested symbol\r
+ * APR_ENOTENOUGHENTROPY Not enough entropy to continue\r
+ * </PRE>\r
+ *\r
+ * <PRE>\r
+ * <b>APR STATUS VALUES</b>\r
+ * APR_INCHILD        Program is currently executing in the child\r
+ * APR_INPARENT       Program is currently executing in the parent\r
+ * APR_DETACH         The thread is detached\r
+ * APR_NOTDETACH      The thread is not detached\r
+ * APR_CHILD_DONE     The child has finished executing\r
+ * APR_CHILD_NOTDONE  The child has not finished executing\r
+ * APR_TIMEUP         The operation did not finish before the timeout\r
+ * APR_INCOMPLETE     The operation was incomplete although some processing\r
+ *                    was performed and the results are partially valid\r
+ * APR_BADCH          Getopt found an option not in the option string\r
+ * APR_BADARG         Getopt found an option that is missing an argument \r
+ *                    and an argument was specified in the option string\r
+ * APR_EOF            APR has encountered the end of the file\r
+ * APR_NOTFOUND       APR was unable to find the socket in the poll structure\r
+ * APR_ANONYMOUS      APR is using anonymous shared memory\r
+ * APR_FILEBASED      APR is using a file name as the key to the shared memory\r
+ * APR_KEYBASED       APR is using a shared key as the key to the shared memory\r
+ * APR_EINIT          Ininitalizer value.  If no option has been found, but \r
+ *                    the status variable requires a value, this should be used\r
+ * APR_ENOTIMPL       The APR function has not been implemented on this \r
+ *                    platform, either because nobody has gotten to it yet, \r
+ *                    or the function is impossible on this platform.\r
+ * APR_EMISMATCH      Two passwords do not match.\r
+ * APR_EABSOLUTE      The given path was absolute.\r
+ * APR_ERELATIVE      The given path was relative.\r
+ * APR_EINCOMPLETE    The given path was neither relative nor absolute.\r
+ * APR_EABOVEROOT     The given path was above the root path.\r
+ * APR_EBUSY          The given lock was busy.\r
+ * APR_EPROC_UNKNOWN  The given process wasn't recognized by APR\r
+ * </PRE>\r
+ * @{\r
+ */\r
+/** @see APR_STATUS_IS_ENOSTAT */\r
+#define APR_ENOSTAT        (APR_OS_START_ERROR + 1)\r
+/** @see APR_STATUS_IS_ENOPOOL */\r
+#define APR_ENOPOOL        (APR_OS_START_ERROR + 2)\r
+/* empty slot: +3 */\r
+/** @see APR_STATUS_IS_EBADDATE */\r
+#define APR_EBADDATE       (APR_OS_START_ERROR + 4)\r
+/** @see APR_STATUS_IS_EINVALSOCK */\r
+#define APR_EINVALSOCK     (APR_OS_START_ERROR + 5)\r
+/** @see APR_STATUS_IS_ENOPROC */\r
+#define APR_ENOPROC        (APR_OS_START_ERROR + 6)\r
+/** @see APR_STATUS_IS_ENOTIME */\r
+#define APR_ENOTIME        (APR_OS_START_ERROR + 7)\r
+/** @see APR_STATUS_IS_ENODIR */\r
+#define APR_ENODIR         (APR_OS_START_ERROR + 8)\r
+/** @see APR_STATUS_IS_ENOLOCK */\r
+#define APR_ENOLOCK        (APR_OS_START_ERROR + 9)\r
+/** @see APR_STATUS_IS_ENOPOLL */\r
+#define APR_ENOPOLL        (APR_OS_START_ERROR + 10)\r
+/** @see APR_STATUS_IS_ENOSOCKET */\r
+#define APR_ENOSOCKET      (APR_OS_START_ERROR + 11)\r
+/** @see APR_STATUS_IS_ENOTHREAD */\r
+#define APR_ENOTHREAD      (APR_OS_START_ERROR + 12)\r
+/** @see APR_STATUS_IS_ENOTHDKEY */\r
+#define APR_ENOTHDKEY      (APR_OS_START_ERROR + 13)\r
+/** @see APR_STATUS_IS_EGENERAL */\r
+#define APR_EGENERAL       (APR_OS_START_ERROR + 14)\r
+/** @see APR_STATUS_IS_ENOSHMAVAIL */\r
+#define APR_ENOSHMAVAIL    (APR_OS_START_ERROR + 15)\r
+/** @see APR_STATUS_IS_EBADIP */\r
+#define APR_EBADIP         (APR_OS_START_ERROR + 16)\r
+/** @see APR_STATUS_IS_EBADMASK */\r
+#define APR_EBADMASK       (APR_OS_START_ERROR + 17)\r
+/* empty slot: +18 */\r
+/** @see APR_STATUS_IS_EDSOPEN */\r
+#define APR_EDSOOPEN       (APR_OS_START_ERROR + 19)\r
+/** @see APR_STATUS_IS_EABSOLUTE */\r
+#define APR_EABSOLUTE      (APR_OS_START_ERROR + 20)\r
+/** @see APR_STATUS_IS_ERELATIVE */\r
+#define APR_ERELATIVE      (APR_OS_START_ERROR + 21)\r
+/** @see APR_STATUS_IS_EINCOMPLETE */\r
+#define APR_EINCOMPLETE    (APR_OS_START_ERROR + 22)\r
+/** @see APR_STATUS_IS_EABOVEROOT */\r
+#define APR_EABOVEROOT     (APR_OS_START_ERROR + 23)\r
+/** @see APR_STATUS_IS_EBADPATH */\r
+#define APR_EBADPATH       (APR_OS_START_ERROR + 24)\r
+/** @see APR_STATUS_IS_EPATHWILD */\r
+#define APR_EPATHWILD      (APR_OS_START_ERROR + 25)\r
+/** @see APR_STATUS_IS_ESYMNOTFOUND */\r
+#define APR_ESYMNOTFOUND   (APR_OS_START_ERROR + 26)\r
+/** @see APR_STATUS_IS_EPROC_UNKNOWN */\r
+#define APR_EPROC_UNKNOWN  (APR_OS_START_ERROR + 27)\r
+/** @see APR_STATUS_IS_ENOTENOUGHENTROPY */\r
+#define APR_ENOTENOUGHENTROPY (APR_OS_START_ERROR + 28)\r
+/** @} */\r
+\r
+/** \r
+ * @defgroup APR_STATUS_IS Status Value Tests\r
+ * @warning For any particular error condition, more than one of these tests\r
+ *      may match. This is because platform-specific error codes may not\r
+ *      always match the semantics of the POSIX codes these tests (and the\r
+ *      corresponding APR error codes) are named after. A notable example\r
+ *      are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on\r
+ *      Win32 platforms. The programmer should always be aware of this and\r
+ *      adjust the order of the tests accordingly.\r
+ * @{\r
+ */\r
+/** \r
+ * APR was unable to perform a stat on the file \r
+ * @warning always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_ENOSTAT(s)        ((s) == APR_ENOSTAT)\r
+/** \r
+ * APR was not provided a pool with which to allocate memory \r
+ * @warning always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_ENOPOOL(s)        ((s) == APR_ENOPOOL)\r
+/** APR was given an invalid date  */\r
+#define APR_STATUS_IS_EBADDATE(s)       ((s) == APR_EBADDATE)\r
+/** APR was given an invalid socket */\r
+#define APR_STATUS_IS_EINVALSOCK(s)     ((s) == APR_EINVALSOCK)\r
+/** APR was not given a process structure */\r
+#define APR_STATUS_IS_ENOPROC(s)        ((s) == APR_ENOPROC)\r
+/** APR was not given a time structure */\r
+#define APR_STATUS_IS_ENOTIME(s)        ((s) == APR_ENOTIME)\r
+/** APR was not given a directory structure */\r
+#define APR_STATUS_IS_ENODIR(s)         ((s) == APR_ENODIR)\r
+/** APR was not given a lock structure */\r
+#define APR_STATUS_IS_ENOLOCK(s)        ((s) == APR_ENOLOCK)\r
+/** APR was not given a poll structure */\r
+#define APR_STATUS_IS_ENOPOLL(s)        ((s) == APR_ENOPOLL)\r
+/** APR was not given a socket */\r
+#define APR_STATUS_IS_ENOSOCKET(s)      ((s) == APR_ENOSOCKET)\r
+/** APR was not given a thread structure */\r
+#define APR_STATUS_IS_ENOTHREAD(s)      ((s) == APR_ENOTHREAD)\r
+/** APR was not given a thread key structure */\r
+#define APR_STATUS_IS_ENOTHDKEY(s)      ((s) == APR_ENOTHDKEY)\r
+/** Generic Error which can not be put into another spot */\r
+#define APR_STATUS_IS_EGENERAL(s)       ((s) == APR_EGENERAL)\r
+/** There is no more shared memory available */\r
+#define APR_STATUS_IS_ENOSHMAVAIL(s)    ((s) == APR_ENOSHMAVAIL)\r
+/** The specified IP address is invalid */\r
+#define APR_STATUS_IS_EBADIP(s)         ((s) == APR_EBADIP)\r
+/** The specified netmask is invalid */\r
+#define APR_STATUS_IS_EBADMASK(s)       ((s) == APR_EBADMASK)\r
+/* empty slot: +18 */\r
+/** \r
+ * APR was unable to open the dso object.  \r
+ * For more information call apr_dso_error().\r
+ */\r
+#if defined(WIN32)\r
+#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN \\r
+                       || APR_TO_OS_ERROR(s) == ERROR_MOD_NOT_FOUND)\r
+#else\r
+#define APR_STATUS_IS_EDSOOPEN(s)       ((s) == APR_EDSOOPEN)\r
+#endif\r
+/** The given path was absolute. */\r
+#define APR_STATUS_IS_EABSOLUTE(s)      ((s) == APR_EABSOLUTE)\r
+/** The given path was relative. */\r
+#define APR_STATUS_IS_ERELATIVE(s)      ((s) == APR_ERELATIVE)\r
+/** The given path was neither relative nor absolute. */\r
+#define APR_STATUS_IS_EINCOMPLETE(s)    ((s) == APR_EINCOMPLETE)\r
+/** The given path was above the root path. */\r
+#define APR_STATUS_IS_EABOVEROOT(s)     ((s) == APR_EABOVEROOT)\r
+/** The given path was bad. */\r
+#define APR_STATUS_IS_EBADPATH(s)       ((s) == APR_EBADPATH)\r
+/** The given path contained wildcards. */\r
+#define APR_STATUS_IS_EPATHWILD(s)      ((s) == APR_EPATHWILD)\r
+/** Could not find the requested symbol.\r
+ * For more information call apr_dso_error().\r
+ */\r
+#if defined(WIN32)\r
+#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND \\r
+                       || APR_TO_OS_ERROR(s) == ERROR_PROC_NOT_FOUND)\r
+#else\r
+#define APR_STATUS_IS_ESYMNOTFOUND(s)   ((s) == APR_ESYMNOTFOUND)\r
+#endif\r
+/** The given process was not recognized by APR. */\r
+#define APR_STATUS_IS_EPROC_UNKNOWN(s)  ((s) == APR_EPROC_UNKNOWN)\r
+/** APR could not gather enough entropy to continue. */\r
+#define APR_STATUS_IS_ENOTENOUGHENTROPY(s) ((s) == APR_ENOTENOUGHENTROPY)\r
+\r
+/** @} */\r
+\r
+/** \r
+ * @addtogroup APR_Error\r
+ * @{\r
+ */\r
+/** @see APR_STATUS_IS_INCHILD */\r
+#define APR_INCHILD        (APR_OS_START_STATUS + 1)\r
+/** @see APR_STATUS_IS_INPARENT */\r
+#define APR_INPARENT       (APR_OS_START_STATUS + 2)\r
+/** @see APR_STATUS_IS_DETACH */\r
+#define APR_DETACH         (APR_OS_START_STATUS + 3)\r
+/** @see APR_STATUS_IS_NOTDETACH */\r
+#define APR_NOTDETACH      (APR_OS_START_STATUS + 4)\r
+/** @see APR_STATUS_IS_CHILD_DONE */\r
+#define APR_CHILD_DONE     (APR_OS_START_STATUS + 5)\r
+/** @see APR_STATUS_IS_CHILD_NOTDONE */\r
+#define APR_CHILD_NOTDONE  (APR_OS_START_STATUS + 6)\r
+/** @see APR_STATUS_IS_TIMEUP */\r
+#define APR_TIMEUP         (APR_OS_START_STATUS + 7)\r
+/** @see APR_STATUS_IS_INCOMPLETE */\r
+#define APR_INCOMPLETE     (APR_OS_START_STATUS + 8)\r
+/* empty slot: +9 */\r
+/* empty slot: +10 */\r
+/* empty slot: +11 */\r
+/** @see APR_STATUS_IS_BADCH */\r
+#define APR_BADCH          (APR_OS_START_STATUS + 12)\r
+/** @see APR_STATUS_IS_BADARG */\r
+#define APR_BADARG         (APR_OS_START_STATUS + 13)\r
+/** @see APR_STATUS_IS_EOF */\r
+#define APR_EOF            (APR_OS_START_STATUS + 14)\r
+/** @see APR_STATUS_IS_NOTFOUND */\r
+#define APR_NOTFOUND       (APR_OS_START_STATUS + 15)\r
+/* empty slot: +16 */\r
+/* empty slot: +17 */\r
+/* empty slot: +18 */\r
+/** @see APR_STATUS_IS_ANONYMOUS */\r
+#define APR_ANONYMOUS      (APR_OS_START_STATUS + 19)\r
+/** @see APR_STATUS_IS_FILEBASED */\r
+#define APR_FILEBASED      (APR_OS_START_STATUS + 20)\r
+/** @see APR_STATUS_IS_KEYBASED */\r
+#define APR_KEYBASED       (APR_OS_START_STATUS + 21)\r
+/** @see APR_STATUS_IS_EINIT */\r
+#define APR_EINIT          (APR_OS_START_STATUS + 22)  \r
+/** @see APR_STATUS_IS_ENOTIMPL */\r
+#define APR_ENOTIMPL       (APR_OS_START_STATUS + 23)\r
+/** @see APR_STATUS_IS_EMISMATCH */\r
+#define APR_EMISMATCH      (APR_OS_START_STATUS + 24)\r
+/** @see APR_STATUS_IS_EBUSY */\r
+#define APR_EBUSY          (APR_OS_START_STATUS + 25)\r
+/** @} */\r
+\r
+/** \r
+ * @addtogroup APR_STATUS_IS\r
+ * @{\r
+ */\r
+/** \r
+ * Program is currently executing in the child \r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code */\r
+#define APR_STATUS_IS_INCHILD(s)        ((s) == APR_INCHILD)\r
+/** \r
+ * Program is currently executing in the parent \r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_INPARENT(s)       ((s) == APR_INPARENT)\r
+/** \r
+ * The thread is detached \r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_DETACH(s)         ((s) == APR_DETACH)\r
+/** \r
+ * The thread is not detached \r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_NOTDETACH(s)      ((s) == APR_NOTDETACH)\r
+/** \r
+ * The child has finished executing\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_CHILD_DONE(s)     ((s) == APR_CHILD_DONE)\r
+/** \r
+ * The child has not finished executing\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_CHILD_NOTDONE(s)  ((s) == APR_CHILD_NOTDONE)\r
+/** \r
+ * The operation did not finish before the timeout\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP)\r
+/** \r
+ * The operation was incomplete although some processing was performed\r
+ * and the results are partially valid.\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_INCOMPLETE(s)     ((s) == APR_INCOMPLETE)\r
+/* empty slot: +9 */\r
+/* empty slot: +10 */\r
+/* empty slot: +11 */\r
+/** \r
+ * Getopt found an option not in the option string\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_BADCH(s)          ((s) == APR_BADCH)\r
+/** \r
+ * Getopt found an option not in the option string and an argument was \r
+ * specified in the option string\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_BADARG(s)         ((s) == APR_BADARG)\r
+/** \r
+ * APR has encountered the end of the file\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_EOF(s)            ((s) == APR_EOF)\r
+/** \r
+ * APR was unable to find the socket in the poll structure\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_NOTFOUND(s)       ((s) == APR_NOTFOUND)\r
+/* empty slot: +16 */\r
+/* empty slot: +17 */\r
+/* empty slot: +18 */\r
+/** \r
+ * APR is using anonymous shared memory\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_ANONYMOUS(s)      ((s) == APR_ANONYMOUS)\r
+/** \r
+ * APR is using a file name as the key to the shared memory\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_FILEBASED(s)      ((s) == APR_FILEBASED)\r
+/** \r
+ * APR is using a shared key as the key to the shared memory\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_KEYBASED(s)       ((s) == APR_KEYBASED)\r
+/** \r
+ * Ininitalizer value.  If no option has been found, but \r
+ * the status variable requires a value, this should be used\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_EINIT(s)          ((s) == APR_EINIT)\r
+/** \r
+ * The APR function has not been implemented on this \r
+ * platform, either because nobody has gotten to it yet, \r
+ * or the function is impossible on this platform.\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_ENOTIMPL(s)       ((s) == APR_ENOTIMPL)\r
+/** \r
+ * Two passwords do not match.\r
+ * @warning\r
+ * always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_EMISMATCH(s)      ((s) == APR_EMISMATCH)\r
+/** \r
+ * The given lock was busy\r
+ * @warning always use this test, as platform-specific variances may meet this\r
+ * more than one error code \r
+ */\r
+#define APR_STATUS_IS_EBUSY(s)          ((s) == APR_EBUSY)\r
+\r
+/** @} */\r
+\r
+/** \r
+ * @addtogroup APR_Error APR Error Values\r
+ * @{\r
+ */\r
+/* APR CANONICAL ERROR VALUES */\r
+/** @see APR_STATUS_IS_EACCES */\r
+#ifdef EACCES\r
+#define APR_EACCES EACCES\r
+#else\r
+#define APR_EACCES         (APR_OS_START_CANONERR + 1)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EEXIST */\r
+#ifdef EEXIST\r
+#define APR_EEXIST EEXIST\r
+#else\r
+#define APR_EEXIST         (APR_OS_START_CANONERR + 2)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENAMETOOLONG */\r
+#ifdef ENAMETOOLONG\r
+#define APR_ENAMETOOLONG ENAMETOOLONG\r
+#else\r
+#define APR_ENAMETOOLONG   (APR_OS_START_CANONERR + 3)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOENT */\r
+#ifdef ENOENT\r
+#define APR_ENOENT ENOENT\r
+#else\r
+#define APR_ENOENT         (APR_OS_START_CANONERR + 4)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOTDIR */\r
+#ifdef ENOTDIR\r
+#define APR_ENOTDIR ENOTDIR\r
+#else\r
+#define APR_ENOTDIR        (APR_OS_START_CANONERR + 5)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOSPC */\r
+#ifdef ENOSPC\r
+#define APR_ENOSPC ENOSPC\r
+#else\r
+#define APR_ENOSPC         (APR_OS_START_CANONERR + 6)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOMEM */\r
+#ifdef ENOMEM\r
+#define APR_ENOMEM ENOMEM\r
+#else\r
+#define APR_ENOMEM         (APR_OS_START_CANONERR + 7)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EMFILE */\r
+#ifdef EMFILE\r
+#define APR_EMFILE EMFILE\r
+#else\r
+#define APR_EMFILE         (APR_OS_START_CANONERR + 8)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENFILE */\r
+#ifdef ENFILE\r
+#define APR_ENFILE ENFILE\r
+#else\r
+#define APR_ENFILE         (APR_OS_START_CANONERR + 9)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EBADF */\r
+#ifdef EBADF\r
+#define APR_EBADF EBADF\r
+#else\r
+#define APR_EBADF          (APR_OS_START_CANONERR + 10)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EINVAL */\r
+#ifdef EINVAL\r
+#define APR_EINVAL EINVAL\r
+#else\r
+#define APR_EINVAL         (APR_OS_START_CANONERR + 11)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ESPIPE */\r
+#ifdef ESPIPE\r
+#define APR_ESPIPE ESPIPE\r
+#else\r
+#define APR_ESPIPE         (APR_OS_START_CANONERR + 12)\r
+#endif\r
+\r
+/** \r
+ * @see APR_STATUS_IS_EAGAIN \r
+ * @warning use APR_STATUS_IS_EAGAIN instead of just testing this value\r
+ */\r
+#ifdef EAGAIN\r
+#define APR_EAGAIN EAGAIN\r
+#elif defined(EWOULDBLOCK)\r
+#define APR_EAGAIN EWOULDBLOCK\r
+#else\r
+#define APR_EAGAIN         (APR_OS_START_CANONERR + 13)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EINTR */\r
+#ifdef EINTR\r
+#define APR_EINTR EINTR\r
+#else\r
+#define APR_EINTR          (APR_OS_START_CANONERR + 14)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOTSOCK */\r
+#ifdef ENOTSOCK\r
+#define APR_ENOTSOCK ENOTSOCK\r
+#else\r
+#define APR_ENOTSOCK       (APR_OS_START_CANONERR + 15)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ECONNREFUSED */\r
+#ifdef ECONNREFUSED\r
+#define APR_ECONNREFUSED ECONNREFUSED\r
+#else\r
+#define APR_ECONNREFUSED   (APR_OS_START_CANONERR + 16)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EINPROGRESS */\r
+#ifdef EINPROGRESS\r
+#define APR_EINPROGRESS EINPROGRESS\r
+#else\r
+#define APR_EINPROGRESS    (APR_OS_START_CANONERR + 17)\r
+#endif\r
+\r
+/** \r
+ * @see APR_STATUS_IS_ECONNABORTED\r
+ * @warning use APR_STATUS_IS_ECONNABORTED instead of just testing this value\r
+ */\r
+\r
+#ifdef ECONNABORTED\r
+#define APR_ECONNABORTED ECONNABORTED\r
+#else\r
+#define APR_ECONNABORTED   (APR_OS_START_CANONERR + 18)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ECONNRESET */\r
+#ifdef ECONNRESET\r
+#define APR_ECONNRESET ECONNRESET\r
+#else\r
+#define APR_ECONNRESET     (APR_OS_START_CANONERR + 19)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ETIMEDOUT \r
+ *  @deprecated */\r
+#ifdef ETIMEDOUT\r
+#define APR_ETIMEDOUT ETIMEDOUT\r
+#else\r
+#define APR_ETIMEDOUT      (APR_OS_START_CANONERR + 20)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EHOSTUNREACH */\r
+#ifdef EHOSTUNREACH\r
+#define APR_EHOSTUNREACH EHOSTUNREACH\r
+#else\r
+#define APR_EHOSTUNREACH   (APR_OS_START_CANONERR + 21)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENETUNREACH */\r
+#ifdef ENETUNREACH\r
+#define APR_ENETUNREACH ENETUNREACH\r
+#else\r
+#define APR_ENETUNREACH    (APR_OS_START_CANONERR + 22)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EFTYPE */\r
+#ifdef EFTYPE\r
+#define APR_EFTYPE EFTYPE\r
+#else\r
+#define APR_EFTYPE        (APR_OS_START_CANONERR + 23)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EPIPE */\r
+#ifdef EPIPE\r
+#define APR_EPIPE EPIPE\r
+#else\r
+#define APR_EPIPE         (APR_OS_START_CANONERR + 24)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EXDEV */\r
+#ifdef EXDEV\r
+#define APR_EXDEV EXDEV\r
+#else\r
+#define APR_EXDEV         (APR_OS_START_CANONERR + 25)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_ENOTEMPTY */\r
+#ifdef ENOTEMPTY\r
+#define APR_ENOTEMPTY ENOTEMPTY\r
+#else\r
+#define APR_ENOTEMPTY     (APR_OS_START_CANONERR + 26)\r
+#endif\r
+\r
+/** @see APR_STATUS_IS_EAFNOSUPPORT */\r
+#ifdef EAFNOSUPPORT\r
+#define APR_EAFNOSUPPORT EAFNOSUPPORT\r
+#else\r
+#define APR_EAFNOSUPPORT  (APR_OS_START_CANONERR + 27)\r
+#endif\r
+\r
+/** @} */\r
+\r
+#if defined(OS2) && !defined(DOXYGEN)\r
+\r
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)\r
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)\r
+\r
+#define INCL_DOSERRORS\r
+#define INCL_DOS\r
+\r
+/* Leave these undefined.\r
+ * OS2 doesn't rely on the errno concept.\r
+ * The API calls always return a result codes which\r
+ * should be filtered through APR_FROM_OS_ERROR().\r
+ *\r
+ * #define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))\r
+ * #define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))\r
+ */\r
+\r
+/* A special case, only socket calls require this;\r
+ */\r
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(errno))\r
+#define apr_set_netos_error(e)  (errno = APR_TO_OS_ERROR(e))\r
+\r
+/* And this needs to be greped away for good:\r
+ */\r
+#define APR_OS2_STATUS(e) (APR_FROM_OS_ERROR(e))\r
+\r
+/* These can't sit in a private header, so in spite of the extra size, \r
+ * they need to be made available here.\r
+ */\r
+#define SOCBASEERR              10000\r
+#define SOCEPERM                (SOCBASEERR+1)             /* Not owner */\r
+#define SOCESRCH                (SOCBASEERR+3)             /* No such process */\r
+#define SOCEINTR                (SOCBASEERR+4)             /* Interrupted system call */\r
+#define SOCENXIO                (SOCBASEERR+6)             /* No such device or address */\r
+#define SOCEBADF                (SOCBASEERR+9)             /* Bad file number */\r
+#define SOCEACCES               (SOCBASEERR+13)            /* Permission denied */\r
+#define SOCEFAULT               (SOCBASEERR+14)            /* Bad address */\r
+#define SOCEINVAL               (SOCBASEERR+22)            /* Invalid argument */\r
+#define SOCEMFILE               (SOCBASEERR+24)            /* Too many open files */\r
+#define SOCEPIPE                (SOCBASEERR+32)            /* Broken pipe */\r
+#define SOCEOS2ERR              (SOCBASEERR+100)           /* OS/2 Error */\r
+#define SOCEWOULDBLOCK          (SOCBASEERR+35)            /* Operation would block */\r
+#define SOCEINPROGRESS          (SOCBASEERR+36)            /* Operation now in progress */\r
+#define SOCEALREADY             (SOCBASEERR+37)            /* Operation already in progress */\r
+#define SOCENOTSOCK             (SOCBASEERR+38)            /* Socket operation on non-socket */\r
+#define SOCEDESTADDRREQ         (SOCBASEERR+39)            /* Destination address required */\r
+#define SOCEMSGSIZE             (SOCBASEERR+40)            /* Message too long */\r
+#define SOCEPROTOTYPE           (SOCBASEERR+41)            /* Protocol wrong type for socket */\r
+#define SOCENOPROTOOPT          (SOCBASEERR+42)            /* Protocol not available */\r
+#define SOCEPROTONOSUPPORT      (SOCBASEERR+43)            /* Protocol not supported */\r
+#define SOCESOCKTNOSUPPORT      (SOCBASEERR+44)            /* Socket type not supported */\r
+#define SOCEOPNOTSUPP           (SOCBASEERR+45)            /* Operation not supported on socket */\r
+#define SOCEPFNOSUPPORT         (SOCBASEERR+46)            /* Protocol family not supported */\r
+#define SOCEAFNOSUPPORT         (SOCBASEERR+47)            /* Address family not supported by protocol family */\r
+#define SOCEADDRINUSE           (SOCBASEERR+48)            /* Address already in use */\r
+#define SOCEADDRNOTAVAIL        (SOCBASEERR+49)            /* Can't assign requested address */\r
+#define SOCENETDOWN             (SOCBASEERR+50)            /* Network is down */\r
+#define SOCENETUNREACH          (SOCBASEERR+51)            /* Network is unreachable */\r
+#define SOCENETRESET            (SOCBASEERR+52)            /* Network dropped connection on reset */\r
+#define SOCECONNABORTED         (SOCBASEERR+53)            /* Software caused connection abort */\r
+#define SOCECONNRESET           (SOCBASEERR+54)            /* Connection reset by peer */\r
+#define SOCENOBUFS              (SOCBASEERR+55)            /* No buffer space available */\r
+#define SOCEISCONN              (SOCBASEERR+56)            /* Socket is already connected */\r
+#define SOCENOTCONN             (SOCBASEERR+57)            /* Socket is not connected */\r
+#define SOCESHUTDOWN            (SOCBASEERR+58)            /* Can't send after socket shutdown */\r
+#define SOCETOOMANYREFS         (SOCBASEERR+59)            /* Too many references: can't splice */\r
+#define SOCETIMEDOUT            (SOCBASEERR+60)            /* Connection timed out */\r
+#define SOCECONNREFUSED         (SOCBASEERR+61)            /* Connection refused */\r
+#define SOCELOOP                (SOCBASEERR+62)            /* Too many levels of symbolic links */\r
+#define SOCENAMETOOLONG         (SOCBASEERR+63)            /* File name too long */\r
+#define SOCEHOSTDOWN            (SOCBASEERR+64)            /* Host is down */\r
+#define SOCEHOSTUNREACH         (SOCBASEERR+65)            /* No route to host */\r
+#define SOCENOTEMPTY            (SOCBASEERR+66)            /* Directory not empty */\r
+\r
+/* APR CANONICAL ERROR TESTS */\r
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)\r
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)\r
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \\r
+                || (s) == APR_OS_START_SYSERR + SOCENAMETOOLONG)\r
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED)\r
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)\r
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)\r
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)\r
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)\r
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)\r
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE)\r
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION)\r
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \\r
+                || (s) == APR_OS_START_SYSERR + SOCEWOULDBLOCK \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION)\r
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \\r
+                || (s) == APR_OS_START_SYSERR + SOCEINTR)\r
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \\r
+                || (s) == APR_OS_START_SYSERR + SOCENOTSOCK)\r
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \\r
+                || (s) == APR_OS_START_SYSERR + SOCECONNREFUSED)\r
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \\r
+                || (s) == APR_OS_START_SYSERR + SOCEINPROGRESS)\r
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \\r
+                || (s) == APR_OS_START_SYSERR + SOCECONNABORTED)\r
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \\r
+                || (s) == APR_OS_START_SYSERR + SOCECONNRESET)\r
+/* XXX deprecated */\r
+#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)    \r
+#undef APR_STATUS_IS_TIMEUP\r
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \\r
+                || (s) == APR_OS_START_SYSERR + SOCETIMEDOUT)    \r
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + SOCEHOSTUNREACH)\r
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + SOCENETUNREACH)\r
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)\r
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE \\r
+                || (s) == APR_OS_START_SYSERR + SOCEPIPE)\r
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)\r
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED)\r
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_AFNOSUPPORT \\r
+                || (s) == APR_OS_START_SYSERR + SOCEAFNOSUPPORT)\r
+\r
+/*\r
+    Sorry, too tired to wrap this up for OS2... feel free to\r
+    fit the following into their best matches.\r
+\r
+    { ERROR_NO_SIGNAL_SENT,     ESRCH           },\r
+    { SOCEALREADY,              EALREADY        },\r
+    { SOCEDESTADDRREQ,          EDESTADDRREQ    },\r
+    { SOCEMSGSIZE,              EMSGSIZE        },\r
+    { SOCEPROTOTYPE,            EPROTOTYPE      },\r
+    { SOCENOPROTOOPT,           ENOPROTOOPT     },\r
+    { SOCEPROTONOSUPPORT,       EPROTONOSUPPORT },\r
+    { SOCESOCKTNOSUPPORT,       ESOCKTNOSUPPORT },\r
+    { SOCEOPNOTSUPP,            EOPNOTSUPP      },\r
+    { SOCEPFNOSUPPORT,          EPFNOSUPPORT    },\r
+    { SOCEADDRINUSE,            EADDRINUSE      },\r
+    { SOCEADDRNOTAVAIL,         EADDRNOTAVAIL   },\r
+    { SOCENETDOWN,              ENETDOWN        },\r
+    { SOCENETRESET,             ENETRESET       },\r
+    { SOCENOBUFS,               ENOBUFS         },\r
+    { SOCEISCONN,               EISCONN         },\r
+    { SOCENOTCONN,              ENOTCONN        },\r
+    { SOCESHUTDOWN,             ESHUTDOWN       },\r
+    { SOCETOOMANYREFS,          ETOOMANYREFS    },\r
+    { SOCELOOP,                 ELOOP           },\r
+    { SOCEHOSTDOWN,             EHOSTDOWN       },\r
+    { SOCENOTEMPTY,             ENOTEMPTY       },\r
+    { SOCEPIPE,                 EPIPE           }\r
+*/\r
+\r
+#elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */\r
+\r
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)\r
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)\r
+\r
+#define apr_get_os_error()   (APR_FROM_OS_ERROR(GetLastError()))\r
+#define apr_set_os_error(e)  (SetLastError(APR_TO_OS_ERROR(e)))\r
+\r
+/* A special case, only socket calls require this:\r
+ */\r
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))\r
+#define apr_set_netos_error(e)   (WSASetLastError(APR_TO_OS_ERROR(e)))\r
+\r
+/* APR CANONICAL ERROR TESTS */\r
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ACCESS_DENIED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_CANNOT_MAKE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_CURRENT_DIRECTORY \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_DRIVE_LOCKED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FAIL_I24 \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_FAILED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_LOCKED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NETWORK_ACCESS_DENIED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_SHARING_VIOLATION)\r
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_EXISTS \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ALREADY_EXISTS)\r
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILENAME_EXCED_RANGE \\r
+                || (s) == APR_OS_START_SYSERR + WSAENAMETOOLONG)\r
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_NOT_FOUND \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_OPEN_FAILED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_MORE_FILES)\r
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_PATH_NOT_FOUND \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NETPATH \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_NET_NAME \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_PATHNAME \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DRIVE)\r
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_DISK_FULL)\r
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_ARENA_TRASHED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_MEMORY \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_BLOCK \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_ENOUGH_QUOTA \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_OUTOFMEMORY)\r
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_TOO_MANY_OPEN_FILES)\r
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)\r
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_TARGET_HANDLE)\r
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_ACCESS \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DATA \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_FUNCTION \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_HANDLE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_PARAMETER \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)\r
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_SEEK_ON_DEVICE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NEGATIVE_SEEK)\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_DATA \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NO_PROC_SLOTS \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NESTING_NOT_ALLOWED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_MAX_THRDS_REACHED \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_LOCK_VIOLATION \\r
+                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)\r
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \\r
+                || (s) == APR_OS_START_SYSERR + WSAEINTR)\r
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \\r
+                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)\r
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)\r
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \\r
+                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)\r
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)\r
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NETNAME_DELETED \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)\r
+/* XXX deprecated */\r
+#define APR_STATUS_IS_ETIMEDOUT(s)         ((s) == APR_ETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)\r
+#undef APR_STATUS_IS_TIMEUP\r
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \\r
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)\r
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)\r
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)\r
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_EXE_MACHINE_TYPE_MISMATCH \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_DLL \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_MODULETYPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_EXE_FORMAT \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_INVALID_EXE_SIGNATURE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_FILE_CORRUPT \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BAD_FORMAT)\r
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_BROKEN_PIPE)\r
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_NOT_SAME_DEVICE)\r
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY \\r
+                || (s) == APR_OS_START_SYSERR + ERROR_DIR_NOT_EMPTY)\r
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \\r
+                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)\r
+\r
+#elif defined(NETWARE) && defined(USE_WINSOCK) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */\r
+\r
+#define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR)\r
+#define APR_TO_OS_ERROR(e)   (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR)\r
+\r
+#define apr_get_os_error()    (errno)\r
+#define apr_set_os_error(e)   (errno = (e))\r
+\r
+/* A special case, only socket calls require this: */\r
+#define apr_get_netos_error()   (APR_FROM_OS_ERROR(WSAGetLastError()))\r
+#define apr_set_netos_error(e)  (WSASetLastError(APR_TO_OS_ERROR(e)))\r
+\r
+/* APR CANONICAL ERROR TESTS */\r
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)\r
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)\r
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)\r
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)\r
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)\r
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)\r
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)\r
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)\r
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)\r
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)\r
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)\r
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)\r
+\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \\r
+                || (s) ==                       EWOULDBLOCK \\r
+                || (s) == APR_OS_START_SYSERR + WSAEWOULDBLOCK)\r
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR \\r
+                || (s) == APR_OS_START_SYSERR + WSAEINTR)\r
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK \\r
+                || (s) == APR_OS_START_SYSERR + WSAENOTSOCK)\r
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNREFUSED)\r
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS \\r
+                || (s) == APR_OS_START_SYSERR + WSAEINPROGRESS)\r
+#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)\r
+#define APR_STATUS_IS_ECONNRESET(s)     ((s) == APR_ECONNRESET \\r
+                || (s) == APR_OS_START_SYSERR + WSAECONNRESET)\r
+/* XXX deprecated */\r
+#define APR_STATUS_IS_ETIMEDOUT(s)       ((s) == APR_ETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)\r
+#undef APR_STATUS_IS_TIMEUP\r
+#define APR_STATUS_IS_TIMEUP(s)         ((s) == APR_TIMEUP \\r
+                || (s) == APR_OS_START_SYSERR + WSAETIMEDOUT \\r
+                || (s) == APR_OS_START_SYSERR + WAIT_TIMEOUT)\r
+#define APR_STATUS_IS_EHOSTUNREACH(s)   ((s) == APR_EHOSTUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + WSAEHOSTUNREACH)\r
+#define APR_STATUS_IS_ENETUNREACH(s)    ((s) == APR_ENETUNREACH \\r
+                || (s) == APR_OS_START_SYSERR + WSAENETUNREACH)\r
+#define APR_STATUS_IS_ENETDOWN(s)       ((s) == APR_OS_START_SYSERR + WSAENETDOWN)\r
+#define APR_STATUS_IS_EFTYPE(s)         ((s) == APR_EFTYPE)\r
+#define APR_STATUS_IS_EPIPE(s)          ((s) == APR_EPIPE)\r
+#define APR_STATUS_IS_EXDEV(s)          ((s) == APR_EXDEV)\r
+#define APR_STATUS_IS_ENOTEMPTY(s)      ((s) == APR_ENOTEMPTY)\r
+#define APR_STATUS_IS_EAFNOSUPPORT(s)   ((s) == APR_EAFNOSUPPORT \\r
+                || (s) == APR_OS_START_SYSERR + WSAEAFNOSUPPORT)\r
+\r
+#else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */\r
+\r
+/*\r
+ *  os error codes are clib error codes\r
+ */\r
+#define APR_FROM_OS_ERROR(e)  (e)\r
+#define APR_TO_OS_ERROR(e)    (e)\r
+\r
+#define apr_get_os_error()    (errno)\r
+#define apr_set_os_error(e)   (errno = (e))\r
+\r
+/* A special case, only socket calls require this:\r
+ */\r
+#define apr_get_netos_error() (errno)\r
+#define apr_set_netos_error(e) (errno = (e))\r
+\r
+/** \r
+ * @addtogroup APR_STATUS_IS\r
+ * @{\r
+ */\r
+\r
+/** permission denied */\r
+#define APR_STATUS_IS_EACCES(s)         ((s) == APR_EACCES)\r
+/** file exists */\r
+#define APR_STATUS_IS_EEXIST(s)         ((s) == APR_EEXIST)\r
+/** path name is too long */\r
+#define APR_STATUS_IS_ENAMETOOLONG(s)   ((s) == APR_ENAMETOOLONG)\r
+/**\r
+ * no such file or directory\r
+ * @remark\r
+ * EMVSCATLG can be returned by the automounter on z/OS for\r
+ * paths which do not exist.\r
+ */\r
+#ifdef EMVSCATLG\r
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT \\r
+                                      || (s) == EMVSCATLG)\r
+#else\r
+#define APR_STATUS_IS_ENOENT(s)         ((s) == APR_ENOENT)\r
+#endif\r
+/** not a directory */\r
+#define APR_STATUS_IS_ENOTDIR(s)        ((s) == APR_ENOTDIR)\r
+/** no space left on device */\r
+#ifdef EDQUOT\r
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC \\r
+                                      || (s) == EDQUOT)\r
+#else\r
+#define APR_STATUS_IS_ENOSPC(s)         ((s) == APR_ENOSPC)\r
+#endif\r
+/** not enough memory */\r
+#define APR_STATUS_IS_ENOMEM(s)         ((s) == APR_ENOMEM)\r
+/** too many open files */\r
+#define APR_STATUS_IS_EMFILE(s)         ((s) == APR_EMFILE)\r
+/** file table overflow */\r
+#define APR_STATUS_IS_ENFILE(s)         ((s) == APR_ENFILE)\r
+/** bad file # */\r
+#define APR_STATUS_IS_EBADF(s)          ((s) == APR_EBADF)\r
+/** invalid argument */\r
+#define APR_STATUS_IS_EINVAL(s)         ((s) == APR_EINVAL)\r
+/** illegal seek */\r
+#define APR_STATUS_IS_ESPIPE(s)         ((s) == APR_ESPIPE)\r
+\r
+/** operation would block */\r
+#if !defined(EWOULDBLOCK) || !defined(EAGAIN)\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)\r
+#elif (EWOULDBLOCK == EAGAIN)\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN)\r
+#else\r
+#define APR_STATUS_IS_EAGAIN(s)         ((s) == APR_EAGAIN \\r
+                                      || (s) == EWOULDBLOCK)\r
+#endif\r
+\r
+/** interrupted system call */\r
+#define APR_STATUS_IS_EINTR(s)          ((s) == APR_EINTR)\r
+/** socket operation on a non-socket */\r
+#define APR_STATUS_IS_ENOTSOCK(s)       ((s) == APR_ENOTSOCK)\r
+/** Connection Refused */\r
+#define APR_STATUS_IS_ECONNREFUSED(s)   ((s) == APR_ECONNREFUSED)\r
+/** operation now in progress */\r
+#define APR_STATUS_IS_EINPROGRESS(s)    ((s) == APR_EINPROGRESS)\r
+\r
+/** \r
+ * Software caused connection abort \r
+ * @remark\r
+ * EPROTO on certain older kernels really means ECONNABORTED, so we need to \r
+ * ignore it for them.  See discussion in new-httpd archives nh.9701 & nh.9603\r
+ *\r
+ * There is potentially a bug in Solaris 2.x x<6, and other boxes that \r
+ * implement tcp sockets in userland (i.e. on top of STREAMS).  On these\r
+ * systems, EPROTO can actually result in a fatal loop.  See PR#981 for \r
+ * example.  It's hard to handle both uses of EPROTO.\r
+ */\r
+#ifdef EPROTO\r
+#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED \\r
+                                       || (s) == EPROTO)\r
+#else\r
+#define APR_STATUS_IS_ECONNABORTED(s)    ((s) == APR_ECONNABORTED)\r
+#endif\r
+\r
+/** Connection Reset by peer */\r
+#define APR_STATUS_IS_ECONNRESET(s)      ((s) == APR_ECONNRESET)\r
+/** Operation timed out\r
+ *  @deprecated */\r
+#define APR_STATUS_IS_ETIMEDOUT(s)      ((s) == APR_ETIMEDOUT)\r
+/** no route to host */\r
+#define APR_STATUS_IS_EHOSTUNREACH(s)    ((s) == APR_EHOSTUNREACH)\r
+/** network is unreachable */\r
+#define APR_STATUS_IS_ENETUNREACH(s)     ((s) == APR_ENETUNREACH)\r
+/** inappropiate file type or format */\r
+#define APR_STATUS_IS_EFTYPE(s)          ((s) == APR_EFTYPE)\r
+/** broken pipe */\r
+#define APR_STATUS_IS_EPIPE(s)           ((s) == APR_EPIPE)\r
+/** cross device link */\r
+#define APR_STATUS_IS_EXDEV(s)           ((s) == APR_EXDEV)\r
+/** Directory Not Empty */\r
+#define APR_STATUS_IS_ENOTEMPTY(s)       ((s) == APR_ENOTEMPTY || \\r
+                                          (s) == APR_EEXIST)\r
+/** Address Family not supported */\r
+#define APR_STATUS_IS_EAFNOSUPPORT(s)    ((s) == APR_EAFNOSUPPORT)\r
+/** @} */\r
+\r
+#endif /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */\r
+\r
+/** @} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif  /* ! APR_ERRNO_H */\r
diff --git a/src/TortoiseMerge/svninclude/apr_file_info.h b/src/TortoiseMerge/svninclude/apr_file_info.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_file_io.h b/src/TortoiseMerge/svninclude/apr_file_io.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_general.h b/src/TortoiseMerge/svninclude/apr_general.h
new file mode 100644 (file)
index 0000000..a584c65
--- /dev/null
@@ -0,0 +1,241 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more\r
+ * contributor license agreements.  See the NOTICE file distributed with\r
+ * this work for additional information regarding copyright ownership.\r
+ * The ASF licenses this file to You under the Apache License, Version 2.0\r
+ * (the "License"); you may not use this file except in compliance with\r
+ * the License.  You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef APR_GENERAL_H\r
+#define APR_GENERAL_H\r
+\r
+/**\r
+ * @file apr_general.h\r
+ * This is collection of oddballs that didn't fit anywhere else,\r
+ * and might move to more appropriate headers with the release\r
+ * of APR 1.0.\r
+ * @brief APR Miscellaneous library routines\r
+ */\r
+\r
+#include "apr.h"\r
+//#include "apr_pools.h"\r
+#include "apr_errno.h"\r
+\r
+#if APR_HAVE_SIGNAL_H\r
+#include <signal.h>\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/**\r
+ * @defgroup apr_general Miscellaneous library routines\r
+ * @ingroup APR \r
+ * This is collection of oddballs that didn't fit anywhere else,\r
+ * and might move to more appropriate headers with the release\r
+ * of APR 1.0.\r
+ * @{\r
+ */\r
+\r
+/** FALSE */\r
+#ifndef FALSE\r
+#define FALSE 0\r
+#endif\r
+/** TRUE */\r
+#ifndef TRUE\r
+#define TRUE (!FALSE)\r
+#endif\r
+\r
+/** a space */\r
+#define APR_ASCII_BLANK  '\040'\r
+/** a carrige return */\r
+#define APR_ASCII_CR     '\015'\r
+/** a line feed */\r
+#define APR_ASCII_LF     '\012'\r
+/** a tab */\r
+#define APR_ASCII_TAB    '\011'\r
+\r
+/** signal numbers typedef */\r
+typedef int               apr_signum_t;\r
+\r
+/**\r
+ * Finding offsets of elements within structures.\r
+ * Taken from the X code... they've sweated portability of this stuff\r
+ * so we don't have to.  Sigh...\r
+ * @param p_type pointer type name\r
+ * @param field  data field within the structure pointed to\r
+ * @return offset\r
+ */\r
+\r
+#if defined(CRAY) || (defined(__arm) && !defined(LINUX))\r
+#ifdef __STDC__\r
+#define APR_OFFSET(p_type,field) _Offsetof(p_type,field)\r
+#else\r
+#ifdef CRAY2\r
+#define APR_OFFSET(p_type,field) \\r
+        (sizeof(int)*((unsigned int)&(((p_type)NULL)->field)))\r
+\r
+#else /* !CRAY2 */\r
+\r
+#define APR_OFFSET(p_type,field) ((unsigned int)&(((p_type)NULL)->field))\r
+\r
+#endif /* !CRAY2 */\r
+#endif /* __STDC__ */\r
+#else /* ! (CRAY || __arm) */\r
+\r
+#define APR_OFFSET(p_type,field) \\r
+        ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL)))\r
+\r
+#endif /* !CRAY */\r
+\r
+/**\r
+ * Finding offsets of elements within structures.\r
+ * @param s_type structure type name\r
+ * @param field  data field within the structure\r
+ * @return offset\r
+ */\r
+#if defined(offsetof) && !defined(__cplusplus)\r
+#define APR_OFFSETOF(s_type,field) offsetof(s_type,field)\r
+#else\r
+#define APR_OFFSETOF(s_type,field) APR_OFFSET(s_type*,field)\r
+#endif\r
+\r
+#ifndef DOXYGEN\r
+\r
+/* A couple of prototypes for functions in case some platform doesn't \r
+ * have it\r
+ */\r
+#if (!APR_HAVE_STRCASECMP) && (APR_HAVE_STRICMP) \r
+#define strcasecmp(s1, s2) stricmp(s1, s2)\r
+#elif (!APR_HAVE_STRCASECMP)\r
+int strcasecmp(const char *a, const char *b);\r
+#endif\r
+\r
+#if (!APR_HAVE_STRNCASECMP) && (APR_HAVE_STRNICMP)\r
+#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)\r
+#elif (!APR_HAVE_STRNCASECMP)\r
+int strncasecmp(const char *a, const char *b, size_t n);\r
+#endif\r
+\r
+#endif\r
+\r
+/**\r
+ * Alignment macros\r
+ */\r
+\r
+/* APR_ALIGN() is only to be used to align on a power of 2 boundary */\r
+#define APR_ALIGN(size, boundary) \\r
+    (((size) + ((boundary) - 1)) & ~((boundary) - 1))\r
+\r
+/** Default alignment */\r
+#define APR_ALIGN_DEFAULT(size) APR_ALIGN(size, 8)\r
+\r
+\r
+/**\r
+ * String and memory functions\r
+ */\r
+\r
+/* APR_STRINGIFY is defined here, and also in apr_release.h, so wrap it */\r
+#ifndef APR_STRINGIFY\r
+/** Properly quote a value as a string in the C preprocessor */\r
+#define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)\r
+/** Helper macro for APR_STRINGIFY */\r
+#define APR_STRINGIFY_HELPER(n) #n\r
+#endif\r
+\r
+#if (!APR_HAVE_MEMMOVE)\r
+#define memmove(a,b,c) bcopy(b,a,c)\r
+#endif\r
+\r
+#if (!APR_HAVE_MEMCHR)\r
+void *memchr(const void *s, int c, size_t n);\r
+#endif\r
+\r
+/** @} */\r
+\r
+/**\r
+ * @defgroup apr_library Library initialization and termination\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * Setup any APR internal data structures.  This MUST be the first function \r
+ * called for any APR library.\r
+ * @remark See apr_app_initialize if this is an application, rather than\r
+ * a library consumer of apr.\r
+ */\r
+APR_DECLARE(apr_status_t) apr_initialize(void);\r
+\r
+/**\r
+ * Set up an application with normalized argc, argv (and optionally env) in\r
+ * order to deal with platform-specific oddities, such as Win32 services,\r
+ * code pages and signals.  This must be the first function called for any\r
+ * APR program.\r
+ * @param argc Pointer to the argc that may be corrected\r
+ * @param argv Pointer to the argv that may be corrected\r
+ * @param env Pointer to the env that may be corrected, may be NULL\r
+ * @remark See apr_initialize if this is a library consumer of apr.\r
+ * Otherwise, this call is identical to apr_initialize, and must be closed\r
+ * with a call to apr_terminate at the end of program execution.\r
+ */\r
+APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, \r
+                                             char const * const * *argv, \r
+                                             char const * const * *env);\r
+\r
+/**\r
+ * Tear down any APR internal data structures which aren't torn down \r
+ * automatically.\r
+ * @remark An APR program must call this function at termination once it \r
+ *         has stopped using APR services.  The APR developers suggest using\r
+ *         atexit to ensure this is called.  When using APR from a language\r
+ *         other than C that has problems with the calling convention, use\r
+ *         apr_terminate2() instead.\r
+ */\r
+APR_DECLARE_NONSTD(void) apr_terminate(void);\r
+\r
+/**\r
+ * Tear down any APR internal data structures which aren't torn down \r
+ * automatically, same as apr_terminate\r
+ * @remark An APR program must call either the apr_terminate or apr_terminate2 \r
+ *         function once it it has finished using APR services.  The APR \r
+ *         developers suggest using atexit(apr_terminate) to ensure this is done.\r
+ *         apr_terminate2 exists to allow non-c language apps to tear down apr, \r
+ *         while apr_terminate is recommended from c language applications.\r
+ */\r
+APR_DECLARE(void) apr_terminate2(void);\r
+\r
+/** @} */\r
+\r
+/**\r
+ * @defgroup apr_random Random Functions\r
+ * @{\r
+ */\r
+\r
+#if APR_HAS_RANDOM || defined(DOXYGEN)\r
+\r
+/* TODO: I'm not sure this is the best place to put this prototype...*/\r
+/**\r
+ * Generate random bytes.\r
+ * @param buf Buffer to fill with random bytes\r
+ * @param length Length of buffer in bytes\r
+ */\r
+APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, \r
+                                                    apr_size_t length);\r
+\r
+#endif\r
+/** @} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif  /* ! APR_GENERAL_H */\r
diff --git a/src/TortoiseMerge/svninclude/apr_getopt.h b/src/TortoiseMerge/svninclude/apr_getopt.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_hash.h b/src/TortoiseMerge/svninclude/apr_hash.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_mmap.h b/src/TortoiseMerge/svninclude/apr_mmap.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_pools.h b/src/TortoiseMerge/svninclude/apr_pools.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_sha1.h b/src/TortoiseMerge/svninclude/apr_sha1.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_tables.h b/src/TortoiseMerge/svninclude/apr_tables.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_time.h b/src/TortoiseMerge/svninclude/apr_time.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/apr_want.h b/src/TortoiseMerge/svninclude/apr_want.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/svn_error.h b/src/TortoiseMerge/svninclude/svn_error.h
new file mode 100644 (file)
index 0000000..c348acb
--- /dev/null
@@ -0,0 +1,451 @@
+/**\r
+ * @copyright\r
+ * ====================================================================\r
+ * Copyright (c) 2000-2004, 2008 CollabNet.  All rights reserved.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution.  The terms\r
+ * are also available at http://subversion.tigris.org/license-1.html.\r
+ * If newer versions of this license are posted there, you may use a\r
+ * newer version instead, at your option.\r
+ *\r
+ * This software consists of voluntary contributions made by many\r
+ * individuals.  For exact contribution history, see the revision\r
+ * history and logs, available at http://subversion.tigris.org/.\r
+ * ====================================================================\r
+ * @endcopyright\r
+ *\r
+ * @file svn_error.h\r
+ * @brief Common exception handling for Subversion.\r
+ */\r
+\r
+\r
+\f\r
+\r
+#ifndef SVN_ERROR_H\r
+#define SVN_ERROR_H\r
+\r
+#include <apr.h>\r
+#include <apr_errno.h>     /* APR's error system */\r
+#include <apr_pools.h>\r
+\r
+#ifndef DOXYGEN_SHOULD_SKIP_THIS\r
+#define APR_WANT_STDIO\r
+#endif\r
+#include <apr_want.h>\r
+\r
+#include "svn_types.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/** the best kind of (@c svn_error_t *) ! */\r
+#define SVN_NO_ERROR   0\r
+\r
+/* The actual error codes are kept in a separate file; see comments\r
+   there for the reasons why. */\r
+#include "svn_error_codes.h"\r
+\r
+/** Set the error location for debug mode. */\r
+void\r
+svn_error__locate(const char *file,\r
+                  long line);\r
+\r
+\r
+/** Put an English description of @a statcode into @a buf and return @a buf,\r
+ * NULL-terminated. @a statcode is either an svn error or apr error.\r
+ */\r
+char *\r
+svn_strerror(apr_status_t statcode,\r
+             char *buf,\r
+             apr_size_t bufsize);\r
+\r
+\r
+/** If @a err has a custom error message, return that, otherwise\r
+ * store the generic error string associated with @a err->apr_err into\r
+ * @a buf (terminating with NULL) and return @a buf.\r
+ *\r
+ * @since New in 1.4.\r
+ *\r
+ * @note @a buf and @a bufsize are provided in the interface so that\r
+ * this function is thread-safe and yet does no allocation.\r
+ */\r
+const char *svn_err_best_message(svn_error_t *err,\r
+                                 char *buf,\r
+                                 apr_size_t bufsize);\r
+\r
+\r
+\f\r
+/** SVN error creation and destruction.\r
+ *\r
+ * @defgroup svn_error_error_creation_destroy Error creation and destruction\r
+ * @{\r
+ */\r
+\r
+/** Create a nested exception structure.\r
+ *\r
+ * Input:  an APR or SVN custom error code,\r
+ *         a "child" error to wrap,\r
+ *         a specific message\r
+ *\r
+ * Returns:  a new error structure (containing the old one).\r
+ *\r
+ * @note Errors are always allocated in a subpool of the global pool,\r
+ *        since an error's lifetime is generally not related to the\r
+ *        lifetime of any convenient pool.  Errors must be freed\r
+ *        with svn_error_clear().  The specific message should be @c NULL\r
+ *        if there is nothing to add to the general message associated\r
+ *        with the error code.\r
+ *\r
+ *        If creating the "bottommost" error in a chain, pass @c NULL for\r
+ *        the child argument.\r
+ */\r
+svn_error_t *\r
+svn_error_create(apr_status_t apr_err,\r
+                 svn_error_t *child,\r
+                 const char *message);\r
+\r
+/** Wrapper macro to collect file and line information */\r
+#define svn_error_create \\r
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_create))\r
+\r
+/** Create an error structure with the given @a apr_err and @a child,\r
+ * with a printf-style error message produced by passing @a fmt, using\r
+ * apr_psprintf().\r
+ */\r
+svn_error_t *\r
+svn_error_createf(apr_status_t apr_err,\r
+                  svn_error_t *child,\r
+                  const char *fmt,\r
+                  ...)\r
+  __attribute__ ((format(printf, 3, 4)));\r
+\r
+/** Wrapper macro to collect file and line information */\r
+#define svn_error_createf \\r
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_createf))\r
+\r
+/** Wrap a @a status from an APR function.  If @a fmt is NULL, this is\r
+ * equivalent to svn_error_create(status,NULL,NULL).  Otherwise,\r
+ * the error message is constructed by formatting @a fmt and the\r
+ * following arguments according to apr_psprintf(), and then\r
+ * appending ": " and the error message corresponding to @a status.\r
+ * (If UTF-8 translation of the APR error message fails, the ": " and\r
+ * APR error are not appended to the error message.)\r
+ */\r
+svn_error_t *\r
+svn_error_wrap_apr(apr_status_t status,\r
+                   const char *fmt,\r
+                   ...)\r
+       __attribute__((format(printf, 2, 3)));\r
+\r
+/** Wrapper macro to collect file and line information */\r
+#define svn_error_wrap_apr \\r
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_wrap_apr))\r
+\r
+/** A quick n' easy way to create a wrapped exception with your own\r
+ * message, before throwing it up the stack.  (It uses all of the\r
+ * @a child's fields.)\r
+ */\r
+svn_error_t *\r
+svn_error_quick_wrap(svn_error_t *child,\r
+                     const char *new_msg);\r
+\r
+/** Wrapper macro to collect file and line information */\r
+#define svn_error_quick_wrap \\r
+  (svn_error__locate(__FILE__,__LINE__), (svn_error_quick_wrap))\r
+\r
+/** Add @a new_err to the end of @a chain's chain of errors.  The @a new_err\r
+ * chain will be copied into @a chain's pool and destroyed, so @a new_err\r
+ * itself becomes invalid after this function.\r
+ */\r
+void\r
+svn_error_compose(svn_error_t *chain,\r
+                  svn_error_t *new_err);\r
+\r
+/** Return the root cause of @a err by finding the last error in its\r
+ * chain (e.g. it or its children).  @a err may be @c SVN_NO_ERROR, in\r
+ * which case @c SVN_NO_ERROR is returned.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_error_t *\r
+svn_error_root_cause(svn_error_t *err);\r
+\r
+/** Create a new error that is a deep copy of @a err and return it.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+svn_error_t *\r
+svn_error_dup(svn_error_t *err);\r
+\r
+/** Free the memory used by @a error, as well as all ancestors and\r
+ * descendants of @a error.\r
+ *\r
+ * Unlike other Subversion objects, errors are managed explicitly; you\r
+ * MUST clear an error if you are ignoring it, or you are leaking memory.\r
+ * For convenience, @a error may be @c NULL, in which case this function does\r
+ * nothing; thus, svn_error_clear(svn_foo(...)) works as an idiom to\r
+ * ignore errors.\r
+ */\r
+void\r
+svn_error_clear(svn_error_t *error);\r
+\r
+\r
+/**\r
+ * Very basic default error handler: print out error stack @a error to the\r
+ * stdio stream @a stream, with each error prefixed by @a prefix; quit and\r
+ * clear @a error iff the @a fatal flag is set.  Allocations are performed\r
+ * in the @a error's pool.\r
+ *\r
+ * If you're not sure what prefix to pass, just pass "svn: ".  That's\r
+ * what code that used to call svn_handle_error() and now calls\r
+ * svn_handle_error2() does.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+void\r
+svn_handle_error2(svn_error_t *error,\r
+                  FILE *stream,\r
+                  svn_boolean_t fatal,\r
+                  const char *prefix);\r
+\r
+/** Like svn_handle_error2() but with @c prefix set to "svn: "\r
+ *\r
+ * @deprecated Provided for backward compatibility with the 1.1 API.\r
+ */\r
+SVN_DEPRECATED\r
+void\r
+svn_handle_error(svn_error_t *error,\r
+                 FILE *stream,\r
+                 svn_boolean_t fatal);\r
+\r
+/**\r
+ * Very basic default warning handler: print out the error @a error to the\r
+ * stdio stream @a stream, prefixed by @a prefix.  Allocations are\r
+ * performed in the error's pool.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+void\r
+svn_handle_warning2(FILE *stream,\r
+                    svn_error_t *error,\r
+                    const char *prefix);\r
+\r
+/** Like svn_handle_warning2() but with @c prefix set to "svn: "\r
+ *\r
+ * @deprecated Provided for backward compatibility with the 1.1 API.\r
+ */\r
+SVN_DEPRECATED\r
+void\r
+svn_handle_warning(FILE *stream,\r
+                   svn_error_t *error);\r
+\r
+\r
+/** A statement macro for checking error values.\r
+ *\r
+ * Evaluate @a expr.  If it yields an error, return that error from the\r
+ * current function.  Otherwise, continue.\r
+ *\r
+ * The <tt>do { ... } while (0)</tt> wrapper has no semantic effect,\r
+ * but it makes this macro syntactically equivalent to the expression\r
+ * statement it resembles.  Without it, statements like\r
+ *\r
+ * @code\r
+ *   if (a)\r
+ *     SVN_ERR (some operation);\r
+ *   else\r
+ *     foo;\r
+ * @endcode\r
+ *\r
+ * would not mean what they appear to.\r
+ */\r
+#define SVN_ERR(expr)                           \\r
+  do {                                          \\r
+    svn_error_t *svn_err__temp = (expr);        \\r
+    if (svn_err__temp)                          \\r
+      return svn_err__temp;                     \\r
+  } while (0)\r
+\r
+\r
+/** A statement macro, very similar to @c SVN_ERR.\r
+ *\r
+ * This macro will wrap the error with the specified text before\r
+ * returning the error.\r
+ */\r
+#define SVN_ERR_W(expr, wrap_msg)                           \\r
+  do {                                                      \\r
+    svn_error_t *svn_err__temp = (expr);                    \\r
+    if (svn_err__temp)                                      \\r
+      return svn_error_quick_wrap(svn_err__temp, wrap_msg); \\r
+  } while (0)\r
+\r
+\r
+/** A statement macro, similar to @c SVN_ERR, but returns an integer.\r
+ *\r
+ * Evaluate @a expr. If it yields an error, handle that error and\r
+ * return @c EXIT_FAILURE.\r
+ */\r
+#define SVN_INT_ERR(expr)                                        \\r
+  do {                                                           \\r
+    svn_error_t *svn_err__temp = (expr);                         \\r
+    if (svn_err__temp) {                                         \\r
+      svn_handle_error2(svn_err__temp, stderr, FALSE, "svn: ");  \\r
+      svn_error_clear(svn_err__temp);                            \\r
+      return EXIT_FAILURE; }                                     \\r
+  } while (0)\r
+\r
+/** @} */\r
+\r
+/**\r
+ * Return TRUE if @a err is an error specifically related to locking a\r
+ * path in the repository, FALSE otherwise.\r
+ *\r
+ * SVN_ERR_FS_OUT_OF_DATE is in here because it's a non-fatal error\r
+ * that can be thrown when attempting to lock an item.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+#define SVN_ERR_IS_LOCK_ERROR(err)                          \\r
+  (err->apr_err == SVN_ERR_FS_PATH_ALREADY_LOCKED ||        \\r
+   err->apr_err == SVN_ERR_FS_OUT_OF_DATE)                  \\r
+\r
+/**\r
+ * Return TRUE if @a err is an error specifically related to unlocking\r
+ * a path in the repository, FALSE otherwise.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+#define SVN_ERR_IS_UNLOCK_ERROR(err)                        \\r
+  (err->apr_err == SVN_ERR_FS_PATH_NOT_LOCKED ||            \\r
+   err->apr_err == SVN_ERR_FS_BAD_LOCK_TOKEN ||             \\r
+   err->apr_err == SVN_ERR_FS_LOCK_OWNER_MISMATCH ||        \\r
+   err->apr_err == SVN_ERR_FS_NO_SUCH_LOCK ||               \\r
+   err->apr_err == SVN_ERR_RA_NOT_LOCKED ||                 \\r
+   err->apr_err == SVN_ERR_FS_LOCK_EXPIRED)\r
+\r
+/** Report that an internal malfunction has occurred, and possibly terminate\r
+ * the program.\r
+ *\r
+ * Act as determined by the current "malfunction handler" which may have\r
+ * been specified by a call to svn_error_set_malfunction_handler() or else\r
+ * is the default handler as specified in that function's documentation. If\r
+ * the malfunction handler returns, then cause the function using this macro\r
+ * to return the error object that it generated.\r
+ *\r
+ * @note The intended use of this macro is where execution reaches a point\r
+ * that cannot possibly be reached unless there is a bug in the program.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+#define SVN_ERR_MALFUNCTION()                                   \\r
+  do {                                                          \\r
+    return svn_error__malfunction(__FILE__, __LINE__, NULL);    \\r
+  } while (0)\r
+\r
+/** Check that a condition is true: if not, report an error and possibly\r
+ * terminate the program.\r
+ *\r
+ * If the Boolean expression @a expr is true, do nothing. Otherwise,\r
+ * act as determined by the current "malfunction handler" which may have\r
+ * been specified by a call to svn_error_set_malfunction_handler() or else\r
+ * is the default handler as specified in that function's documentation. If\r
+ * the malfunction handler returns, then cause the function using this macro\r
+ * to return the error object that it generated.\r
+ *\r
+ * @note The intended use of this macro is to check a condition that cannot\r
+ * possibly be false unless there is a bug in the program.\r
+ *\r
+ * @note The condition to be checked should not be computationally expensive\r
+ * if it is reached often, as, unlike traditional "assert" statements, the\r
+ * evaluation of this expression is not compiled out in release-mode builds.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+#define SVN_ERR_ASSERT(expr)                                \\r
+  do {                                                      \\r
+    if (!(expr))                                            \\r
+      SVN_ERR(svn_error__malfunction(__FILE__, __LINE__, #expr)); \\r
+  } while (0)\r
+\r
+/** A helper function for the macros that report malfunctions. Handle a\r
+ * malfunction by calling the current "malfunction handler" which may have\r
+ * been specified by a call to svn_error_set_malfunction_handler() or else\r
+ * is the default handler as specified in that function's documentation.\r
+ *\r
+ * Pass all of the parameters to the handler. The error occurred in the\r
+ * source file @a file at line @a line, and was an assertion failure of the\r
+ * expression @a expr, or, if @a expr is null, an unconditional error.\r
+ *\r
+ * If the malfunction handler returns, then return the error object that it\r
+ * generated.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+svn_error_t *\r
+svn_error__malfunction(const char *file,\r
+                       int line,\r
+                       const char *expr);\r
+\r
+/** A type of function that handles an assertion failure or other internal\r
+ * malfunction detected within the Subversion libraries.\r
+ *\r
+ * The error occurred in the source file @a file at line @a line, and was an\r
+ * assertion failure of the expression @a expr, or, if @a expr is null, an\r
+ * unconditional error.\r
+ *\r
+ * A function of this type must do one of:\r
+ *   - Return an error object describing the error, using an error code in\r
+ *     the category SVN_ERR_MALFUNC_CATEGORY_START.\r
+ *   - Never return.\r
+ *\r
+ * The function may alter its behaviour according to compile-time\r
+ * and run-time and even interactive conditions.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+typedef svn_error_t *(*svn_error_malfunction_handler_t)\r
+  (const char *file, int line, const char *expr);\r
+\r
+/** Cause subsequent malfunctions to be handled by @a func.\r
+ * Return the handler that was previously in effect.\r
+ *\r
+ * @a func may not be null.\r
+ *\r
+ * @note The default handler is svn_error_abort_on_malfunction().\r
+ *\r
+ * @note This function must be called in a single-threaded context.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+svn_error_malfunction_handler_t\r
+svn_error_set_malfunction_handler(svn_error_malfunction_handler_t func);\r
+\r
+/** Handle a malfunction by returning an error object that describes it.\r
+ *\r
+ * This function implements @c svn_error_malfunction_handler_t.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+svn_error_t *\r
+svn_error_raise_on_malfunction(const char *file,\r
+                               int line,\r
+                               const char *expr);\r
+\r
+/** Handle a malfunction by printing a message to stderr and aborting.\r
+ *\r
+ * This function implements @c svn_error_malfunction_handler_t.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+svn_error_t *\r
+svn_error_abort_on_malfunction(const char *file,\r
+                               int line,\r
+                               const char *expr);\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* SVN_ERROR_H */\r
diff --git a/src/TortoiseMerge/svninclude/svn_error_codes.h b/src/TortoiseMerge/svninclude/svn_error_codes.h
new file mode 100644 (file)
index 0000000..ccd7155
--- /dev/null
@@ -0,0 +1,1295 @@
+/**\r
+ * @copyright\r
+ * ====================================================================\r
+ * Copyright (c) 2000-2008 CollabNet.  All rights reserved.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution.  The terms\r
+ * are also available at http://subversion.tigris.org/license-1.html.\r
+ * If newer versions of this license are posted there, you may use a\r
+ * newer version instead, at your option.\r
+ *\r
+ * This software consists of voluntary contributions made by many\r
+ * individuals.  For exact contribution history, see the revision\r
+ * history and logs, available at http://subversion.tigris.org/.\r
+ * ====================================================================\r
+ * @endcopyright\r
+ *\r
+ * @file svn_error_codes.h\r
+ * @brief Subversion error codes.\r
+ */\r
+\r
+/* What's going on here?\r
+\r
+   In order to define error codes and their associated description\r
+   strings in the same place, we overload the SVN_ERRDEF() macro with\r
+   two definitions below.  Both take two arguments, an error code name\r
+   and a description string.  One definition of the macro just throws\r
+   away the string and defines enumeration constants using the error\r
+   code names -- that definition is used by the header file that\r
+   exports error codes to the rest of Subversion.  The other\r
+   definition creates a static table mapping the enum codes to their\r
+   corresponding strings -- that definition is used by the C file that\r
+   implements svn_strerror().\r
+\r
+   The header and C files both include this file, using #defines to\r
+   control which version of the macro they get.\r
+*/\r
+\r
+\r
+/* Process this file if we're building an error array, or if we have\r
+   not defined the enumerated constants yet.  */\r
+#if defined(SVN_ERROR_BUILD_ARRAY) || !defined(SVN_ERROR_ENUM_DEFINED)\r
+\r
+\r
+#include <apr.h>\r
+#include <apr_errno.h>     /* APR's error system */\r
+\r
+#include "svn_props.h"     /* For SVN_PROP_EXTERNALS. */\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+#ifndef DOXYGEN_SHOULD_SKIP_THIS\r
+\r
+#if defined(SVN_ERROR_BUILD_ARRAY)\r
+\r
+#define SVN_ERROR_START \\r
+        static const err_defn error_table[] = { \\r
+          { SVN_WARNING, "Warning" },\r
+#define SVN_ERRDEF(num, offset, str) { num, str },\r
+#define SVN_ERROR_END { 0, NULL } };\r
+\r
+#elif !defined(SVN_ERROR_ENUM_DEFINED)\r
+\r
+#define SVN_ERROR_START \\r
+        typedef enum svn_errno_t { \\r
+          SVN_WARNING = APR_OS_START_USERERR + 1,\r
+#define SVN_ERRDEF(num, offset, str) /** str */ num = offset,\r
+#define SVN_ERROR_END SVN_ERR_LAST } svn_errno_t;\r
+\r
+#define SVN_ERROR_ENUM_DEFINED\r
+\r
+#endif\r
+\r
+/* Define custom Subversion error numbers, in the range reserved for\r
+   that in APR: from APR_OS_START_USERERR to APR_OS_START_SYSERR (see\r
+   apr_errno.h).\r
+\r
+   Error numbers are divided into categories of up to 5000 errors\r
+   each.  Since we're dividing up the APR user error space, which has\r
+   room for 500,000 errors, we can have up to 100 categories.\r
+   Categories are fixed-size; if a category has fewer than 5000\r
+   errors, then it just ends with a range of unused numbers.\r
+\r
+   To maintain binary compatibility, please observe these guidelines:\r
+\r
+      - When adding a new error, always add on the end of the\r
+        appropriate category, so that the real values of existing\r
+        errors are not changed.\r
+\r
+      - When deleting an error, leave a placeholder comment indicating\r
+        the offset, again so that the values of other errors are not\r
+        perturbed.\r
+*/\r
+\r
+#define SVN_ERR_CATEGORY_SIZE 5000\r
+\r
+/* Leave one category of room at the beginning, for SVN_WARNING and\r
+   any other such beasts we might create in the future. */\r
+#define SVN_ERR_BAD_CATEGORY_START      (APR_OS_START_USERERR \\r
+                                         + ( 1 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_XML_CATEGORY_START      (APR_OS_START_USERERR \\r
+                                         + ( 2 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_IO_CATEGORY_START       (APR_OS_START_USERERR \\r
+                                         + ( 3 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_STREAM_CATEGORY_START   (APR_OS_START_USERERR \\r
+                                         + ( 4 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_NODE_CATEGORY_START     (APR_OS_START_USERERR \\r
+                                         + ( 5 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_ENTRY_CATEGORY_START    (APR_OS_START_USERERR \\r
+                                         + ( 6 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_WC_CATEGORY_START       (APR_OS_START_USERERR \\r
+                                         + ( 7 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_FS_CATEGORY_START       (APR_OS_START_USERERR \\r
+                                         + ( 8 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_REPOS_CATEGORY_START    (APR_OS_START_USERERR \\r
+                                         + ( 9 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_RA_CATEGORY_START       (APR_OS_START_USERERR \\r
+                                         + (10 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_RA_DAV_CATEGORY_START   (APR_OS_START_USERERR \\r
+                                         + (11 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_RA_LOCAL_CATEGORY_START (APR_OS_START_USERERR \\r
+                                         + (12 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_SVNDIFF_CATEGORY_START  (APR_OS_START_USERERR \\r
+                                         + (13 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_APMOD_CATEGORY_START    (APR_OS_START_USERERR \\r
+                                         + (14 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_CLIENT_CATEGORY_START   (APR_OS_START_USERERR \\r
+                                         + (15 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_MISC_CATEGORY_START     (APR_OS_START_USERERR \\r
+                                         + (16 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_CL_CATEGORY_START       (APR_OS_START_USERERR \\r
+                                         + (17 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_RA_SVN_CATEGORY_START   (APR_OS_START_USERERR \\r
+                                         + (18 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_AUTHN_CATEGORY_START    (APR_OS_START_USERERR \\r
+                                         + (19 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_AUTHZ_CATEGORY_START    (APR_OS_START_USERERR \\r
+                                         + (20 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_DIFF_CATEGORY_START     (APR_OS_START_USERERR \\r
+                                         + (21 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_RA_SERF_CATEGORY_START  (APR_OS_START_USERERR \\r
+                                         + (22 * SVN_ERR_CATEGORY_SIZE))\r
+#define SVN_ERR_MALFUNC_CATEGORY_START  (APR_OS_START_USERERR \\r
+                                         + (23 * SVN_ERR_CATEGORY_SIZE))\r
+\r
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */\r
+\r
+/** Collection of Subversion error code values, located within the\r
+ * APR user error space. */\r
+SVN_ERROR_START\r
+\r
+  /* validation ("BAD_FOO") errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_CONTAINING_POOL,\r
+             SVN_ERR_BAD_CATEGORY_START + 0,\r
+             "Bad parent pool passed to svn_make_pool()")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_FILENAME,\r
+             SVN_ERR_BAD_CATEGORY_START + 1,\r
+             "Bogus filename")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_URL,\r
+             SVN_ERR_BAD_CATEGORY_START + 2,\r
+             "Bogus URL")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_DATE,\r
+             SVN_ERR_BAD_CATEGORY_START + 3,\r
+             "Bogus date")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_MIME_TYPE,\r
+             SVN_ERR_BAD_CATEGORY_START + 4,\r
+             "Bogus mime-type")\r
+\r
+  /** @since New in 1.5.\r
+   *\r
+   * Note that there was an unused slot sitting here at\r
+   * SVN_ERR_BAD_CATEGORY_START + 5, so error codes after this aren't\r
+   * necessarily "New in 1.5" just because they come later.\r
+   */\r
+  SVN_ERRDEF(SVN_ERR_BAD_PROPERTY_VALUE,\r
+             SVN_ERR_BAD_CATEGORY_START + 5,\r
+             "Wrong or unexpected property value")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_VERSION_FILE_FORMAT,\r
+             SVN_ERR_BAD_CATEGORY_START + 6,\r
+             "Version file format not correct")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_RELATIVE_PATH,\r
+             SVN_ERR_BAD_CATEGORY_START + 7,\r
+             "Path is not an immediate child of the specified directory")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_UUID,\r
+             SVN_ERR_BAD_CATEGORY_START + 8,\r
+             "Bogus UUID")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_BAD_CONFIG_VALUE,\r
+             SVN_ERR_BAD_CATEGORY_START + 9,\r
+             "Invalid configuration value")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_SERVER_SPECIFICATION,\r
+             SVN_ERR_BAD_CATEGORY_START + 10,\r
+             "Bogus server specification")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_CHECKSUM_KIND,\r
+             SVN_ERR_BAD_CATEGORY_START + 11,\r
+             "Unsupported checksum type")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_CHECKSUM_PARSE,\r
+             SVN_ERR_BAD_CATEGORY_START + 12,\r
+             "Invalid character in hex checksum")\r
+\r
+  /* xml errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_XML_ATTRIB_NOT_FOUND,\r
+             SVN_ERR_XML_CATEGORY_START + 0,\r
+             "No such XML tag attribute")\r
+\r
+  SVN_ERRDEF(SVN_ERR_XML_MISSING_ANCESTRY,\r
+             SVN_ERR_XML_CATEGORY_START + 1,\r
+             "<delta-pkg> is missing ancestry")\r
+\r
+  SVN_ERRDEF(SVN_ERR_XML_UNKNOWN_ENCODING,\r
+             SVN_ERR_XML_CATEGORY_START + 2,\r
+             "Unrecognized binary data encoding; can't decode")\r
+\r
+  SVN_ERRDEF(SVN_ERR_XML_MALFORMED,\r
+             SVN_ERR_XML_CATEGORY_START + 3,\r
+             "XML data was not well-formed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_XML_UNESCAPABLE_DATA,\r
+             SVN_ERR_XML_CATEGORY_START + 4,\r
+             "Data cannot be safely XML-escaped")\r
+\r
+  /* io errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_IO_INCONSISTENT_EOL,\r
+             SVN_ERR_IO_CATEGORY_START + 0,\r
+             "Inconsistent line ending style")\r
+\r
+  SVN_ERRDEF(SVN_ERR_IO_UNKNOWN_EOL,\r
+             SVN_ERR_IO_CATEGORY_START + 1,\r
+             "Unrecognized line ending style")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_IO_CORRUPT_EOL,\r
+             SVN_ERR_IO_CATEGORY_START + 2,\r
+             "Line endings other than expected")\r
+\r
+  SVN_ERRDEF(SVN_ERR_IO_UNIQUE_NAMES_EXHAUSTED,\r
+             SVN_ERR_IO_CATEGORY_START + 3,\r
+             "Ran out of unique names")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_IO_PIPE_FRAME_ERROR,\r
+             SVN_ERR_IO_CATEGORY_START + 4,\r
+             "Framing error in pipe protocol")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_IO_PIPE_READ_ERROR,\r
+             SVN_ERR_IO_CATEGORY_START + 5,\r
+             "Read error in pipe")\r
+\r
+  SVN_ERRDEF(SVN_ERR_IO_WRITE_ERROR,\r
+             SVN_ERR_IO_CATEGORY_START + 6,\r
+             "Write error")\r
+\r
+  /* stream errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_STREAM_UNEXPECTED_EOF,\r
+             SVN_ERR_STREAM_CATEGORY_START + 0,\r
+             "Unexpected EOF on stream")\r
+\r
+  SVN_ERRDEF(SVN_ERR_STREAM_MALFORMED_DATA,\r
+             SVN_ERR_STREAM_CATEGORY_START + 1,\r
+             "Malformed stream data")\r
+\r
+  SVN_ERRDEF(SVN_ERR_STREAM_UNRECOGNIZED_DATA,\r
+             SVN_ERR_STREAM_CATEGORY_START + 2,\r
+             "Unrecognized stream data")\r
+\r
+  /* node errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_NODE_UNKNOWN_KIND,\r
+             SVN_ERR_NODE_CATEGORY_START + 0,\r
+             "Unknown svn_node_kind")\r
+\r
+  SVN_ERRDEF(SVN_ERR_NODE_UNEXPECTED_KIND,\r
+             SVN_ERR_NODE_CATEGORY_START + 1,\r
+             "Unexpected node kind found")\r
+\r
+  /* entry errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_ENTRY_NOT_FOUND,\r
+             SVN_ERR_ENTRY_CATEGORY_START + 0,\r
+             "Can't find an entry")\r
+\r
+  /* UNUSED error slot:                    + 1 */\r
+\r
+  SVN_ERRDEF(SVN_ERR_ENTRY_EXISTS,\r
+             SVN_ERR_ENTRY_CATEGORY_START + 2,\r
+             "Entry already exists")\r
+\r
+  SVN_ERRDEF(SVN_ERR_ENTRY_MISSING_REVISION,\r
+             SVN_ERR_ENTRY_CATEGORY_START + 3,\r
+             "Entry has no revision")\r
+\r
+  SVN_ERRDEF(SVN_ERR_ENTRY_MISSING_URL,\r
+             SVN_ERR_ENTRY_CATEGORY_START + 4,\r
+             "Entry has no URL")\r
+\r
+  SVN_ERRDEF(SVN_ERR_ENTRY_ATTRIBUTE_INVALID,\r
+             SVN_ERR_ENTRY_CATEGORY_START + 5,\r
+             "Entry has an invalid attribute")\r
+\r
+  /* wc errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_OBSTRUCTED_UPDATE,\r
+             SVN_ERR_WC_CATEGORY_START + 0,\r
+             "Obstructed update")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_WC_UNWIND_MISMATCH,\r
+             SVN_ERR_WC_CATEGORY_START + 1,\r
+             "Mismatch popping the WC unwind stack")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_WC_UNWIND_EMPTY,\r
+             SVN_ERR_WC_CATEGORY_START + 2,\r
+             "Attempt to pop empty WC unwind stack")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_WC_UNWIND_NOT_EMPTY,\r
+             SVN_ERR_WC_CATEGORY_START + 3,\r
+             "Attempt to unlock with non-empty unwind stack")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_LOCKED,\r
+             SVN_ERR_WC_CATEGORY_START + 4,\r
+             "Attempted to lock an already-locked dir")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_NOT_LOCKED,\r
+             SVN_ERR_WC_CATEGORY_START + 5,\r
+             "Working copy not locked; this is probably a bug, please report")\r
+\r
+  /** @deprecated Unused, slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_WC_INVALID_LOCK,\r
+             SVN_ERR_WC_CATEGORY_START + 6,\r
+             "Invalid lock")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_NOT_DIRECTORY,\r
+             SVN_ERR_WC_CATEGORY_START + 7,\r
+             "Path is not a working copy directory")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_NOT_FILE,\r
+             SVN_ERR_WC_CATEGORY_START + 8,\r
+             "Path is not a working copy file")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_BAD_ADM_LOG,\r
+             SVN_ERR_WC_CATEGORY_START + 9,\r
+             "Problem running log")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_PATH_NOT_FOUND,\r
+             SVN_ERR_WC_CATEGORY_START + 10,\r
+             "Can't find a working copy path")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_NOT_UP_TO_DATE,\r
+             SVN_ERR_WC_CATEGORY_START + 11,\r
+             "Working copy is not up-to-date")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_LEFT_LOCAL_MOD,\r
+             SVN_ERR_WC_CATEGORY_START + 12,\r
+             "Left locally modified or unversioned files")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_SCHEDULE_CONFLICT,\r
+             SVN_ERR_WC_CATEGORY_START + 13,\r
+             "Unmergeable scheduling requested on an entry")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_PATH_FOUND,\r
+             SVN_ERR_WC_CATEGORY_START + 14,\r
+             "Found a working copy path")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_FOUND_CONFLICT,\r
+             SVN_ERR_WC_CATEGORY_START + 15,\r
+             "A conflict in the working copy obstructs the current operation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_CORRUPT,\r
+             SVN_ERR_WC_CATEGORY_START + 16,\r
+             "Working copy is corrupt")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_CORRUPT_TEXT_BASE,\r
+             SVN_ERR_WC_CATEGORY_START + 17,\r
+             "Working copy text base is corrupt")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_NODE_KIND_CHANGE,\r
+             SVN_ERR_WC_CATEGORY_START + 18,\r
+             "Cannot change node kind")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_INVALID_OP_ON_CWD,\r
+             SVN_ERR_WC_CATEGORY_START + 19,\r
+             "Invalid operation on the current working directory")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_BAD_ADM_LOG_START,\r
+             SVN_ERR_WC_CATEGORY_START + 20,\r
+             "Problem on first log entry in a working copy")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_UNSUPPORTED_FORMAT,\r
+             SVN_ERR_WC_CATEGORY_START + 21,\r
+             "Unsupported working copy format")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_BAD_PATH,\r
+             SVN_ERR_WC_CATEGORY_START + 22,\r
+             "Path syntax not supported in this context")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_WC_INVALID_SCHEDULE,\r
+             SVN_ERR_WC_CATEGORY_START + 23,\r
+             "Invalid schedule")\r
+\r
+  /** @since New in 1.3. */\r
+  SVN_ERRDEF(SVN_ERR_WC_INVALID_RELOCATION,\r
+             SVN_ERR_WC_CATEGORY_START + 24,\r
+             "Invalid relocation")\r
+\r
+  /** @since New in 1.3. */\r
+  SVN_ERRDEF(SVN_ERR_WC_INVALID_SWITCH,\r
+             SVN_ERR_WC_CATEGORY_START + 25,\r
+             "Invalid switch")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_WC_MISMATCHED_CHANGELIST,\r
+             SVN_ERR_WC_CATEGORY_START + 26,\r
+             "Changelist doesn't match")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE,\r
+             SVN_ERR_WC_CATEGORY_START + 27,\r
+             "Conflict resolution failed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_WC_COPYFROM_PATH_NOT_FOUND,\r
+             SVN_ERR_WC_CATEGORY_START + 28,\r
+             "Failed to locate 'copyfrom' path in working copy")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_WC_CHANGELIST_MOVE,\r
+             SVN_ERR_WC_CATEGORY_START + 29,\r
+             "Moving a path from one changelist to another")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_WC_CANNOT_DELETE_FILE_EXTERNAL,\r
+             SVN_ERR_WC_CATEGORY_START + 30,\r
+             "Cannot delete a file external")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_WC_CANNOT_MOVE_FILE_EXTERNAL,\r
+             SVN_ERR_WC_CATEGORY_START + 31,\r
+             "Cannot move a file external")\r
+\r
+  /* fs errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_GENERAL,\r
+             SVN_ERR_FS_CATEGORY_START + 0,\r
+             "General filesystem error")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_CLEANUP,\r
+             SVN_ERR_FS_CATEGORY_START + 1,\r
+             "Error closing filesystem")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_ALREADY_OPEN,\r
+             SVN_ERR_FS_CATEGORY_START + 2,\r
+             "Filesystem is already open")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_OPEN,\r
+             SVN_ERR_FS_CATEGORY_START + 3,\r
+             "Filesystem is not open")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_CORRUPT,\r
+             SVN_ERR_FS_CATEGORY_START + 4,\r
+             "Filesystem is corrupt")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_PATH_SYNTAX,\r
+             SVN_ERR_FS_CATEGORY_START + 5,\r
+             "Invalid filesystem path syntax")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_REVISION,\r
+             SVN_ERR_FS_CATEGORY_START + 6,\r
+             "Invalid filesystem revision number")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_TRANSACTION,\r
+             SVN_ERR_FS_CATEGORY_START + 7,\r
+             "Invalid filesystem transaction name")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_ENTRY,\r
+             SVN_ERR_FS_CATEGORY_START + 8,\r
+             "Filesystem directory has no such entry")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_REPRESENTATION,\r
+             SVN_ERR_FS_CATEGORY_START + 9,\r
+             "Filesystem has no such representation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_STRING,\r
+             SVN_ERR_FS_CATEGORY_START + 10,\r
+             "Filesystem has no such string")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_COPY,\r
+             SVN_ERR_FS_CATEGORY_START + 11,\r
+             "Filesystem has no such copy")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_TRANSACTION_NOT_MUTABLE,\r
+             SVN_ERR_FS_CATEGORY_START + 12,\r
+             "The specified transaction is not mutable")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_FOUND,\r
+             SVN_ERR_FS_CATEGORY_START + 13,\r
+             "Filesystem has no item")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_ID_NOT_FOUND,\r
+             SVN_ERR_FS_CATEGORY_START + 14,\r
+             "Filesystem has no such node-rev-id")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_ID,\r
+             SVN_ERR_FS_CATEGORY_START + 15,\r
+             "String does not represent a node or node-rev-id")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_DIRECTORY,\r
+             SVN_ERR_FS_CATEGORY_START + 16,\r
+             "Name does not refer to a filesystem directory")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_FILE,\r
+             SVN_ERR_FS_CATEGORY_START + 17,\r
+             "Name does not refer to a filesystem file")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_SINGLE_PATH_COMPONENT,\r
+             SVN_ERR_FS_CATEGORY_START + 18,\r
+             "Name is not a single path component")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_MUTABLE,\r
+             SVN_ERR_FS_CATEGORY_START + 19,\r
+             "Attempt to change immutable filesystem node")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_ALREADY_EXISTS,\r
+             SVN_ERR_FS_CATEGORY_START + 20,\r
+             "Item already exists in filesystem")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_ROOT_DIR,\r
+             SVN_ERR_FS_CATEGORY_START + 21,\r
+             "Attempt to remove or recreate fs root dir")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_TXN_ROOT,\r
+             SVN_ERR_FS_CATEGORY_START + 22,\r
+             "Object is not a transaction root")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_NOT_REVISION_ROOT,\r
+             SVN_ERR_FS_CATEGORY_START + 23,\r
+             "Object is not a revision root")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_CONFLICT,\r
+             SVN_ERR_FS_CATEGORY_START + 24,\r
+             "Merge conflict during commit")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_REP_CHANGED,\r
+             SVN_ERR_FS_CATEGORY_START + 25,\r
+             "A representation vanished or changed between reads")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_REP_NOT_MUTABLE,\r
+             SVN_ERR_FS_CATEGORY_START + 26,\r
+             "Tried to change an immutable representation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_MALFORMED_SKEL,\r
+             SVN_ERR_FS_CATEGORY_START + 27,\r
+             "Malformed skeleton data")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_TXN_OUT_OF_DATE,\r
+             SVN_ERR_FS_CATEGORY_START + 28,\r
+             "Transaction is out of date")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_BERKELEY_DB,\r
+             SVN_ERR_FS_CATEGORY_START + 29,\r
+             "Berkeley DB error")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_BERKELEY_DB_DEADLOCK,\r
+             SVN_ERR_FS_CATEGORY_START + 30,\r
+             "Berkeley DB deadlock error")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_TRANSACTION_DEAD,\r
+             SVN_ERR_FS_CATEGORY_START + 31,\r
+             "Transaction is dead")\r
+\r
+  SVN_ERRDEF(SVN_ERR_FS_TRANSACTION_NOT_DEAD,\r
+             SVN_ERR_FS_CATEGORY_START + 32,\r
+             "Transaction is not dead")\r
+\r
+  /** @since New in 1.1. */\r
+  SVN_ERRDEF(SVN_ERR_FS_UNKNOWN_FS_TYPE,\r
+             SVN_ERR_FS_CATEGORY_START + 33,\r
+             "Unknown FS type")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_USER,\r
+             SVN_ERR_FS_CATEGORY_START + 34,\r
+             "No user associated with filesystem")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_PATH_ALREADY_LOCKED,\r
+             SVN_ERR_FS_CATEGORY_START + 35,\r
+             "Path is already locked")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_PATH_NOT_LOCKED,\r
+             SVN_ERR_FS_CATEGORY_START + 36,\r
+             "Path is not locked")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_BAD_LOCK_TOKEN,\r
+             SVN_ERR_FS_CATEGORY_START + 37,\r
+             "Lock token is incorrect")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_LOCK_TOKEN,\r
+             SVN_ERR_FS_CATEGORY_START + 38,\r
+             "No lock token provided")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_LOCK_OWNER_MISMATCH,\r
+             SVN_ERR_FS_CATEGORY_START + 39,\r
+             "Username does not match lock owner")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_LOCK,\r
+             SVN_ERR_FS_CATEGORY_START + 40,\r
+             "Filesystem has no such lock")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_LOCK_EXPIRED,\r
+             SVN_ERR_FS_CATEGORY_START + 41,\r
+             "Lock has expired")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_FS_OUT_OF_DATE,\r
+             SVN_ERR_FS_CATEGORY_START + 42,\r
+             "Item is out of date")\r
+\r
+  /**@since New in 1.2.\r
+   *\r
+   * This is analogous to SVN_ERR_REPOS_UNSUPPORTED_VERSION.  To avoid\r
+   * confusion with "versions" (i.e., releases) of Subversion, we've\r
+   * started calling this the "format" number instead.  The old\r
+   * SVN_ERR_REPOS_UNSUPPORTED_VERSION error predates this and so\r
+   * retains its name.\r
+   */\r
+  SVN_ERRDEF(SVN_ERR_FS_UNSUPPORTED_FORMAT,\r
+             SVN_ERR_FS_CATEGORY_START + 43,\r
+             "Unsupported FS format")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_FS_REP_BEING_WRITTEN,\r
+             SVN_ERR_FS_CATEGORY_START + 44,\r
+             "Representation is being written")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_FS_TXN_NAME_TOO_LONG,\r
+             SVN_ERR_FS_CATEGORY_START + 45,\r
+             "The generated transaction name is too long")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_NODE_ORIGIN,\r
+             SVN_ERR_FS_CATEGORY_START + 46,\r
+             "Filesystem has no such node origin record")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_FS_UNSUPPORTED_UPGRADE,\r
+             SVN_ERR_FS_CATEGORY_START + 47,\r
+             "Filesystem upgrade is not supported")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_FS_NO_SUCH_CHECKSUM_REP,\r
+             SVN_ERR_FS_CATEGORY_START + 48,\r
+             "Filesystem has no such checksum-representation index record")\r
+\r
+  /* repos errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_LOCKED,\r
+             SVN_ERR_REPOS_CATEGORY_START + 0,\r
+             "The repository is locked, perhaps for db recovery")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_HOOK_FAILURE,\r
+             SVN_ERR_REPOS_CATEGORY_START + 1,\r
+             "A repository hook failed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_BAD_ARGS,\r
+             SVN_ERR_REPOS_CATEGORY_START + 2,\r
+             "Incorrect arguments supplied")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_NO_DATA_FOR_REPORT,\r
+             SVN_ERR_REPOS_CATEGORY_START + 3,\r
+             "A report cannot be generated because no data was supplied")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_BAD_REVISION_REPORT,\r
+             SVN_ERR_REPOS_CATEGORY_START + 4,\r
+             "Bogus revision report")\r
+\r
+  /* This is analogous to SVN_ERR_FS_UNSUPPORTED_FORMAT.  To avoid\r
+   * confusion with "versions" (i.e., releases) of Subversion, we\r
+   * started using the word "format" instead of "version".  However,\r
+   * this error code's name predates that decision.\r
+   */\r
+  SVN_ERRDEF(SVN_ERR_REPOS_UNSUPPORTED_VERSION,\r
+             SVN_ERR_REPOS_CATEGORY_START + 5,\r
+             "Unsupported repository version")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_DISABLED_FEATURE,\r
+             SVN_ERR_REPOS_CATEGORY_START + 6,\r
+             "Disabled repository feature")\r
+\r
+  SVN_ERRDEF(SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED,\r
+             SVN_ERR_REPOS_CATEGORY_START + 7,\r
+             "Error running post-commit hook")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_REPOS_POST_LOCK_HOOK_FAILED,\r
+             SVN_ERR_REPOS_CATEGORY_START + 8,\r
+             "Error running post-lock hook")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_REPOS_POST_UNLOCK_HOOK_FAILED,\r
+             SVN_ERR_REPOS_CATEGORY_START + 9,\r
+             "Error running post-unlock hook")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_REPOS_UNSUPPORTED_UPGRADE,\r
+             SVN_ERR_REPOS_CATEGORY_START + 10,\r
+             "Repository upgrade is not supported")\r
+\r
+  /* generic RA errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_ILLEGAL_URL,\r
+             SVN_ERR_RA_CATEGORY_START + 0,\r
+             "Bad URL passed to RA layer")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_NOT_AUTHORIZED,\r
+             SVN_ERR_RA_CATEGORY_START + 1,\r
+             "Authorization failed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_UNKNOWN_AUTH,\r
+             SVN_ERR_RA_CATEGORY_START + 2,\r
+             "Unknown authorization method")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_NOT_IMPLEMENTED,\r
+             SVN_ERR_RA_CATEGORY_START + 3,\r
+             "Repository access method not implemented")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_OUT_OF_DATE,\r
+             SVN_ERR_RA_CATEGORY_START + 4,\r
+             "Item is out of date")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_NO_REPOS_UUID,\r
+             SVN_ERR_RA_CATEGORY_START + 5,\r
+             "Repository has no UUID")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_UNSUPPORTED_ABI_VERSION,\r
+             SVN_ERR_RA_CATEGORY_START + 6,\r
+             "Unsupported RA plugin ABI version")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_RA_NOT_LOCKED,\r
+             SVN_ERR_RA_CATEGORY_START + 7,\r
+             "Path is not locked")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED,\r
+             SVN_ERR_RA_CATEGORY_START + 8,\r
+             "Server can only replay from the root of a repository")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RA_UUID_MISMATCH,\r
+             SVN_ERR_RA_CATEGORY_START + 9,\r
+             "Repository UUID does not match expected UUID")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_RA_REPOS_ROOT_URL_MISMATCH,\r
+             SVN_ERR_RA_CATEGORY_START + 10,\r
+             "Repository root URL does not match expected root URL")\r
+\r
+  /* ra_dav errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_SOCK_INIT,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 0,\r
+             "RA layer failed to init socket layer")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_CREATING_REQUEST,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 1,\r
+             "RA layer failed to create HTTP request")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_REQUEST_FAILED,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 2,\r
+             "RA layer request failed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_OPTIONS_REQ_FAILED,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 3,\r
+             "RA layer didn't receive requested OPTIONS info")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_PROPS_NOT_FOUND,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 4,\r
+             "RA layer failed to fetch properties")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_ALREADY_EXISTS,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 5,\r
+             "RA layer file already exists")\r
+\r
+  /** @deprecated To improve consistency between ra layers, this error code\r
+      is replaced by SVN_ERR_BAD_CONFIG_VALUE.\r
+      Slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_INVALID_CONFIG_VALUE,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 6,\r
+             "Invalid configuration value")\r
+\r
+  /** @deprecated To improve consistency between ra layers, this error code\r
+      is replaced in ra_{neon|serf} by SVN_ERR_FS_NOT_FOUND.\r
+      Slated for removal in the next major release. */\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_PATH_NOT_FOUND,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 7,\r
+             "HTTP Path Not Found")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_PROPPATCH_FAILED,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 8,\r
+             "Failed to execute WebDAV PROPPATCH")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_MALFORMED_DATA,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 9,\r
+             "Malformed network data")\r
+\r
+  /** @since New in 1.3 */\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_RESPONSE_HEADER_BADNESS,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 10,\r
+             "Unable to extract data from response header")\r
+\r
+  /** @since New in 1.5 */\r
+  SVN_ERRDEF(SVN_ERR_RA_DAV_RELOCATED,\r
+             SVN_ERR_RA_DAV_CATEGORY_START + 11,\r
+             "Repository has been moved")\r
+\r
+  /* ra_local errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_LOCAL_REPOS_NOT_FOUND,\r
+             SVN_ERR_RA_LOCAL_CATEGORY_START + 0,\r
+             "Couldn't find a repository")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED,\r
+             SVN_ERR_RA_LOCAL_CATEGORY_START + 1,\r
+             "Couldn't open a repository")\r
+  /* ra_svn errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_CMD_ERR,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 0,\r
+             "Special code for wrapping server errors to report to client")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_UNKNOWN_CMD,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 1,\r
+             "Unknown svn protocol command")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_CONNECTION_CLOSED,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 2,\r
+             "Network connection closed unexpectedly")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_IO_ERROR,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 3,\r
+             "Network read/write error")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_MALFORMED_DATA,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 4,\r
+             "Malformed network data")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_REPOS_NOT_FOUND,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 5,\r
+             "Couldn't find a repository")\r
+\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_BAD_VERSION,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 6,\r
+             "Client/server version mismatch")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RA_SVN_NO_MECHANISMS,\r
+             SVN_ERR_RA_SVN_CATEGORY_START + 7,\r
+             "Cannot negotiate authentication mechanism")\r
+\r
+  /* libsvn_ra_serf errors */\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,\r
+             SVN_ERR_RA_SERF_CATEGORY_START + 0,\r
+             "Initialization of SSPI library failed")\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,\r
+             SVN_ERR_RA_SERF_CATEGORY_START + 1,\r
+             "Server SSL certificate untrusted")\r
+\r
+  /* libsvn_auth errors */\r
+\r
+       /* this error can be used when an auth provider doesn't have\r
+          the creds, but no other "real" error occurred. */\r
+  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_UNAVAILABLE,\r
+             SVN_ERR_AUTHN_CATEGORY_START + 0,\r
+             "Credential data unavailable")\r
+\r
+  SVN_ERRDEF(SVN_ERR_AUTHN_NO_PROVIDER,\r
+             SVN_ERR_AUTHN_CATEGORY_START + 1,\r
+             "No authentication provider available")\r
+\r
+  SVN_ERRDEF(SVN_ERR_AUTHN_PROVIDERS_EXHAUSTED,\r
+             SVN_ERR_AUTHN_CATEGORY_START + 2,\r
+             "All authentication providers exhausted")\r
+\r
+  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_NOT_SAVED,\r
+             SVN_ERR_AUTHN_CATEGORY_START + 3,\r
+             "Credentials not saved")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_AUTHN_FAILED,\r
+             SVN_ERR_AUTHN_CATEGORY_START + 4,\r
+             "Authentication failed")\r
+\r
+  /* authorization errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_AUTHZ_ROOT_UNREADABLE,\r
+             SVN_ERR_AUTHZ_CATEGORY_START + 0,\r
+             "Read access denied for root of edit")\r
+\r
+  /** @since New in 1.1. */\r
+  SVN_ERRDEF(SVN_ERR_AUTHZ_UNREADABLE,\r
+             SVN_ERR_AUTHZ_CATEGORY_START + 1,\r
+             "Item is not readable")\r
+\r
+  /** @since New in 1.1. */\r
+  SVN_ERRDEF(SVN_ERR_AUTHZ_PARTIALLY_READABLE,\r
+             SVN_ERR_AUTHZ_CATEGORY_START + 2,\r
+             "Item is partially readable")\r
+\r
+  SVN_ERRDEF(SVN_ERR_AUTHZ_INVALID_CONFIG,\r
+             SVN_ERR_AUTHZ_CATEGORY_START + 3,\r
+             "Invalid authz configuration")\r
+\r
+  /** @since New in 1.3 */\r
+  SVN_ERRDEF(SVN_ERR_AUTHZ_UNWRITABLE,\r
+             SVN_ERR_AUTHZ_CATEGORY_START + 4,\r
+             "Item is not writable")\r
+\r
+  /* svndiff errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_INVALID_HEADER,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 0,\r
+             "Svndiff data has invalid header")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_CORRUPT_WINDOW,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 1,\r
+             "Svndiff data contains corrupt window")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_BACKWARD_VIEW,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 2,\r
+             "Svndiff data contains backward-sliding source view")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_INVALID_OPS,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 3,\r
+             "Svndiff data contains invalid instruction")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_UNEXPECTED_END,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 4,\r
+             "Svndiff data ends unexpectedly")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SVNDIFF_INVALID_COMPRESSED_DATA,\r
+             SVN_ERR_SVNDIFF_CATEGORY_START + 5,\r
+             "Svndiff compressed data is invalid")\r
+\r
+  /* libsvn_diff errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_DIFF_DATASOURCE_MODIFIED,\r
+             SVN_ERR_DIFF_CATEGORY_START + 0,\r
+             "Diff data source modified unexpectedly")\r
+\r
+  /* mod_dav_svn errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_APMOD_MISSING_PATH_TO_FS,\r
+             SVN_ERR_APMOD_CATEGORY_START + 0,\r
+             "Apache has no path to an SVN filesystem")\r
+\r
+  SVN_ERRDEF(SVN_ERR_APMOD_MALFORMED_URI,\r
+             SVN_ERR_APMOD_CATEGORY_START + 1,\r
+             "Apache got a malformed URI")\r
+\r
+  SVN_ERRDEF(SVN_ERR_APMOD_ACTIVITY_NOT_FOUND,\r
+             SVN_ERR_APMOD_CATEGORY_START + 2,\r
+             "Activity not found")\r
+\r
+  SVN_ERRDEF(SVN_ERR_APMOD_BAD_BASELINE,\r
+             SVN_ERR_APMOD_CATEGORY_START + 3,\r
+             "Baseline incorrect")\r
+\r
+  SVN_ERRDEF(SVN_ERR_APMOD_CONNECTION_ABORTED,\r
+             SVN_ERR_APMOD_CATEGORY_START + 4,\r
+             "Input/output error")\r
+\r
+  /* libsvn_client errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 0,\r
+             "A path under version control is needed for this operation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_RA_ACCESS_REQUIRED,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 1,\r
+             "Repository access is needed for this operation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_BAD_REVISION,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 2,\r
+             "Bogus revision information given")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_DUPLICATE_COMMIT_URL,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 3,\r
+             "Attempting to commit to a URL more than once")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_IS_BINARY_FILE,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 4,\r
+             "Operation does not apply to binary file")\r
+\r
+       /*### SVN_PROP_EXTERNALS needed to be replaced with "svn:externals"\r
+         in order to get gettext translatable strings */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 5,\r
+             "Format of an svn:externals property was invalid")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_MODIFIED,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 6,\r
+             "Attempting restricted operation for modified resource")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_IS_DIRECTORY,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 7,\r
+             "Operation does not apply to directory")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_REVISION_RANGE,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 8,\r
+             "Revision range is not allowed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_INVALID_RELOCATION,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 9,\r
+             "Inter-repository relocation not allowed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_REVISION_AUTHOR_CONTAINS_NEWLINE,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 10,\r
+             "Author name cannot contain a newline")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_PROPERTY_NAME,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 11,\r
+             "Bad property name")\r
+\r
+  /** @since New in 1.1. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_UNRELATED_RESOURCES,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 12,\r
+             "Two versioned resources are unrelated")\r
+\r
+  /** @since New in 1.2. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_MISSING_LOCK_TOKEN,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 13,\r
+             "Path has no lock token")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 14,\r
+             "Operation does not support multiple sources")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_NO_VERSIONED_PARENT,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 15,\r
+             "No versioned parent directories")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_NOT_READY_TO_MERGE,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 16,\r
+             "Working copy and merge source not ready for reintegration")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_CLIENT_FILE_EXTERNAL_OVERWRITE_VERSIONED,\r
+             SVN_ERR_CLIENT_CATEGORY_START + 17,\r
+             "A file external cannot overwrite an existing versioned item")\r
+\r
+  /* misc errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_BASE,\r
+             SVN_ERR_MISC_CATEGORY_START + 0,\r
+             "A problem occurred; see other errors for details")\r
+\r
+  SVN_ERRDEF(SVN_ERR_PLUGIN_LOAD_FAILURE,\r
+             SVN_ERR_MISC_CATEGORY_START + 1,\r
+             "Failure loading plugin")\r
+\r
+  SVN_ERRDEF(SVN_ERR_MALFORMED_FILE,\r
+             SVN_ERR_MISC_CATEGORY_START + 2,\r
+             "Malformed file")\r
+\r
+  SVN_ERRDEF(SVN_ERR_INCOMPLETE_DATA,\r
+             SVN_ERR_MISC_CATEGORY_START + 3,\r
+             "Incomplete data")\r
+\r
+  SVN_ERRDEF(SVN_ERR_INCORRECT_PARAMS,\r
+             SVN_ERR_MISC_CATEGORY_START + 4,\r
+             "Incorrect parameters given")\r
+\r
+  SVN_ERRDEF(SVN_ERR_UNVERSIONED_RESOURCE,\r
+             SVN_ERR_MISC_CATEGORY_START + 5,\r
+             "Tried a versioning operation on an unversioned resource")\r
+\r
+  SVN_ERRDEF(SVN_ERR_TEST_FAILED,\r
+             SVN_ERR_MISC_CATEGORY_START + 6,\r
+             "Test failed")\r
+\r
+  SVN_ERRDEF(SVN_ERR_UNSUPPORTED_FEATURE,\r
+             SVN_ERR_MISC_CATEGORY_START + 7,\r
+             "Trying to use an unsupported feature")\r
+\r
+  SVN_ERRDEF(SVN_ERR_BAD_PROP_KIND,\r
+             SVN_ERR_MISC_CATEGORY_START + 8,\r
+             "Unexpected or unknown property kind")\r
+\r
+  SVN_ERRDEF(SVN_ERR_ILLEGAL_TARGET,\r
+             SVN_ERR_MISC_CATEGORY_START + 9,\r
+             "Illegal target for the requested operation")\r
+\r
+  SVN_ERRDEF(SVN_ERR_DELTA_MD5_CHECKSUM_ABSENT,\r
+             SVN_ERR_MISC_CATEGORY_START + 10,\r
+             "MD5 checksum is missing")\r
+\r
+  SVN_ERRDEF(SVN_ERR_DIR_NOT_EMPTY,\r
+             SVN_ERR_MISC_CATEGORY_START + 11,\r
+             "Directory needs to be empty but is not")\r
+\r
+  SVN_ERRDEF(SVN_ERR_EXTERNAL_PROGRAM,\r
+             SVN_ERR_MISC_CATEGORY_START + 12,\r
+             "Error calling external program")\r
+\r
+  SVN_ERRDEF(SVN_ERR_SWIG_PY_EXCEPTION_SET,\r
+             SVN_ERR_MISC_CATEGORY_START + 13,\r
+             "Python exception has been set with the error")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CHECKSUM_MISMATCH,\r
+             SVN_ERR_MISC_CATEGORY_START + 14,\r
+             "A checksum mismatch occurred")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CANCELLED,\r
+             SVN_ERR_MISC_CATEGORY_START + 15,\r
+             "The operation was interrupted")\r
+\r
+  SVN_ERRDEF(SVN_ERR_INVALID_DIFF_OPTION,\r
+             SVN_ERR_MISC_CATEGORY_START + 16,\r
+             "The specified diff option is not supported")\r
+\r
+  SVN_ERRDEF(SVN_ERR_PROPERTY_NOT_FOUND,\r
+             SVN_ERR_MISC_CATEGORY_START + 17,\r
+             "Property not found")\r
+\r
+  SVN_ERRDEF(SVN_ERR_NO_AUTH_FILE_PATH,\r
+             SVN_ERR_MISC_CATEGORY_START + 18,\r
+             "No auth file path available")\r
+\r
+  /** @since New in 1.1. */\r
+  SVN_ERRDEF(SVN_ERR_VERSION_MISMATCH,\r
+             SVN_ERR_MISC_CATEGORY_START + 19,\r
+             "Incompatible library version")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_MERGEINFO_PARSE_ERROR,\r
+             SVN_ERR_MISC_CATEGORY_START + 20,\r
+             "Mergeinfo parse error")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_CEASE_INVOCATION,\r
+             SVN_ERR_MISC_CATEGORY_START + 21,\r
+             "Cease invocation of this API")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_REVNUM_PARSE_FAILURE,\r
+             SVN_ERR_MISC_CATEGORY_START + 22,\r
+             "Error parsing revision number")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_ITER_BREAK,\r
+             SVN_ERR_MISC_CATEGORY_START + 23,\r
+             "Iteration terminated before completion")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_UNKNOWN_CHANGELIST,\r
+             SVN_ERR_MISC_CATEGORY_START + 24,\r
+             "Unknown changelist")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_RESERVED_FILENAME_SPECIFIED,\r
+             SVN_ERR_MISC_CATEGORY_START + 25,\r
+             "Reserved directory name in command line arguments")\r
+\r
+  /** @since New in 1.5. */\r
+  SVN_ERRDEF(SVN_ERR_UNKNOWN_CAPABILITY,\r
+             SVN_ERR_MISC_CATEGORY_START + 26,\r
+             "Inquiry about unknown capability")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_TEST_SKIPPED,\r
+             SVN_ERR_MISC_CATEGORY_START + 27,\r
+             "Test skipped")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_NO_APR_MEMCACHE,\r
+             SVN_ERR_MISC_CATEGORY_START + 28,\r
+             "apr memcache library not available")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_ATOMIC_INIT_FAILURE,\r
+             SVN_ERR_MISC_CATEGORY_START + 29,\r
+             "Couldn't perform atomic initialization")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_SQLITE_ERROR,\r
+             SVN_ERR_MISC_CATEGORY_START + 30,\r
+             "SQLite error")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_SQLITE_READONLY,\r
+             SVN_ERR_MISC_CATEGORY_START + 31,\r
+             "Attempted to write to readonly SQLite db")\r
+\r
+  /** @since New in 1.6. */\r
+  SVN_ERRDEF(SVN_ERR_SQLITE_UNSUPPORTED_SCHEMA,\r
+             SVN_ERR_MISC_CATEGORY_START + 32,\r
+             "Unsupported schema found in SQLite db")\r
+\r
+  /* command-line client errors */\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,\r
+             SVN_ERR_CL_CATEGORY_START + 0,\r
+             "Error parsing arguments")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_INSUFFICIENT_ARGS,\r
+             SVN_ERR_CL_CATEGORY_START + 1,\r
+             "Not enough arguments provided")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_MUTUALLY_EXCLUSIVE_ARGS,\r
+             SVN_ERR_CL_CATEGORY_START + 2,\r
+             "Mutually exclusive arguments specified")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_ADM_DIR_RESERVED,\r
+             SVN_ERR_CL_CATEGORY_START + 3,\r
+             "Attempted command in administrative dir")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_LOG_MESSAGE_IS_VERSIONED_FILE,\r
+             SVN_ERR_CL_CATEGORY_START + 4,\r
+             "The log message file is under version control")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_LOG_MESSAGE_IS_PATHNAME,\r
+             SVN_ERR_CL_CATEGORY_START + 5,\r
+             "The log message is a pathname")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_COMMIT_IN_ADDED_DIR,\r
+             SVN_ERR_CL_CATEGORY_START + 6,\r
+             "Committing in directory scheduled for addition")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_NO_EXTERNAL_EDITOR,\r
+             SVN_ERR_CL_CATEGORY_START + 7,\r
+             "No external editor available")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_BAD_LOG_MESSAGE,\r
+             SVN_ERR_CL_CATEGORY_START + 8,\r
+             "Something is wrong with the log message's contents")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_UNNECESSARY_LOG_MESSAGE,\r
+             SVN_ERR_CL_CATEGORY_START + 9,\r
+             "A log message was given where none was necessary")\r
+\r
+  SVN_ERRDEF(SVN_ERR_CL_NO_EXTERNAL_MERGE_TOOL,\r
+             SVN_ERR_CL_CATEGORY_START + 10,\r
+             "No external merge tool available")\r
+\r
+  /* malfunctions such as assertion failures */\r
+\r
+  SVN_ERRDEF(SVN_ERR_ASSERTION_FAIL,\r
+             SVN_ERR_MALFUNC_CATEGORY_START + 0,\r
+             "Assertion failure")\r
+\r
+SVN_ERROR_END\r
+\r
+\r
+#undef SVN_ERROR_START\r
+#undef SVN_ERRDEF\r
+#undef SVN_ERROR_END\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* defined(SVN_ERROR_BUILD_ARRAY) || !defined(SVN_ERROR_ENUM_DEFINED) */\r
diff --git a/src/TortoiseMerge/svninclude/svn_pools.h b/src/TortoiseMerge/svninclude/svn_pools.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/TortoiseMerge/svninclude/svn_types.h b/src/TortoiseMerge/svninclude/svn_types.h
new file mode 100644 (file)
index 0000000..0b2c547
--- /dev/null
@@ -0,0 +1,941 @@
+/**\r
+ * @copyright\r
+ * ====================================================================\r
+ * Copyright (c) 2000-2008 CollabNet.  All rights reserved.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution.  The terms\r
+ * are also available at http://subversion.tigris.org/license-1.html.\r
+ * If newer versions of this license are posted there, you may use a\r
+ * newer version instead, at your option.\r
+ *\r
+ * This software consists of voluntary contributions made by many\r
+ * individuals.  For exact contribution history, see the revision\r
+ * history and logs, available at http://subversion.tigris.org/.\r
+ * ====================================================================\r
+ * @endcopyright\r
+ *\r
+ * @file svn_types.h\r
+ * @brief Subversion's data types\r
+ */\r
+\r
+#ifndef SVN_TYPES_H\r
+#define SVN_TYPES_H\r
+\r
+/* ### this should go away, but it causes too much breakage right now */\r
+#include <stdlib.h>\r
+\r
+#include <apr.h>        /* for apr_size_t */\r
+#include <apr_pools.h>\r
+#include <apr_hash.h>\r
+#include <apr_tables.h>\r
+#include <apr_time.h>\r
+#include <apr_sha1.h>\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+\r
+\f\r
+/** Macro used to mark deprecated functions.\r
+ *\r
+ * @since New in 1.6.\r
+ */\r
+#ifndef SVN_DEPRECATED\r
+#if !defined(SWIGPERL) && !defined(SWIGPYTHON) && !defined(SWIGRUBY)\r
+#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__==3 && __GNUC_MINOR__>=1))\r
+#define SVN_DEPRECATED __attribute__((deprecated))\r
+#elif defined(_MSC_VER) && _MSC_VER >= 1300\r
+#define SVN_DEPRECATED __declspec(deprecated)\r
+#else\r
+#define SVN_DEPRECATED\r
+#endif\r
+#else\r
+#define SVN_DEPRECATED\r
+#endif\r
+#endif\r
+\r
+\r
+\f\r
+/** Subversion error object.\r
+ *\r
+ * Defined here, rather than in svn_error.h, to avoid a recursive @#include\r
+ * situation.\r
+ */\r
+typedef struct svn_error_t\r
+{\r
+  /** APR error value, possibly SVN_ custom err */\r
+  apr_status_t apr_err;\r
+\r
+  /** details from producer of error */\r
+  const char *message;\r
+\r
+  /** ptr to the error we "wrap" */\r
+  struct svn_error_t *child;\r
+\r
+  /** The pool holding this error and any child errors it wraps */\r
+  apr_pool_t *pool;\r
+\r
+  /** Source file where the error originated.  Only used iff @c SVN_DEBUG. */\r
+  const char *file;\r
+\r
+  /** Source line where the error originated.  Only used iff @c SVN_DEBUG. */\r
+  long line;\r
+\r
+} svn_error_t;\r
+\r
+\r
+\f\r
+/** @defgroup APR_ARRAY_compat_macros APR Array Compatibility Helper Macros\r
+ * These macros are provided by APR itself from version 1.3.\r
+ * Definitions are provided here for when using older versions of APR.\r
+ * @{\r
+ */\r
+\r
+/** index into an apr_array_header_t */\r
+#ifndef APR_ARRAY_IDX\r
+#define APR_ARRAY_IDX(ary,i,type) (((type *)(ary)->elts)[i])\r
+#endif\r
+\r
+/** easier array-pushing syntax */\r
+#ifndef APR_ARRAY_PUSH\r
+#define APR_ARRAY_PUSH(ary,type) (*((type *)apr_array_push(ary)))\r
+#endif\r
+\r
+/** @} */\r
+\f\r
+/** The various types of nodes in the Subversion filesystem. */\r
+typedef enum\r
+{\r
+  /** absent */\r
+  svn_node_none,\r
+\r
+  /** regular file */\r
+  svn_node_file,\r
+\r
+  /** directory */\r
+  svn_node_dir,\r
+\r
+  /** something's here, but we don't know what */\r
+  svn_node_unknown\r
+} svn_node_kind_t;\r
+\r
+/** About Special Files in Subversion\r
+ *\r
+ * Subversion denotes files that cannot be portably created or\r
+ * modified as "special" files (svn_node_special).  It stores these\r
+ * files in the repository as a plain text file with the svn:special\r
+ * property set.  The file contents contain: a platform-specific type\r
+ * string, a space character, then any information necessary to create\r
+ * the file on a supported platform.  For example, if a symbolic link\r
+ * were being represented, the repository file would have the\r
+ * following contents:\r
+ *\r
+ * "link /path/to/link/target"\r
+ *\r
+ * Where 'link' is the identifier string showing that this special\r
+ * file should be a symbolic link and '/path/to/link/target' is the\r
+ * destination of the symbolic link.\r
+ *\r
+ * Special files are stored in the text-base exactly as they are\r
+ * stored in the repository.  The platform specific files are created\r
+ * in the working copy at EOL/keyword translation time using\r
+ * svn_subst_copy_and_translate2().  If the current platform does not\r
+ * support a specific special file type, the file is copied into the\r
+ * working copy as it is seen in the repository.  Because of this,\r
+ * users of other platforms can still view and modify the special\r
+ * files, even if they do not have their unique properties.\r
+ *\r
+ * New types of special files can be added by:\r
+ *  1. Implementing a platform-dependent routine to create a uniquely\r
+ *     named special file and one to read the special file in\r
+ *     libsvn_subr/io.c.\r
+ *  2. Creating a new textual name similar to\r
+ *     SVN_SUBST__SPECIAL_LINK_STR in libsvn_subr/subst.c.\r
+ *  3. Handling the translation/detranslation case for the new type in\r
+ *     create_special_file and detranslate_special_file, using the\r
+ *     routines from 1.\r
+ */\r
+\r
+/** A revision number. */\r
+typedef long int svn_revnum_t;\r
+\r
+/** Valid revision numbers begin at 0 */\r
+#define SVN_IS_VALID_REVNUM(n) ((n) >= 0)\r
+\r
+/** The 'official' invalid revision num */\r
+#define SVN_INVALID_REVNUM ((svn_revnum_t) -1)\r
+\r
+/** Not really invalid...just unimportant -- one day, this can be its\r
+ * own unique value, for now, just make it the same as\r
+ * @c SVN_INVALID_REVNUM.\r
+ */\r
+#define SVN_IGNORED_REVNUM ((svn_revnum_t) -1)\r
+\r
+/** Convert NULL-terminated C string @a str to a revision number. */\r
+#define SVN_STR_TO_REV(str) ((svn_revnum_t) atol(str))\r
+\r
+/**\r
+ * Parse NULL-terminated C string @a str as a revision number and\r
+ * store its value in @a rev.  If @a endptr is non-NULL, then the\r
+ * address of the first non-numeric character in @a str is stored in\r
+ * it.  If there are no digits in @a str, then @a endptr is set (if\r
+ * non-NULL), and the error @c SVN_ERR_REVNUM_PARSE_FAILURE error is\r
+ * returned.  Negative numbers parsed from @a str are considered\r
+ * invalid, and result in the same error.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_error_t *\r
+svn_revnum_parse(svn_revnum_t *rev,\r
+                 const char *str,\r
+                 const char **endptr);\r
+\r
+/** Originally intended to be used in printf()-style functions to format\r
+ * revision numbers.  Deprecated due to incompatibilities with language\r
+ * translation tools (e.g. gettext).\r
+ *\r
+ * New code should use a bare "%ld" format specifier for formatting revision\r
+ * numbers.\r
+ *\r
+ * @deprecated Provided for backward compatibility with the 1.0 API.\r
+ */\r
+#define SVN_REVNUM_T_FMT "ld"\r
+\r
+\r
+/** The size of a file in the Subversion FS. */\r
+typedef apr_int64_t svn_filesize_t;\r
+\r
+/** The 'official' invalid file size constant. */\r
+#define SVN_INVALID_FILESIZE ((svn_filesize_t) -1)\r
+\r
+/** In printf()-style functions, format file sizes using this. */\r
+#define SVN_FILESIZE_T_FMT APR_INT64_T_FMT\r
+\r
+#ifndef DOXYGEN_SHOULD_SKIP_THIS\r
+/* Parse a base-10 numeric string into a 64-bit unsigned numeric value. */\r
+/* NOTE: Private. For use by Subversion's own code only. See issue #1644. */\r
+/* FIXME: APR should supply a function to do this, such as "apr_atoui64". */\r
+#define svn__atoui64(X) ((apr_uint64_t) apr_atoi64(X))\r
+#endif\r
+\r
+\r
+/** YABT:  Yet Another Boolean Type */\r
+typedef int svn_boolean_t;\r
+\r
+#ifndef TRUE\r
+/** uhh... true */\r
+#define TRUE 1\r
+#endif /* TRUE */\r
+\r
+#ifndef FALSE\r
+/** uhh... false */\r
+#define FALSE 0\r
+#endif /* FALSE */\r
+\r
+\r
+/** An enum to indicate whether recursion is needed. */\r
+enum svn_recurse_kind\r
+{\r
+  svn_nonrecursive = 1,\r
+  svn_recursive\r
+};\r
+\r
+/** The concept of depth for directories.\r
+ *\r
+ * @note This is similar to, but not exactly the same as, the WebDAV\r
+ * and LDAP concepts of depth.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+typedef enum\r
+{\r
+  /* The order of these depths is important: the higher the number,\r
+     the deeper it descends.  This allows us to compare two depths\r
+     numerically to decide which should govern. */\r
+\r
+  /* Depth undetermined or ignored.  In some contexts, this means the\r
+     client should choose an appropriate default depth.  The server\r
+     will generally treat it as @c svn_depth_infinity. */\r
+  svn_depth_unknown    = -2,\r
+\r
+  /* Exclude (i.e., don't descend into) directory D. */\r
+  /* NOTE: In Subversion 1.5, svn_depth_exclude is *not* supported\r
+     anywhere in the client-side (libsvn_wc/libsvn_client/etc) code;\r
+     it is only supported as an argument to set_path functions in the\r
+     ra and repos reporters.  (This will enable future versions of\r
+     Subversion to run updates, etc, against 1.5 servers with proper\r
+     svn_depth_exclude behavior, once we get a chance to implement\r
+     client-side support for svn_depth_exclude.)\r
+  */\r
+  svn_depth_exclude    = -1,\r
+\r
+  /* Just the named directory D, no entries.  Updates will not pull in\r
+     any files or subdirectories not already present. */\r
+  svn_depth_empty      =  0,\r
+\r
+  /* D + its file children, but not subdirs.  Updates will pull in any\r
+     files not already present, but not subdirectories. */\r
+  svn_depth_files      =  1,\r
+\r
+  /* D + immediate children (D and its entries).  Updates will pull in\r
+     any files or subdirectories not already present; those\r
+     subdirectories' this_dir entries will have depth-empty. */\r
+  svn_depth_immediates =  2,\r
+\r
+  /* D + all descendants (full recursion from D).  Updates will pull\r
+     in any files or subdirectories not already present; those\r
+     subdirectories' this_dir entries will have depth-infinity.\r
+     Equivalent to the pre-1.5 default update behavior. */\r
+  svn_depth_infinity   =  3\r
+\r
+} svn_depth_t;\r
+\r
+\r
+/** Return a constant string expressing @a depth as an English word,\r
+ * e.g., "infinity", "immediates", etc.  The string is not localized,\r
+ * as it may be used for client<->server communications.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+const char *\r
+svn_depth_to_word(svn_depth_t depth);\r
+\r
+\r
+/** Return the appropriate depth for @a depth_str.  @a word is as\r
+ * returned from svn_depth_to_word().  If @a depth_str does not\r
+ * represent a recognized depth, return @c svn_depth_unknown.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_depth_t\r
+svn_depth_from_word(const char *word);\r
+\r
+\r
+/* Return @c svn_depth_infinity if boolean @a recurse is TRUE, else\r
+ * return @c svn_depth_files.\r
+ *\r
+ * @note New code should never need to use this, it is called only\r
+ * from pre-depth APIs, for compatibility.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+#define SVN_DEPTH_INFINITY_OR_FILES(recurse) \\r
+  ((recurse) ? svn_depth_infinity : svn_depth_files)\r
+\r
+\r
+/* Return @c svn_depth_infinity if boolean @a recurse is TRUE, else\r
+ * return @c svn_depth_immediates.\r
+ *\r
+ * @note New code should never need to use this, it is called only\r
+ * from pre-depth APIs, for compatibility.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+#define SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse) \\r
+  ((recurse) ? svn_depth_infinity : svn_depth_immediates)\r
+\r
+\r
+/* Return @c svn_depth_infinity if boolean @a recurse is TRUE, else\r
+ * return @c svn_depth_empty.\r
+ *\r
+ * @note New code should never need to use this, it is called only\r
+ * from pre-depth APIs, for compatibility.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+#define SVN_DEPTH_INFINITY_OR_EMPTY(recurse) \\r
+  ((recurse) ? svn_depth_infinity : svn_depth_empty)\r
+\r
+\r
+/* Return a recursion boolean based on @a depth.\r
+ *\r
+ * Although much code has been converted to use depth, some code still\r
+ * takes a recurse boolean.  In most cases, it makes sense to treat\r
+ * unknown or infinite depth as recursive, and any other depth as\r
+ * non-recursive (which in turn usually translates to @c svn_depth_files).\r
+ */\r
+#define SVN_DEPTH_IS_RECURSIVE(depth)                              \\r
+  (((depth) == svn_depth_infinity || (depth) == svn_depth_unknown) \\r
+   ? TRUE : FALSE)\r
+\r
+\r
+/**\r
+ * It is sometimes convenient to indicate which parts of an @c svn_dirent_t\r
+ * object you are actually interested in, so that calculating and sending\r
+ * the data corresponding to the other fields can be avoided.  These values\r
+ * can be used for that purpose.\r
+ *\r
+ * @defgroup svn_dirent_fields Dirent fields\r
+ * @{\r
+ */\r
+\r
+/** An indication that you are interested in the @c kind field */\r
+#define SVN_DIRENT_KIND        0x00001\r
+\r
+/** An indication that you are interested in the @c size field */\r
+#define SVN_DIRENT_SIZE        0x00002\r
+\r
+/** An indication that you are interested in the @c has_props field */\r
+#define SVN_DIRENT_HAS_PROPS   0x00004\r
+\r
+/** An indication that you are interested in the @c created_rev field */\r
+#define SVN_DIRENT_CREATED_REV 0x00008\r
+\r
+/** An indication that you are interested in the @c time field */\r
+#define SVN_DIRENT_TIME        0x00010\r
+\r
+/** An indication that you are interested in the @c last_author field */\r
+#define SVN_DIRENT_LAST_AUTHOR 0x00020\r
+\r
+/** A combination of all the dirent fields */\r
+#define SVN_DIRENT_ALL ~((apr_uint32_t ) 0)\r
+\r
+/** @} */\r
+\r
+/** A general subversion directory entry. */\r
+typedef struct svn_dirent_t\r
+{\r
+  /** node kind */\r
+  svn_node_kind_t kind;\r
+\r
+  /** length of file text, or 0 for directories */\r
+  svn_filesize_t size;\r
+\r
+  /** does the node have props? */\r
+  svn_boolean_t has_props;\r
+\r
+  /** last rev in which this node changed */\r
+  svn_revnum_t created_rev;\r
+\r
+  /** time of created_rev (mod-time) */\r
+  apr_time_t time;\r
+\r
+  /** author of created_rev */\r
+  const char *last_author;\r
+\r
+  /* IMPORTANT: If you extend this struct, check svn_dirent_dup(). */\r
+} svn_dirent_t;\r
+\r
+\r
+/** Return a deep copy of @a dirent, allocated in @a pool.\r
+ *\r
+ * @since New in 1.4.\r
+ */\r
+svn_dirent_t *\r
+svn_dirent_dup(const svn_dirent_t *dirent,\r
+               apr_pool_t *pool);\r
+\r
+\f\r
+\r
+/** Keyword substitution.\r
+ *\r
+ * All the keywords Subversion recognizes.\r
+ *\r
+ * Note that there is a better, more general proposal out there, which\r
+ * would take care of both internationalization issues and custom\r
+ * keywords (e.g., $NetBSD$).  See\r
+ *\r
+ * @verbatim\r
+      http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=8921\r
+      =====\r
+      From: "Jonathan M. Manning" <jmanning@alisa-jon.net>\r
+      To: dev@subversion.tigris.org\r
+      Date: Fri, 14 Dec 2001 11:56:54 -0500\r
+      Message-ID: <87970000.1008349014@bdldevel.bl.bdx.com>\r
+      Subject: Re: keywords @endverbatim\r
+ *\r
+ * and Eric Gillespie's support of same:\r
+ *\r
+ * @verbatim\r
+      http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=8757\r
+      =====\r
+      From: "Eric Gillespie, Jr." <epg@pretzelnet.org>\r
+      To: dev@subversion.tigris.org\r
+      Date: Wed, 12 Dec 2001 09:48:42 -0500\r
+      Message-ID: <87k7vsebp1.fsf@vger.pretzelnet.org>\r
+      Subject: Re: Customizable Keywords @endverbatim\r
+ *\r
+ * However, it is considerably more complex than the scheme below.\r
+ * For now we're going with simplicity, hopefully the more general\r
+ * solution can be done post-1.0.\r
+ *\r
+ * @defgroup svn_types_keywords Keyword definitions\r
+ * @{\r
+ */\r
+\r
+/** The maximum size of an expanded or un-expanded keyword. */\r
+#define SVN_KEYWORD_MAX_LEN    255\r
+\r
+/** The most recent revision in which this file was changed. */\r
+#define SVN_KEYWORD_REVISION_LONG    "LastChangedRevision"\r
+\r
+/** Short version of LastChangedRevision */\r
+#define SVN_KEYWORD_REVISION_SHORT   "Rev"\r
+\r
+/** Medium version of LastChangedRevision, matching the one CVS uses.\r
+ * @since New in 1.1. */\r
+#define SVN_KEYWORD_REVISION_MEDIUM  "Revision"\r
+\r
+/** The most recent date (repository time) when this file was changed. */\r
+#define SVN_KEYWORD_DATE_LONG        "LastChangedDate"\r
+\r
+/** Short version of LastChangedDate */\r
+#define SVN_KEYWORD_DATE_SHORT       "Date"\r
+\r
+/** Who most recently committed to this file. */\r
+#define SVN_KEYWORD_AUTHOR_LONG      "LastChangedBy"\r
+\r
+/** Short version of LastChangedBy */\r
+#define SVN_KEYWORD_AUTHOR_SHORT     "Author"\r
+\r
+/** The URL for the head revision of this file. */\r
+#define SVN_KEYWORD_URL_LONG         "HeadURL"\r
+\r
+/** Short version of HeadURL */\r
+#define SVN_KEYWORD_URL_SHORT        "URL"\r
+\r
+/** A compressed combination of the other four keywords. */\r
+#define SVN_KEYWORD_ID               "Id"\r
+\r
+/** @} */\r
+\r
+\f\r
+/** All information about a commit.\r
+ *\r
+ * @note Objects of this type should always be created using the\r
+ * svn_create_commit_info() function.\r
+ *\r
+ * @since New in 1.3.\r
+ */\r
+typedef struct svn_commit_info_t\r
+{\r
+  /** just-committed revision. */\r
+  svn_revnum_t revision;\r
+\r
+  /** server-side date of the commit. */\r
+  const char *date;\r
+\r
+  /** author of the commit. */\r
+  const char *author;\r
+\r
+  /** error message from post-commit hook, or NULL. */\r
+  const char *post_commit_err;\r
+\r
+} svn_commit_info_t;\r
+\r
+\f\r
+/**\r
+ * Allocate an object of type @c svn_commit_info_t in @a pool and\r
+ * return it.\r
+ *\r
+ * The @c revision field of the new struct is set to @c\r
+ * SVN_INVALID_REVNUM.  All other fields are initialized to @c NULL.\r
+ *\r
+ * @note Any object of the type @c svn_commit_info_t should\r
+ * be created using this function.\r
+ * This is to provide for extending the svn_commit_info_t in\r
+ * the future.\r
+ *\r
+ * @since New in 1.3.\r
+ */\r
+svn_commit_info_t *\r
+svn_create_commit_info(apr_pool_t *pool);\r
+\r
+\f\r
+/**\r
+ * Return a deep copy @a src_commit_info allocated in @a pool.\r
+ *\r
+ * @since New in 1.4.\r
+ */\r
+svn_commit_info_t *\r
+svn_commit_info_dup(const svn_commit_info_t *src_commit_info,\r
+                    apr_pool_t *pool);\r
+\r
+\f\r
+/** A structure to represent a path that changed for a log entry. */\r
+typedef struct svn_log_changed_path_t\r
+{\r
+  /** 'A'dd, 'D'elete, 'R'eplace, 'M'odify */\r
+  char action;\r
+\r
+  /** Source path of copy (if any). */\r
+  const char *copyfrom_path;\r
+\r
+  /** Source revision of copy (if any). */\r
+  svn_revnum_t copyfrom_rev;\r
+\r
+} svn_log_changed_path_t;\r
+\r
+\r
+/**\r
+ * Return a deep copy of @a changed_path, allocated in @a pool.\r
+ *\r
+ * @since New in 1.3.\r
+ */\r
+svn_log_changed_path_t *\r
+svn_log_changed_path_dup(const svn_log_changed_path_t *changed_path,\r
+                         apr_pool_t *pool);\r
+\r
+/**\r
+ * A structure to represent all the information about a particular log entry.\r
+ *\r
+ * @note To allow for extending the @c svn_log_entry_t structure in future\r
+ * releases, always use svn_log_entry_create() to allocate the structure.\r
+ */\r
+typedef struct svn_log_entry_t\r
+{\r
+  /** A hash containing as keys every path committed in @a revision; the\r
+   * values are (@c svn_log_changed_path_t *) stuctures.\r
+   *\r
+   * ### The only reason @a changed_paths is not qualified with `const' is\r
+   * that we usually want to loop over it, and apr_hash_first() doesn't\r
+   * take a const hash, for various reasons.  I'm not sure that those\r
+   * "various reasons" are actually even relevant anymore, and if\r
+   * they're not, it might be nice to change apr_hash_first() so\r
+   * read-only uses of hashes can be protected via the type system.\r
+   */\r
+  apr_hash_t *changed_paths;\r
+\r
+  /** The revision of the commit. */\r
+  svn_revnum_t revision;\r
+\r
+  /** The hash of requested revision properties, which may be NULL if it\r
+   * would contain no revprops. */\r
+  apr_hash_t *revprops;\r
+\r
+  /**\r
+   * Whether or not this message has children.\r
+   *\r
+   * When a log operation requests additional merge information, extra log\r
+   * entries may be returned as a result of this entry.  The new entries, are\r
+   * considered children of the original entry, and will follow it.  When\r
+   * the HAS_CHILDREN flag is set, the receiver should increment its stack\r
+   * depth, and wait until an entry is provided with SVN_INVALID_REVNUM which\r
+   * indicates the end of the children.\r
+   *\r
+   * For log operations which do not request additional merge information, the\r
+   * HAS_CHILDREN flag is always FALSE.\r
+   *\r
+   * For more information see:\r
+   * http://subversion.tigris.org/merge-tracking/design.html#commutative-reporting\r
+   */\r
+  svn_boolean_t has_children;\r
+} svn_log_entry_t;\r
+\r
+/**\r
+ * Returns an @c svn_log_entry_t, allocated in @a pool with all fields\r
+ * initialized to NULL values.\r
+ *\r
+ * @note To allow for extending the @c svn_log_entry_t structure in future\r
+ * releases, this function should always be used to allocate the structure.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_log_entry_t *\r
+svn_log_entry_create(apr_pool_t *pool);\r
+\r
+/** The callback invoked by log message loopers, such as\r
+ * @c svn_ra_plugin_t.get_log() and svn_repos_get_logs().\r
+ *\r
+ * This function is invoked once on each log message, in the order\r
+ * determined by the caller (see above-mentioned functions).\r
+ *\r
+ * @a baton is what you think it is, and @a log_entry contains relevent\r
+ * information for the log message.  Any of @a log_entry->author,\r
+ * @a log_entry->date, or @a log_entry->message may be @c NULL.\r
+ *\r
+ * If @a log_entry->date is neither NULL nor the empty string, it was\r
+ * generated by svn_time_to_cstring() and can be converted to\r
+ * @c apr_time_t with svn_time_from_cstring().\r
+ *\r
+ * If @a log_entry->changed_paths is non-@c NULL, then it contains as keys\r
+ * every path committed in @a log_entry->revision; the values are\r
+ * (@c svn_log_changed_path_t *) structures.\r
+ *\r
+ * If @a log_entry->has_children is @c TRUE, the message will be followed\r
+ * immediately by any number of merged revisions (child messages), which are\r
+ * terminated by an invocation with SVN_INVALID_REVNUM.  This usage may\r
+ * be recursive.\r
+ *\r
+ * Use @a pool for temporary allocation.  If the caller is iterating\r
+ * over log messages, invoking this receiver on each, we recommend the\r
+ * standard pool loop recipe: create a subpool, pass it as @a pool to\r
+ * each call, clear it after each iteration, destroy it after the loop\r
+ * is done.  (For allocation that must last beyond the lifetime of a\r
+ * given receiver call, use a pool in @a baton.)\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+\r
+typedef svn_error_t *(*svn_log_entry_receiver_t)\r
+  (void *baton,\r
+   svn_log_entry_t *log_entry,\r
+   apr_pool_t *pool);\r
+\r
+/**\r
+ * Similar to @c svn_log_entry_receiver_t, except this uses separate\r
+ * parameters for each part of the log entry.\r
+ *\r
+ * @deprecated Provided for backward compatibility with the 1.4 API.\r
+ */\r
+typedef svn_error_t *(*svn_log_message_receiver_t)\r
+  (void *baton,\r
+   apr_hash_t *changed_paths,\r
+   svn_revnum_t revision,\r
+   const char *author,\r
+   const char *date,  /* use svn_time_from_cstring() if need apr_time_t */\r
+   const char *message,\r
+   apr_pool_t *pool);\r
+\r
+\f\r
+/** Callback function type for commits.\r
+ *\r
+ * When a commit succeeds, an instance of this is invoked with the\r
+ * @a commit_info, along with the @a baton closure.\r
+ * @a pool can be used for temporary allocations.\r
+ *\r
+ * @since New in 1.4.\r
+ */\r
+typedef svn_error_t *(*svn_commit_callback2_t)\r
+  (const svn_commit_info_t *commit_info,\r
+   void *baton,\r
+   apr_pool_t *pool);\r
+\r
+/** Same as @c svn_commit_callback2_t, but uses individual\r
+ * data elements instead of the @c svn_commit_info_t structure\r
+ *\r
+ * @deprecated Provided for backward compatibility with the 1.3 API.\r
+ */\r
+typedef svn_error_t *(*svn_commit_callback_t)\r
+  (svn_revnum_t new_revision,\r
+   const char *date,\r
+   const char *author,\r
+   void *baton);\r
+\r
+\f\r
+/** A buffer size that may be used when processing a stream of data.\r
+ *\r
+ * @note We don't use this constant any longer, since it is considered to be\r
+ * unnecessarily large.\r
+ *\r
+ * @deprecated Provided for backwards compatibility with the 1.3 API.\r
+ */\r
+#define SVN_STREAM_CHUNK_SIZE 102400\r
+\r
+#ifndef DOXYGEN_SHOULD_SKIP_THIS\r
+/*\r
+ * The maximum amount we (ideally) hold in memory at a time when\r
+ * processing a stream of data.\r
+ *\r
+ * For example, when copying data from one stream to another, do it in\r
+ * blocks of this size.\r
+ *\r
+ * NOTE: This is an internal macro, put here for convenience.\r
+ * No public API may depend on the particular value of this macro.\r
+ */\r
+#define SVN__STREAM_CHUNK_SIZE 16384\r
+#endif\r
+\r
+/** The maximum amount we can ever hold in memory. */\r
+/* FIXME: Should this be the same as SVN_STREAM_CHUNK_SIZE? */\r
+#define SVN_MAX_OBJECT_SIZE (((apr_size_t) -1) / 2)\r
+\r
+\r
+\f\r
+/* ### Note: despite being about mime-TYPES, these probably don't\r
+ * ### belong in svn_types.h.  However, no other header is more\r
+ * ### appropriate, and didn't feel like creating svn_validate.h for\r
+ * ### so little.\r
+ */\r
+\r
+/** Validate @a mime_type.\r
+ *\r
+ * If @a mime_type does not contain a "/", or ends with non-alphanumeric\r
+ * data, return @c SVN_ERR_BAD_MIME_TYPE, else return success.\r
+ *\r
+ * Use @a pool only to find error allocation.\r
+ *\r
+ * Goal: to match both "foo/bar" and "foo/bar; charset=blah", without\r
+ * being too strict about it, but to disallow mime types that have\r
+ * quotes, newlines, or other garbage on the end, such as might be\r
+ * unsafe in an HTTP header.\r
+ */\r
+svn_error_t *\r
+svn_mime_type_validate(const char *mime_type,\r
+                       apr_pool_t *pool);\r
+\r
+\r
+/** Return FALSE iff @a mime_type is a textual type.\r
+ *\r
+ * All mime types that start with "text/" are textual, plus some special\r
+ * cases (for example, "image/x-xbitmap").\r
+ */\r
+svn_boolean_t\r
+svn_mime_type_is_binary(const char *mime_type);\r
+\r
+\r
+\f\r
+/** A user defined callback that subversion will call with a user defined\r
+ * baton to see if the current operation should be continued.  If the operation\r
+ * should continue, the function should return @c SVN_NO_ERROR, if not, it\r
+ * should return @c SVN_ERR_CANCELLED.\r
+ */\r
+typedef svn_error_t *(*svn_cancel_func_t)(void *cancel_baton);\r
+\r
+\r
+\f\r
+/**\r
+ * A lock object, for client & server to share.\r
+ *\r
+ * A lock represents the exclusive right to add, delete, or modify a\r
+ * path.  A lock is created in a repository, wholly controlled by the\r
+ * repository.  A "lock-token" is the lock's UUID, and can be used to\r
+ * learn more about a lock's fields, and or/make use of the lock.\r
+ * Because a lock is immutable, a client is free to not only cache the\r
+ * lock-token, but the lock's fields too, for convenience.\r
+ *\r
+ * Note that the 'is_dav_comment' field is wholly ignored by every\r
+ * library except for mod_dav_svn.  The field isn't even marshalled\r
+ * over the network to the client.  Assuming lock structures are\r
+ * created with apr_pcalloc(), a default value of 0 is universally safe.\r
+ *\r
+ * @note in the current implementation, only files are lockable.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+typedef struct svn_lock_t\r
+{\r
+  const char *path;              /**< the path this lock applies to */\r
+  const char *token;             /**< unique URI representing lock */\r
+  const char *owner;             /**< the username which owns the lock */\r
+  const char *comment;           /**< (optional) description of lock  */\r
+  svn_boolean_t is_dav_comment;  /**< was comment made by generic DAV client? */\r
+  apr_time_t creation_date;      /**< when lock was made */\r
+  apr_time_t expiration_date;    /**< (optional) when lock will expire;\r
+                                      If value is 0, lock will never expire. */\r
+} svn_lock_t;\r
+\r
+/**\r
+ * Returns an @c svn_lock_t, allocated in @a pool with all fields initialized\r
+ * to NULL values.\r
+ *\r
+ * @note To allow for extending the @c svn_lock_t structure in the future\r
+ * releases, this function should always be used to allocate the structure.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+svn_lock_t *\r
+svn_lock_create(apr_pool_t *pool);\r
+\r
+/**\r
+ * Return a deep copy of @a lock, allocated in @a pool.\r
+ *\r
+ * @since New in 1.2.\r
+ */\r
+svn_lock_t *\r
+svn_lock_dup(const svn_lock_t *lock, apr_pool_t *pool);\r
+\r
+/**\r
+ * Return a formatted Universal Unique IDentifier (UUID) string.\r
+ *\r
+ * @since New in 1.4.\r
+ */\r
+const char *\r
+svn_uuid_generate(apr_pool_t *pool);\r
+\r
+/**\r
+ * Mergeinfo representing a merge of a range of revisions.\r
+ *\r
+ * @since New in 1.5\r
+ */\r
+typedef struct svn_merge_range_t\r
+{\r
+  /**\r
+   * If the 'start' field is less than the 'end' field then 'start' is\r
+   * exclusive and 'end' inclusive of the range described.  This is termed\r
+   * a forward merge range.  If 'start' is greater than 'end' then the\r
+   * opposite is true.  This is termed a reverse merge range.  If 'start'\r
+   * equals 'end' the meaning of the range is not defined.\r
+   */\r
+  svn_revnum_t start;\r
+  svn_revnum_t end;\r
+\r
+  /**\r
+   * Whether this merge range should be inherited by treewise\r
+   * descendants of the path to which the range applies. */\r
+  svn_boolean_t inheritable;\r
+} svn_merge_range_t;\r
+\r
+/**\r
+ * Return a copy of @a range, allocated in @a pool.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_merge_range_t *\r
+svn_merge_range_dup(svn_merge_range_t *range, apr_pool_t *pool);\r
+\r
+/**\r
+ * Returns true if the changeset committed in revision @a rev is one\r
+ * of the changesets in the range @a range.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_boolean_t\r
+svn_merge_range_contains_rev(svn_merge_range_t *range, svn_revnum_t rev);\r
+\r
+\r
+\f\r
+/** @defgroup node_location_seg_reporting Node location segment reporting.\r
+ *  @{ */\r
+\r
+/**\r
+ * A representation of a segment of a object's version history with an\r
+ * emphasis on the object's location in the repository as of various\r
+ * revisions.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+typedef struct svn_location_segment_t\r
+{\r
+  /** The beginning (oldest) and ending (youngest) revisions for this\r
+      segment. */\r
+  svn_revnum_t range_start;\r
+  svn_revnum_t range_end;\r
+\r
+  /** The absolute (sans leading slash) path for this segment.  May be\r
+      NULL to indicate gaps in an object's history.  */\r
+  const char *path;\r
+\r
+} svn_location_segment_t;\r
+\r
+\r
+/**\r
+ * A callback invoked by generators of @c svn_location_segment_t\r
+ * objects, used to report information about a versioned object's\r
+ * history in terms of its location in the repository filesystem over\r
+ * time.\r
+ */\r
+typedef svn_error_t *(*svn_location_segment_receiver_t)\r
+  (svn_location_segment_t *segment,\r
+   void *baton,\r
+   apr_pool_t *pool);\r
+\r
+\r
+/**\r
+ * Return a deep copy of @a segment, allocated in @a pool.\r
+ *\r
+ * @since New in 1.5.\r
+ */\r
+svn_location_segment_t *\r
+svn_location_segment_dup(svn_location_segment_t *segment,\r
+                         apr_pool_t *pool);\r
+/** @} */\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* SVN_TYPES_H */\r