summaryrefslogtreecommitdiff
path: root/plugins/MirOTR/libgpg-error-1.9
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/MirOTR/libgpg-error-1.9')
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/README47
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/code-from-errno.c69
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/code-from-errno.h120
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/code-to-errno.c42
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/code-to-errno.h1300
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-codes-sym.h530
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-codes.h530
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-codes.h.in298
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-sources-sym.h82
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-sources.h82
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/err-sources.h.in58
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/errnos-sym.h323
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/errnos.in172
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/extra-h.in41
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gettext.h76
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error-config84
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error-config.in84
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.c448
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.def28
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.def.in29
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.exebin0 -> 15872 bytes
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.h710
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.h.in274
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/gpg-error.m465
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/init.c399
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/init.h65
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes.awk99
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes.c78
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes.exebin0 -> 20570 bytes
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes.h91
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes1.awk96
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrcodes2.awk134
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkerrnos.awk104
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkheader.awk218
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkstrtable.awk189
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkw32errmap.c178
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/mkw32errmap.map.c1
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/strerror-sym.c56
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/strerror.c169
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/strsource-sym.c43
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/strsource.c37
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/versioninfo.rc52
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/versioninfo.rc.in52
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/w32-add.h40
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/w32-gettext.c1886
-rw-r--r--plugins/MirOTR/libgpg-error-1.9/w32ce-add.h7
46 files changed, 9486 insertions, 0 deletions
diff --git a/plugins/MirOTR/libgpg-error-1.9/README b/plugins/MirOTR/libgpg-error-1.9/README
new file mode 100644
index 0000000000..c415983598
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/README
@@ -0,0 +1,47 @@
+Notes on the source code
+========================
+
+The mechanism to generate the system error codes is delicate and
+fragile, but it's the best I could come up with that supports
+cross-compilation and dynamic self-configuration. Here is how it
+works:
+
+1. Generate list of supported system error codes.
+
+mkerrcodes1.awk generates a list of supported system error codes from
+errnos.in. Each entry in the list is protected with #ifdef/#endif,
+and contains a GPG_ERR_* marker. The list is stored in "_mkerrcodes.h".
+
+2. The HOST cpp is run on _mkerrcodes.h. This evaluates the known
+system error macros to something (may be a number, maybe a constant
+expression as on the GNU/Hurd), suppressing the unknown ones. The
+output is piped into step 3.
+
+3. The cpp output is filtered with grep for only those lines which
+contain a GPG_ERR_* marker. The output is piped into step 4.
+
+4. The filtered output is processed by mkerrcodes.awk, which produces
+a table of constant expressions plus GPG_ERR_* code string symbols in
+a format suitable for the C program mkerrcodes.c. At this point we
+are crossing our fingers that the constant expressions produced by the
+system do not contain GPG_ERR_* markers. The output is stored in
+mkerrcodes.h.
+
+5. The file mkerrcodes.h is included by mkerrcodes.c, which is
+compiled to a binary executable on the BUILD system. At this point we
+are crossing our fingers that the constant expressions produced by the
+system do not depend on the build platform anymore. The output is
+post-processed by mkerrcodes2.awk and stored in "code-from-errno.h",
+which is subsequently used in the library.
+
+-- Marcus
+
+ Copyright 2006 g10 Code GmbH
+
+ This file is free software; as a special exception the author gives
+ unlimited permission to copy and/or distribute it, with or without
+ modifications, as long as this notice is preserved.
+
+ This file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/plugins/MirOTR/libgpg-error-1.9/code-from-errno.c b/plugins/MirOTR/libgpg-error-1.9/code-from-errno.c
new file mode 100644
index 0000000000..96fcf20860
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/code-from-errno.c
@@ -0,0 +1,69 @@
+/* code-from-errno.c - Mapping errnos to error codes.
+ Copyright (C) 2003 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+
+#include <gpg-error.h>
+
+#include "code-from-errno.h"
+
+/* Retrieve the error code for the system error ERR. This returns
+ GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report
+ this). */
+gpg_err_code_t
+gpg_err_code_from_errno (int err)
+{
+ int idx;
+
+ if (!err)
+ return GPG_ERR_NO_ERROR;
+
+ idx = errno_to_idx (err);
+
+ if (idx < 0)
+ return GPG_ERR_UNKNOWN_ERRNO;
+
+ return GPG_ERR_SYSTEM_ERROR | err_code_from_index[idx];
+}
+
+
+/* Retrieve the error code directly from the ERRNO variable. This
+ returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped
+ (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */
+gpg_err_code_t
+gpg_err_code_from_syserror (void)
+{
+ int err = errno;
+ int idx;
+
+ if (!err)
+ return GPG_ERR_MISSING_ERRNO;
+
+ idx = errno_to_idx (err);
+
+ if (idx < 0)
+ return GPG_ERR_UNKNOWN_ERRNO;
+
+ return GPG_ERR_SYSTEM_ERROR | err_code_from_index[idx];
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/code-from-errno.h b/plugins/MirOTR/libgpg-error-1.9/code-from-errno.h
new file mode 100644
index 0000000000..071d8ba17f
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/code-from-errno.h
@@ -0,0 +1,120 @@
+/* Output of mkerrcodes2.awk. DO NOT EDIT. */
+
+/* errnos.h - List of system error values.
+ Copyright (C) 2004 g10 Code GmbH
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+static const int err_code_from_index[] = {
+ GPG_ERR_EPERM ,
+ GPG_ERR_ENOENT ,
+ GPG_ERR_ESRCH ,
+ GPG_ERR_EINTR ,
+ GPG_ERR_EIO ,
+ GPG_ERR_ENXIO ,
+ GPG_ERR_E2BIG ,
+ GPG_ERR_ENOEXEC ,
+ GPG_ERR_EBADF ,
+ GPG_ERR_ECHILD ,
+ GPG_ERR_EAGAIN ,
+ GPG_ERR_ENOMEM ,
+ GPG_ERR_EACCES ,
+ GPG_ERR_EFAULT ,
+ GPG_ERR_EBUSY ,
+ GPG_ERR_EEXIST ,
+ GPG_ERR_EXDEV ,
+ GPG_ERR_ENODEV ,
+ GPG_ERR_ENOTDIR ,
+ GPG_ERR_EISDIR ,
+ GPG_ERR_EINVAL ,
+ GPG_ERR_ENFILE ,
+ GPG_ERR_EMFILE ,
+ GPG_ERR_ENOTTY ,
+ GPG_ERR_EFBIG ,
+ GPG_ERR_ENOSPC ,
+ GPG_ERR_ESPIPE ,
+ GPG_ERR_EROFS ,
+ GPG_ERR_EMLINK ,
+ GPG_ERR_EPIPE ,
+ GPG_ERR_EDOM ,
+ GPG_ERR_ERANGE ,
+ GPG_ERR_EDEADLK ,
+ GPG_ERR_EDEADLOCK ,
+ GPG_ERR_ENAMETOOLONG ,
+ GPG_ERR_ENOLCK ,
+ GPG_ERR_ENOSYS ,
+ GPG_ERR_ENOTEMPTY ,
+ GPG_ERR_EILSEQ ,
+ GPG_ERR_EINTR ,
+ GPG_ERR_EBADF ,
+ GPG_ERR_EACCES ,
+ GPG_ERR_EFAULT ,
+ GPG_ERR_EINVAL ,
+ GPG_ERR_EMFILE ,
+ GPG_ERR_EWOULDBLOCK ,
+ GPG_ERR_EINPROGRESS ,
+ GPG_ERR_EALREADY ,
+ GPG_ERR_ENOTSOCK ,
+ GPG_ERR_EDESTADDRREQ ,
+ GPG_ERR_EMSGSIZE ,
+ GPG_ERR_EPROTOTYPE ,
+ GPG_ERR_ENOPROTOOPT ,
+ GPG_ERR_EPROTONOSUPPORT ,
+ GPG_ERR_ESOCKTNOSUPPORT ,
+ GPG_ERR_EOPNOTSUPP ,
+ GPG_ERR_EPFNOSUPPORT ,
+ GPG_ERR_EAFNOSUPPORT ,
+ GPG_ERR_EADDRINUSE ,
+ GPG_ERR_EADDRNOTAVAIL ,
+ GPG_ERR_ENETDOWN ,
+ GPG_ERR_ENETUNREACH ,
+ GPG_ERR_ENETRESET ,
+ GPG_ERR_ECONNABORTED ,
+ GPG_ERR_ECONNRESET ,
+ GPG_ERR_ENOBUFS ,
+ GPG_ERR_EISCONN ,
+ GPG_ERR_ENOTCONN ,
+ GPG_ERR_ESHUTDOWN ,
+ GPG_ERR_ETOOMANYREFS ,
+ GPG_ERR_ETIMEDOUT ,
+ GPG_ERR_ECONNREFUSED ,
+ GPG_ERR_ELOOP ,
+ GPG_ERR_ENAMETOOLONG ,
+ GPG_ERR_EHOSTDOWN ,
+ GPG_ERR_EHOSTUNREACH ,
+ GPG_ERR_ENOTEMPTY ,
+ GPG_ERR_EPROCLIM ,
+ GPG_ERR_EUSERS ,
+ GPG_ERR_EDQUOT ,
+ GPG_ERR_ESTALE ,
+ GPG_ERR_EREMOTE ,
+};
+
+#define errno_to_idx(code) (0 ? -1 \
+ : ((code >= 1) && (code <= 14)) ? (code - 1) \
+ : ((code >= 16) && (code <= 25)) ? (code - 2) \
+ : ((code >= 27) && (code <= 34)) ? (code - 3) \
+ : ((code >= 36) && (code <= 36)) ? (code - 4) \
+ : ((code >= 36) && (code <= 36)) ? (code - 3) \
+ : ((code >= 38) && (code <= 42)) ? (code - 4) \
+ : ((code >= 10004) && (code <= 10004)) ? (code - 9965) \
+ : ((code >= 10009) && (code <= 10009)) ? (code - 9969) \
+ : ((code >= 10013) && (code <= 10014)) ? (code - 9972) \
+ : ((code >= 10022) && (code <= 10022)) ? (code - 9979) \
+ : ((code >= 10024) && (code <= 10024)) ? (code - 9980) \
+ : ((code >= 10035) && (code <= 10071)) ? (code - 9990) \
+ : -1)
diff --git a/plugins/MirOTR/libgpg-error-1.9/code-to-errno.c b/plugins/MirOTR/libgpg-error-1.9/code-to-errno.c
new file mode 100644
index 0000000000..5873aad633
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/code-to-errno.c
@@ -0,0 +1,42 @@
+/* code-to-errno.c - Mapping error codes to errnos.
+ Copyright (C) 2003 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gpg-error.h>
+
+#include "code-to-errno.h"
+
+/* Retrieve the system error for the error code CODE. This returns 0
+ if CODE is not a system error code. */
+int
+gpg_err_code_to_errno (gpg_err_code_t code)
+{
+ if (!(code & GPG_ERR_SYSTEM_ERROR))
+ return 0;
+ code &= ~GPG_ERR_SYSTEM_ERROR;
+
+ if (code < sizeof (err_code_to_errno) / sizeof (err_code_to_errno[0]))
+ return err_code_to_errno[code];
+ else
+ return 0;
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/code-to-errno.h b/plugins/MirOTR/libgpg-error-1.9/code-to-errno.h
new file mode 100644
index 0000000000..114489f929
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/code-to-errno.h
@@ -0,0 +1,1300 @@
+/* Output of mkerrnos.awk. DO NOT EDIT. */
+
+/* errnos.h - List of system error values.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+
+#include <errno.h>
+#ifdef _WIN32
+#include <winsock2.h>
+#endif
+
+static const int err_code_to_errno [] = {
+#ifdef E2BIG
+ E2BIG,
+#else
+#ifdef WSAE2BIG
+ WSAE2BIG,
+#else
+ 0,
+#endif
+#endif
+#ifdef EACCES
+ EACCES,
+#else
+#ifdef WSAEACCES
+ WSAEACCES,
+#else
+ 0,
+#endif
+#endif
+#ifdef EADDRINUSE
+ EADDRINUSE,
+#else
+#ifdef WSAEADDRINUSE
+ WSAEADDRINUSE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EADDRNOTAVAIL
+ EADDRNOTAVAIL,
+#else
+#ifdef WSAEADDRNOTAVAIL
+ WSAEADDRNOTAVAIL,
+#else
+ 0,
+#endif
+#endif
+#ifdef EADV
+ EADV,
+#else
+#ifdef WSAEADV
+ WSAEADV,
+#else
+ 0,
+#endif
+#endif
+#ifdef EAFNOSUPPORT
+ EAFNOSUPPORT,
+#else
+#ifdef WSAEAFNOSUPPORT
+ WSAEAFNOSUPPORT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EAGAIN
+ EAGAIN,
+#else
+#ifdef WSAEAGAIN
+ WSAEAGAIN,
+#else
+ 0,
+#endif
+#endif
+#ifdef EALREADY
+ EALREADY,
+#else
+#ifdef WSAEALREADY
+ WSAEALREADY,
+#else
+ 0,
+#endif
+#endif
+#ifdef EAUTH
+ EAUTH,
+#else
+#ifdef WSAEAUTH
+ WSAEAUTH,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBACKGROUND
+ EBACKGROUND,
+#else
+#ifdef WSAEBACKGROUND
+ WSAEBACKGROUND,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADE
+ EBADE,
+#else
+#ifdef WSAEBADE
+ WSAEBADE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADF
+ EBADF,
+#else
+#ifdef WSAEBADF
+ WSAEBADF,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADFD
+ EBADFD,
+#else
+#ifdef WSAEBADFD
+ WSAEBADFD,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADMSG
+ EBADMSG,
+#else
+#ifdef WSAEBADMSG
+ WSAEBADMSG,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADR
+ EBADR,
+#else
+#ifdef WSAEBADR
+ WSAEBADR,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADRPC
+ EBADRPC,
+#else
+#ifdef WSAEBADRPC
+ WSAEBADRPC,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADRQC
+ EBADRQC,
+#else
+#ifdef WSAEBADRQC
+ WSAEBADRQC,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBADSLT
+ EBADSLT,
+#else
+#ifdef WSAEBADSLT
+ WSAEBADSLT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBFONT
+ EBFONT,
+#else
+#ifdef WSAEBFONT
+ WSAEBFONT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EBUSY
+ EBUSY,
+#else
+#ifdef WSAEBUSY
+ WSAEBUSY,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECANCELED
+ ECANCELED,
+#else
+#ifdef WSAECANCELED
+ WSAECANCELED,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECHILD
+ ECHILD,
+#else
+#ifdef WSAECHILD
+ WSAECHILD,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECHRNG
+ ECHRNG,
+#else
+#ifdef WSAECHRNG
+ WSAECHRNG,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECOMM
+ ECOMM,
+#else
+#ifdef WSAECOMM
+ WSAECOMM,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECONNABORTED
+ ECONNABORTED,
+#else
+#ifdef WSAECONNABORTED
+ WSAECONNABORTED,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECONNREFUSED
+ ECONNREFUSED,
+#else
+#ifdef WSAECONNREFUSED
+ WSAECONNREFUSED,
+#else
+ 0,
+#endif
+#endif
+#ifdef ECONNRESET
+ ECONNRESET,
+#else
+#ifdef WSAECONNRESET
+ WSAECONNRESET,
+#else
+ 0,
+#endif
+#endif
+#ifdef ED
+ ED,
+#else
+#ifdef WSAED
+ WSAED,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDEADLK
+ EDEADLK,
+#else
+#ifdef WSAEDEADLK
+ WSAEDEADLK,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDEADLOCK
+ EDEADLOCK,
+#else
+#ifdef WSAEDEADLOCK
+ WSAEDEADLOCK,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDESTADDRREQ
+ EDESTADDRREQ,
+#else
+#ifdef WSAEDESTADDRREQ
+ WSAEDESTADDRREQ,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDIED
+ EDIED,
+#else
+#ifdef WSAEDIED
+ WSAEDIED,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDOM
+ EDOM,
+#else
+#ifdef WSAEDOM
+ WSAEDOM,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDOTDOT
+ EDOTDOT,
+#else
+#ifdef WSAEDOTDOT
+ WSAEDOTDOT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EDQUOT
+ EDQUOT,
+#else
+#ifdef WSAEDQUOT
+ WSAEDQUOT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EEXIST
+ EEXIST,
+#else
+#ifdef WSAEEXIST
+ WSAEEXIST,
+#else
+ 0,
+#endif
+#endif
+#ifdef EFAULT
+ EFAULT,
+#else
+#ifdef WSAEFAULT
+ WSAEFAULT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EFBIG
+ EFBIG,
+#else
+#ifdef WSAEFBIG
+ WSAEFBIG,
+#else
+ 0,
+#endif
+#endif
+#ifdef EFTYPE
+ EFTYPE,
+#else
+#ifdef WSAEFTYPE
+ WSAEFTYPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EGRATUITOUS
+ EGRATUITOUS,
+#else
+#ifdef WSAEGRATUITOUS
+ WSAEGRATUITOUS,
+#else
+ 0,
+#endif
+#endif
+#ifdef EGREGIOUS
+ EGREGIOUS,
+#else
+#ifdef WSAEGREGIOUS
+ WSAEGREGIOUS,
+#else
+ 0,
+#endif
+#endif
+#ifdef EHOSTDOWN
+ EHOSTDOWN,
+#else
+#ifdef WSAEHOSTDOWN
+ WSAEHOSTDOWN,
+#else
+ 0,
+#endif
+#endif
+#ifdef EHOSTUNREACH
+ EHOSTUNREACH,
+#else
+#ifdef WSAEHOSTUNREACH
+ WSAEHOSTUNREACH,
+#else
+ 0,
+#endif
+#endif
+#ifdef EIDRM
+ EIDRM,
+#else
+#ifdef WSAEIDRM
+ WSAEIDRM,
+#else
+ 0,
+#endif
+#endif
+#ifdef EIEIO
+ EIEIO,
+#else
+#ifdef WSAEIEIO
+ WSAEIEIO,
+#else
+ 0,
+#endif
+#endif
+#ifdef EILSEQ
+ EILSEQ,
+#else
+#ifdef WSAEILSEQ
+ WSAEILSEQ,
+#else
+ 0,
+#endif
+#endif
+#ifdef EINPROGRESS
+ EINPROGRESS,
+#else
+#ifdef WSAEINPROGRESS
+ WSAEINPROGRESS,
+#else
+ 0,
+#endif
+#endif
+#ifdef EINTR
+ EINTR,
+#else
+#ifdef WSAEINTR
+ WSAEINTR,
+#else
+ 0,
+#endif
+#endif
+#ifdef EINVAL
+ EINVAL,
+#else
+#ifdef WSAEINVAL
+ WSAEINVAL,
+#else
+ 0,
+#endif
+#endif
+#ifdef EIO
+ EIO,
+#else
+#ifdef WSAEIO
+ WSAEIO,
+#else
+ 0,
+#endif
+#endif
+#ifdef EISCONN
+ EISCONN,
+#else
+#ifdef WSAEISCONN
+ WSAEISCONN,
+#else
+ 0,
+#endif
+#endif
+#ifdef EISDIR
+ EISDIR,
+#else
+#ifdef WSAEISDIR
+ WSAEISDIR,
+#else
+ 0,
+#endif
+#endif
+#ifdef EISNAM
+ EISNAM,
+#else
+#ifdef WSAEISNAM
+ WSAEISNAM,
+#else
+ 0,
+#endif
+#endif
+#ifdef EL2HLT
+ EL2HLT,
+#else
+#ifdef WSAEL2HLT
+ WSAEL2HLT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EL2NSYNC
+ EL2NSYNC,
+#else
+#ifdef WSAEL2NSYNC
+ WSAEL2NSYNC,
+#else
+ 0,
+#endif
+#endif
+#ifdef EL3HLT
+ EL3HLT,
+#else
+#ifdef WSAEL3HLT
+ WSAEL3HLT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EL3RST
+ EL3RST,
+#else
+#ifdef WSAEL3RST
+ WSAEL3RST,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELIBACC
+ ELIBACC,
+#else
+#ifdef WSAELIBACC
+ WSAELIBACC,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELIBBAD
+ ELIBBAD,
+#else
+#ifdef WSAELIBBAD
+ WSAELIBBAD,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELIBEXEC
+ ELIBEXEC,
+#else
+#ifdef WSAELIBEXEC
+ WSAELIBEXEC,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELIBMAX
+ ELIBMAX,
+#else
+#ifdef WSAELIBMAX
+ WSAELIBMAX,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELIBSCN
+ ELIBSCN,
+#else
+#ifdef WSAELIBSCN
+ WSAELIBSCN,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELNRNG
+ ELNRNG,
+#else
+#ifdef WSAELNRNG
+ WSAELNRNG,
+#else
+ 0,
+#endif
+#endif
+#ifdef ELOOP
+ ELOOP,
+#else
+#ifdef WSAELOOP
+ WSAELOOP,
+#else
+ 0,
+#endif
+#endif
+#ifdef EMEDIUMTYPE
+ EMEDIUMTYPE,
+#else
+#ifdef WSAEMEDIUMTYPE
+ WSAEMEDIUMTYPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EMFILE
+ EMFILE,
+#else
+#ifdef WSAEMFILE
+ WSAEMFILE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EMLINK
+ EMLINK,
+#else
+#ifdef WSAEMLINK
+ WSAEMLINK,
+#else
+ 0,
+#endif
+#endif
+#ifdef EMSGSIZE
+ EMSGSIZE,
+#else
+#ifdef WSAEMSGSIZE
+ WSAEMSGSIZE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EMULTIHOP
+ EMULTIHOP,
+#else
+#ifdef WSAEMULTIHOP
+ WSAEMULTIHOP,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENAMETOOLONG
+ ENAMETOOLONG,
+#else
+#ifdef WSAENAMETOOLONG
+ WSAENAMETOOLONG,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENAVAIL
+ ENAVAIL,
+#else
+#ifdef WSAENAVAIL
+ WSAENAVAIL,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENEEDAUTH
+ ENEEDAUTH,
+#else
+#ifdef WSAENEEDAUTH
+ WSAENEEDAUTH,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENETDOWN
+ ENETDOWN,
+#else
+#ifdef WSAENETDOWN
+ WSAENETDOWN,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENETRESET
+ ENETRESET,
+#else
+#ifdef WSAENETRESET
+ WSAENETRESET,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENETUNREACH
+ ENETUNREACH,
+#else
+#ifdef WSAENETUNREACH
+ WSAENETUNREACH,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENFILE
+ ENFILE,
+#else
+#ifdef WSAENFILE
+ WSAENFILE,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOANO
+ ENOANO,
+#else
+#ifdef WSAENOANO
+ WSAENOANO,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOBUFS
+ ENOBUFS,
+#else
+#ifdef WSAENOBUFS
+ WSAENOBUFS,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOCSI
+ ENOCSI,
+#else
+#ifdef WSAENOCSI
+ WSAENOCSI,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENODATA
+ ENODATA,
+#else
+#ifdef WSAENODATA
+ WSAENODATA,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENODEV
+ ENODEV,
+#else
+#ifdef WSAENODEV
+ WSAENODEV,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOENT
+ ENOENT,
+#else
+#ifdef WSAENOENT
+ WSAENOENT,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOEXEC
+ ENOEXEC,
+#else
+#ifdef WSAENOEXEC
+ WSAENOEXEC,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOLCK
+ ENOLCK,
+#else
+#ifdef WSAENOLCK
+ WSAENOLCK,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOLINK
+ ENOLINK,
+#else
+#ifdef WSAENOLINK
+ WSAENOLINK,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOMEDIUM
+ ENOMEDIUM,
+#else
+#ifdef WSAENOMEDIUM
+ WSAENOMEDIUM,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOMEM
+ ENOMEM,
+#else
+#ifdef WSAENOMEM
+ WSAENOMEM,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOMSG
+ ENOMSG,
+#else
+#ifdef WSAENOMSG
+ WSAENOMSG,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENONET
+ ENONET,
+#else
+#ifdef WSAENONET
+ WSAENONET,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOPKG
+ ENOPKG,
+#else
+#ifdef WSAENOPKG
+ WSAENOPKG,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOPROTOOPT
+ ENOPROTOOPT,
+#else
+#ifdef WSAENOPROTOOPT
+ WSAENOPROTOOPT,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOSPC
+ ENOSPC,
+#else
+#ifdef WSAENOSPC
+ WSAENOSPC,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOSR
+ ENOSR,
+#else
+#ifdef WSAENOSR
+ WSAENOSR,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOSTR
+ ENOSTR,
+#else
+#ifdef WSAENOSTR
+ WSAENOSTR,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOSYS
+ ENOSYS,
+#else
+#ifdef WSAENOSYS
+ WSAENOSYS,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTBLK
+ ENOTBLK,
+#else
+#ifdef WSAENOTBLK
+ WSAENOTBLK,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTCONN
+ ENOTCONN,
+#else
+#ifdef WSAENOTCONN
+ WSAENOTCONN,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTDIR
+ ENOTDIR,
+#else
+#ifdef WSAENOTDIR
+ WSAENOTDIR,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTEMPTY
+ ENOTEMPTY,
+#else
+#ifdef WSAENOTEMPTY
+ WSAENOTEMPTY,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTNAM
+ ENOTNAM,
+#else
+#ifdef WSAENOTNAM
+ WSAENOTNAM,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTSOCK
+ ENOTSOCK,
+#else
+#ifdef WSAENOTSOCK
+ WSAENOTSOCK,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTSUP
+ ENOTSUP,
+#else
+#ifdef WSAENOTSUP
+ WSAENOTSUP,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTTY
+ ENOTTY,
+#else
+#ifdef WSAENOTTY
+ WSAENOTTY,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENOTUNIQ
+ ENOTUNIQ,
+#else
+#ifdef WSAENOTUNIQ
+ WSAENOTUNIQ,
+#else
+ 0,
+#endif
+#endif
+#ifdef ENXIO
+ ENXIO,
+#else
+#ifdef WSAENXIO
+ WSAENXIO,
+#else
+ 0,
+#endif
+#endif
+#ifdef EOPNOTSUPP
+ EOPNOTSUPP,
+#else
+#ifdef WSAEOPNOTSUPP
+ WSAEOPNOTSUPP,
+#else
+ 0,
+#endif
+#endif
+#ifdef EOVERFLOW
+ EOVERFLOW,
+#else
+#ifdef WSAEOVERFLOW
+ WSAEOVERFLOW,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPERM
+ EPERM,
+#else
+#ifdef WSAEPERM
+ WSAEPERM,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPFNOSUPPORT
+ EPFNOSUPPORT,
+#else
+#ifdef WSAEPFNOSUPPORT
+ WSAEPFNOSUPPORT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPIPE
+ EPIPE,
+#else
+#ifdef WSAEPIPE
+ WSAEPIPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROCLIM
+ EPROCLIM,
+#else
+#ifdef WSAEPROCLIM
+ WSAEPROCLIM,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROCUNAVAIL
+ EPROCUNAVAIL,
+#else
+#ifdef WSAEPROCUNAVAIL
+ WSAEPROCUNAVAIL,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROGMISMATCH
+ EPROGMISMATCH,
+#else
+#ifdef WSAEPROGMISMATCH
+ WSAEPROGMISMATCH,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROGUNAVAIL
+ EPROGUNAVAIL,
+#else
+#ifdef WSAEPROGUNAVAIL
+ WSAEPROGUNAVAIL,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROTO
+ EPROTO,
+#else
+#ifdef WSAEPROTO
+ WSAEPROTO,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROTONOSUPPORT
+ EPROTONOSUPPORT,
+#else
+#ifdef WSAEPROTONOSUPPORT
+ WSAEPROTONOSUPPORT,
+#else
+ 0,
+#endif
+#endif
+#ifdef EPROTOTYPE
+ EPROTOTYPE,
+#else
+#ifdef WSAEPROTOTYPE
+ WSAEPROTOTYPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef ERANGE
+ ERANGE,
+#else
+#ifdef WSAERANGE
+ WSAERANGE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EREMCHG
+ EREMCHG,
+#else
+#ifdef WSAEREMCHG
+ WSAEREMCHG,
+#else
+ 0,
+#endif
+#endif
+#ifdef EREMOTE
+ EREMOTE,
+#else
+#ifdef WSAEREMOTE
+ WSAEREMOTE,
+#else
+ 0,
+#endif
+#endif
+#ifdef EREMOTEIO
+ EREMOTEIO,
+#else
+#ifdef WSAEREMOTEIO
+ WSAEREMOTEIO,
+#else
+ 0,
+#endif
+#endif
+#ifdef ERESTART
+ ERESTART,
+#else
+#ifdef WSAERESTART
+ WSAERESTART,
+#else
+ 0,
+#endif
+#endif
+#ifdef EROFS
+ EROFS,
+#else
+#ifdef WSAEROFS
+ WSAEROFS,
+#else
+ 0,
+#endif
+#endif
+#ifdef ERPCMISMATCH
+ ERPCMISMATCH,
+#else
+#ifdef WSAERPCMISMATCH
+ WSAERPCMISMATCH,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESHUTDOWN
+ ESHUTDOWN,
+#else
+#ifdef WSAESHUTDOWN
+ WSAESHUTDOWN,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESOCKTNOSUPPORT
+ ESOCKTNOSUPPORT,
+#else
+#ifdef WSAESOCKTNOSUPPORT
+ WSAESOCKTNOSUPPORT,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESPIPE
+ ESPIPE,
+#else
+#ifdef WSAESPIPE
+ WSAESPIPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESRCH
+ ESRCH,
+#else
+#ifdef WSAESRCH
+ WSAESRCH,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESRMNT
+ ESRMNT,
+#else
+#ifdef WSAESRMNT
+ WSAESRMNT,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESTALE
+ ESTALE,
+#else
+#ifdef WSAESTALE
+ WSAESTALE,
+#else
+ 0,
+#endif
+#endif
+#ifdef ESTRPIPE
+ ESTRPIPE,
+#else
+#ifdef WSAESTRPIPE
+ WSAESTRPIPE,
+#else
+ 0,
+#endif
+#endif
+#ifdef ETIME
+ ETIME,
+#else
+#ifdef WSAETIME
+ WSAETIME,
+#else
+ 0,
+#endif
+#endif
+#ifdef ETIMEDOUT
+ ETIMEDOUT,
+#else
+#ifdef WSAETIMEDOUT
+ WSAETIMEDOUT,
+#else
+ 0,
+#endif
+#endif
+#ifdef ETOOMANYREFS
+ ETOOMANYREFS,
+#else
+#ifdef WSAETOOMANYREFS
+ WSAETOOMANYREFS,
+#else
+ 0,
+#endif
+#endif
+#ifdef ETXTBSY
+ ETXTBSY,
+#else
+#ifdef WSAETXTBSY
+ WSAETXTBSY,
+#else
+ 0,
+#endif
+#endif
+#ifdef EUCLEAN
+ EUCLEAN,
+#else
+#ifdef WSAEUCLEAN
+ WSAEUCLEAN,
+#else
+ 0,
+#endif
+#endif
+#ifdef EUNATCH
+ EUNATCH,
+#else
+#ifdef WSAEUNATCH
+ WSAEUNATCH,
+#else
+ 0,
+#endif
+#endif
+#ifdef EUSERS
+ EUSERS,
+#else
+#ifdef WSAEUSERS
+ WSAEUSERS,
+#else
+ 0,
+#endif
+#endif
+#ifdef EWOULDBLOCK
+ EWOULDBLOCK,
+#else
+#ifdef WSAEWOULDBLOCK
+ WSAEWOULDBLOCK,
+#else
+ 0,
+#endif
+#endif
+#ifdef EXDEV
+ EXDEV,
+#else
+#ifdef WSAEXDEV
+ WSAEXDEV,
+#else
+ 0,
+#endif
+#endif
+#ifdef EXFULL
+ EXFULL,
+#else
+#ifdef WSAEXFULL
+ WSAEXFULL,
+#else
+ 0,
+#endif
+#endif
+};
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-codes-sym.h b/plugins/MirOTR/libgpg-error-1.9/err-codes-sym.h
new file mode 100644
index 0000000000..0ed5032eb0
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-codes-sym.h
@@ -0,0 +1,530 @@
+/* Output of mkstrtable.awk. DO NOT EDIT. */
+
+/* err-codes.h - List of error codes and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+/* The purpose of this complex string table is to produce
+ optimal code with a minimum of relocations. */
+
+static const char msgstr[] =
+ "GPG_ERR_NO_ERROR" "\0"
+ "GPG_ERR_GENERAL" "\0"
+ "GPG_ERR_UNKNOWN_PACKET" "\0"
+ "GPG_ERR_UNKNOWN_VERSION" "\0"
+ "GPG_ERR_PUBKEY_ALGO" "\0"
+ "GPG_ERR_DIGEST_ALGO" "\0"
+ "GPG_ERR_BAD_PUBKEY" "\0"
+ "GPG_ERR_BAD_SECKEY" "\0"
+ "GPG_ERR_BAD_SIGNATURE" "\0"
+ "GPG_ERR_NO_PUBKEY" "\0"
+ "GPG_ERR_CHECKSUM" "\0"
+ "GPG_ERR_BAD_PASSPHRASE" "\0"
+ "GPG_ERR_CIPHER_ALGO" "\0"
+ "GPG_ERR_KEYRING_OPEN" "\0"
+ "GPG_ERR_INV_PACKET" "\0"
+ "GPG_ERR_INV_ARMOR" "\0"
+ "GPG_ERR_NO_USER_ID" "\0"
+ "GPG_ERR_NO_SECKEY" "\0"
+ "GPG_ERR_WRONG_SECKEY" "\0"
+ "GPG_ERR_BAD_KEY" "\0"
+ "GPG_ERR_COMPR_ALGO" "\0"
+ "GPG_ERR_NO_PRIME" "\0"
+ "GPG_ERR_NO_ENCODING_METHOD" "\0"
+ "GPG_ERR_NO_ENCRYPTION_SCHEME" "\0"
+ "GPG_ERR_NO_SIGNATURE_SCHEME" "\0"
+ "GPG_ERR_INV_ATTR" "\0"
+ "GPG_ERR_NO_VALUE" "\0"
+ "GPG_ERR_NOT_FOUND" "\0"
+ "GPG_ERR_VALUE_NOT_FOUND" "\0"
+ "GPG_ERR_SYNTAX" "\0"
+ "GPG_ERR_BAD_MPI" "\0"
+ "GPG_ERR_INV_PASSPHRASE" "\0"
+ "GPG_ERR_SIG_CLASS" "\0"
+ "GPG_ERR_RESOURCE_LIMIT" "\0"
+ "GPG_ERR_INV_KEYRING" "\0"
+ "GPG_ERR_TRUSTDB" "\0"
+ "GPG_ERR_BAD_CERT" "\0"
+ "GPG_ERR_INV_USER_ID" "\0"
+ "GPG_ERR_UNEXPECTED" "\0"
+ "GPG_ERR_TIME_CONFLICT" "\0"
+ "GPG_ERR_KEYSERVER" "\0"
+ "GPG_ERR_WRONG_PUBKEY_ALGO" "\0"
+ "GPG_ERR_TRIBUTE_TO_D_A" "\0"
+ "GPG_ERR_WEAK_KEY" "\0"
+ "GPG_ERR_INV_KEYLEN" "\0"
+ "GPG_ERR_INV_ARG" "\0"
+ "GPG_ERR_BAD_URI" "\0"
+ "GPG_ERR_INV_URI" "\0"
+ "GPG_ERR_NETWORK" "\0"
+ "GPG_ERR_UNKNOWN_HOST" "\0"
+ "GPG_ERR_SELFTEST_FAILED" "\0"
+ "GPG_ERR_NOT_ENCRYPTED" "\0"
+ "GPG_ERR_NOT_PROCESSED" "\0"
+ "GPG_ERR_UNUSABLE_PUBKEY" "\0"
+ "GPG_ERR_UNUSABLE_SECKEY" "\0"
+ "GPG_ERR_INV_VALUE" "\0"
+ "GPG_ERR_BAD_CERT_CHAIN" "\0"
+ "GPG_ERR_MISSING_CERT" "\0"
+ "GPG_ERR_NO_DATA" "\0"
+ "GPG_ERR_BUG" "\0"
+ "GPG_ERR_NOT_SUPPORTED" "\0"
+ "GPG_ERR_INV_OP" "\0"
+ "GPG_ERR_TIMEOUT" "\0"
+ "GPG_ERR_INTERNAL" "\0"
+ "GPG_ERR_EOF_GCRYPT" "\0"
+ "GPG_ERR_INV_OBJ" "\0"
+ "GPG_ERR_TOO_SHORT" "\0"
+ "GPG_ERR_TOO_LARGE" "\0"
+ "GPG_ERR_NO_OBJ" "\0"
+ "GPG_ERR_NOT_IMPLEMENTED" "\0"
+ "GPG_ERR_CONFLICT" "\0"
+ "GPG_ERR_INV_CIPHER_MODE" "\0"
+ "GPG_ERR_INV_FLAG" "\0"
+ "GPG_ERR_INV_HANDLE" "\0"
+ "GPG_ERR_TRUNCATED" "\0"
+ "GPG_ERR_INCOMPLETE_LINE" "\0"
+ "GPG_ERR_INV_RESPONSE" "\0"
+ "GPG_ERR_NO_AGENT" "\0"
+ "GPG_ERR_AGENT" "\0"
+ "GPG_ERR_INV_DATA" "\0"
+ "GPG_ERR_ASSUAN_SERVER_FAULT" "\0"
+ "GPG_ERR_ASSUAN" "\0"
+ "GPG_ERR_INV_SESSION_KEY" "\0"
+ "GPG_ERR_INV_SEXP" "\0"
+ "GPG_ERR_UNSUPPORTED_ALGORITHM" "\0"
+ "GPG_ERR_NO_PIN_ENTRY" "\0"
+ "GPG_ERR_PIN_ENTRY" "\0"
+ "GPG_ERR_BAD_PIN" "\0"
+ "GPG_ERR_INV_NAME" "\0"
+ "GPG_ERR_BAD_DATA" "\0"
+ "GPG_ERR_INV_PARAMETER" "\0"
+ "GPG_ERR_WRONG_CARD" "\0"
+ "GPG_ERR_NO_DIRMNGR" "\0"
+ "GPG_ERR_DIRMNGR" "\0"
+ "GPG_ERR_CERT_REVOKED" "\0"
+ "GPG_ERR_NO_CRL_KNOWN" "\0"
+ "GPG_ERR_CRL_TOO_OLD" "\0"
+ "GPG_ERR_LINE_TOO_LONG" "\0"
+ "GPG_ERR_NOT_TRUSTED" "\0"
+ "GPG_ERR_CANCELED" "\0"
+ "GPG_ERR_BAD_CA_CERT" "\0"
+ "GPG_ERR_CERT_EXPIRED" "\0"
+ "GPG_ERR_CERT_TOO_YOUNG" "\0"
+ "GPG_ERR_UNSUPPORTED_CERT" "\0"
+ "GPG_ERR_UNKNOWN_SEXP" "\0"
+ "GPG_ERR_UNSUPPORTED_PROTECTION" "\0"
+ "GPG_ERR_CORRUPTED_PROTECTION" "\0"
+ "GPG_ERR_AMBIGUOUS_NAME" "\0"
+ "GPG_ERR_CARD" "\0"
+ "GPG_ERR_CARD_RESET" "\0"
+ "GPG_ERR_CARD_REMOVED" "\0"
+ "GPG_ERR_INV_CARD" "\0"
+ "GPG_ERR_CARD_NOT_PRESENT" "\0"
+ "GPG_ERR_NO_PKCS15_APP" "\0"
+ "GPG_ERR_NOT_CONFIRMED" "\0"
+ "GPG_ERR_CONFIGURATION" "\0"
+ "GPG_ERR_NO_POLICY_MATCH" "\0"
+ "GPG_ERR_INV_INDEX" "\0"
+ "GPG_ERR_INV_ID" "\0"
+ "GPG_ERR_NO_SCDAEMON" "\0"
+ "GPG_ERR_SCDAEMON" "\0"
+ "GPG_ERR_UNSUPPORTED_PROTOCOL" "\0"
+ "GPG_ERR_BAD_PIN_METHOD" "\0"
+ "GPG_ERR_CARD_NOT_INITIALIZED" "\0"
+ "GPG_ERR_UNSUPPORTED_OPERATION" "\0"
+ "GPG_ERR_WRONG_KEY_USAGE" "\0"
+ "GPG_ERR_NOTHING_FOUND" "\0"
+ "GPG_ERR_WRONG_BLOB_TYPE" "\0"
+ "GPG_ERR_MISSING_VALUE" "\0"
+ "GPG_ERR_HARDWARE" "\0"
+ "GPG_ERR_PIN_BLOCKED" "\0"
+ "GPG_ERR_USE_CONDITIONS" "\0"
+ "GPG_ERR_PIN_NOT_SYNCED" "\0"
+ "GPG_ERR_INV_CRL" "\0"
+ "GPG_ERR_BAD_BER" "\0"
+ "GPG_ERR_INV_BER" "\0"
+ "GPG_ERR_ELEMENT_NOT_FOUND" "\0"
+ "GPG_ERR_IDENTIFIER_NOT_FOUND" "\0"
+ "GPG_ERR_INV_TAG" "\0"
+ "GPG_ERR_INV_LENGTH" "\0"
+ "GPG_ERR_INV_KEYINFO" "\0"
+ "GPG_ERR_UNEXPECTED_TAG" "\0"
+ "GPG_ERR_NOT_DER_ENCODED" "\0"
+ "GPG_ERR_NO_CMS_OBJ" "\0"
+ "GPG_ERR_INV_CMS_OBJ" "\0"
+ "GPG_ERR_UNKNOWN_CMS_OBJ" "\0"
+ "GPG_ERR_UNSUPPORTED_CMS_OBJ" "\0"
+ "GPG_ERR_UNSUPPORTED_ENCODING" "\0"
+ "GPG_ERR_UNSUPPORTED_CMS_VERSION" "\0"
+ "GPG_ERR_UNKNOWN_ALGORITHM" "\0"
+ "GPG_ERR_INV_ENGINE" "\0"
+ "GPG_ERR_PUBKEY_NOT_TRUSTED" "\0"
+ "GPG_ERR_DECRYPT_FAILED" "\0"
+ "GPG_ERR_KEY_EXPIRED" "\0"
+ "GPG_ERR_SIG_EXPIRED" "\0"
+ "GPG_ERR_ENCODING_PROBLEM" "\0"
+ "GPG_ERR_INV_STATE" "\0"
+ "GPG_ERR_DUP_VALUE" "\0"
+ "GPG_ERR_MISSING_ACTION" "\0"
+ "GPG_ERR_MODULE_NOT_FOUND" "\0"
+ "GPG_ERR_INV_OID_STRING" "\0"
+ "GPG_ERR_INV_TIME" "\0"
+ "GPG_ERR_INV_CRL_OBJ" "\0"
+ "GPG_ERR_UNSUPPORTED_CRL_VERSION" "\0"
+ "GPG_ERR_INV_CERT_OBJ" "\0"
+ "GPG_ERR_UNKNOWN_NAME" "\0"
+ "GPG_ERR_LOCALE_PROBLEM" "\0"
+ "GPG_ERR_NOT_LOCKED" "\0"
+ "GPG_ERR_PROTOCOL_VIOLATION" "\0"
+ "GPG_ERR_INV_MAC" "\0"
+ "GPG_ERR_INV_REQUEST" "\0"
+ "GPG_ERR_UNKNOWN_EXTN" "\0"
+ "GPG_ERR_UNKNOWN_CRIT_EXTN" "\0"
+ "GPG_ERR_LOCKED" "\0"
+ "GPG_ERR_UNKNOWN_OPTION" "\0"
+ "GPG_ERR_UNKNOWN_COMMAND" "\0"
+ "GPG_ERR_NOT_OPERATIONAL" "\0"
+ "GPG_ERR_NO_PASSPHRASE" "\0"
+ "GPG_ERR_NO_PIN" "\0"
+ "GPG_ERR_NOT_ENABLED" "\0"
+ "GPG_ERR_NO_ENGINE" "\0"
+ "GPG_ERR_MISSING_KEY" "\0"
+ "GPG_ERR_TOO_MANY" "\0"
+ "GPG_ERR_LIMIT_REACHED" "\0"
+ "GPG_ERR_UNFINISHED" "\0"
+ "GPG_ERR_BUFFER_TOO_SHORT" "\0"
+ "GPG_ERR_SEXP_INV_LEN_SPEC" "\0"
+ "GPG_ERR_SEXP_STRING_TOO_LONG" "\0"
+ "GPG_ERR_SEXP_UNMATCHED_PAREN" "\0"
+ "GPG_ERR_SEXP_NOT_CANONICAL" "\0"
+ "GPG_ERR_SEXP_BAD_CHARACTER" "\0"
+ "GPG_ERR_SEXP_BAD_QUOTATION" "\0"
+ "GPG_ERR_SEXP_ZERO_PREFIX" "\0"
+ "GPG_ERR_SEXP_NESTED_DH" "\0"
+ "GPG_ERR_SEXP_UNMATCHED_DH" "\0"
+ "GPG_ERR_SEXP_UNEXPECTED_PUNC" "\0"
+ "GPG_ERR_SEXP_BAD_HEX_CHAR" "\0"
+ "GPG_ERR_SEXP_ODD_HEX_NUMBERS" "\0"
+ "GPG_ERR_SEXP_BAD_OCT_CHAR" "\0"
+ "GPG_ERR_ASS_GENERAL" "\0"
+ "GPG_ERR_ASS_ACCEPT_FAILED" "\0"
+ "GPG_ERR_ASS_CONNECT_FAILED" "\0"
+ "GPG_ERR_ASS_INV_RESPONSE" "\0"
+ "GPG_ERR_ASS_INV_VALUE" "\0"
+ "GPG_ERR_ASS_INCOMPLETE_LINE" "\0"
+ "GPG_ERR_ASS_LINE_TOO_LONG" "\0"
+ "GPG_ERR_ASS_NESTED_COMMANDS" "\0"
+ "GPG_ERR_ASS_NO_DATA_CB" "\0"
+ "GPG_ERR_ASS_NO_INQUIRE_CB" "\0"
+ "GPG_ERR_ASS_NOT_A_SERVER" "\0"
+ "GPG_ERR_ASS_NOT_A_CLIENT" "\0"
+ "GPG_ERR_ASS_SERVER_START" "\0"
+ "GPG_ERR_ASS_READ_ERROR" "\0"
+ "GPG_ERR_ASS_WRITE_ERROR" "\0"
+ "GPG_ERR_ASS_TOO_MUCH_DATA" "\0"
+ "GPG_ERR_ASS_UNEXPECTED_CMD" "\0"
+ "GPG_ERR_ASS_UNKNOWN_CMD" "\0"
+ "GPG_ERR_ASS_SYNTAX" "\0"
+ "GPG_ERR_ASS_CANCELED" "\0"
+ "GPG_ERR_ASS_NO_INPUT" "\0"
+ "GPG_ERR_ASS_NO_OUTPUT" "\0"
+ "GPG_ERR_ASS_PARAMETER" "\0"
+ "GPG_ERR_ASS_UNKNOWN_INQUIRE" "\0"
+ "GPG_ERR_USER_1" "\0"
+ "GPG_ERR_USER_2" "\0"
+ "GPG_ERR_USER_3" "\0"
+ "GPG_ERR_USER_4" "\0"
+ "GPG_ERR_USER_5" "\0"
+ "GPG_ERR_USER_6" "\0"
+ "GPG_ERR_USER_7" "\0"
+ "GPG_ERR_USER_8" "\0"
+ "GPG_ERR_USER_9" "\0"
+ "GPG_ERR_USER_10" "\0"
+ "GPG_ERR_USER_11" "\0"
+ "GPG_ERR_USER_12" "\0"
+ "GPG_ERR_USER_13" "\0"
+ "GPG_ERR_USER_14" "\0"
+ "GPG_ERR_USER_15" "\0"
+ "GPG_ERR_USER_16" "\0"
+ "GPG_ERR_MISSING_ERRNO" "\0"
+ "GPG_ERR_UNKNOWN_ERRNO" "\0"
+ "GPG_ERR_EOF" "\0"
+ "GPG_ERR_CODE_DIM";
+
+static const int msgidx[] =
+ {
+ 0,
+ 17,
+ 33,
+ 56,
+ 80,
+ 100,
+ 120,
+ 139,
+ 158,
+ 180,
+ 198,
+ 215,
+ 238,
+ 258,
+ 279,
+ 298,
+ 316,
+ 335,
+ 353,
+ 374,
+ 390,
+ 409,
+ 426,
+ 453,
+ 482,
+ 510,
+ 527,
+ 544,
+ 562,
+ 586,
+ 601,
+ 617,
+ 640,
+ 658,
+ 681,
+ 701,
+ 717,
+ 734,
+ 754,
+ 773,
+ 795,
+ 813,
+ 839,
+ 862,
+ 879,
+ 898,
+ 914,
+ 930,
+ 946,
+ 962,
+ 983,
+ 1007,
+ 1029,
+ 1051,
+ 1075,
+ 1099,
+ 1117,
+ 1140,
+ 1161,
+ 1177,
+ 1189,
+ 1211,
+ 1226,
+ 1242,
+ 1259,
+ 1278,
+ 1294,
+ 1312,
+ 1330,
+ 1345,
+ 1369,
+ 1386,
+ 1410,
+ 1427,
+ 1446,
+ 1464,
+ 1488,
+ 1509,
+ 1526,
+ 1540,
+ 1557,
+ 1585,
+ 1600,
+ 1624,
+ 1641,
+ 1671,
+ 1692,
+ 1710,
+ 1726,
+ 1743,
+ 1760,
+ 1782,
+ 1801,
+ 1820,
+ 1836,
+ 1857,
+ 1878,
+ 1898,
+ 1920,
+ 1940,
+ 1957,
+ 1977,
+ 1998,
+ 2021,
+ 2046,
+ 2067,
+ 2098,
+ 2127,
+ 2150,
+ 2163,
+ 2182,
+ 2203,
+ 2220,
+ 2245,
+ 2267,
+ 2289,
+ 2311,
+ 2335,
+ 2353,
+ 2368,
+ 2388,
+ 2405,
+ 2434,
+ 2457,
+ 2486,
+ 2516,
+ 2540,
+ 2562,
+ 2586,
+ 2608,
+ 2625,
+ 2645,
+ 2668,
+ 2691,
+ 2707,
+ 2723,
+ 2739,
+ 2765,
+ 2794,
+ 2810,
+ 2829,
+ 2849,
+ 2872,
+ 2896,
+ 2915,
+ 2935,
+ 2959,
+ 2987,
+ 3016,
+ 3048,
+ 3074,
+ 3093,
+ 3120,
+ 3143,
+ 3163,
+ 3183,
+ 3208,
+ 3226,
+ 3244,
+ 3267,
+ 3292,
+ 3315,
+ 3332,
+ 3352,
+ 3384,
+ 3405,
+ 3426,
+ 3449,
+ 3468,
+ 3495,
+ 3511,
+ 3531,
+ 3552,
+ 3578,
+ 3593,
+ 3616,
+ 3640,
+ 3664,
+ 3686,
+ 3701,
+ 3721,
+ 3739,
+ 3759,
+ 3776,
+ 3798,
+ 3817,
+ 3842,
+ 3868,
+ 3897,
+ 3926,
+ 3953,
+ 3980,
+ 4007,
+ 4032,
+ 4055,
+ 4081,
+ 4110,
+ 4136,
+ 4165,
+ 4191,
+ 4211,
+ 4237,
+ 4264,
+ 4289,
+ 4311,
+ 4339,
+ 4365,
+ 4393,
+ 4416,
+ 4442,
+ 4467,
+ 4492,
+ 4517,
+ 4540,
+ 4564,
+ 4590,
+ 4617,
+ 4641,
+ 4660,
+ 4681,
+ 4702,
+ 4724,
+ 4746,
+ 4774,
+ 4789,
+ 4804,
+ 4819,
+ 4834,
+ 4849,
+ 4864,
+ 4879,
+ 4894,
+ 4909,
+ 4925,
+ 4941,
+ 4957,
+ 4973,
+ 4989,
+ 5005,
+ 5021,
+ 5043,
+ 5065,
+ 5077
+ };
+
+static inline int
+msgidxof (int code)
+{
+ return (0 ? 0
+ : ((code >= 0) && (code <= 183)) ? (code - 0)
+ : ((code >= 199) && (code <= 213)) ? (code - 15)
+ : ((code >= 257) && (code <= 271)) ? (code - 58)
+ : ((code >= 273) && (code <= 281)) ? (code - 59)
+ : ((code >= 1024) && (code <= 1039)) ? (code - 801)
+ : ((code >= 16381) && (code <= 16383)) ? (code - 16142)
+ : 16384 - 16142);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-codes.h b/plugins/MirOTR/libgpg-error-1.9/err-codes.h
new file mode 100644
index 0000000000..17ecc9c670
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-codes.h
@@ -0,0 +1,530 @@
+/* Output of mkstrtable.awk. DO NOT EDIT. */
+
+/* err-codes.h - List of error codes and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+/* The purpose of this complex string table is to produce
+ optimal code with a minimum of relocations. */
+
+static const char msgstr[] =
+ gettext_noop ("Success") "\0"
+ gettext_noop ("General error") "\0"
+ gettext_noop ("Unknown packet") "\0"
+ gettext_noop ("Unknown version in packet") "\0"
+ gettext_noop ("Invalid public key algorithm") "\0"
+ gettext_noop ("Invalid digest algorithm") "\0"
+ gettext_noop ("Bad public key") "\0"
+ gettext_noop ("Bad secret key") "\0"
+ gettext_noop ("Bad signature") "\0"
+ gettext_noop ("No public key") "\0"
+ gettext_noop ("Checksum error") "\0"
+ gettext_noop ("Bad passphrase") "\0"
+ gettext_noop ("Invalid cipher algorithm") "\0"
+ gettext_noop ("Keyring open") "\0"
+ gettext_noop ("Invalid packet") "\0"
+ gettext_noop ("Invalid armor") "\0"
+ gettext_noop ("No user ID") "\0"
+ gettext_noop ("No secret key") "\0"
+ gettext_noop ("Wrong secret key used") "\0"
+ gettext_noop ("Bad session key") "\0"
+ gettext_noop ("Unknown compression algorithm") "\0"
+ gettext_noop ("Number is not prime") "\0"
+ gettext_noop ("Invalid encoding method") "\0"
+ gettext_noop ("Invalid encryption scheme") "\0"
+ gettext_noop ("Invalid signature scheme") "\0"
+ gettext_noop ("Invalid attribute") "\0"
+ gettext_noop ("No value") "\0"
+ gettext_noop ("Not found") "\0"
+ gettext_noop ("Value not found") "\0"
+ gettext_noop ("Syntax error") "\0"
+ gettext_noop ("Bad MPI value") "\0"
+ gettext_noop ("Invalid passphrase") "\0"
+ gettext_noop ("Invalid signature class") "\0"
+ gettext_noop ("Resources exhausted") "\0"
+ gettext_noop ("Invalid keyring") "\0"
+ gettext_noop ("Trust DB error") "\0"
+ gettext_noop ("Bad certificate") "\0"
+ gettext_noop ("Invalid user ID") "\0"
+ gettext_noop ("Unexpected error") "\0"
+ gettext_noop ("Time conflict") "\0"
+ gettext_noop ("Keyserver error") "\0"
+ gettext_noop ("Wrong public key algorithm") "\0"
+ gettext_noop ("Tribute to D. A.") "\0"
+ gettext_noop ("Weak encryption key") "\0"
+ gettext_noop ("Invalid key length") "\0"
+ gettext_noop ("Invalid argument") "\0"
+ gettext_noop ("Syntax error in URI") "\0"
+ gettext_noop ("Invalid URI") "\0"
+ gettext_noop ("Network error") "\0"
+ gettext_noop ("Unknown host") "\0"
+ gettext_noop ("Selftest failed") "\0"
+ gettext_noop ("Data not encrypted") "\0"
+ gettext_noop ("Data not processed") "\0"
+ gettext_noop ("Unusable public key") "\0"
+ gettext_noop ("Unusable secret key") "\0"
+ gettext_noop ("Invalid value") "\0"
+ gettext_noop ("Bad certificate chain") "\0"
+ gettext_noop ("Missing certificate") "\0"
+ gettext_noop ("No data") "\0"
+ gettext_noop ("Bug") "\0"
+ gettext_noop ("Not supported") "\0"
+ gettext_noop ("Invalid operation code") "\0"
+ gettext_noop ("Timeout") "\0"
+ gettext_noop ("Internal error") "\0"
+ gettext_noop ("EOF (gcrypt)") "\0"
+ gettext_noop ("Invalid object") "\0"
+ gettext_noop ("Provided object is too short") "\0"
+ gettext_noop ("Provided object is too large") "\0"
+ gettext_noop ("Missing item in object") "\0"
+ gettext_noop ("Not implemented") "\0"
+ gettext_noop ("Conflicting use") "\0"
+ gettext_noop ("Invalid cipher mode") "\0"
+ gettext_noop ("Invalid flag") "\0"
+ gettext_noop ("Invalid handle") "\0"
+ gettext_noop ("Result truncated") "\0"
+ gettext_noop ("Incomplete line") "\0"
+ gettext_noop ("Invalid response") "\0"
+ gettext_noop ("No agent running") "\0"
+ gettext_noop ("agent error") "\0"
+ gettext_noop ("Invalid data") "\0"
+ gettext_noop ("Unspecific Assuan server fault") "\0"
+ gettext_noop ("General Assuan error") "\0"
+ gettext_noop ("Invalid session key") "\0"
+ gettext_noop ("Invalid S-expression") "\0"
+ gettext_noop ("Unsupported algorithm") "\0"
+ gettext_noop ("No pinentry") "\0"
+ gettext_noop ("pinentry error") "\0"
+ gettext_noop ("Bad PIN") "\0"
+ gettext_noop ("Invalid name") "\0"
+ gettext_noop ("Bad data") "\0"
+ gettext_noop ("Invalid parameter") "\0"
+ gettext_noop ("Wrong card") "\0"
+ gettext_noop ("No dirmngr") "\0"
+ gettext_noop ("dirmngr error") "\0"
+ gettext_noop ("Certificate revoked") "\0"
+ gettext_noop ("No CRL known") "\0"
+ gettext_noop ("CRL too old") "\0"
+ gettext_noop ("Line too long") "\0"
+ gettext_noop ("Not trusted") "\0"
+ gettext_noop ("Operation cancelled") "\0"
+ gettext_noop ("Bad CA certificate") "\0"
+ gettext_noop ("Certificate expired") "\0"
+ gettext_noop ("Certificate too young") "\0"
+ gettext_noop ("Unsupported certificate") "\0"
+ gettext_noop ("Unknown S-expression") "\0"
+ gettext_noop ("Unsupported protection") "\0"
+ gettext_noop ("Corrupted protection") "\0"
+ gettext_noop ("Ambiguous name") "\0"
+ gettext_noop ("Card error") "\0"
+ gettext_noop ("Card reset required") "\0"
+ gettext_noop ("Card removed") "\0"
+ gettext_noop ("Invalid card") "\0"
+ gettext_noop ("Card not present") "\0"
+ gettext_noop ("No PKCS15 application") "\0"
+ gettext_noop ("Not confirmed") "\0"
+ gettext_noop ("Configuration error") "\0"
+ gettext_noop ("No policy match") "\0"
+ gettext_noop ("Invalid index") "\0"
+ gettext_noop ("Invalid ID") "\0"
+ gettext_noop ("No SmartCard daemon") "\0"
+ gettext_noop ("SmartCard daemon error") "\0"
+ gettext_noop ("Unsupported protocol") "\0"
+ gettext_noop ("Bad PIN method") "\0"
+ gettext_noop ("Card not initialized") "\0"
+ gettext_noop ("Unsupported operation") "\0"
+ gettext_noop ("Wrong key usage") "\0"
+ gettext_noop ("Nothing found") "\0"
+ gettext_noop ("Wrong blob type") "\0"
+ gettext_noop ("Missing value") "\0"
+ gettext_noop ("Hardware problem") "\0"
+ gettext_noop ("PIN blocked") "\0"
+ gettext_noop ("Conditions of use not satisfied") "\0"
+ gettext_noop ("PINs are not synced") "\0"
+ gettext_noop ("Invalid CRL") "\0"
+ gettext_noop ("BER error") "\0"
+ gettext_noop ("Invalid BER") "\0"
+ gettext_noop ("Element not found") "\0"
+ gettext_noop ("Identifier not found") "\0"
+ gettext_noop ("Invalid tag") "\0"
+ gettext_noop ("Invalid length") "\0"
+ gettext_noop ("Invalid key info") "\0"
+ gettext_noop ("Unexpected tag") "\0"
+ gettext_noop ("Not DER encoded") "\0"
+ gettext_noop ("No CMS object") "\0"
+ gettext_noop ("Invalid CMS object") "\0"
+ gettext_noop ("Unknown CMS object") "\0"
+ gettext_noop ("Unsupported CMS object") "\0"
+ gettext_noop ("Unsupported encoding") "\0"
+ gettext_noop ("Unsupported CMS version") "\0"
+ gettext_noop ("Unknown algorithm") "\0"
+ gettext_noop ("Invalid crypto engine") "\0"
+ gettext_noop ("Public key not trusted") "\0"
+ gettext_noop ("Decryption failed") "\0"
+ gettext_noop ("Key expired") "\0"
+ gettext_noop ("Signature expired") "\0"
+ gettext_noop ("Encoding problem") "\0"
+ gettext_noop ("Invalid state") "\0"
+ gettext_noop ("Duplicated value") "\0"
+ gettext_noop ("Missing action") "\0"
+ gettext_noop ("ASN.1 module not found") "\0"
+ gettext_noop ("Invalid OID string") "\0"
+ gettext_noop ("Invalid time") "\0"
+ gettext_noop ("Invalid CRL object") "\0"
+ gettext_noop ("Unsupported CRL version") "\0"
+ gettext_noop ("Invalid certificate object") "\0"
+ gettext_noop ("Unknown name") "\0"
+ gettext_noop ("A locale function failed") "\0"
+ gettext_noop ("Not locked") "\0"
+ gettext_noop ("Protocol violation") "\0"
+ gettext_noop ("Invalid MAC") "\0"
+ gettext_noop ("Invalid request") "\0"
+ gettext_noop ("Unknown extension") "\0"
+ gettext_noop ("Unknown critical extension") "\0"
+ gettext_noop ("Locked") "\0"
+ gettext_noop ("Unknown option") "\0"
+ gettext_noop ("Unknown command") "\0"
+ gettext_noop ("Not operational") "\0"
+ gettext_noop ("No passphrase given") "\0"
+ gettext_noop ("No PIN given") "\0"
+ gettext_noop ("Not enabled") "\0"
+ gettext_noop ("No crypto engine") "\0"
+ gettext_noop ("Missing key") "\0"
+ gettext_noop ("Too many objects") "\0"
+ gettext_noop ("Limit reached") "\0"
+ gettext_noop ("Operation not yet finished") "\0"
+ gettext_noop ("Buffer too short") "\0"
+ gettext_noop ("Invalid length specifier in S-expression") "\0"
+ gettext_noop ("String too long in S-expression") "\0"
+ gettext_noop ("Unmatched parentheses in S-expression") "\0"
+ gettext_noop ("S-expression not canonical") "\0"
+ gettext_noop ("Bad character in S-expression") "\0"
+ gettext_noop ("Bad quotation in S-expression") "\0"
+ gettext_noop ("Zero prefix in S-expression") "\0"
+ gettext_noop ("Nested display hints in S-expression") "\0"
+ gettext_noop ("Unmatched display hints") "\0"
+ gettext_noop ("Unexpected reserved punctuation in S-expression") "\0"
+ gettext_noop ("Bad hexadecimal character in S-expression") "\0"
+ gettext_noop ("Odd hexadecimal numbers in S-expression") "\0"
+ gettext_noop ("Bad octal character in S-expression") "\0"
+ gettext_noop ("General IPC error") "\0"
+ gettext_noop ("IPC accept call failed") "\0"
+ gettext_noop ("IPC connect call failed") "\0"
+ gettext_noop ("Invalid IPC response") "\0"
+ gettext_noop ("Invalid value passed to IPC") "\0"
+ gettext_noop ("Incomplete line passed to IPC") "\0"
+ gettext_noop ("Line passed to IPC too long") "\0"
+ gettext_noop ("Nested IPC commands") "\0"
+ gettext_noop ("No data callback in IPC") "\0"
+ gettext_noop ("No inquire callback in IPC") "\0"
+ gettext_noop ("Not an IPC server") "\0"
+ gettext_noop ("Not an IPC client") "\0"
+ gettext_noop ("Problem starting IPC server") "\0"
+ gettext_noop ("IPC read error") "\0"
+ gettext_noop ("IPC write error") "\0"
+ gettext_noop ("Too much data for IPC layer") "\0"
+ gettext_noop ("Unexpected IPC command") "\0"
+ gettext_noop ("Unknown IPC command") "\0"
+ gettext_noop ("IPC syntax error") "\0"
+ gettext_noop ("IPC call has been cancelled") "\0"
+ gettext_noop ("No input source for IPC") "\0"
+ gettext_noop ("No output source for IPC") "\0"
+ gettext_noop ("IPC parameter error") "\0"
+ gettext_noop ("Unknown IPC inquire") "\0"
+ gettext_noop ("User defined error code 1") "\0"
+ gettext_noop ("User defined error code 2") "\0"
+ gettext_noop ("User defined error code 3") "\0"
+ gettext_noop ("User defined error code 4") "\0"
+ gettext_noop ("User defined error code 5") "\0"
+ gettext_noop ("User defined error code 6") "\0"
+ gettext_noop ("User defined error code 7") "\0"
+ gettext_noop ("User defined error code 8") "\0"
+ gettext_noop ("User defined error code 9") "\0"
+ gettext_noop ("User defined error code 10") "\0"
+ gettext_noop ("User defined error code 11") "\0"
+ gettext_noop ("User defined error code 12") "\0"
+ gettext_noop ("User defined error code 13") "\0"
+ gettext_noop ("User defined error code 14") "\0"
+ gettext_noop ("User defined error code 15") "\0"
+ gettext_noop ("User defined error code 16") "\0"
+ gettext_noop ("System error w/o errno") "\0"
+ gettext_noop ("Unknown system error") "\0"
+ gettext_noop ("End of file") "\0"
+ gettext_noop ("Unknown error code");
+
+static const int msgidx[] =
+ {
+ 0,
+ 8,
+ 22,
+ 37,
+ 63,
+ 92,
+ 117,
+ 132,
+ 147,
+ 161,
+ 175,
+ 190,
+ 205,
+ 230,
+ 243,
+ 258,
+ 272,
+ 283,
+ 297,
+ 319,
+ 335,
+ 365,
+ 385,
+ 409,
+ 435,
+ 460,
+ 478,
+ 487,
+ 497,
+ 513,
+ 526,
+ 540,
+ 559,
+ 583,
+ 603,
+ 619,
+ 634,
+ 650,
+ 666,
+ 683,
+ 697,
+ 713,
+ 740,
+ 757,
+ 777,
+ 796,
+ 813,
+ 833,
+ 845,
+ 859,
+ 872,
+ 888,
+ 907,
+ 926,
+ 946,
+ 966,
+ 980,
+ 1002,
+ 1022,
+ 1030,
+ 1034,
+ 1048,
+ 1071,
+ 1079,
+ 1094,
+ 1107,
+ 1122,
+ 1151,
+ 1180,
+ 1203,
+ 1219,
+ 1235,
+ 1255,
+ 1268,
+ 1283,
+ 1300,
+ 1316,
+ 1333,
+ 1350,
+ 1362,
+ 1375,
+ 1406,
+ 1427,
+ 1447,
+ 1468,
+ 1490,
+ 1502,
+ 1517,
+ 1525,
+ 1538,
+ 1547,
+ 1565,
+ 1576,
+ 1587,
+ 1601,
+ 1621,
+ 1634,
+ 1646,
+ 1660,
+ 1672,
+ 1692,
+ 1711,
+ 1731,
+ 1753,
+ 1777,
+ 1798,
+ 1821,
+ 1842,
+ 1857,
+ 1868,
+ 1888,
+ 1901,
+ 1914,
+ 1931,
+ 1953,
+ 1967,
+ 1987,
+ 2003,
+ 2017,
+ 2028,
+ 2048,
+ 2071,
+ 2092,
+ 2107,
+ 2128,
+ 2150,
+ 2166,
+ 2180,
+ 2196,
+ 2210,
+ 2227,
+ 2239,
+ 2271,
+ 2291,
+ 2303,
+ 2313,
+ 2325,
+ 2343,
+ 2364,
+ 2376,
+ 2391,
+ 2408,
+ 2423,
+ 2439,
+ 2453,
+ 2472,
+ 2491,
+ 2514,
+ 2535,
+ 2559,
+ 2577,
+ 2599,
+ 2622,
+ 2640,
+ 2652,
+ 2670,
+ 2687,
+ 2701,
+ 2718,
+ 2733,
+ 2756,
+ 2775,
+ 2788,
+ 2807,
+ 2831,
+ 2858,
+ 2871,
+ 2896,
+ 2907,
+ 2926,
+ 2938,
+ 2954,
+ 2972,
+ 2999,
+ 3006,
+ 3021,
+ 3037,
+ 3053,
+ 3073,
+ 3086,
+ 3098,
+ 3115,
+ 3127,
+ 3144,
+ 3158,
+ 3185,
+ 3202,
+ 3243,
+ 3275,
+ 3313,
+ 3340,
+ 3370,
+ 3400,
+ 3428,
+ 3465,
+ 3489,
+ 3537,
+ 3579,
+ 3619,
+ 3655,
+ 3673,
+ 3696,
+ 3720,
+ 3741,
+ 3769,
+ 3799,
+ 3827,
+ 3847,
+ 3871,
+ 3898,
+ 3916,
+ 3934,
+ 3962,
+ 3977,
+ 3993,
+ 4021,
+ 4044,
+ 4064,
+ 4081,
+ 4109,
+ 4133,
+ 4158,
+ 4178,
+ 4198,
+ 4224,
+ 4250,
+ 4276,
+ 4302,
+ 4328,
+ 4354,
+ 4380,
+ 4406,
+ 4432,
+ 4459,
+ 4486,
+ 4513,
+ 4540,
+ 4567,
+ 4594,
+ 4621,
+ 4644,
+ 4665,
+ 4677
+ };
+
+static inline int
+msgidxof (int code)
+{
+ return (0 ? 0
+ : ((code >= 0) && (code <= 183)) ? (code - 0)
+ : ((code >= 199) && (code <= 213)) ? (code - 15)
+ : ((code >= 257) && (code <= 271)) ? (code - 58)
+ : ((code >= 273) && (code <= 281)) ? (code - 59)
+ : ((code >= 1024) && (code <= 1039)) ? (code - 801)
+ : ((code >= 16381) && (code <= 16383)) ? (code - 16142)
+ : 16384 - 16142);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-codes.h.in b/plugins/MirOTR/libgpg-error-1.9/err-codes.h.in
new file mode 100644
index 0000000000..8b40861644
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-codes.h.in
@@ -0,0 +1,298 @@
+# err-codes.h.in - List of error codes and their description input file.
+/* err-codes.h - List of error codes and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+# Everything up to the first line that starts with a number in the
+# first column is copied into the output verbatim. Then, empty lines
+# are ignored. Other lines must have an error code number, followed
+# by one or more <tab> characters, followed by the error code symbol,
+# followed by one or more <tab> characters, followed by the error
+# message. Trailing whitespace is removed. The error codes should be
+# sorted. The last line should not have a number, but only a <tab>,
+# followed by a dummy field, followed by a <tab>, followed by a
+# description for error codes that are not in the list.
+
+0 GPG_ERR_NO_ERROR Success
+1 GPG_ERR_GENERAL General error
+2 GPG_ERR_UNKNOWN_PACKET Unknown packet
+3 GPG_ERR_UNKNOWN_VERSION Unknown version in packet
+4 GPG_ERR_PUBKEY_ALGO Invalid public key algorithm
+5 GPG_ERR_DIGEST_ALGO Invalid digest algorithm
+6 GPG_ERR_BAD_PUBKEY Bad public key
+7 GPG_ERR_BAD_SECKEY Bad secret key
+8 GPG_ERR_BAD_SIGNATURE Bad signature
+9 GPG_ERR_NO_PUBKEY No public key
+10 GPG_ERR_CHECKSUM Checksum error
+11 GPG_ERR_BAD_PASSPHRASE Bad passphrase
+12 GPG_ERR_CIPHER_ALGO Invalid cipher algorithm
+13 GPG_ERR_KEYRING_OPEN Keyring open
+14 GPG_ERR_INV_PACKET Invalid packet
+15 GPG_ERR_INV_ARMOR Invalid armor
+16 GPG_ERR_NO_USER_ID No user ID
+17 GPG_ERR_NO_SECKEY No secret key
+18 GPG_ERR_WRONG_SECKEY Wrong secret key used
+19 GPG_ERR_BAD_KEY Bad session key
+20 GPG_ERR_COMPR_ALGO Unknown compression algorithm
+21 GPG_ERR_NO_PRIME Number is not prime
+22 GPG_ERR_NO_ENCODING_METHOD Invalid encoding method
+23 GPG_ERR_NO_ENCRYPTION_SCHEME Invalid encryption scheme
+24 GPG_ERR_NO_SIGNATURE_SCHEME Invalid signature scheme
+25 GPG_ERR_INV_ATTR Invalid attribute
+26 GPG_ERR_NO_VALUE No value
+27 GPG_ERR_NOT_FOUND Not found
+28 GPG_ERR_VALUE_NOT_FOUND Value not found
+29 GPG_ERR_SYNTAX Syntax error
+30 GPG_ERR_BAD_MPI Bad MPI value
+31 GPG_ERR_INV_PASSPHRASE Invalid passphrase
+32 GPG_ERR_SIG_CLASS Invalid signature class
+33 GPG_ERR_RESOURCE_LIMIT Resources exhausted
+34 GPG_ERR_INV_KEYRING Invalid keyring
+35 GPG_ERR_TRUSTDB Trust DB error
+36 GPG_ERR_BAD_CERT Bad certificate
+37 GPG_ERR_INV_USER_ID Invalid user ID
+38 GPG_ERR_UNEXPECTED Unexpected error
+39 GPG_ERR_TIME_CONFLICT Time conflict
+40 GPG_ERR_KEYSERVER Keyserver error
+41 GPG_ERR_WRONG_PUBKEY_ALGO Wrong public key algorithm
+42 GPG_ERR_TRIBUTE_TO_D_A Tribute to D. A.
+43 GPG_ERR_WEAK_KEY Weak encryption key
+44 GPG_ERR_INV_KEYLEN Invalid key length
+45 GPG_ERR_INV_ARG Invalid argument
+46 GPG_ERR_BAD_URI Syntax error in URI
+47 GPG_ERR_INV_URI Invalid URI
+48 GPG_ERR_NETWORK Network error
+49 GPG_ERR_UNKNOWN_HOST Unknown host
+50 GPG_ERR_SELFTEST_FAILED Selftest failed
+51 GPG_ERR_NOT_ENCRYPTED Data not encrypted
+52 GPG_ERR_NOT_PROCESSED Data not processed
+53 GPG_ERR_UNUSABLE_PUBKEY Unusable public key
+54 GPG_ERR_UNUSABLE_SECKEY Unusable secret key
+55 GPG_ERR_INV_VALUE Invalid value
+56 GPG_ERR_BAD_CERT_CHAIN Bad certificate chain
+57 GPG_ERR_MISSING_CERT Missing certificate
+58 GPG_ERR_NO_DATA No data
+59 GPG_ERR_BUG Bug
+60 GPG_ERR_NOT_SUPPORTED Not supported
+61 GPG_ERR_INV_OP Invalid operation code
+62 GPG_ERR_TIMEOUT Timeout
+63 GPG_ERR_INTERNAL Internal error
+64 GPG_ERR_EOF_GCRYPT EOF (gcrypt)
+65 GPG_ERR_INV_OBJ Invalid object
+66 GPG_ERR_TOO_SHORT Provided object is too short
+67 GPG_ERR_TOO_LARGE Provided object is too large
+68 GPG_ERR_NO_OBJ Missing item in object
+69 GPG_ERR_NOT_IMPLEMENTED Not implemented
+70 GPG_ERR_CONFLICT Conflicting use
+71 GPG_ERR_INV_CIPHER_MODE Invalid cipher mode
+72 GPG_ERR_INV_FLAG Invalid flag
+73 GPG_ERR_INV_HANDLE Invalid handle
+74 GPG_ERR_TRUNCATED Result truncated
+75 GPG_ERR_INCOMPLETE_LINE Incomplete line
+76 GPG_ERR_INV_RESPONSE Invalid response
+77 GPG_ERR_NO_AGENT No agent running
+78 GPG_ERR_AGENT agent error
+79 GPG_ERR_INV_DATA Invalid data
+80 GPG_ERR_ASSUAN_SERVER_FAULT Unspecific Assuan server fault
+81 GPG_ERR_ASSUAN General Assuan error
+82 GPG_ERR_INV_SESSION_KEY Invalid session key
+83 GPG_ERR_INV_SEXP Invalid S-expression
+84 GPG_ERR_UNSUPPORTED_ALGORITHM Unsupported algorithm
+85 GPG_ERR_NO_PIN_ENTRY No pinentry
+86 GPG_ERR_PIN_ENTRY pinentry error
+87 GPG_ERR_BAD_PIN Bad PIN
+88 GPG_ERR_INV_NAME Invalid name
+89 GPG_ERR_BAD_DATA Bad data
+90 GPG_ERR_INV_PARAMETER Invalid parameter
+91 GPG_ERR_WRONG_CARD Wrong card
+92 GPG_ERR_NO_DIRMNGR No dirmngr
+93 GPG_ERR_DIRMNGR dirmngr error
+94 GPG_ERR_CERT_REVOKED Certificate revoked
+95 GPG_ERR_NO_CRL_KNOWN No CRL known
+96 GPG_ERR_CRL_TOO_OLD CRL too old
+97 GPG_ERR_LINE_TOO_LONG Line too long
+98 GPG_ERR_NOT_TRUSTED Not trusted
+99 GPG_ERR_CANCELED Operation cancelled
+100 GPG_ERR_BAD_CA_CERT Bad CA certificate
+101 GPG_ERR_CERT_EXPIRED Certificate expired
+102 GPG_ERR_CERT_TOO_YOUNG Certificate too young
+103 GPG_ERR_UNSUPPORTED_CERT Unsupported certificate
+104 GPG_ERR_UNKNOWN_SEXP Unknown S-expression
+105 GPG_ERR_UNSUPPORTED_PROTECTION Unsupported protection
+106 GPG_ERR_CORRUPTED_PROTECTION Corrupted protection
+107 GPG_ERR_AMBIGUOUS_NAME Ambiguous name
+108 GPG_ERR_CARD Card error
+109 GPG_ERR_CARD_RESET Card reset required
+110 GPG_ERR_CARD_REMOVED Card removed
+111 GPG_ERR_INV_CARD Invalid card
+112 GPG_ERR_CARD_NOT_PRESENT Card not present
+113 GPG_ERR_NO_PKCS15_APP No PKCS15 application
+114 GPG_ERR_NOT_CONFIRMED Not confirmed
+115 GPG_ERR_CONFIGURATION Configuration error
+116 GPG_ERR_NO_POLICY_MATCH No policy match
+117 GPG_ERR_INV_INDEX Invalid index
+118 GPG_ERR_INV_ID Invalid ID
+119 GPG_ERR_NO_SCDAEMON No SmartCard daemon
+120 GPG_ERR_SCDAEMON SmartCard daemon error
+121 GPG_ERR_UNSUPPORTED_PROTOCOL Unsupported protocol
+122 GPG_ERR_BAD_PIN_METHOD Bad PIN method
+123 GPG_ERR_CARD_NOT_INITIALIZED Card not initialized
+124 GPG_ERR_UNSUPPORTED_OPERATION Unsupported operation
+125 GPG_ERR_WRONG_KEY_USAGE Wrong key usage
+126 GPG_ERR_NOTHING_FOUND Nothing found
+127 GPG_ERR_WRONG_BLOB_TYPE Wrong blob type
+128 GPG_ERR_MISSING_VALUE Missing value
+129 GPG_ERR_HARDWARE Hardware problem
+130 GPG_ERR_PIN_BLOCKED PIN blocked
+131 GPG_ERR_USE_CONDITIONS Conditions of use not satisfied
+132 GPG_ERR_PIN_NOT_SYNCED PINs are not synced
+133 GPG_ERR_INV_CRL Invalid CRL
+134 GPG_ERR_BAD_BER BER error
+135 GPG_ERR_INV_BER Invalid BER
+136 GPG_ERR_ELEMENT_NOT_FOUND Element not found
+137 GPG_ERR_IDENTIFIER_NOT_FOUND Identifier not found
+138 GPG_ERR_INV_TAG Invalid tag
+139 GPG_ERR_INV_LENGTH Invalid length
+140 GPG_ERR_INV_KEYINFO Invalid key info
+141 GPG_ERR_UNEXPECTED_TAG Unexpected tag
+142 GPG_ERR_NOT_DER_ENCODED Not DER encoded
+143 GPG_ERR_NO_CMS_OBJ No CMS object
+144 GPG_ERR_INV_CMS_OBJ Invalid CMS object
+145 GPG_ERR_UNKNOWN_CMS_OBJ Unknown CMS object
+146 GPG_ERR_UNSUPPORTED_CMS_OBJ Unsupported CMS object
+147 GPG_ERR_UNSUPPORTED_ENCODING Unsupported encoding
+148 GPG_ERR_UNSUPPORTED_CMS_VERSION Unsupported CMS version
+149 GPG_ERR_UNKNOWN_ALGORITHM Unknown algorithm
+150 GPG_ERR_INV_ENGINE Invalid crypto engine
+151 GPG_ERR_PUBKEY_NOT_TRUSTED Public key not trusted
+152 GPG_ERR_DECRYPT_FAILED Decryption failed
+153 GPG_ERR_KEY_EXPIRED Key expired
+154 GPG_ERR_SIG_EXPIRED Signature expired
+155 GPG_ERR_ENCODING_PROBLEM Encoding problem
+156 GPG_ERR_INV_STATE Invalid state
+157 GPG_ERR_DUP_VALUE Duplicated value
+158 GPG_ERR_MISSING_ACTION Missing action
+159 GPG_ERR_MODULE_NOT_FOUND ASN.1 module not found
+160 GPG_ERR_INV_OID_STRING Invalid OID string
+161 GPG_ERR_INV_TIME Invalid time
+162 GPG_ERR_INV_CRL_OBJ Invalid CRL object
+163 GPG_ERR_UNSUPPORTED_CRL_VERSION Unsupported CRL version
+164 GPG_ERR_INV_CERT_OBJ Invalid certificate object
+165 GPG_ERR_UNKNOWN_NAME Unknown name
+166 GPG_ERR_LOCALE_PROBLEM A locale function failed
+167 GPG_ERR_NOT_LOCKED Not locked
+168 GPG_ERR_PROTOCOL_VIOLATION Protocol violation
+169 GPG_ERR_INV_MAC Invalid MAC
+170 GPG_ERR_INV_REQUEST Invalid request
+171 GPG_ERR_UNKNOWN_EXTN Unknown extension
+172 GPG_ERR_UNKNOWN_CRIT_EXTN Unknown critical extension
+173 GPG_ERR_LOCKED Locked
+174 GPG_ERR_UNKNOWN_OPTION Unknown option
+175 GPG_ERR_UNKNOWN_COMMAND Unknown command
+176 GPG_ERR_NOT_OPERATIONAL Not operational
+177 GPG_ERR_NO_PASSPHRASE No passphrase given
+178 GPG_ERR_NO_PIN No PIN given
+179 GPG_ERR_NOT_ENABLED Not enabled
+180 GPG_ERR_NO_ENGINE No crypto engine
+181 GPG_ERR_MISSING_KEY Missing key
+182 GPG_ERR_TOO_MANY Too many objects
+183 GPG_ERR_LIMIT_REACHED Limit reached
+# 184 to 198 are free to be used.
+
+199 GPG_ERR_UNFINISHED Operation not yet finished
+200 GPG_ERR_BUFFER_TOO_SHORT Buffer too short
+
+# Error codes pertaining to S-expressions.
+
+201 GPG_ERR_SEXP_INV_LEN_SPEC Invalid length specifier in S-expression
+202 GPG_ERR_SEXP_STRING_TOO_LONG String too long in S-expression
+203 GPG_ERR_SEXP_UNMATCHED_PAREN Unmatched parentheses in S-expression
+204 GPG_ERR_SEXP_NOT_CANONICAL S-expression not canonical
+205 GPG_ERR_SEXP_BAD_CHARACTER Bad character in S-expression
+206 GPG_ERR_SEXP_BAD_QUOTATION Bad quotation in S-expression
+207 GPG_ERR_SEXP_ZERO_PREFIX Zero prefix in S-expression
+208 GPG_ERR_SEXP_NESTED_DH Nested display hints in S-expression
+209 GPG_ERR_SEXP_UNMATCHED_DH Unmatched display hints
+210 GPG_ERR_SEXP_UNEXPECTED_PUNC Unexpected reserved punctuation in S-expression
+211 GPG_ERR_SEXP_BAD_HEX_CHAR Bad hexadecimal character in S-expression
+212 GPG_ERR_SEXP_ODD_HEX_NUMBERS Odd hexadecimal numbers in S-expression
+213 GPG_ERR_SEXP_BAD_OCT_CHAR Bad octal character in S-expression
+
+# 214 to 254 are free to be used. 255 and 256 are RFU.
+
+# Error codes pertaining to the Assuan IPC interface
+257 GPG_ERR_ASS_GENERAL General IPC error
+258 GPG_ERR_ASS_ACCEPT_FAILED IPC accept call failed
+259 GPG_ERR_ASS_CONNECT_FAILED IPC connect call failed
+260 GPG_ERR_ASS_INV_RESPONSE Invalid IPC response
+261 GPG_ERR_ASS_INV_VALUE Invalid value passed to IPC
+262 GPG_ERR_ASS_INCOMPLETE_LINE Incomplete line passed to IPC
+263 GPG_ERR_ASS_LINE_TOO_LONG Line passed to IPC too long
+264 GPG_ERR_ASS_NESTED_COMMANDS Nested IPC commands
+265 GPG_ERR_ASS_NO_DATA_CB No data callback in IPC
+266 GPG_ERR_ASS_NO_INQUIRE_CB No inquire callback in IPC
+267 GPG_ERR_ASS_NOT_A_SERVER Not an IPC server
+268 GPG_ERR_ASS_NOT_A_CLIENT Not an IPC client
+269 GPG_ERR_ASS_SERVER_START Problem starting IPC server
+270 GPG_ERR_ASS_READ_ERROR IPC read error
+271 GPG_ERR_ASS_WRITE_ERROR IPC write error
+# reserved
+273 GPG_ERR_ASS_TOO_MUCH_DATA Too much data for IPC layer
+274 GPG_ERR_ASS_UNEXPECTED_CMD Unexpected IPC command
+275 GPG_ERR_ASS_UNKNOWN_CMD Unknown IPC command
+276 GPG_ERR_ASS_SYNTAX IPC syntax error
+277 GPG_ERR_ASS_CANCELED IPC call has been cancelled
+278 GPG_ERR_ASS_NO_INPUT No input source for IPC
+279 GPG_ERR_ASS_NO_OUTPUT No output source for IPC
+280 GPG_ERR_ASS_PARAMETER IPC parameter error
+281 GPG_ERR_ASS_UNKNOWN_INQUIRE Unknown IPC inquire
+
+# 282 to 299 are reserved for future assuan codes.
+
+# 300 to 1023 are free to be used.
+
+# For free use by non-GnuPG components.
+1024 GPG_ERR_USER_1 User defined error code 1
+1025 GPG_ERR_USER_2 User defined error code 2
+1026 GPG_ERR_USER_3 User defined error code 3
+1027 GPG_ERR_USER_4 User defined error code 4
+1028 GPG_ERR_USER_5 User defined error code 5
+1029 GPG_ERR_USER_6 User defined error code 6
+1030 GPG_ERR_USER_7 User defined error code 7
+1031 GPG_ERR_USER_8 User defined error code 8
+1032 GPG_ERR_USER_9 User defined error code 9
+1033 GPG_ERR_USER_10 User defined error code 10
+1034 GPG_ERR_USER_11 User defined error code 11
+1035 GPG_ERR_USER_12 User defined error code 12
+1036 GPG_ERR_USER_13 User defined error code 13
+1037 GPG_ERR_USER_14 User defined error code 14
+1038 GPG_ERR_USER_15 User defined error code 15
+1039 GPG_ERR_USER_16 User defined error code 16
+
+# 1040 to 16380 are free to be used.
+
+16381 GPG_ERR_MISSING_ERRNO System error w/o errno
+16382 GPG_ERR_UNKNOWN_ERRNO Unknown system error
+16383 GPG_ERR_EOF End of file
+
+# 16384 - 32767 are reserved for future extensions.
+
+# GPG_SYSTEM_ERROR | (141 to 32767) are to be used for system errors.
+
+ GPG_ERR_CODE_DIM Unknown error code
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-sources-sym.h b/plugins/MirOTR/libgpg-error-1.9/err-sources-sym.h
new file mode 100644
index 0000000000..62b8cb1618
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-sources-sym.h
@@ -0,0 +1,82 @@
+/* Output of mkstrtable.awk. DO NOT EDIT. */
+
+/* err-sources.h - List of error sources and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+/* The purpose of this complex string table is to produce
+ optimal code with a minimum of relocations. */
+
+static const char msgstr[] =
+ "GPG_ERR_SOURCE_UNKNOWN" "\0"
+ "GPG_ERR_SOURCE_GCRYPT" "\0"
+ "GPG_ERR_SOURCE_GPG" "\0"
+ "GPG_ERR_SOURCE_GPGSM" "\0"
+ "GPG_ERR_SOURCE_GPGAGENT" "\0"
+ "GPG_ERR_SOURCE_PINENTRY" "\0"
+ "GPG_ERR_SOURCE_SCD" "\0"
+ "GPG_ERR_SOURCE_GPGME" "\0"
+ "GPG_ERR_SOURCE_KEYBOX" "\0"
+ "GPG_ERR_SOURCE_KSBA" "\0"
+ "GPG_ERR_SOURCE_DIRMNGR" "\0"
+ "GPG_ERR_SOURCE_GSTI" "\0"
+ "GPG_ERR_SOURCE_GPA" "\0"
+ "GPG_ERR_SOURCE_KLEO" "\0"
+ "GPG_ERR_SOURCE_G13" "\0"
+ "GPG_ERR_SOURCE_ANY" "\0"
+ "GPG_ERR_SOURCE_USER_1" "\0"
+ "GPG_ERR_SOURCE_USER_2" "\0"
+ "GPG_ERR_SOURCE_USER_3" "\0"
+ "GPG_ERR_SOURCE_USER_4" "\0"
+ "GPG_ERR_SOURCE_DIM";
+
+static const int msgidx[] =
+ {
+ 0,
+ 23,
+ 45,
+ 64,
+ 85,
+ 109,
+ 133,
+ 152,
+ 173,
+ 195,
+ 215,
+ 238,
+ 258,
+ 277,
+ 297,
+ 316,
+ 335,
+ 357,
+ 379,
+ 401,
+ 423
+ };
+
+static inline int
+msgidxof (int code)
+{
+ return (0 ? 0
+ : ((code >= 0) && (code <= 14)) ? (code - 0)
+ : ((code >= 31) && (code <= 35)) ? (code - 16)
+ : 36 - 16);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-sources.h b/plugins/MirOTR/libgpg-error-1.9/err-sources.h
new file mode 100644
index 0000000000..0fcc551e2c
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-sources.h
@@ -0,0 +1,82 @@
+/* Output of mkstrtable.awk. DO NOT EDIT. */
+
+/* err-sources.h - List of error sources and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+/* The purpose of this complex string table is to produce
+ optimal code with a minimum of relocations. */
+
+static const char msgstr[] =
+ gettext_noop ("Unspecified source") "\0"
+ gettext_noop ("gcrypt") "\0"
+ gettext_noop ("GnuPG") "\0"
+ gettext_noop ("GpgSM") "\0"
+ gettext_noop ("GPG Agent") "\0"
+ gettext_noop ("Pinentry") "\0"
+ gettext_noop ("SCD") "\0"
+ gettext_noop ("GPGME") "\0"
+ gettext_noop ("Keybox") "\0"
+ gettext_noop ("KSBA") "\0"
+ gettext_noop ("Dirmngr") "\0"
+ gettext_noop ("GSTI") "\0"
+ gettext_noop ("GPA") "\0"
+ gettext_noop ("Kleopatra") "\0"
+ gettext_noop ("G13") "\0"
+ gettext_noop ("Any source") "\0"
+ gettext_noop ("User defined source 1") "\0"
+ gettext_noop ("User defined source 2") "\0"
+ gettext_noop ("User defined source 3") "\0"
+ gettext_noop ("User defined source 4") "\0"
+ gettext_noop ("Unknown source");
+
+static const int msgidx[] =
+ {
+ 0,
+ 19,
+ 26,
+ 32,
+ 38,
+ 48,
+ 57,
+ 61,
+ 67,
+ 74,
+ 79,
+ 87,
+ 92,
+ 96,
+ 106,
+ 110,
+ 121,
+ 143,
+ 165,
+ 187,
+ 209
+ };
+
+static inline int
+msgidxof (int code)
+{
+ return (0 ? 0
+ : ((code >= 0) && (code <= 14)) ? (code - 0)
+ : ((code >= 31) && (code <= 35)) ? (code - 16)
+ : 36 - 16);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/err-sources.h.in b/plugins/MirOTR/libgpg-error-1.9/err-sources.h.in
new file mode 100644
index 0000000000..d200fc6c31
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/err-sources.h.in
@@ -0,0 +1,58 @@
+# err-sources.h.in - List of error sources and their description input file.
+/* err-sources.h - List of error sources and their description.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+# Everything up to the first line that starts with a number in the
+# first column is copied into the output verbatim. Then, empty lines
+# are ignored. Other lines must have an error source number, followed
+# by one or more <tab> characters, followed by the error source
+# symbol, followed by one or more <tab> characters, followed by the
+# error source name. Trailing whitespace is removed. The error
+# sources should be sorted. The last line should not have a number,
+# but only a <tab>, followed by a description for error sources that
+# are not in the list.
+
+0 GPG_ERR_SOURCE_UNKNOWN Unspecified source
+1 GPG_ERR_SOURCE_GCRYPT gcrypt
+2 GPG_ERR_SOURCE_GPG GnuPG
+3 GPG_ERR_SOURCE_GPGSM GpgSM
+4 GPG_ERR_SOURCE_GPGAGENT GPG Agent
+5 GPG_ERR_SOURCE_PINENTRY Pinentry
+6 GPG_ERR_SOURCE_SCD SCD
+7 GPG_ERR_SOURCE_GPGME GPGME
+8 GPG_ERR_SOURCE_KEYBOX Keybox
+9 GPG_ERR_SOURCE_KSBA KSBA
+10 GPG_ERR_SOURCE_DIRMNGR Dirmngr
+11 GPG_ERR_SOURCE_GSTI GSTI
+12 GPG_ERR_SOURCE_GPA GPA
+13 GPG_ERR_SOURCE_KLEO Kleopatra
+14 GPG_ERR_SOURCE_G13 G13
+
+# 15 to 30 are free to be used.
+
+31 GPG_ERR_SOURCE_ANY Any source
+32 GPG_ERR_SOURCE_USER_1 User defined source 1
+33 GPG_ERR_SOURCE_USER_2 User defined source 2
+34 GPG_ERR_SOURCE_USER_3 User defined source 3
+35 GPG_ERR_SOURCE_USER_4 User defined source 4
+
+# 36 to 255 are free to be used.
+
+ GPG_ERR_SOURCE_DIM Unknown source
diff --git a/plugins/MirOTR/libgpg-error-1.9/errnos-sym.h b/plugins/MirOTR/libgpg-error-1.9/errnos-sym.h
new file mode 100644
index 0000000000..8bcb8ed946
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/errnos-sym.h
@@ -0,0 +1,323 @@
+/* Output of mkstrtable.awk. DO NOT EDIT. */
+
+/* errnos.h - List of system error values.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+
+/* The purpose of this complex string table is to produce
+ optimal code with a minimum of relocations. */
+
+static const char errnos_msgstr[] =
+ "GPG_ERR_E2BIG" "\0"
+ "GPG_ERR_EACCES" "\0"
+ "GPG_ERR_EADDRINUSE" "\0"
+ "GPG_ERR_EADDRNOTAVAIL" "\0"
+ "GPG_ERR_EADV" "\0"
+ "GPG_ERR_EAFNOSUPPORT" "\0"
+ "GPG_ERR_EAGAIN" "\0"
+ "GPG_ERR_EALREADY" "\0"
+ "GPG_ERR_EAUTH" "\0"
+ "GPG_ERR_EBACKGROUND" "\0"
+ "GPG_ERR_EBADE" "\0"
+ "GPG_ERR_EBADF" "\0"
+ "GPG_ERR_EBADFD" "\0"
+ "GPG_ERR_EBADMSG" "\0"
+ "GPG_ERR_EBADR" "\0"
+ "GPG_ERR_EBADRPC" "\0"
+ "GPG_ERR_EBADRQC" "\0"
+ "GPG_ERR_EBADSLT" "\0"
+ "GPG_ERR_EBFONT" "\0"
+ "GPG_ERR_EBUSY" "\0"
+ "GPG_ERR_ECANCELED" "\0"
+ "GPG_ERR_ECHILD" "\0"
+ "GPG_ERR_ECHRNG" "\0"
+ "GPG_ERR_ECOMM" "\0"
+ "GPG_ERR_ECONNABORTED" "\0"
+ "GPG_ERR_ECONNREFUSED" "\0"
+ "GPG_ERR_ECONNRESET" "\0"
+ "GPG_ERR_ED" "\0"
+ "GPG_ERR_EDEADLK" "\0"
+ "GPG_ERR_EDEADLOCK" "\0"
+ "GPG_ERR_EDESTADDRREQ" "\0"
+ "GPG_ERR_EDIED" "\0"
+ "GPG_ERR_EDOM" "\0"
+ "GPG_ERR_EDOTDOT" "\0"
+ "GPG_ERR_EDQUOT" "\0"
+ "GPG_ERR_EEXIST" "\0"
+ "GPG_ERR_EFAULT" "\0"
+ "GPG_ERR_EFBIG" "\0"
+ "GPG_ERR_EFTYPE" "\0"
+ "GPG_ERR_EGRATUITOUS" "\0"
+ "GPG_ERR_EGREGIOUS" "\0"
+ "GPG_ERR_EHOSTDOWN" "\0"
+ "GPG_ERR_EHOSTUNREACH" "\0"
+ "GPG_ERR_EIDRM" "\0"
+ "GPG_ERR_EIEIO" "\0"
+ "GPG_ERR_EILSEQ" "\0"
+ "GPG_ERR_EINPROGRESS" "\0"
+ "GPG_ERR_EINTR" "\0"
+ "GPG_ERR_EINVAL" "\0"
+ "GPG_ERR_EIO" "\0"
+ "GPG_ERR_EISCONN" "\0"
+ "GPG_ERR_EISDIR" "\0"
+ "GPG_ERR_EISNAM" "\0"
+ "GPG_ERR_EL2HLT" "\0"
+ "GPG_ERR_EL2NSYNC" "\0"
+ "GPG_ERR_EL3HLT" "\0"
+ "GPG_ERR_EL3RST" "\0"
+ "GPG_ERR_ELIBACC" "\0"
+ "GPG_ERR_ELIBBAD" "\0"
+ "GPG_ERR_ELIBEXEC" "\0"
+ "GPG_ERR_ELIBMAX" "\0"
+ "GPG_ERR_ELIBSCN" "\0"
+ "GPG_ERR_ELNRNG" "\0"
+ "GPG_ERR_ELOOP" "\0"
+ "GPG_ERR_EMEDIUMTYPE" "\0"
+ "GPG_ERR_EMFILE" "\0"
+ "GPG_ERR_EMLINK" "\0"
+ "GPG_ERR_EMSGSIZE" "\0"
+ "GPG_ERR_EMULTIHOP" "\0"
+ "GPG_ERR_ENAMETOOLONG" "\0"
+ "GPG_ERR_ENAVAIL" "\0"
+ "GPG_ERR_ENEEDAUTH" "\0"
+ "GPG_ERR_ENETDOWN" "\0"
+ "GPG_ERR_ENETRESET" "\0"
+ "GPG_ERR_ENETUNREACH" "\0"
+ "GPG_ERR_ENFILE" "\0"
+ "GPG_ERR_ENOANO" "\0"
+ "GPG_ERR_ENOBUFS" "\0"
+ "GPG_ERR_ENOCSI" "\0"
+ "GPG_ERR_ENODATA" "\0"
+ "GPG_ERR_ENODEV" "\0"
+ "GPG_ERR_ENOENT" "\0"
+ "GPG_ERR_ENOEXEC" "\0"
+ "GPG_ERR_ENOLCK" "\0"
+ "GPG_ERR_ENOLINK" "\0"
+ "GPG_ERR_ENOMEDIUM" "\0"
+ "GPG_ERR_ENOMEM" "\0"
+ "GPG_ERR_ENOMSG" "\0"
+ "GPG_ERR_ENONET" "\0"
+ "GPG_ERR_ENOPKG" "\0"
+ "GPG_ERR_ENOPROTOOPT" "\0"
+ "GPG_ERR_ENOSPC" "\0"
+ "GPG_ERR_ENOSR" "\0"
+ "GPG_ERR_ENOSTR" "\0"
+ "GPG_ERR_ENOSYS" "\0"
+ "GPG_ERR_ENOTBLK" "\0"
+ "GPG_ERR_ENOTCONN" "\0"
+ "GPG_ERR_ENOTDIR" "\0"
+ "GPG_ERR_ENOTEMPTY" "\0"
+ "GPG_ERR_ENOTNAM" "\0"
+ "GPG_ERR_ENOTSOCK" "\0"
+ "GPG_ERR_ENOTSUP" "\0"
+ "GPG_ERR_ENOTTY" "\0"
+ "GPG_ERR_ENOTUNIQ" "\0"
+ "GPG_ERR_ENXIO" "\0"
+ "GPG_ERR_EOPNOTSUPP" "\0"
+ "GPG_ERR_EOVERFLOW" "\0"
+ "GPG_ERR_EPERM" "\0"
+ "GPG_ERR_EPFNOSUPPORT" "\0"
+ "GPG_ERR_EPIPE" "\0"
+ "GPG_ERR_EPROCLIM" "\0"
+ "GPG_ERR_EPROCUNAVAIL" "\0"
+ "GPG_ERR_EPROGMISMATCH" "\0"
+ "GPG_ERR_EPROGUNAVAIL" "\0"
+ "GPG_ERR_EPROTO" "\0"
+ "GPG_ERR_EPROTONOSUPPORT" "\0"
+ "GPG_ERR_EPROTOTYPE" "\0"
+ "GPG_ERR_ERANGE" "\0"
+ "GPG_ERR_EREMCHG" "\0"
+ "GPG_ERR_EREMOTE" "\0"
+ "GPG_ERR_EREMOTEIO" "\0"
+ "GPG_ERR_ERESTART" "\0"
+ "GPG_ERR_EROFS" "\0"
+ "GPG_ERR_ERPCMISMATCH" "\0"
+ "GPG_ERR_ESHUTDOWN" "\0"
+ "GPG_ERR_ESOCKTNOSUPPORT" "\0"
+ "GPG_ERR_ESPIPE" "\0"
+ "GPG_ERR_ESRCH" "\0"
+ "GPG_ERR_ESRMNT" "\0"
+ "GPG_ERR_ESTALE" "\0"
+ "GPG_ERR_ESTRPIPE" "\0"
+ "GPG_ERR_ETIME" "\0"
+ "GPG_ERR_ETIMEDOUT" "\0"
+ "GPG_ERR_ETOOMANYREFS" "\0"
+ "GPG_ERR_ETXTBSY" "\0"
+ "GPG_ERR_EUCLEAN" "\0"
+ "GPG_ERR_EUNATCH" "\0"
+ "GPG_ERR_EUSERS" "\0"
+ "GPG_ERR_EWOULDBLOCK" "\0"
+ "GPG_ERR_EXDEV" "\0"
+ "GPG_ERR_EXFULL";
+
+static const int errnos_msgidx[] =
+ {
+ 0,
+ 14,
+ 29,
+ 48,
+ 70,
+ 83,
+ 104,
+ 119,
+ 136,
+ 150,
+ 170,
+ 184,
+ 198,
+ 213,
+ 229,
+ 243,
+ 259,
+ 275,
+ 291,
+ 306,
+ 320,
+ 338,
+ 353,
+ 368,
+ 382,
+ 403,
+ 424,
+ 443,
+ 454,
+ 470,
+ 488,
+ 509,
+ 523,
+ 536,
+ 552,
+ 567,
+ 582,
+ 597,
+ 611,
+ 626,
+ 646,
+ 664,
+ 682,
+ 703,
+ 717,
+ 731,
+ 746,
+ 766,
+ 780,
+ 795,
+ 807,
+ 823,
+ 838,
+ 853,
+ 868,
+ 885,
+ 900,
+ 915,
+ 931,
+ 947,
+ 964,
+ 980,
+ 996,
+ 1011,
+ 1025,
+ 1045,
+ 1060,
+ 1075,
+ 1092,
+ 1110,
+ 1131,
+ 1147,
+ 1165,
+ 1182,
+ 1200,
+ 1220,
+ 1235,
+ 1250,
+ 1266,
+ 1281,
+ 1297,
+ 1312,
+ 1327,
+ 1343,
+ 1358,
+ 1374,
+ 1392,
+ 1407,
+ 1422,
+ 1437,
+ 1452,
+ 1472,
+ 1487,
+ 1501,
+ 1516,
+ 1531,
+ 1547,
+ 1564,
+ 1580,
+ 1598,
+ 1614,
+ 1631,
+ 1647,
+ 1662,
+ 1679,
+ 1693,
+ 1712,
+ 1730,
+ 1744,
+ 1765,
+ 1779,
+ 1796,
+ 1817,
+ 1839,
+ 1860,
+ 1875,
+ 1899,
+ 1918,
+ 1933,
+ 1949,
+ 1965,
+ 1983,
+ 2000,
+ 2014,
+ 2035,
+ 2053,
+ 2077,
+ 2092,
+ 2106,
+ 2121,
+ 2136,
+ 2153,
+ 2167,
+ 2185,
+ 2206,
+ 2222,
+ 2238,
+ 2254,
+ 2269,
+ 2289,
+ 2303,
+
+ };
+
+static inline int
+errnos_msgidxof (int code)
+{
+ return (0 ? 0
+ : ((code >= 0) && (code <= 140)) ? (code - 0)
+ : -1);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/errnos.in b/plugins/MirOTR/libgpg-error-1.9/errnos.in
new file mode 100644
index 0000000000..0688047681
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/errnos.in
@@ -0,0 +1,172 @@
+# errnos.h.in - List of system error values input file.
+/* errnos.h - List of system error values.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+# Everything up to the first line that starts with a number in the
+# first column is copied into the output verbatim. Then, empty lines
+# are ignored. Other lines must have an error code number, followed
+# by one or more <tab> characters, followed by the error name.
+#
+# IMPORTANT: For now, the numbering must be consecutive. Some of the
+# scripts (notably mkerrnos.h) do not deal correctly with a numbering
+# that is out of order or has gaps.
+
+
+0 E2BIG
+1 EACCES
+2 EADDRINUSE
+3 EADDRNOTAVAIL
+4 EADV
+5 EAFNOSUPPORT
+6 EAGAIN
+7 EALREADY
+8 EAUTH
+9 EBACKGROUND
+10 EBADE
+11 EBADF
+12 EBADFD
+13 EBADMSG
+14 EBADR
+15 EBADRPC
+16 EBADRQC
+17 EBADSLT
+18 EBFONT
+19 EBUSY
+20 ECANCELED
+21 ECHILD
+22 ECHRNG
+23 ECOMM
+24 ECONNABORTED
+25 ECONNREFUSED
+26 ECONNRESET
+27 ED
+28 EDEADLK
+29 EDEADLOCK
+30 EDESTADDRREQ
+31 EDIED
+32 EDOM
+33 EDOTDOT
+34 EDQUOT
+35 EEXIST
+36 EFAULT
+37 EFBIG
+38 EFTYPE
+39 EGRATUITOUS
+40 EGREGIOUS
+41 EHOSTDOWN
+42 EHOSTUNREACH
+43 EIDRM
+44 EIEIO
+45 EILSEQ
+46 EINPROGRESS
+47 EINTR
+48 EINVAL
+49 EIO
+50 EISCONN
+51 EISDIR
+52 EISNAM
+53 EL2HLT
+54 EL2NSYNC
+55 EL3HLT
+56 EL3RST
+57 ELIBACC
+58 ELIBBAD
+59 ELIBEXEC
+60 ELIBMAX
+61 ELIBSCN
+62 ELNRNG
+63 ELOOP
+64 EMEDIUMTYPE
+65 EMFILE
+66 EMLINK
+67 EMSGSIZE
+68 EMULTIHOP
+69 ENAMETOOLONG
+70 ENAVAIL
+71 ENEEDAUTH
+72 ENETDOWN
+73 ENETRESET
+74 ENETUNREACH
+75 ENFILE
+76 ENOANO
+77 ENOBUFS
+78 ENOCSI
+79 ENODATA
+80 ENODEV
+81 ENOENT
+82 ENOEXEC
+83 ENOLCK
+84 ENOLINK
+85 ENOMEDIUM
+86 ENOMEM
+87 ENOMSG
+88 ENONET
+89 ENOPKG
+90 ENOPROTOOPT
+91 ENOSPC
+92 ENOSR
+93 ENOSTR
+94 ENOSYS
+95 ENOTBLK
+96 ENOTCONN
+97 ENOTDIR
+98 ENOTEMPTY
+99 ENOTNAM
+100 ENOTSOCK
+101 ENOTSUP
+102 ENOTTY
+103 ENOTUNIQ
+104 ENXIO
+105 EOPNOTSUPP
+106 EOVERFLOW
+107 EPERM
+108 EPFNOSUPPORT
+109 EPIPE
+110 EPROCLIM
+111 EPROCUNAVAIL
+112 EPROGMISMATCH
+113 EPROGUNAVAIL
+114 EPROTO
+115 EPROTONOSUPPORT
+116 EPROTOTYPE
+117 ERANGE
+118 EREMCHG
+119 EREMOTE
+120 EREMOTEIO
+121 ERESTART
+122 EROFS
+123 ERPCMISMATCH
+124 ESHUTDOWN
+125 ESOCKTNOSUPPORT
+126 ESPIPE
+127 ESRCH
+128 ESRMNT
+129 ESTALE
+130 ESTRPIPE
+131 ETIME
+132 ETIMEDOUT
+133 ETOOMANYREFS
+134 ETXTBSY
+135 EUCLEAN
+136 EUNATCH
+137 EUSERS
+138 EWOULDBLOCK
+139 EXDEV
+140 EXFULL \ No newline at end of file
diff --git a/plugins/MirOTR/libgpg-error-1.9/extra-h.in b/plugins/MirOTR/libgpg-error-1.9/extra-h.in
new file mode 100644
index 0000000000..197ee272f8
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/extra-h.in
@@ -0,0 +1,41 @@
+## w32-add.h - Snippet to be be included into gpg-error.h.
+## Comments are indicated by a double hash mark. Due to a
+## peculiarity of the script the first used line must not
+## start with a hash mark.
+
+/* Decide whether to use the format_arg attribute. */
+#if _GPG_ERR_GCC_VERSION > 20800
+# define _GPG_ERR_ATTR_FORMAT_ARG(a) __attribute__ ((__format_arg__ (a)))
+#else
+# define _GPG_ERR_ATTR_FORMAT_ARG(a)
+#endif
+
+/* A lean gettext implementation based on GNU style mo files which are
+ required to be encoded in UTF-8. There is a limit on 65534 entries
+ to save some RAM. Only Germanic plural rules are supported. */
+const char *_gpg_w32_bindtextdomain (const char *domainname,
+ const char *dirname);
+const char *_gpg_w32_textdomain (const char *domainname);
+const char *_gpg_w32_gettext (const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (1);
+const char *_gpg_w32_dgettext (const char *domainname, const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (2);
+const char *_gpg_w32_dngettext (const char *domainname, const char *msgid1,
+ const char *msgid2, unsigned long int n)
+ _GPG_ERR_ATTR_FORMAT_ARG (2) _GPG_ERR_ATTR_FORMAT_ARG (3);
+const char *_gpg_w32_gettext_localename (void);
+int _gpg_w32_gettext_use_utf8 (int value);
+
+#ifdef GPG_ERR_ENABLE_GETTEXT_MACROS
+# define bindtextdomain(a,b) _gpg_w32_bindtextdomain ((a), (b))
+# define textdomain(a) _gpg_w32_textdomain ((a))
+# define gettext(a) _gpg_w32_gettext ((a))
+# define dgettext(a,b) _gpg_w32_dgettext ((a), (b))
+# define ngettext(a,b,c) _gpg_w32_dngettext (NULL, (a), (b), (c))
+# define dngettext(a,b,c,d) _gpg_w32_dngettext ((a), (b), (c), (d))
+# define gettext_localename() _gpg_w32_gettext_localename ()
+# define gettext_use_utf8(a) _gpg_w32_gettext_use_utf8 (a)
+#endif /*GPG_ERR_ENABLE_GETTEXT_MACROS*/
+
+
+EOF
diff --git a/plugins/MirOTR/libgpg-error-1.9/gettext.h b/plugins/MirOTR/libgpg-error-1.9/gettext.h
new file mode 100644
index 0000000000..aba29db6dd
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gettext.h
@@ -0,0 +1,76 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License as published
+ by the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+#if HAVE_W32_SYSTEM
+ /* We have a gettext implementation in gpg-error.h which get
+ included anyway. */
+#else /*!HAVE_W32_SYSTEM*/
+ /* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+#endif /*!HAVE_W32_SYSTEM*/
+
+#else /*!ENABLE_NLS*/
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
+
+#endif /*!ENABLE_NLS*/
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+
+
+#endif /* _LIBGETTEXT_H */
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error-config b/plugins/MirOTR/libgpg-error-1.9/gpg-error-config
new file mode 100644
index 0000000000..d4f88b22f5
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error-config
@@ -0,0 +1,84 @@
+#!/bin/sh
+# Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+prefix=/usr/local
+exec_prefix=${prefix}
+includedir=${prefix}/include
+libdir=${exec_prefix}/lib
+isubdirafter=""
+
+output=""
+
+usage()
+{
+ cat <<EOF
+Usage: gpg-error-config [OPTIONS]
+Options:
+ [--prefix]
+ [--exec-prefix]
+ [--version]
+ [--libs]
+ [--cflags]
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&2
+fi
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*)
+ optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+ ;;
+ *)
+ optarg=
+ ;;
+ esac
+
+ case $1 in
+ --prefix)
+ output="$output $prefix"
+ ;;
+ --exec-prefix)
+ output="$output $exec_prefix"
+ ;;
+ --version)
+ echo "1.9"
+ exit 0
+ ;;
+ --cflags)
+ if test "x$includedir" != "x/usr/include" -a "x$includedir" != "x/include"; then
+ output="$output -I$includedir"
+ fi
+ # Note: -idirafter is a gcc extension. It is only used on
+ # systems where gcc is the only compiler we support.
+ for i in $isubdirafter; do
+ output="$output -idirafter ${includedir}/${i}"
+ done
+ output="$output "
+ ;;
+ --libs)
+ if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/lib"; then
+ output="$output -L$libdir"
+ fi
+ output="$output -lgpg-error"
+ ;;
+ *)
+ usage 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+echo $output
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error-config.in b/plugins/MirOTR/libgpg-error-1.9/gpg-error-config.in
new file mode 100644
index 0000000000..4be034328a
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error-config.in
@@ -0,0 +1,84 @@
+#!/bin/sh
+# Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+isubdirafter="@GPG_ERROR_CONFIG_ISUBDIRAFTER@"
+
+output=""
+
+usage()
+{
+ cat <<EOF
+Usage: gpg-error-config [OPTIONS]
+Options:
+ [--prefix]
+ [--exec-prefix]
+ [--version]
+ [--libs]
+ [--cflags]
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&2
+fi
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*)
+ optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+ ;;
+ *)
+ optarg=
+ ;;
+ esac
+
+ case $1 in
+ --prefix)
+ output="$output $prefix"
+ ;;
+ --exec-prefix)
+ output="$output $exec_prefix"
+ ;;
+ --version)
+ echo "@VERSION@"
+ exit 0
+ ;;
+ --cflags)
+ if test "x$includedir" != "x/usr/include" -a "x$includedir" != "x/include"; then
+ output="$output -I$includedir"
+ fi
+ # Note: -idirafter is a gcc extension. It is only used on
+ # systems where gcc is the only compiler we support.
+ for i in $isubdirafter; do
+ output="$output -idirafter ${includedir}/${i}"
+ done
+ output="$output @GPG_ERROR_CONFIG_CFLAGS@"
+ ;;
+ --libs)
+ if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/lib"; then
+ output="$output -L$libdir"
+ fi
+ output="$output @GPG_ERROR_CONFIG_LIBS@"
+ ;;
+ *)
+ usage 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+echo $output
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.c b/plugins/MirOTR/libgpg-error-1.9/gpg-error.c
new file mode 100644
index 0000000000..bed784994d
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.c
@@ -0,0 +1,448 @@
+/* gpg-error.c - Determining gpg-error error codes.
+ Copyright (C) 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+#ifdef ENABLE_NLS
+#ifdef HAVE_W32_SYSTEM
+# include "gettext.h"
+#else
+# include <libintl.h>
+#endif
+# define _(a) gettext (a)
+# ifdef gettext_noop
+# define N_(a) gettext_noop (a)
+# else
+# define N_(a) (a)
+# endif
+#else
+# define _(a) (a)
+# define N_(a) (a)
+#endif
+
+#include <gpg-error.h>
+
+
+#if HAVE_W32_SYSTEM
+/* The implementation follows below. */
+static char *get_locale_dir (void);
+static void drop_locale_dir (char *locale_dir);
+#else
+#define get_locale_dir() LOCALEDIR
+#define drop_locale_dir(dir)
+#endif
+
+static void
+i18n_init (void)
+{
+#ifdef ENABLE_NLS
+ char *locale_dir;
+
+#ifdef HAVE_LC_MESSAGES
+ setlocale (LC_TIME, "");
+ setlocale (LC_MESSAGES, "");
+#else
+# ifndef HAVE_W32_SYSTEM
+ setlocale (LC_ALL, "" );
+# endif
+#endif
+
+ /* Note that for this program we would only need the textdomain call
+ because libgpg-error already initializes itself to its locale dir
+ (via gpg_err_init or a constructor). However this is only done
+ for the static standard locale and thus if the above setlocale
+ calls select a different locale the bindtext below will do
+ something else. */
+
+ locale_dir = get_locale_dir ();
+ if (locale_dir)
+ {
+ bindtextdomain (PACKAGE, locale_dir);
+ drop_locale_dir (locale_dir);
+ }
+ textdomain (PACKAGE);
+#endif
+}
+
+
+#ifdef HAVE_W32_SYSTEM
+
+#include <windows.h>
+
+
+static char *
+get_locale_dir (void)
+{
+ static wchar_t moddir[MAX_PATH+5];
+ char *result, *p;
+ int nbytes;
+
+ if (!GetModuleFileNameW (NULL, moddir, MAX_PATH))
+ *moddir = 0;
+
+#define SLDIR "\\share\\locale"
+ if (*moddir)
+ {
+ nbytes = WideCharToMultiByte (CP_UTF8, 0, moddir, -1, NULL, 0, NULL, NULL);
+ if (nbytes < 0)
+ return NULL;
+
+ result = malloc (nbytes + strlen (SLDIR) + 1);
+ if (result)
+ {
+ nbytes = WideCharToMultiByte (CP_UTF8, 0, moddir, -1,
+ result, nbytes, NULL, NULL);
+ if (nbytes < 0)
+ {
+ free (result);
+ result = NULL;
+ }
+ else
+ {
+ p = strrchr (result, '\\');
+ if (p)
+ *p = 0;
+ strcat (result, SLDIR);
+ }
+ }
+ }
+ else /* Use the old default value. */
+ {
+ result = malloc (10 + strlen (SLDIR) + 1);
+ if (result)
+ {
+ strcpy (result, "c:\\gnupg");
+ strcat (result, SLDIR);
+ }
+ }
+#undef SLDIR
+ return result;
+}
+
+
+static void
+drop_locale_dir (char *locale_dir)
+{
+ free (locale_dir);
+}
+
+#endif /* HAVE_W32_SYSTEM */
+
+
+const char *gpg_strerror_sym (gpg_error_t err);
+const char *gpg_strsource_sym (gpg_error_t err);
+
+
+static int
+get_err_from_number (char *str, gpg_error_t *err)
+{
+ unsigned long nr;
+ char *tail;
+
+ gpg_err_set_errno (0);
+ nr = strtoul (str, &tail, 0);
+ if (errno)
+ return 0;
+
+ if (nr > UINT_MAX)
+ return 0;
+
+ if (*tail)
+ {
+ unsigned long cnr = strtoul (tail + 1, &tail, 0);
+ if (errno || *tail)
+ return 0;
+
+ if (nr >= GPG_ERR_SOURCE_DIM || cnr >= GPG_ERR_CODE_DIM)
+ return 0;
+
+ nr = gpg_err_make (nr, cnr);
+ }
+
+ *err = (unsigned int) nr;
+ return 1;
+}
+
+
+static int
+get_err_from_symbol_one (char *str, gpg_error_t *err,
+ int *have_source, int *have_code)
+{
+ static const char src_prefix[] = "GPG_ERR_SOURCE_";
+ static const char code_prefix[] = "GPG_ERR_";
+
+ if (!strncasecmp (src_prefix, str, sizeof (src_prefix) - 1))
+ {
+ gpg_err_source_t src;
+
+ if (*have_source)
+ return 0;
+ *have_source = 1;
+ str += sizeof (src_prefix) - 1;
+
+ for (src = 0; src < GPG_ERR_SOURCE_DIM; src++)
+ {
+ const char *src_sym;
+
+ src_sym = gpg_strsource_sym (src << GPG_ERR_SOURCE_SHIFT);
+ if (src_sym && !strcasecmp (str, src_sym + sizeof (src_prefix) - 1))
+ {
+ *err |= src << GPG_ERR_SOURCE_SHIFT;
+ return 1;
+ }
+ }
+ }
+ else if (!strncasecmp (code_prefix, str, sizeof (code_prefix) - 1))
+ {
+ gpg_err_code_t code;
+
+ if (*have_code)
+ return 0;
+ *have_code = 1;
+ str += sizeof (code_prefix) - 1;
+
+ for (code = 0; code < GPG_ERR_CODE_DIM; code++)
+ {
+ const char *code_sym = gpg_strerror_sym (code);
+ if (code_sym
+ && !strcasecmp (str, code_sym + sizeof (code_prefix) - 1))
+ {
+ *err |= code;
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+
+static int
+get_err_from_symbol (char *str, gpg_error_t *err)
+{
+ char *str2 = str;
+ int have_source = 0;
+ int have_code = 0;
+ int ret;
+ char *saved_pos = NULL;
+ char saved_char;
+
+ *err = 0;
+ while (*str2 && ((*str2 >= 'A' && *str2 <= 'Z')
+ || (*str2 >= '0' && *str2 <= '9')
+ || *str2 == '_'))
+ str2++;
+ if (*str2)
+ {
+ saved_pos = str2;
+ saved_char = *str2;
+ *str2 = '\0';
+ str2++;
+ }
+ else
+ str2 = NULL;
+
+ ret = get_err_from_symbol_one (str, err, &have_source, &have_code);
+ if (ret && str2)
+ ret = get_err_from_symbol_one (str2, err, &have_source, &have_code);
+
+ if (saved_pos)
+ *saved_pos = saved_char;
+ return ret;
+}
+
+
+static int
+get_err_from_str_one (char *str, gpg_error_t *err,
+ int *have_source, int *have_code)
+{
+ gpg_err_source_t src;
+ gpg_err_code_t code;
+
+ for (src = 0; src < GPG_ERR_SOURCE_DIM; src++)
+ {
+ const char *src_str = gpg_strsource (src << GPG_ERR_SOURCE_SHIFT);
+ if (src_str && !strcasecmp (str, src_str))
+ {
+ if (*have_source)
+ return 0;
+
+ *have_source = 1;
+ *err |= src << GPG_ERR_SOURCE_SHIFT;
+ return 1;
+ }
+ }
+
+ for (code = 0; code < GPG_ERR_CODE_DIM; code++)
+ {
+ const char *code_str = gpg_strerror (code);
+ if (code_str && !strcasecmp (str, code_str))
+ {
+ if (*have_code)
+ return 0;
+
+ *have_code = 1;
+ *err |= code;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+
+static int
+get_err_from_str (char *str, gpg_error_t *err)
+{
+ char *str2 = str;
+ int have_source = 0;
+ int have_code = 0;
+ int ret;
+ char *saved_pos = NULL;
+ char saved_char;
+
+ *err = 0;
+ ret = get_err_from_str_one (str, err, &have_source, &have_code);
+ if (ret)
+ return ret;
+
+ while (*str2 && ((*str2 >= 'A' && *str2 <= 'Z')
+ || (*str2 >= 'a' && *str2 <= 'z')
+ || (*str2 >= '0' && *str2 <= '9')
+ || *str2 == '_'))
+ str2++;
+ if (*str2)
+ {
+ saved_pos = str2;
+ saved_char = *str2;
+ *((char *) str2) = '\0';
+ str2++;
+ while (*str2 && !((*str2 >= 'A' && *str2 <= 'Z')
+ || (*str2 >= 'a' && *str2 <= 'z')
+ || (*str2 >= '0' && *str2 <= '9')
+ || *str2 == '_'))
+ str2++;
+ }
+ else
+ str2 = NULL;
+
+ ret = get_err_from_str_one (str, err, &have_source, &have_code);
+ if (ret && str2)
+ ret = get_err_from_str_one (str2, err, &have_source, &have_code);
+
+ if (saved_pos)
+ *saved_pos = saved_char;
+ return ret;
+}
+
+
+
+int
+main (int argc, char *argv[])
+{
+ int i = 1;
+ int listmode = 0;
+ const char *source_sym;
+ const char *error_sym;
+ gpg_error_t err;
+
+#ifndef GPG_ERR_INITIALIZED
+ gpg_err_init ();
+#endif
+
+ i18n_init ();
+
+
+ if (argc == 1)
+ {
+ fprintf (stderr, _("Usage: %s GPG-ERROR [...]\n"),
+ strrchr (argv[0],'/')? (strrchr (argv[0], '/')+1): argv[0]);
+ exit (1);
+ }
+ else if (argc == 2 && !strcmp (argv[1], "--version"))
+ {
+ fputs ( ("gpg-error ("PACKAGE_NAME") "PACKAGE_VERSION"\n") , stdout);
+ exit (0);
+ }
+ else if (argc == 2 && !strcmp (argv[1], "--list"))
+ {
+ listmode = 1;
+ }
+
+
+ if (listmode)
+ {
+ for (i=0; i < GPG_ERR_SOURCE_DIM; i++)
+ {
+ /* We use error code 1 because gpg_err_make requires a
+ non-zero error code. */
+ err = gpg_err_make (i, 1);
+ err -= 1;
+ source_sym = gpg_strsource_sym (err);
+ if (source_sym)
+ printf ("%u = (%u, -) = (%s, -) = (%s, -)\n",
+ err, gpg_err_source (err),
+ source_sym, gpg_strsource (err));
+ }
+ for (i=0; i < GPG_ERR_CODE_DIM; i++)
+ {
+ err = gpg_err_make (GPG_ERR_SOURCE_UNKNOWN, i);
+ error_sym = gpg_strerror_sym (err);
+ if (error_sym)
+ printf ("%u = (-, %u) = (-, %s) = (-, %s)\n",
+ err, gpg_err_code (err),
+ error_sym, gpg_strerror (err));
+ }
+
+ i = argc; /* Don't run the usual stuff. */
+ }
+ while (i < argc)
+ {
+ if (get_err_from_number (argv[i], &err)
+ || get_err_from_symbol (argv[i], &err)
+ || get_err_from_str (argv[i], &err))
+ {
+ source_sym = gpg_strsource_sym (err);
+ error_sym = gpg_strerror_sym (err);
+
+ printf ("%u = (%u, %u) = (%s, %s) = (%s, %s)\n",
+ err, gpg_err_source (err), gpg_err_code (err),
+ source_sym ? source_sym : "-", error_sym ? error_sym : "-",
+ gpg_strsource (err), gpg_strerror (err));
+ }
+ else
+ fprintf (stderr, _("%s: warning: could not recognize %s\n"),
+ argv[0], argv[i]);
+ i++;
+ }
+
+ exit (0);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.def b/plugins/MirOTR/libgpg-error-1.9/gpg-error.def
new file mode 100644
index 0000000000..0e8c946ee6
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.def
@@ -0,0 +1,28 @@
+
+
+
+
+
+EXPORTS
+ gpg_strerror @1
+ gpg_strerror_r @2
+ gpg_strsource @3
+ gpg_err_code_from_errno @4
+ gpg_err_code_to_errno @5
+ gpg_err_init @6
+ gpg_err_code_from_syserror @7
+ gpg_err_set_errno @8
+
+
+
+
+
+ _gpg_w32_bindtextdomain @11
+ _gpg_w32_textdomain @12
+ _gpg_w32_gettext @13
+ _gpg_w32_dgettext @14
+ _gpg_w32_dngettext @15
+ _gpg_w32_gettext_localename @16
+ _gpg_w32_gettext_use_utf8 @17
+
+ gpg_err_deinit @18
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.def.in b/plugins/MirOTR/libgpg-error-1.9/gpg-error.def.in
new file mode 100644
index 0000000000..cbabd57053
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.def.in
@@ -0,0 +1,29 @@
+/* gpg-error.def.in - Exported symbols
+ * Needs to be processed by CPP.
+ */
+
+#include <config.h>
+
+EXPORTS
+ gpg_strerror @1
+ gpg_strerror_r @2
+ gpg_strsource @3
+ gpg_err_code_from_errno @4
+ gpg_err_code_to_errno @5
+ gpg_err_init @6
+ gpg_err_code_from_syserror @7
+ gpg_err_set_errno @8
+#ifdef HAVE_W32CE_SYSTEM
+ _gpg_w32ce_get_errno @9
+ _gpg_w32ce_strerror @10
+#endif
+#ifdef HAVE_W32_SYSTEM
+ _gpg_w32_bindtextdomain @11
+ _gpg_w32_textdomain @12
+ _gpg_w32_gettext @13
+ _gpg_w32_dgettext @14
+ _gpg_w32_dngettext @15
+ _gpg_w32_gettext_localename @16
+ _gpg_w32_gettext_use_utf8 @17
+#endif
+ gpg_err_deinit @18
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.exe b/plugins/MirOTR/libgpg-error-1.9/gpg-error.exe
new file mode 100644
index 0000000000..63968b7840
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.exe
Binary files differ
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.h b/plugins/MirOTR/libgpg-error-1.9/gpg-error.h
new file mode 100644
index 0000000000..c9e0346b4e
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.h
@@ -0,0 +1,710 @@
+/* Output of mkheader.awk. DO NOT EDIT. -*- buffer-read-only: t -*- */
+
+/* gpg-error.h - Public interface to libgpg-error.
+ Copyright (C) 2003, 2004, 2010 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef GPG_ERROR_H
+#define GPG_ERROR_H 1
+
+#include <stddef.h>
+
+#ifdef __GNUC__
+#define GPG_ERR_INLINE __inline__
+#elif __STDC_VERSION__ >= 199901L
+#define GPG_ERR_INLINE inline
+#else
+#ifndef GPG_ERR_INLINE
+#define GPG_ERR_INLINE
+#endif
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#if 0 /* just to make Emacs auto-indent happy */
+}
+#endif
+#endif /* __cplusplus */
+
+/* The GnuPG project consists of many components. Error codes are
+ exchanged between all components. The common error codes and their
+ user-presentable descriptions are kept into a shared library to
+ allow adding new error codes and components without recompiling any
+ of the other components. The interface will not change in a
+ backward incompatible way.
+
+ An error code together with an error source build up an error
+ value. As the error value is been passed from one component to
+ another, it preserver the information about the source and nature
+ of the error.
+
+ A component of the GnuPG project can define the following macros to
+ tune the behaviour of the library:
+
+ GPG_ERR_SOURCE_DEFAULT: Define to an error source of type
+ gpg_err_source_t to make that source the default for gpg_error().
+ Otherwise GPG_ERR_SOURCE_UNKNOWN is used as default.
+
+ GPG_ERR_ENABLE_GETTEXT_MACROS: Define to provide macros to map the
+ internal gettext API to standard names. This has only an effect on
+ Windows platforms. */
+
+
+/* The error source type gpg_err_source_t.
+
+ Where as the Poo out of a welle small
+ Taketh his firste springing and his sours.
+ --Chaucer. */
+
+/* Only use free slots, never change or reorder the existing
+ entries. */
+typedef enum
+ {
+ GPG_ERR_SOURCE_UNKNOWN = 0,
+ GPG_ERR_SOURCE_GCRYPT = 1,
+ GPG_ERR_SOURCE_GPG = 2,
+ GPG_ERR_SOURCE_GPGSM = 3,
+ GPG_ERR_SOURCE_GPGAGENT = 4,
+ GPG_ERR_SOURCE_PINENTRY = 5,
+ GPG_ERR_SOURCE_SCD = 6,
+ GPG_ERR_SOURCE_GPGME = 7,
+ GPG_ERR_SOURCE_KEYBOX = 8,
+ GPG_ERR_SOURCE_KSBA = 9,
+ GPG_ERR_SOURCE_DIRMNGR = 10,
+ GPG_ERR_SOURCE_GSTI = 11,
+ GPG_ERR_SOURCE_GPA = 12,
+ GPG_ERR_SOURCE_KLEO = 13,
+ GPG_ERR_SOURCE_G13 = 14,
+ GPG_ERR_SOURCE_ANY = 31,
+ GPG_ERR_SOURCE_USER_1 = 32,
+ GPG_ERR_SOURCE_USER_2 = 33,
+ GPG_ERR_SOURCE_USER_3 = 34,
+ GPG_ERR_SOURCE_USER_4 = 35,
+
+ /* This is one more than the largest allowed entry. */
+ GPG_ERR_SOURCE_DIM = 128
+ } gpg_err_source_t;
+
+
+/* The error code type gpg_err_code_t. */
+
+/* Only use free slots, never change or reorder the existing
+ entries. */
+typedef enum
+ {
+ GPG_ERR_NO_ERROR = 0,
+ GPG_ERR_GENERAL = 1,
+ GPG_ERR_UNKNOWN_PACKET = 2,
+ GPG_ERR_UNKNOWN_VERSION = 3,
+ GPG_ERR_PUBKEY_ALGO = 4,
+ GPG_ERR_DIGEST_ALGO = 5,
+ GPG_ERR_BAD_PUBKEY = 6,
+ GPG_ERR_BAD_SECKEY = 7,
+ GPG_ERR_BAD_SIGNATURE = 8,
+ GPG_ERR_NO_PUBKEY = 9,
+ GPG_ERR_CHECKSUM = 10,
+ GPG_ERR_BAD_PASSPHRASE = 11,
+ GPG_ERR_CIPHER_ALGO = 12,
+ GPG_ERR_KEYRING_OPEN = 13,
+ GPG_ERR_INV_PACKET = 14,
+ GPG_ERR_INV_ARMOR = 15,
+ GPG_ERR_NO_USER_ID = 16,
+ GPG_ERR_NO_SECKEY = 17,
+ GPG_ERR_WRONG_SECKEY = 18,
+ GPG_ERR_BAD_KEY = 19,
+ GPG_ERR_COMPR_ALGO = 20,
+ GPG_ERR_NO_PRIME = 21,
+ GPG_ERR_NO_ENCODING_METHOD = 22,
+ GPG_ERR_NO_ENCRYPTION_SCHEME = 23,
+ GPG_ERR_NO_SIGNATURE_SCHEME = 24,
+ GPG_ERR_INV_ATTR = 25,
+ GPG_ERR_NO_VALUE = 26,
+ GPG_ERR_NOT_FOUND = 27,
+ GPG_ERR_VALUE_NOT_FOUND = 28,
+ GPG_ERR_SYNTAX = 29,
+ GPG_ERR_BAD_MPI = 30,
+ GPG_ERR_INV_PASSPHRASE = 31,
+ GPG_ERR_SIG_CLASS = 32,
+ GPG_ERR_RESOURCE_LIMIT = 33,
+ GPG_ERR_INV_KEYRING = 34,
+ GPG_ERR_TRUSTDB = 35,
+ GPG_ERR_BAD_CERT = 36,
+ GPG_ERR_INV_USER_ID = 37,
+ GPG_ERR_UNEXPECTED = 38,
+ GPG_ERR_TIME_CONFLICT = 39,
+ GPG_ERR_KEYSERVER = 40,
+ GPG_ERR_WRONG_PUBKEY_ALGO = 41,
+ GPG_ERR_TRIBUTE_TO_D_A = 42,
+ GPG_ERR_WEAK_KEY = 43,
+ GPG_ERR_INV_KEYLEN = 44,
+ GPG_ERR_INV_ARG = 45,
+ GPG_ERR_BAD_URI = 46,
+ GPG_ERR_INV_URI = 47,
+ GPG_ERR_NETWORK = 48,
+ GPG_ERR_UNKNOWN_HOST = 49,
+ GPG_ERR_SELFTEST_FAILED = 50,
+ GPG_ERR_NOT_ENCRYPTED = 51,
+ GPG_ERR_NOT_PROCESSED = 52,
+ GPG_ERR_UNUSABLE_PUBKEY = 53,
+ GPG_ERR_UNUSABLE_SECKEY = 54,
+ GPG_ERR_INV_VALUE = 55,
+ GPG_ERR_BAD_CERT_CHAIN = 56,
+ GPG_ERR_MISSING_CERT = 57,
+ GPG_ERR_NO_DATA = 58,
+ GPG_ERR_BUG = 59,
+ GPG_ERR_NOT_SUPPORTED = 60,
+ GPG_ERR_INV_OP = 61,
+ GPG_ERR_TIMEOUT = 62,
+ GPG_ERR_INTERNAL = 63,
+ GPG_ERR_EOF_GCRYPT = 64,
+ GPG_ERR_INV_OBJ = 65,
+ GPG_ERR_TOO_SHORT = 66,
+ GPG_ERR_TOO_LARGE = 67,
+ GPG_ERR_NO_OBJ = 68,
+ GPG_ERR_NOT_IMPLEMENTED = 69,
+ GPG_ERR_CONFLICT = 70,
+ GPG_ERR_INV_CIPHER_MODE = 71,
+ GPG_ERR_INV_FLAG = 72,
+ GPG_ERR_INV_HANDLE = 73,
+ GPG_ERR_TRUNCATED = 74,
+ GPG_ERR_INCOMPLETE_LINE = 75,
+ GPG_ERR_INV_RESPONSE = 76,
+ GPG_ERR_NO_AGENT = 77,
+ GPG_ERR_AGENT = 78,
+ GPG_ERR_INV_DATA = 79,
+ GPG_ERR_ASSUAN_SERVER_FAULT = 80,
+ GPG_ERR_ASSUAN = 81,
+ GPG_ERR_INV_SESSION_KEY = 82,
+ GPG_ERR_INV_SEXP = 83,
+ GPG_ERR_UNSUPPORTED_ALGORITHM = 84,
+ GPG_ERR_NO_PIN_ENTRY = 85,
+ GPG_ERR_PIN_ENTRY = 86,
+ GPG_ERR_BAD_PIN = 87,
+ GPG_ERR_INV_NAME = 88,
+ GPG_ERR_BAD_DATA = 89,
+ GPG_ERR_INV_PARAMETER = 90,
+ GPG_ERR_WRONG_CARD = 91,
+ GPG_ERR_NO_DIRMNGR = 92,
+ GPG_ERR_DIRMNGR = 93,
+ GPG_ERR_CERT_REVOKED = 94,
+ GPG_ERR_NO_CRL_KNOWN = 95,
+ GPG_ERR_CRL_TOO_OLD = 96,
+ GPG_ERR_LINE_TOO_LONG = 97,
+ GPG_ERR_NOT_TRUSTED = 98,
+ GPG_ERR_CANCELED = 99,
+ GPG_ERR_BAD_CA_CERT = 100,
+ GPG_ERR_CERT_EXPIRED = 101,
+ GPG_ERR_CERT_TOO_YOUNG = 102,
+ GPG_ERR_UNSUPPORTED_CERT = 103,
+ GPG_ERR_UNKNOWN_SEXP = 104,
+ GPG_ERR_UNSUPPORTED_PROTECTION = 105,
+ GPG_ERR_CORRUPTED_PROTECTION = 106,
+ GPG_ERR_AMBIGUOUS_NAME = 107,
+ GPG_ERR_CARD = 108,
+ GPG_ERR_CARD_RESET = 109,
+ GPG_ERR_CARD_REMOVED = 110,
+ GPG_ERR_INV_CARD = 111,
+ GPG_ERR_CARD_NOT_PRESENT = 112,
+ GPG_ERR_NO_PKCS15_APP = 113,
+ GPG_ERR_NOT_CONFIRMED = 114,
+ GPG_ERR_CONFIGURATION = 115,
+ GPG_ERR_NO_POLICY_MATCH = 116,
+ GPG_ERR_INV_INDEX = 117,
+ GPG_ERR_INV_ID = 118,
+ GPG_ERR_NO_SCDAEMON = 119,
+ GPG_ERR_SCDAEMON = 120,
+ GPG_ERR_UNSUPPORTED_PROTOCOL = 121,
+ GPG_ERR_BAD_PIN_METHOD = 122,
+ GPG_ERR_CARD_NOT_INITIALIZED = 123,
+ GPG_ERR_UNSUPPORTED_OPERATION = 124,
+ GPG_ERR_WRONG_KEY_USAGE = 125,
+ GPG_ERR_NOTHING_FOUND = 126,
+ GPG_ERR_WRONG_BLOB_TYPE = 127,
+ GPG_ERR_MISSING_VALUE = 128,
+ GPG_ERR_HARDWARE = 129,
+ GPG_ERR_PIN_BLOCKED = 130,
+ GPG_ERR_USE_CONDITIONS = 131,
+ GPG_ERR_PIN_NOT_SYNCED = 132,
+ GPG_ERR_INV_CRL = 133,
+ GPG_ERR_BAD_BER = 134,
+ GPG_ERR_INV_BER = 135,
+ GPG_ERR_ELEMENT_NOT_FOUND = 136,
+ GPG_ERR_IDENTIFIER_NOT_FOUND = 137,
+ GPG_ERR_INV_TAG = 138,
+ GPG_ERR_INV_LENGTH = 139,
+ GPG_ERR_INV_KEYINFO = 140,
+ GPG_ERR_UNEXPECTED_TAG = 141,
+ GPG_ERR_NOT_DER_ENCODED = 142,
+ GPG_ERR_NO_CMS_OBJ = 143,
+ GPG_ERR_INV_CMS_OBJ = 144,
+ GPG_ERR_UNKNOWN_CMS_OBJ = 145,
+ GPG_ERR_UNSUPPORTED_CMS_OBJ = 146,
+ GPG_ERR_UNSUPPORTED_ENCODING = 147,
+ GPG_ERR_UNSUPPORTED_CMS_VERSION = 148,
+ GPG_ERR_UNKNOWN_ALGORITHM = 149,
+ GPG_ERR_INV_ENGINE = 150,
+ GPG_ERR_PUBKEY_NOT_TRUSTED = 151,
+ GPG_ERR_DECRYPT_FAILED = 152,
+ GPG_ERR_KEY_EXPIRED = 153,
+ GPG_ERR_SIG_EXPIRED = 154,
+ GPG_ERR_ENCODING_PROBLEM = 155,
+ GPG_ERR_INV_STATE = 156,
+ GPG_ERR_DUP_VALUE = 157,
+ GPG_ERR_MISSING_ACTION = 158,
+ GPG_ERR_MODULE_NOT_FOUND = 159,
+ GPG_ERR_INV_OID_STRING = 160,
+ GPG_ERR_INV_TIME = 161,
+ GPG_ERR_INV_CRL_OBJ = 162,
+ GPG_ERR_UNSUPPORTED_CRL_VERSION = 163,
+ GPG_ERR_INV_CERT_OBJ = 164,
+ GPG_ERR_UNKNOWN_NAME = 165,
+ GPG_ERR_LOCALE_PROBLEM = 166,
+ GPG_ERR_NOT_LOCKED = 167,
+ GPG_ERR_PROTOCOL_VIOLATION = 168,
+ GPG_ERR_INV_MAC = 169,
+ GPG_ERR_INV_REQUEST = 170,
+ GPG_ERR_UNKNOWN_EXTN = 171,
+ GPG_ERR_UNKNOWN_CRIT_EXTN = 172,
+ GPG_ERR_LOCKED = 173,
+ GPG_ERR_UNKNOWN_OPTION = 174,
+ GPG_ERR_UNKNOWN_COMMAND = 175,
+ GPG_ERR_NOT_OPERATIONAL = 176,
+ GPG_ERR_NO_PASSPHRASE = 177,
+ GPG_ERR_NO_PIN = 178,
+ GPG_ERR_NOT_ENABLED = 179,
+ GPG_ERR_NO_ENGINE = 180,
+ GPG_ERR_MISSING_KEY = 181,
+ GPG_ERR_TOO_MANY = 182,
+ GPG_ERR_LIMIT_REACHED = 183,
+ GPG_ERR_UNFINISHED = 199,
+ GPG_ERR_BUFFER_TOO_SHORT = 200,
+ GPG_ERR_SEXP_INV_LEN_SPEC = 201,
+ GPG_ERR_SEXP_STRING_TOO_LONG = 202,
+ GPG_ERR_SEXP_UNMATCHED_PAREN = 203,
+ GPG_ERR_SEXP_NOT_CANONICAL = 204,
+ GPG_ERR_SEXP_BAD_CHARACTER = 205,
+ GPG_ERR_SEXP_BAD_QUOTATION = 206,
+ GPG_ERR_SEXP_ZERO_PREFIX = 207,
+ GPG_ERR_SEXP_NESTED_DH = 208,
+ GPG_ERR_SEXP_UNMATCHED_DH = 209,
+ GPG_ERR_SEXP_UNEXPECTED_PUNC = 210,
+ GPG_ERR_SEXP_BAD_HEX_CHAR = 211,
+ GPG_ERR_SEXP_ODD_HEX_NUMBERS = 212,
+ GPG_ERR_SEXP_BAD_OCT_CHAR = 213,
+ GPG_ERR_ASS_GENERAL = 257,
+ GPG_ERR_ASS_ACCEPT_FAILED = 258,
+ GPG_ERR_ASS_CONNECT_FAILED = 259,
+ GPG_ERR_ASS_INV_RESPONSE = 260,
+ GPG_ERR_ASS_INV_VALUE = 261,
+ GPG_ERR_ASS_INCOMPLETE_LINE = 262,
+ GPG_ERR_ASS_LINE_TOO_LONG = 263,
+ GPG_ERR_ASS_NESTED_COMMANDS = 264,
+ GPG_ERR_ASS_NO_DATA_CB = 265,
+ GPG_ERR_ASS_NO_INQUIRE_CB = 266,
+ GPG_ERR_ASS_NOT_A_SERVER = 267,
+ GPG_ERR_ASS_NOT_A_CLIENT = 268,
+ GPG_ERR_ASS_SERVER_START = 269,
+ GPG_ERR_ASS_READ_ERROR = 270,
+ GPG_ERR_ASS_WRITE_ERROR = 271,
+ GPG_ERR_ASS_TOO_MUCH_DATA = 273,
+ GPG_ERR_ASS_UNEXPECTED_CMD = 274,
+ GPG_ERR_ASS_UNKNOWN_CMD = 275,
+ GPG_ERR_ASS_SYNTAX = 276,
+ GPG_ERR_ASS_CANCELED = 277,
+ GPG_ERR_ASS_NO_INPUT = 278,
+ GPG_ERR_ASS_NO_OUTPUT = 279,
+ GPG_ERR_ASS_PARAMETER = 280,
+ GPG_ERR_ASS_UNKNOWN_INQUIRE = 281,
+ GPG_ERR_USER_1 = 1024,
+ GPG_ERR_USER_2 = 1025,
+ GPG_ERR_USER_3 = 1026,
+ GPG_ERR_USER_4 = 1027,
+ GPG_ERR_USER_5 = 1028,
+ GPG_ERR_USER_6 = 1029,
+ GPG_ERR_USER_7 = 1030,
+ GPG_ERR_USER_8 = 1031,
+ GPG_ERR_USER_9 = 1032,
+ GPG_ERR_USER_10 = 1033,
+ GPG_ERR_USER_11 = 1034,
+ GPG_ERR_USER_12 = 1035,
+ GPG_ERR_USER_13 = 1036,
+ GPG_ERR_USER_14 = 1037,
+ GPG_ERR_USER_15 = 1038,
+ GPG_ERR_USER_16 = 1039,
+ GPG_ERR_MISSING_ERRNO = 16381,
+ GPG_ERR_UNKNOWN_ERRNO = 16382,
+ GPG_ERR_EOF = 16383,
+
+ /* The following error codes are used to map system errors. */
+#define GPG_ERR_SYSTEM_ERROR (1 << 15)
+ GPG_ERR_E2BIG = GPG_ERR_SYSTEM_ERROR | 0,
+ GPG_ERR_EACCES = GPG_ERR_SYSTEM_ERROR | 1,
+ GPG_ERR_EADDRINUSE = GPG_ERR_SYSTEM_ERROR | 2,
+ GPG_ERR_EADDRNOTAVAIL = GPG_ERR_SYSTEM_ERROR | 3,
+ GPG_ERR_EADV = GPG_ERR_SYSTEM_ERROR | 4,
+ GPG_ERR_EAFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 5,
+ GPG_ERR_EAGAIN = GPG_ERR_SYSTEM_ERROR | 6,
+ GPG_ERR_EALREADY = GPG_ERR_SYSTEM_ERROR | 7,
+ GPG_ERR_EAUTH = GPG_ERR_SYSTEM_ERROR | 8,
+ GPG_ERR_EBACKGROUND = GPG_ERR_SYSTEM_ERROR | 9,
+ GPG_ERR_EBADE = GPG_ERR_SYSTEM_ERROR | 10,
+ GPG_ERR_EBADF = GPG_ERR_SYSTEM_ERROR | 11,
+ GPG_ERR_EBADFD = GPG_ERR_SYSTEM_ERROR | 12,
+ GPG_ERR_EBADMSG = GPG_ERR_SYSTEM_ERROR | 13,
+ GPG_ERR_EBADR = GPG_ERR_SYSTEM_ERROR | 14,
+ GPG_ERR_EBADRPC = GPG_ERR_SYSTEM_ERROR | 15,
+ GPG_ERR_EBADRQC = GPG_ERR_SYSTEM_ERROR | 16,
+ GPG_ERR_EBADSLT = GPG_ERR_SYSTEM_ERROR | 17,
+ GPG_ERR_EBFONT = GPG_ERR_SYSTEM_ERROR | 18,
+ GPG_ERR_EBUSY = GPG_ERR_SYSTEM_ERROR | 19,
+ GPG_ERR_ECANCELED = GPG_ERR_SYSTEM_ERROR | 20,
+ GPG_ERR_ECHILD = GPG_ERR_SYSTEM_ERROR | 21,
+ GPG_ERR_ECHRNG = GPG_ERR_SYSTEM_ERROR | 22,
+ GPG_ERR_ECOMM = GPG_ERR_SYSTEM_ERROR | 23,
+ GPG_ERR_ECONNABORTED = GPG_ERR_SYSTEM_ERROR | 24,
+ GPG_ERR_ECONNREFUSED = GPG_ERR_SYSTEM_ERROR | 25,
+ GPG_ERR_ECONNRESET = GPG_ERR_SYSTEM_ERROR | 26,
+ GPG_ERR_ED = GPG_ERR_SYSTEM_ERROR | 27,
+ GPG_ERR_EDEADLK = GPG_ERR_SYSTEM_ERROR | 28,
+ GPG_ERR_EDEADLOCK = GPG_ERR_SYSTEM_ERROR | 29,
+ GPG_ERR_EDESTADDRREQ = GPG_ERR_SYSTEM_ERROR | 30,
+ GPG_ERR_EDIED = GPG_ERR_SYSTEM_ERROR | 31,
+ GPG_ERR_EDOM = GPG_ERR_SYSTEM_ERROR | 32,
+ GPG_ERR_EDOTDOT = GPG_ERR_SYSTEM_ERROR | 33,
+ GPG_ERR_EDQUOT = GPG_ERR_SYSTEM_ERROR | 34,
+ GPG_ERR_EEXIST = GPG_ERR_SYSTEM_ERROR | 35,
+ GPG_ERR_EFAULT = GPG_ERR_SYSTEM_ERROR | 36,
+ GPG_ERR_EFBIG = GPG_ERR_SYSTEM_ERROR | 37,
+ GPG_ERR_EFTYPE = GPG_ERR_SYSTEM_ERROR | 38,
+ GPG_ERR_EGRATUITOUS = GPG_ERR_SYSTEM_ERROR | 39,
+ GPG_ERR_EGREGIOUS = GPG_ERR_SYSTEM_ERROR | 40,
+ GPG_ERR_EHOSTDOWN = GPG_ERR_SYSTEM_ERROR | 41,
+ GPG_ERR_EHOSTUNREACH = GPG_ERR_SYSTEM_ERROR | 42,
+ GPG_ERR_EIDRM = GPG_ERR_SYSTEM_ERROR | 43,
+ GPG_ERR_EIEIO = GPG_ERR_SYSTEM_ERROR | 44,
+ GPG_ERR_EILSEQ = GPG_ERR_SYSTEM_ERROR | 45,
+ GPG_ERR_EINPROGRESS = GPG_ERR_SYSTEM_ERROR | 46,
+ GPG_ERR_EINTR = GPG_ERR_SYSTEM_ERROR | 47,
+ GPG_ERR_EINVAL = GPG_ERR_SYSTEM_ERROR | 48,
+ GPG_ERR_EIO = GPG_ERR_SYSTEM_ERROR | 49,
+ GPG_ERR_EISCONN = GPG_ERR_SYSTEM_ERROR | 50,
+ GPG_ERR_EISDIR = GPG_ERR_SYSTEM_ERROR | 51,
+ GPG_ERR_EISNAM = GPG_ERR_SYSTEM_ERROR | 52,
+ GPG_ERR_EL2HLT = GPG_ERR_SYSTEM_ERROR | 53,
+ GPG_ERR_EL2NSYNC = GPG_ERR_SYSTEM_ERROR | 54,
+ GPG_ERR_EL3HLT = GPG_ERR_SYSTEM_ERROR | 55,
+ GPG_ERR_EL3RST = GPG_ERR_SYSTEM_ERROR | 56,
+ GPG_ERR_ELIBACC = GPG_ERR_SYSTEM_ERROR | 57,
+ GPG_ERR_ELIBBAD = GPG_ERR_SYSTEM_ERROR | 58,
+ GPG_ERR_ELIBEXEC = GPG_ERR_SYSTEM_ERROR | 59,
+ GPG_ERR_ELIBMAX = GPG_ERR_SYSTEM_ERROR | 60,
+ GPG_ERR_ELIBSCN = GPG_ERR_SYSTEM_ERROR | 61,
+ GPG_ERR_ELNRNG = GPG_ERR_SYSTEM_ERROR | 62,
+ GPG_ERR_ELOOP = GPG_ERR_SYSTEM_ERROR | 63,
+ GPG_ERR_EMEDIUMTYPE = GPG_ERR_SYSTEM_ERROR | 64,
+ GPG_ERR_EMFILE = GPG_ERR_SYSTEM_ERROR | 65,
+ GPG_ERR_EMLINK = GPG_ERR_SYSTEM_ERROR | 66,
+ GPG_ERR_EMSGSIZE = GPG_ERR_SYSTEM_ERROR | 67,
+ GPG_ERR_EMULTIHOP = GPG_ERR_SYSTEM_ERROR | 68,
+ GPG_ERR_ENAMETOOLONG = GPG_ERR_SYSTEM_ERROR | 69,
+ GPG_ERR_ENAVAIL = GPG_ERR_SYSTEM_ERROR | 70,
+ GPG_ERR_ENEEDAUTH = GPG_ERR_SYSTEM_ERROR | 71,
+ GPG_ERR_ENETDOWN = GPG_ERR_SYSTEM_ERROR | 72,
+ GPG_ERR_ENETRESET = GPG_ERR_SYSTEM_ERROR | 73,
+ GPG_ERR_ENETUNREACH = GPG_ERR_SYSTEM_ERROR | 74,
+ GPG_ERR_ENFILE = GPG_ERR_SYSTEM_ERROR | 75,
+ GPG_ERR_ENOANO = GPG_ERR_SYSTEM_ERROR | 76,
+ GPG_ERR_ENOBUFS = GPG_ERR_SYSTEM_ERROR | 77,
+ GPG_ERR_ENOCSI = GPG_ERR_SYSTEM_ERROR | 78,
+ GPG_ERR_ENODATA = GPG_ERR_SYSTEM_ERROR | 79,
+ GPG_ERR_ENODEV = GPG_ERR_SYSTEM_ERROR | 80,
+ GPG_ERR_ENOENT = GPG_ERR_SYSTEM_ERROR | 81,
+ GPG_ERR_ENOEXEC = GPG_ERR_SYSTEM_ERROR | 82,
+ GPG_ERR_ENOLCK = GPG_ERR_SYSTEM_ERROR | 83,
+ GPG_ERR_ENOLINK = GPG_ERR_SYSTEM_ERROR | 84,
+ GPG_ERR_ENOMEDIUM = GPG_ERR_SYSTEM_ERROR | 85,
+ GPG_ERR_ENOMEM = GPG_ERR_SYSTEM_ERROR | 86,
+ GPG_ERR_ENOMSG = GPG_ERR_SYSTEM_ERROR | 87,
+ GPG_ERR_ENONET = GPG_ERR_SYSTEM_ERROR | 88,
+ GPG_ERR_ENOPKG = GPG_ERR_SYSTEM_ERROR | 89,
+ GPG_ERR_ENOPROTOOPT = GPG_ERR_SYSTEM_ERROR | 90,
+ GPG_ERR_ENOSPC = GPG_ERR_SYSTEM_ERROR | 91,
+ GPG_ERR_ENOSR = GPG_ERR_SYSTEM_ERROR | 92,
+ GPG_ERR_ENOSTR = GPG_ERR_SYSTEM_ERROR | 93,
+ GPG_ERR_ENOSYS = GPG_ERR_SYSTEM_ERROR | 94,
+ GPG_ERR_ENOTBLK = GPG_ERR_SYSTEM_ERROR | 95,
+ GPG_ERR_ENOTCONN = GPG_ERR_SYSTEM_ERROR | 96,
+ GPG_ERR_ENOTDIR = GPG_ERR_SYSTEM_ERROR | 97,
+ GPG_ERR_ENOTEMPTY = GPG_ERR_SYSTEM_ERROR | 98,
+ GPG_ERR_ENOTNAM = GPG_ERR_SYSTEM_ERROR | 99,
+ GPG_ERR_ENOTSOCK = GPG_ERR_SYSTEM_ERROR | 100,
+ GPG_ERR_ENOTSUP = GPG_ERR_SYSTEM_ERROR | 101,
+ GPG_ERR_ENOTTY = GPG_ERR_SYSTEM_ERROR | 102,
+ GPG_ERR_ENOTUNIQ = GPG_ERR_SYSTEM_ERROR | 103,
+ GPG_ERR_ENXIO = GPG_ERR_SYSTEM_ERROR | 104,
+ GPG_ERR_EOPNOTSUPP = GPG_ERR_SYSTEM_ERROR | 105,
+ GPG_ERR_EOVERFLOW = GPG_ERR_SYSTEM_ERROR | 106,
+ GPG_ERR_EPERM = GPG_ERR_SYSTEM_ERROR | 107,
+ GPG_ERR_EPFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 108,
+ GPG_ERR_EPIPE = GPG_ERR_SYSTEM_ERROR | 109,
+ GPG_ERR_EPROCLIM = GPG_ERR_SYSTEM_ERROR | 110,
+ GPG_ERR_EPROCUNAVAIL = GPG_ERR_SYSTEM_ERROR | 111,
+ GPG_ERR_EPROGMISMATCH = GPG_ERR_SYSTEM_ERROR | 112,
+ GPG_ERR_EPROGUNAVAIL = GPG_ERR_SYSTEM_ERROR | 113,
+ GPG_ERR_EPROTO = GPG_ERR_SYSTEM_ERROR | 114,
+ GPG_ERR_EPROTONOSUPPORT = GPG_ERR_SYSTEM_ERROR | 115,
+ GPG_ERR_EPROTOTYPE = GPG_ERR_SYSTEM_ERROR | 116,
+ GPG_ERR_ERANGE = GPG_ERR_SYSTEM_ERROR | 117,
+ GPG_ERR_EREMCHG = GPG_ERR_SYSTEM_ERROR | 118,
+ GPG_ERR_EREMOTE = GPG_ERR_SYSTEM_ERROR | 119,
+ GPG_ERR_EREMOTEIO = GPG_ERR_SYSTEM_ERROR | 120,
+ GPG_ERR_ERESTART = GPG_ERR_SYSTEM_ERROR | 121,
+ GPG_ERR_EROFS = GPG_ERR_SYSTEM_ERROR | 122,
+ GPG_ERR_ERPCMISMATCH = GPG_ERR_SYSTEM_ERROR | 123,
+ GPG_ERR_ESHUTDOWN = GPG_ERR_SYSTEM_ERROR | 124,
+ GPG_ERR_ESOCKTNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 125,
+ GPG_ERR_ESPIPE = GPG_ERR_SYSTEM_ERROR | 126,
+ GPG_ERR_ESRCH = GPG_ERR_SYSTEM_ERROR | 127,
+ GPG_ERR_ESRMNT = GPG_ERR_SYSTEM_ERROR | 128,
+ GPG_ERR_ESTALE = GPG_ERR_SYSTEM_ERROR | 129,
+ GPG_ERR_ESTRPIPE = GPG_ERR_SYSTEM_ERROR | 130,
+ GPG_ERR_ETIME = GPG_ERR_SYSTEM_ERROR | 131,
+ GPG_ERR_ETIMEDOUT = GPG_ERR_SYSTEM_ERROR | 132,
+ GPG_ERR_ETOOMANYREFS = GPG_ERR_SYSTEM_ERROR | 133,
+ GPG_ERR_ETXTBSY = GPG_ERR_SYSTEM_ERROR | 134,
+ GPG_ERR_EUCLEAN = GPG_ERR_SYSTEM_ERROR | 135,
+ GPG_ERR_EUNATCH = GPG_ERR_SYSTEM_ERROR | 136,
+ GPG_ERR_EUSERS = GPG_ERR_SYSTEM_ERROR | 137,
+ GPG_ERR_EWOULDBLOCK = GPG_ERR_SYSTEM_ERROR | 138,
+ GPG_ERR_EXDEV = GPG_ERR_SYSTEM_ERROR | 139,
+ GPG_ERR_EXFULL = GPG_ERR_SYSTEM_ERROR | 140,
+
+ /* This is one more than the largest allowed entry. */
+ GPG_ERR_CODE_DIM = 65536
+ } gpg_err_code_t;
+
+
+/* The error value type gpg_error_t. */
+
+/* We would really like to use bit-fields in a struct, but using
+ structs as return values can cause binary compatibility issues, in
+ particular if you want to do it effeciently (also see
+ -freg-struct-return option to GCC). */
+typedef unsigned int gpg_error_t;
+
+/* We use the lowest 16 bits of gpg_error_t for error codes. The 16th
+ bit indicates system errors. */
+#define GPG_ERR_CODE_MASK (GPG_ERR_CODE_DIM - 1)
+
+/* Bits 17 to 24 are reserved. */
+
+/* We use the upper 7 bits of gpg_error_t for error sources. */
+#define GPG_ERR_SOURCE_MASK (GPG_ERR_SOURCE_DIM - 1)
+#define GPG_ERR_SOURCE_SHIFT 24
+
+/* The highest bit is reserved. It shouldn't be used to prevent
+ potential negative numbers when transmitting error values as
+ text. */
+
+
+/* GCC feature test. */
+#undef _GPG_ERR_HAVE_CONSTRUCTOR
+#if __GNUC__
+#define _GPG_ERR_GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+
+#if _GPG_ERR_GCC_VERSION > 30100
+#define _GPG_ERR_CONSTRUCTOR __attribute__ ((__constructor__))
+#define _GPG_ERR_HAVE_CONSTRUCTOR
+#endif
+#endif
+
+#ifndef _GPG_ERR_CONSTRUCTOR
+#define _GPG_ERR_CONSTRUCTOR
+#endif
+
+
+/* Initialization function. */
+
+/* Initialize the library. This function should be run early. */
+gpg_error_t gpg_err_init (void) _GPG_ERR_CONSTRUCTOR;
+
+/* If this is defined, the library is already initialized by the
+ constructor and does not need to be initialized explicitely. */
+#undef GPG_ERR_INITIALIZED
+#ifdef _GPG_ERR_HAVE_CONSTRUCTOR
+#define GPG_ERR_INITIALIZED 1
+#endif
+
+/* See the source on how to use the deinit function; it is usually not
+ required. */
+void gpg_err_deinit (int mode);
+
+
+/* Constructor and accessor functions. */
+
+/* Construct an error value from an error code and source. Within a
+ subsystem, use gpg_error. */
+static GPG_ERR_INLINE gpg_error_t
+gpg_err_make (gpg_err_source_t source, gpg_err_code_t code)
+{
+ return code == GPG_ERR_NO_ERROR ? GPG_ERR_NO_ERROR
+ : (((source & GPG_ERR_SOURCE_MASK) << GPG_ERR_SOURCE_SHIFT)
+ | (code & GPG_ERR_CODE_MASK));
+}
+
+
+/* The user should define GPG_ERR_SOURCE_DEFAULT before including this
+ file to specify a default source for gpg_error. */
+#ifndef GPG_ERR_SOURCE_DEFAULT
+#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_UNKNOWN
+#endif
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error (gpg_err_code_t code)
+{
+ return gpg_err_make (GPG_ERR_SOURCE_DEFAULT, code);
+}
+
+
+/* Retrieve the error code from an error value. */
+static GPG_ERR_INLINE gpg_err_code_t
+gpg_err_code (gpg_error_t err)
+{
+ return (gpg_err_code_t) (err & GPG_ERR_CODE_MASK);
+}
+
+
+/* Retrieve the error source from an error value. */
+static GPG_ERR_INLINE gpg_err_source_t
+gpg_err_source (gpg_error_t err)
+{
+ return (gpg_err_source_t) ((err >> GPG_ERR_SOURCE_SHIFT)
+ & GPG_ERR_SOURCE_MASK);
+}
+
+
+/* String functions. */
+
+/* Return a pointer to a string containing a description of the error
+ code in the error value ERR. This function is not thread-safe. */
+const char *gpg_strerror (gpg_error_t err);
+
+/* Return the error string for ERR in the user-supplied buffer BUF of
+ size BUFLEN. This function is, in contrast to gpg_strerror,
+ thread-safe if a thread-safe strerror_r() function is provided by
+ the system. If the function succeeds, 0 is returned and BUF
+ contains the string describing the error. If the buffer was not
+ large enough, ERANGE is returned and BUF contains as much of the
+ beginning of the error string as fits into the buffer. */
+int gpg_strerror_r (gpg_error_t err, char *buf, size_t buflen);
+
+/* Return a pointer to a string containing a description of the error
+ source in the error value ERR. */
+const char *gpg_strsource (gpg_error_t err);
+
+
+/* Mapping of system errors (errno). */
+
+/* Retrieve the error code for the system error ERR. This returns
+ GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report
+ this). */
+gpg_err_code_t gpg_err_code_from_errno (int err);
+
+
+/* Retrieve the system error for the error code CODE. This returns 0
+ if CODE is not a system error code. */
+int gpg_err_code_to_errno (gpg_err_code_t code);
+
+
+/* Retrieve the error code directly from the ERRNO variable. This
+ returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped
+ (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */
+gpg_err_code_t gpg_err_code_from_syserror (void);
+
+
+/* Set the ERRNO variable. This function is the preferred way to set
+ ERRNO due to peculiarities on WindowsCE. */
+void gpg_err_set_errno (int err);
+
+/* Decide whether to use the format_arg attribute. */
+#if _GPG_ERR_GCC_VERSION > 20800
+# define _GPG_ERR_ATTR_FORMAT_ARG(a) __attribute__ ((__format_arg__ (a)))
+#else
+# define _GPG_ERR_ATTR_FORMAT_ARG(a)
+#endif
+
+/* A lean gettext implementation based on GNU style mo files which are
+ required to be encoded in UTF-8. There is a limit on 65534 entries
+ to save some RAM. Only Germanic plural rules are supported. */
+const char *_gpg_w32_bindtextdomain (const char *domainname,
+ const char *dirname);
+const char *_gpg_w32_textdomain (const char *domainname);
+const char *_gpg_w32_gettext (const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (1);
+const char *_gpg_w32_dgettext (const char *domainname, const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (2);
+const char *_gpg_w32_dngettext (const char *domainname, const char *msgid1,
+ const char *msgid2, unsigned long int n)
+ _GPG_ERR_ATTR_FORMAT_ARG (2) _GPG_ERR_ATTR_FORMAT_ARG (3);
+const char *_gpg_w32_gettext_localename (void);
+int _gpg_w32_gettext_use_utf8 (int value);
+
+#ifdef GPG_ERR_ENABLE_GETTEXT_MACROS
+# define bindtextdomain(a,b) _gpg_w32_bindtextdomain ((a), (b))
+# define textdomain(a) _gpg_w32_textdomain ((a))
+# define gettext(a) _gpg_w32_gettext ((a))
+# define dgettext(a,b) _gpg_w32_dgettext ((a), (b))
+# define ngettext(a,b,c) _gpg_w32_dngettext (NULL, (a), (b), (c))
+# define dngettext(a,b,c,d) _gpg_w32_dngettext ((a), (b), (c), (d))
+# define gettext_localename() _gpg_w32_gettext_localename ()
+# define gettext_use_utf8(a) _gpg_w32_gettext_use_utf8 (a)
+#endif /*GPG_ERR_ENABLE_GETTEXT_MACROS*/
+
+
+
+/* Self-documenting convenience functions. */
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_err_make_from_errno (gpg_err_source_t source, int err)
+{
+ return gpg_err_make (source, gpg_err_code_from_errno (err));
+}
+
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error_from_errno (int err)
+{
+ return gpg_error (gpg_err_code_from_errno (err));
+}
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error_from_syserror (void)
+{
+ return gpg_error (gpg_err_code_from_syserror ());
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* GPG_ERROR_H */
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.h.in b/plugins/MirOTR/libgpg-error-1.9/gpg-error.h.in
new file mode 100644
index 0000000000..ae1be21818
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.h.in
@@ -0,0 +1,274 @@
+/* gpg-error.h - Public interface to libgpg-error.
+ Copyright (C) 2003, 2004, 2010 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef GPG_ERROR_H
+#define GPG_ERROR_H 1
+
+#include <stddef.h>
+
+#ifdef __GNUC__
+#define GPG_ERR_INLINE __inline__
+#elif __STDC_VERSION__ >= 199901L
+#define GPG_ERR_INLINE inline
+#else
+#ifndef GPG_ERR_INLINE
+#define GPG_ERR_INLINE
+#endif
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#if 0 /* just to make Emacs auto-indent happy */
+}
+#endif
+#endif /* __cplusplus */
+
+/* The GnuPG project consists of many components. Error codes are
+ exchanged between all components. The common error codes and their
+ user-presentable descriptions are kept into a shared library to
+ allow adding new error codes and components without recompiling any
+ of the other components. The interface will not change in a
+ backward incompatible way.
+
+ An error code together with an error source build up an error
+ value. As the error value is been passed from one component to
+ another, it preserver the information about the source and nature
+ of the error.
+
+ A component of the GnuPG project can define the following macros to
+ tune the behaviour of the library:
+
+ GPG_ERR_SOURCE_DEFAULT: Define to an error source of type
+ gpg_err_source_t to make that source the default for gpg_error().
+ Otherwise GPG_ERR_SOURCE_UNKNOWN is used as default.
+
+ GPG_ERR_ENABLE_GETTEXT_MACROS: Define to provide macros to map the
+ internal gettext API to standard names. This has only an effect on
+ Windows platforms. */
+
+
+/* The error source type gpg_err_source_t.
+
+ Where as the Poo out of a welle small
+ Taketh his firste springing and his sours.
+ --Chaucer. */
+
+/* Only use free slots, never change or reorder the existing
+ entries. */
+typedef enum
+ {
+@include err-sources.h.in
+
+ /* This is one more than the largest allowed entry. */
+ GPG_ERR_SOURCE_DIM = 128
+ } gpg_err_source_t;
+
+
+/* The error code type gpg_err_code_t. */
+
+/* Only use free slots, never change or reorder the existing
+ entries. */
+typedef enum
+ {
+@include err-codes.h.in
+
+ /* The following error codes are used to map system errors. */
+#define GPG_ERR_SYSTEM_ERROR (1 << 15)
+@include errnos.in
+
+ /* This is one more than the largest allowed entry. */
+ GPG_ERR_CODE_DIM = 65536
+ } gpg_err_code_t;
+
+
+/* The error value type gpg_error_t. */
+
+/* We would really like to use bit-fields in a struct, but using
+ structs as return values can cause binary compatibility issues, in
+ particular if you want to do it effeciently (also see
+ -freg-struct-return option to GCC). */
+typedef unsigned int gpg_error_t;
+
+/* We use the lowest 16 bits of gpg_error_t for error codes. The 16th
+ bit indicates system errors. */
+#define GPG_ERR_CODE_MASK (GPG_ERR_CODE_DIM - 1)
+
+/* Bits 17 to 24 are reserved. */
+
+/* We use the upper 7 bits of gpg_error_t for error sources. */
+#define GPG_ERR_SOURCE_MASK (GPG_ERR_SOURCE_DIM - 1)
+#define GPG_ERR_SOURCE_SHIFT 24
+
+/* The highest bit is reserved. It shouldn't be used to prevent
+ potential negative numbers when transmitting error values as
+ text. */
+
+
+/* GCC feature test. */
+#undef _GPG_ERR_HAVE_CONSTRUCTOR
+#if __GNUC__
+#define _GPG_ERR_GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+
+#if _GPG_ERR_GCC_VERSION > 30100
+#define _GPG_ERR_CONSTRUCTOR __attribute__ ((__constructor__))
+#define _GPG_ERR_HAVE_CONSTRUCTOR
+#endif
+#endif
+
+#ifndef _GPG_ERR_CONSTRUCTOR
+#define _GPG_ERR_CONSTRUCTOR
+#endif
+
+
+/* Initialization function. */
+
+/* Initialize the library. This function should be run early. */
+gpg_error_t gpg_err_init (void) _GPG_ERR_CONSTRUCTOR;
+
+/* If this is defined, the library is already initialized by the
+ constructor and does not need to be initialized explicitely. */
+#undef GPG_ERR_INITIALIZED
+#ifdef _GPG_ERR_HAVE_CONSTRUCTOR
+#define GPG_ERR_INITIALIZED 1
+#endif
+
+/* See the source on how to use the deinit function; it is usually not
+ required. */
+void gpg_err_deinit (int mode);
+
+
+/* Constructor and accessor functions. */
+
+/* Construct an error value from an error code and source. Within a
+ subsystem, use gpg_error. */
+static GPG_ERR_INLINE gpg_error_t
+gpg_err_make (gpg_err_source_t source, gpg_err_code_t code)
+{
+ return code == GPG_ERR_NO_ERROR ? GPG_ERR_NO_ERROR
+ : (((source & GPG_ERR_SOURCE_MASK) << GPG_ERR_SOURCE_SHIFT)
+ | (code & GPG_ERR_CODE_MASK));
+}
+
+
+/* The user should define GPG_ERR_SOURCE_DEFAULT before including this
+ file to specify a default source for gpg_error. */
+#ifndef GPG_ERR_SOURCE_DEFAULT
+#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_UNKNOWN
+#endif
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error (gpg_err_code_t code)
+{
+ return gpg_err_make (GPG_ERR_SOURCE_DEFAULT, code);
+}
+
+
+/* Retrieve the error code from an error value. */
+static GPG_ERR_INLINE gpg_err_code_t
+gpg_err_code (gpg_error_t err)
+{
+ return (gpg_err_code_t) (err & GPG_ERR_CODE_MASK);
+}
+
+
+/* Retrieve the error source from an error value. */
+static GPG_ERR_INLINE gpg_err_source_t
+gpg_err_source (gpg_error_t err)
+{
+ return (gpg_err_source_t) ((err >> GPG_ERR_SOURCE_SHIFT)
+ & GPG_ERR_SOURCE_MASK);
+}
+
+
+/* String functions. */
+
+/* Return a pointer to a string containing a description of the error
+ code in the error value ERR. This function is not thread-safe. */
+const char *gpg_strerror (gpg_error_t err);
+
+/* Return the error string for ERR in the user-supplied buffer BUF of
+ size BUFLEN. This function is, in contrast to gpg_strerror,
+ thread-safe if a thread-safe strerror_r() function is provided by
+ the system. If the function succeeds, 0 is returned and BUF
+ contains the string describing the error. If the buffer was not
+ large enough, ERANGE is returned and BUF contains as much of the
+ beginning of the error string as fits into the buffer. */
+int gpg_strerror_r (gpg_error_t err, char *buf, size_t buflen);
+
+/* Return a pointer to a string containing a description of the error
+ source in the error value ERR. */
+const char *gpg_strsource (gpg_error_t err);
+
+
+/* Mapping of system errors (errno). */
+
+/* Retrieve the error code for the system error ERR. This returns
+ GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report
+ this). */
+gpg_err_code_t gpg_err_code_from_errno (int err);
+
+
+/* Retrieve the system error for the error code CODE. This returns 0
+ if CODE is not a system error code. */
+int gpg_err_code_to_errno (gpg_err_code_t code);
+
+
+/* Retrieve the error code directly from the ERRNO variable. This
+ returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped
+ (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */
+gpg_err_code_t gpg_err_code_from_syserror (void);
+
+
+/* Set the ERRNO variable. This function is the preferred way to set
+ ERRNO due to peculiarities on WindowsCE. */
+void gpg_err_set_errno (int err);
+
+@include extra-h.in
+
+/* Self-documenting convenience functions. */
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_err_make_from_errno (gpg_err_source_t source, int err)
+{
+ return gpg_err_make (source, gpg_err_code_from_errno (err));
+}
+
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error_from_errno (int err)
+{
+ return gpg_error (gpg_err_code_from_errno (err));
+}
+
+static GPG_ERR_INLINE gpg_error_t
+gpg_error_from_syserror (void)
+{
+ return gpg_error (gpg_err_code_from_syserror ());
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* GPG_ERROR_H */
diff --git a/plugins/MirOTR/libgpg-error-1.9/gpg-error.m4 b/plugins/MirOTR/libgpg-error-1.9/gpg-error.m4
new file mode 100644
index 0000000000..9d96d1675c
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/gpg-error.m4
@@ -0,0 +1,65 @@
+# gpg-error.m4 - autoconf macro to detect libgpg-error.
+# Copyright (C) 2002, 2003, 2004 g10 Code GmbH
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+dnl Test for libgpg-error and define GPG_ERROR_CFLAGS and GPG_ERROR_LIBS
+dnl
+AC_DEFUN([AM_PATH_GPG_ERROR],
+[ AC_ARG_WITH(gpg-error-prefix,
+ AC_HELP_STRING([--with-gpg-error-prefix=PFX],
+ [prefix where GPG Error is installed (optional)]),
+ gpg_error_config_prefix="$withval", gpg_error_config_prefix="")
+ if test x$gpg_error_config_prefix != x ; then
+ if test x${GPG_ERROR_CONFIG+set} != xset ; then
+ GPG_ERROR_CONFIG=$gpg_error_config_prefix/bin/gpg-error-config
+ fi
+ fi
+
+ AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
+ min_gpg_error_version=ifelse([$1], ,0.0,$1)
+ AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
+ ok=no
+ if test "$GPG_ERROR_CONFIG" != "no" ; then
+ req_major=`echo $min_gpg_error_version | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+ req_minor=`echo $min_gpg_error_version | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+ gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
+ major=`echo $gpg_error_config_version | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+ minor=`echo $gpg_error_config_version | \
+ sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+ if test "$major" -gt "$req_major"; then
+ ok=yes
+ else
+ if test "$major" -eq "$req_major"; then
+ if test "$minor" -ge "$req_minor"; then
+ ok=yes
+ fi
+ fi
+ fi
+ fi
+ if test $ok = yes; then
+ GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
+ GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
+ AC_MSG_RESULT([yes ($gpg_error_config_version)])
+ ifelse([$2], , :, [$2])
+ else
+ GPG_ERROR_CFLAGS=""
+ GPG_ERROR_LIBS=""
+ AC_MSG_RESULT(no)
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GPG_ERROR_CFLAGS)
+ AC_SUBST(GPG_ERROR_LIBS)
+])
+
diff --git a/plugins/MirOTR/libgpg-error-1.9/init.c b/plugins/MirOTR/libgpg-error-1.9/init.c
new file mode 100644
index 0000000000..d30435a2ce
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/init.c
@@ -0,0 +1,399 @@
+/* init.c - Initialize the GnuPG error library.
+ Copyright (C) 2005, 2010 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <gpg-error.h>
+
+#include "gettext.h"
+#include "init.h"
+
+#ifdef HAVE_W32CE_SYSTEM
+# include "mkw32errmap.map.c" /* Generated map_w32codes () */
+#endif
+
+
+/* Locale directory support. */
+
+#if HAVE_W32_SYSTEM
+
+#include <windows.h>
+
+static int tls_index = TLS_OUT_OF_INDEXES; /* Index for the TLS functions. */
+
+static char *get_locale_dir (void);
+static void drop_locale_dir (char *locale_dir);
+
+#else /*!HAVE_W32_SYSTEM*/
+
+#define get_locale_dir() LOCALEDIR
+#define drop_locale_dir(dir)
+
+#endif /*!HAVE_W32_SYSTEM*/
+
+
+static void
+real_init (void)
+{
+#ifdef ENABLE_NLS
+ char *locale_dir;
+
+ /* We only have to bind our locale directory to our text domain. */
+ locale_dir = get_locale_dir ();
+ if (locale_dir)
+ {
+ bindtextdomain (PACKAGE, locale_dir);
+ drop_locale_dir (locale_dir);
+ }
+#endif
+}
+
+/* Initialize the library. This function should be run early. */
+gpg_error_t
+gpg_err_init (void)
+{
+#ifdef HAVE_W32_SYSTEM
+# ifdef DLL_EXPORT
+ /* We always have a constructor and thus this function is called
+ automatically. Due to the way the C init code of mingw works,
+ the constructors are called before our DllMain function is
+ called. The problem with that is that the TLS has not been setup
+ and w32-gettext.c requires TLS. To solve this we do nothing here
+ but call the actual init code from our DllMain. */
+# else /*!DLL_EXPORT*/
+ /* Note that if the TLS is actually used, we can't release the TLS
+ as there is no way to know when a thread terminates (i.e. no
+ thread-specific-atexit). You are really better off to use the
+ DLL! */
+ if (tls_index == TLS_OUT_OF_INDEXES)
+ {
+ tls_index = TlsAlloc ();
+ if (tls_index == TLS_OUT_OF_INDEXES)
+ {
+ /* No way to continue - commit suicide. */
+ abort ();
+ }
+ real_init ();
+ }
+# endif /*!DLL_EXPORT*/
+#else
+ real_init ();
+#endif
+ return 0;
+}
+
+
+/* Deinitialize libgpg-error. This function is only used in special
+ circumstances. No gpg-error function should be used after this
+ function has been called. A value of 0 passed for MODE
+ deinitializes the entire libgpg-error, a value of 1 releases
+ resources allocated for the current thread and only that thread may
+ not anymore access libgpg-error after such a call. Under Windows
+ this function may be called from the DllMain function of a DLL
+ which statically links to libgpg-error. */
+void
+gpg_err_deinit (int mode)
+{
+#if defined (HAVE_W32_SYSTEM) && !defined(DLL_EXPORT)
+ struct tls_space_s *tls;
+
+ tls = TlsGetValue (tls_index);
+ if (tls)
+ {
+ TlsSetValue (tls_index, NULL);
+ LocalFree (tls);
+ }
+
+ if (mode == 0)
+ {
+ TlsFree (tls_index);
+ tls_index = TLS_OUT_OF_INDEXES;
+ }
+#else
+ (void)mode;
+#endif
+}
+
+
+
+#ifdef HAVE_W32_SYSTEM
+
+/* Return a malloced string encoded in UTF-8 from the wide char input
+ string STRING. Caller must free this value. Returns NULL on
+ failure. Caller may use GetLastError to get the actual error
+ number. The result of calling this function with STRING set to
+ NULL is not defined. */
+static char *
+wchar_to_utf8 (const wchar_t *string)
+{
+ int n;
+ char *result;
+
+ /* Note, that CP_UTF8 is not defined in Windows versions earlier
+ than NT. */
+ n = WideCharToMultiByte (CP_UTF8, 0, string, -1, NULL, 0, NULL, NULL);
+ if (n < 0)
+ return NULL;
+
+ result = malloc (n+1);
+ if (result)
+ {
+ n = WideCharToMultiByte (CP_UTF8, 0, string, -1, result, n, NULL, NULL);
+ if (n < 0)
+ {
+ free (result);
+ result = NULL;
+ }
+ }
+ return result;
+}
+
+
+/* Return a malloced wide char string from an UTF-8 encoded input
+ string STRING. Caller must free this value. Returns NULL on
+ failure. Caller may use GetLastError to get the actual error
+ number. The result of calling this function with STRING set to
+ NULL is not defined. */
+static wchar_t *
+utf8_to_wchar (const char *string)
+{
+ int n;
+ wchar_t *result;
+
+ n = MultiByteToWideChar (CP_UTF8, 0, string, -1, NULL, 0);
+ if (n < 0)
+ return NULL;
+
+ result = malloc ((n+1) * sizeof *result);
+ if (result)
+ {
+ n = MultiByteToWideChar (CP_UTF8, 0, string, -1, result, n);
+ if (n < 0)
+ {
+ free (result);
+ result = NULL;
+ }
+ return NULL;
+ }
+ return result;
+}
+
+
+static char *
+get_locale_dir (void)
+{
+ static wchar_t moddir[MAX_PATH+5];
+ char *result, *p;
+ int nbytes;
+
+ if (!GetModuleFileNameW (NULL, moddir, MAX_PATH))
+ *moddir = 0;
+
+#define SLDIR "\\share\\locale"
+ if (*moddir)
+ {
+ nbytes = WideCharToMultiByte (CP_UTF8, 0, moddir, -1, NULL, 0, NULL, NULL);
+ if (nbytes < 0)
+ return NULL;
+
+ result = malloc (nbytes + strlen (SLDIR) + 1);
+ if (result)
+ {
+ nbytes = WideCharToMultiByte (CP_UTF8, 0, moddir, -1,
+ result, nbytes, NULL, NULL);
+ if (nbytes < 0)
+ {
+ free (result);
+ result = NULL;
+ }
+ else
+ {
+ p = strrchr (result, '\\');
+ if (p)
+ *p = 0;
+ strcat (result, SLDIR);
+ }
+ }
+ }
+ else /* Use the old default value. */
+ {
+ result = malloc (10 + strlen (SLDIR) + 1);
+ if (result)
+ {
+ strcpy (result, "c:\\gnupg");
+ strcat (result, SLDIR);
+ }
+ }
+#undef SLDIR
+ return result;
+}
+
+
+static void
+drop_locale_dir (char *locale_dir)
+{
+ free (locale_dir);
+}
+
+
+/* Return the tls object. This function is guaranteed to return a
+ valid non-NULL object. */
+struct tls_space_s *
+get_tls (void)
+{
+ struct tls_space_s *tls;
+
+ tls = TlsGetValue (tls_index);
+ if (!tls)
+ {
+ /* Called by a thread which existed before this DLL was loaded.
+ Allocate the space. */
+ tls = LocalAlloc (LPTR, sizeof *tls);
+ if (!tls)
+ {
+ /* No way to continue - commit suicide. */
+ abort ();
+ }
+ tls->gt_use_utf8 = 0;
+ TlsSetValue (tls_index, tls);
+ }
+
+ return tls;
+}
+
+
+/* Return the value of the ERRNO variable. This needs to be a
+ function so that we can have a per-thread ERRNO. This is used only
+ on WindowsCE because that OS misses an errno. */
+#ifdef HAVE_W32CE_SYSTEM
+int
+_gpg_w32ce_get_errno (void)
+{
+ return map_w32codes ( GetLastError () );
+}
+#endif /*HAVE_W32CE_SYSTEM*/
+
+
+/* Replacement strerror function for WindowsCE. */
+#ifdef HAVE_W32CE_SYSTEM
+char *
+_gpg_w32ce_strerror (int err)
+{
+ struct tls_space_s *tls = get_tls ();
+ wchar_t tmpbuf[STRBUFFER_SIZE];
+ int n;
+
+ if (err == -1)
+ err = _gpg_w32ce_get_errno ();
+ if (FormatMessageW (FORMAT_MESSAGE_FROM_SYSTEM, NULL, err,
+ MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
+ tmpbuf, STRBUFFER_SIZE -1,
+ NULL))
+ {
+ n = WideCharToMultiByte (CP_UTF8, 0, tmpbuf, -1,
+ tls->strerror_buffer,
+ sizeof tls->strerror_buffer -1,
+ NULL, NULL);
+ }
+ else
+ n = -1;
+
+ if (n < 0)
+ snprintf (tls->strerror_buffer, sizeof tls->strerror_buffer -1,
+ "[w32err=%d]", err);
+ return tls->strerror_buffer;
+}
+#endif /*HAVE_W32CE_SYSTEM*/
+
+
+void
+gpg_err_set_errno (int err)
+{
+#ifdef HAVE_W32CE_SYSTEM
+ SetLastError (err);
+#else /*!HAVE_W32CE_SYSTEM*/
+ errno = err;
+#endif /*!HAVE_W32CE_SYSTEM*/
+}
+
+
+/* Entry point called by the DLL loader. */
+#ifdef DLL_EXPORT
+int WINAPI
+DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserved)
+{
+ struct tls_space_s *tls;
+ (void)reserved;
+
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ tls_index = TlsAlloc ();
+ if (tls_index == TLS_OUT_OF_INDEXES)
+ return FALSE;
+ /* falltru. */
+ case DLL_THREAD_ATTACH:
+ tls = LocalAlloc (LPTR, sizeof *tls);
+ if (!tls)
+ return FALSE;
+ tls->gt_use_utf8 = 0;
+ TlsSetValue (tls_index, tls);
+ if (reason == DLL_PROCESS_ATTACH)
+ {
+ real_init ();
+ }
+ break;
+
+ case DLL_THREAD_DETACH:
+ tls = TlsGetValue (tls_index);
+ if (tls)
+ LocalFree (tls);
+ break;
+
+ case DLL_PROCESS_DETACH:
+ tls = TlsGetValue (tls_index);
+ if (tls)
+ LocalFree (tls);
+ TlsFree (tls_index);
+ break;
+
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+#endif /*DLL_EXPORT*/
+
+#else /*!HAVE_W32_SYSTEM*/
+
+void
+gpg_err_set_errno (int err)
+{
+ errno = err;
+}
+
+#endif /*!HAVE_W32_SYSTEM*/
diff --git a/plugins/MirOTR/libgpg-error-1.9/init.h b/plugins/MirOTR/libgpg-error-1.9/init.h
new file mode 100644
index 0000000000..0fa27be4d2
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/init.h
@@ -0,0 +1,65 @@
+/* init.h - Declarations for init.c
+ Copyright (C) 2010 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef INIT_H
+#define INIT_H
+
+#if HAVE_W32_SYSTEM
+
+/* Forward declaration - defined in w32-gettext.c. */
+struct loaded_domain;
+
+/* An item for a linked list of loaded domains. */
+struct domainlist_s
+{
+ struct domainlist_s *next;
+ char *dname; /* Directory name for the mo file. */
+ char *fname; /* File name for the MO file. */
+ int load_failed; /* True if loading the domain failed. */
+ struct loaded_domain *domain; /* NULL if not loaded. Never changed
+ once set to non-NULL. */
+ char name[1]; /* Name of the domain. Never changed
+ once set. */
+};
+
+
+
+/* 119 bytes for an error message should be enough. With this size we
+ can assume that the allocation does not take up more than 128 bytes
+ per thread. Note that this is only used for W32CE. */
+#define STRBUFFER_SIZE 120
+
+/* The TLS space definition. */
+struct tls_space_s
+{
+ /* Flag used by w32-gettext. */
+ int gt_use_utf8;
+
+#ifdef HAVE_W32CE_SYSTEM
+ char strerror_buffer[STRBUFFER_SIZE];
+#endif
+};
+
+/* Return the TLS. */
+struct tls_space_s *get_tls (void);
+
+
+#endif /*HAVE_W32_SYSTEM*/
+
+#endif /*INIT_H*/
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.awk b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.awk
new file mode 100644
index 0000000000..46d436c6b0
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.awk
@@ -0,0 +1,99 @@
+# mkerrcodes.awk
+# Copyright (C) 2004, 2005 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkerrcodes.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkerrcodes.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkerrcodes.awk program.
+#
+# Certain portions of the mkerrcodes.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkerrcodes.awk. We call these the "data" portions. The rest of the
+# mkerrcodes.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkerrcodes.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkerrcodes.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkerrcodes.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs an intermediate file that contains the following output:
+# static struct
+# {
+# int err;
+# const char *err_sym;
+# } err_table[] =
+# {
+# { 7, "GPG_ERR_E2BIG" },
+# [...]
+# };
+#
+# The input file is a list of possible system errors, followed by a GPG_ERR_* name:
+#
+# 7 GPG_ERR_E2BIG
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace.
+
+BEGIN {
+ FS="[ \t]+GPG_ERR_";
+ print "/* Output of mkerrcodes.awk. DO NOT EDIT. */";
+ print "";
+ header = 1;
+}
+
+/^#/ { next; }
+
+header {
+ if (! /^[ \t]*$/)
+ {
+ header = 0;
+
+ print "static struct";
+ print " {";
+ print " int err;";
+ print " const char *err_sym;";
+ print " } err_table[] = ";
+ print "{";
+ }
+ else
+ print;
+}
+
+!header {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ print " { " $1 ", \"GPG_ERR_" $2 "\" },";
+}
+
+END {
+ print "};";
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.c b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.c
new file mode 100644
index 0000000000..29c1cc270b
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.c
@@ -0,0 +1,78 @@
+/* mkerrcodes.c - Generate list of system error values.
+ Copyright (C) 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+/* This file must not include config.h, as that is for the host
+ system, while this file will be run on the build system. */
+
+#include <stdio.h>
+
+#include "mkerrcodes.h"
+
+static const char header[] =
+"/* errnos.h - List of system error values.\n"
+" Copyright (C) 2004 g10 Code GmbH\n"
+" This file is part of libgpg-error.\n"
+"\n"
+" libgpg-error is free software; you can redistribute it and/or\n"
+" modify it under the terms of the GNU Lesser General Public License\n"
+" as published by the Free Software Foundation; either version 2.1 of\n"
+" the License, or (at your option) any later version.\n"
+"\n"
+" libgpg-error is distributed in the hope that it will be useful, but\n"
+" WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+" Lesser General Public License for more details.\n"
+"\n"
+" You should have received a copy of the GNU Lesser General Public\n"
+" License along with libgpg-error; if not, write to the Free\n"
+" Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA\n"
+" 02111-1307, USA. */\n"
+"\n";
+
+int
+main (int argc, char **argv)
+{
+ int sorted;
+ int i;
+
+ printf ("%s", header);
+ do
+ {
+ sorted = 1;
+ for (i = 0; i < sizeof (err_table) / sizeof (err_table[0]) - 1; i++)
+ if (err_table[i].err > err_table[i + 1].err)
+ {
+ int err = err_table[i].err;
+ const char *err_sym = err_table[i].err_sym;
+
+ err_table[i].err = err_table[i + 1].err;
+ err_table[i].err_sym = err_table[i + 1].err_sym;
+ err_table[i + 1].err = err;
+ err_table[i + 1].err_sym = err_sym;
+ sorted = 0;
+ }
+ }
+ while (!sorted);
+
+ for (i = 0; i < sizeof (err_table) / sizeof (err_table[0]); i++)
+ printf ("%i\t%s\n", err_table[i].err, err_table[i].err_sym);
+
+ return 0;
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.exe b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.exe
new file mode 100644
index 0000000000..e8ea336f01
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.exe
Binary files differ
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.h b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.h
new file mode 100644
index 0000000000..b9bc07bbc5
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes.h
@@ -0,0 +1,91 @@
+/* Output of mkerrcodes.awk. DO NOT EDIT. */
+
+static struct
+ {
+ int err;
+ const char *err_sym;
+ } err_table[] =
+{
+ { 7, "GPG_ERR_E2BIG" },
+ { 13, "GPG_ERR_EACCES" },
+ { 10013L, "GPG_ERR_EACCES" },
+ { 10048L, "GPG_ERR_EADDRINUSE" },
+ { 10049L, "GPG_ERR_EADDRNOTAVAIL" },
+ { 10047L, "GPG_ERR_EAFNOSUPPORT" },
+ { 11, "GPG_ERR_EAGAIN" },
+ { 10037L, "GPG_ERR_EALREADY" },
+ { 9, "GPG_ERR_EBADF" },
+ { 10009L, "GPG_ERR_EBADF" },
+ { 16, "GPG_ERR_EBUSY" },
+ { 10, "GPG_ERR_ECHILD" },
+ { 10053L, "GPG_ERR_ECONNABORTED" },
+ { 10061L, "GPG_ERR_ECONNREFUSED" },
+ { 10054L, "GPG_ERR_ECONNRESET" },
+ { 36, "GPG_ERR_EDEADLK" },
+ { 36, "GPG_ERR_EDEADLOCK" },
+ { 10039L, "GPG_ERR_EDESTADDRREQ" },
+ { 33, "GPG_ERR_EDOM" },
+ { 10069L, "GPG_ERR_EDQUOT" },
+ { 17, "GPG_ERR_EEXIST" },
+ { 14, "GPG_ERR_EFAULT" },
+ { 10014L, "GPG_ERR_EFAULT" },
+ { 27, "GPG_ERR_EFBIG" },
+ { 10064L, "GPG_ERR_EHOSTDOWN" },
+ { 10065L, "GPG_ERR_EHOSTUNREACH" },
+ { 42, "GPG_ERR_EILSEQ" },
+ { 10036L, "GPG_ERR_EINPROGRESS" },
+ { 4, "GPG_ERR_EINTR" },
+ { 10004L, "GPG_ERR_EINTR" },
+ { 22, "GPG_ERR_EINVAL" },
+ { 10022L, "GPG_ERR_EINVAL" },
+ { 5, "GPG_ERR_EIO" },
+ { 10056L, "GPG_ERR_EISCONN" },
+ { 21, "GPG_ERR_EISDIR" },
+ { 10062L, "GPG_ERR_ELOOP" },
+ { 24, "GPG_ERR_EMFILE" },
+ { 10024L, "GPG_ERR_EMFILE" },
+ { 31, "GPG_ERR_EMLINK" },
+ { 10040L, "GPG_ERR_EMSGSIZE" },
+ { 38, "GPG_ERR_ENAMETOOLONG" },
+ { 10063L, "GPG_ERR_ENAMETOOLONG" },
+ { 10050L, "GPG_ERR_ENETDOWN" },
+ { 10052L, "GPG_ERR_ENETRESET" },
+ { 10051L, "GPG_ERR_ENETUNREACH" },
+ { 23, "GPG_ERR_ENFILE" },
+ { 10055L, "GPG_ERR_ENOBUFS" },
+ { 19, "GPG_ERR_ENODEV" },
+ { 2, "GPG_ERR_ENOENT" },
+ { 8, "GPG_ERR_ENOEXEC" },
+ { 39, "GPG_ERR_ENOLCK" },
+ { 12, "GPG_ERR_ENOMEM" },
+ { 10042L, "GPG_ERR_ENOPROTOOPT" },
+ { 28, "GPG_ERR_ENOSPC" },
+ { 40, "GPG_ERR_ENOSYS" },
+ { 10057L, "GPG_ERR_ENOTCONN" },
+ { 20, "GPG_ERR_ENOTDIR" },
+ { 41, "GPG_ERR_ENOTEMPTY" },
+ { 10066L, "GPG_ERR_ENOTEMPTY" },
+ { 10038L, "GPG_ERR_ENOTSOCK" },
+ { 25, "GPG_ERR_ENOTTY" },
+ { 6, "GPG_ERR_ENXIO" },
+ { 10045L, "GPG_ERR_EOPNOTSUPP" },
+ { 1, "GPG_ERR_EPERM" },
+ { 10046L, "GPG_ERR_EPFNOSUPPORT" },
+ { 32, "GPG_ERR_EPIPE" },
+ { 10067L, "GPG_ERR_EPROCLIM" },
+ { 10043L, "GPG_ERR_EPROTONOSUPPORT" },
+ { 10041L, "GPG_ERR_EPROTOTYPE" },
+ { 34, "GPG_ERR_ERANGE" },
+ { 10071L, "GPG_ERR_EREMOTE" },
+ { 30, "GPG_ERR_EROFS" },
+ { 10058L, "GPG_ERR_ESHUTDOWN" },
+ { 10044L, "GPG_ERR_ESOCKTNOSUPPORT" },
+ { 29, "GPG_ERR_ESPIPE" },
+ { 3, "GPG_ERR_ESRCH" },
+ { 10070L, "GPG_ERR_ESTALE" },
+ { 10060L, "GPG_ERR_ETIMEDOUT" },
+ { 10059L, "GPG_ERR_ETOOMANYREFS" },
+ { 10068L, "GPG_ERR_EUSERS" },
+ { 10035L, "GPG_ERR_EWOULDBLOCK" },
+ { 18, "GPG_ERR_EXDEV" },
+};
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes1.awk b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes1.awk
new file mode 100644
index 0000000000..a771a73602
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes1.awk
@@ -0,0 +1,96 @@
+# mkerrcodes.awk
+# Copyright (C) 2003, 2004 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkerrcodes.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkerrcodes.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkerrcodes.awk program.
+#
+# Certain portions of the mkerrcodes.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkerrcodes.awk. We call these the "data" portions. The rest of the
+# mkerrcodes.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkerrcodes.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkerrcodes.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkerrcodes.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs an intermediate file that contains the following block
+# for each error value symbol in the input file (example for EINVAL):
+#
+# #ifdef EINVAL
+# EINVAL GPG_ERR_EINVAL
+# #endif
+#
+# The input file is a list of possible system errors in the column errnoidx
+# (defaults to 2).
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace.
+
+BEGIN {
+ FS="[\t]+";
+ header = 1;
+ if (errnoidx == 0)
+ errnoidx = 2;
+
+ print "/* Output of mkerrcodes.awk. DO NOT EDIT. */";
+ print "";
+}
+
+/^#/ { next; }
+
+header {
+ if ($1 ~ /^[0-9]/)
+ {
+ print "#include <errno.h>";
+ print "#ifdef _WIN32";
+ print "#include <winsock2.h>";
+ print "#endif";
+ print "";
+ header = 0;
+ }
+ else
+ print;
+}
+
+!header {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ print "#ifdef " $errnoidx;
+ print $errnoidx "\tGPG_ERR_" $errnoidx;
+ print "#endif";
+ print "#ifdef WSA" $errnoidx;
+ print "WSA" $errnoidx "\tGPG_ERR_" $errnoidx;
+ print "#endif";
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrcodes2.awk b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes2.awk
new file mode 100644
index 0000000000..ea5850341c
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrcodes2.awk
@@ -0,0 +1,134 @@
+# mkstrtable.awk
+# Copyright (C) 2003 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkerrcodes2.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkerrcodes2.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkerrcodes2.awk program.
+#
+# Certain portions of the mkerrcodes2.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkerrcodes2.awk. We call these the "data" portions. The rest of the
+# mkerrcodes2.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkstrtable.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkerrcodes2.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkerrcodes2.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs a source file that does define the following
+# symbols:
+#
+# static const char msgstr[];
+# A string containing all messages in the list.
+#
+# static const int msgidx[];
+# A list of index numbers, one for each message, that points to the
+# beginning of the string in msgstr.
+#
+# msgidxof (code);
+# A macro that maps code numbers to idx numbers. If a DEFAULT MESSAGE
+# is provided (see below), its index will be returned for unknown codes.
+# Otherwise -1 is returned for codes that do not appear in the list.
+# You can lookup the message with code CODE with:
+# msgstr + msgidx[msgidxof (code)].
+#
+# The input file has the following format:
+# CODE1 MESSAGE1 (Code number, <tab>, message string)
+# CODE2 MESSAGE2 (Code number, <tab>, message string)
+# ...
+# CODEn MESSAGEn (Code number, <tab>, message string)
+# DEFAULT MESSAGE (<tab>, fall-back message string)
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace. The last line is optional; if no DEFAULT
+# MESSAGE is given, msgidxof will return the number -1 for unknown
+# index numbers.
+
+BEGIN {
+# msg holds the number of messages.
+ msg = 0;
+ print "/* Output of mkerrcodes2.awk. DO NOT EDIT. */";
+ print "";
+ header = 1;
+}
+
+/^#/ { next; }
+
+header {
+ if ($1 ~ /^[0123456789]+$/)
+ {
+ print "static const int err_code_from_index[] = {";
+ header = 0;
+ }
+ else
+ print;
+}
+
+!header {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+# Print the string msgstr line by line. We delay output by one line to be able
+# to treat the last line differently (see END).
+ print " " $2 ",";
+
+# Remember the error value and index of each error code.
+ code[msg] = $1;
+ pos[msg] = $2;
+ msg++;
+}
+END {
+ print "};";
+ print "";
+ print "#define errno_to_idx(code) (0 ? -1 \\";
+
+# Gather the ranges.
+ skip = code[0];
+ start = code[0];
+ stop = code[0];
+ for (i = 1; i < msg; i++)
+ {
+ if (code[i] == stop + 1)
+ stop++;
+ else
+ {
+ print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+ skip ") \\";
+ skip += code[i] - stop - 1;
+ start = code[i];
+ stop = code[i];
+ }
+ }
+ print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+ skip ") \\";
+ print " : -1)";
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkerrnos.awk b/plugins/MirOTR/libgpg-error-1.9/mkerrnos.awk
new file mode 100644
index 0000000000..f79df6613a
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkerrnos.awk
@@ -0,0 +1,104 @@
+# mkerrnos.awk
+# Copyright (C) 2003, 2004 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkerrnos.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkerrnos.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkerrnos.awk program.
+#
+# Certain portions of the mkerrnos.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkerrnos.awk. We call these the "data" portions. The rest of the
+# mkerrnos.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkerrnos.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkerrnos.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkerrnos.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs a source file that does define the following
+# symbols:
+#
+# static const int err_code_to_errno[];
+# A mapping of gpg_err_code_t numbers to system errno. The index of an
+# error code in the table can be obtained after removing the system error
+# code indication bit.
+#
+# The input file is a list of possible system errors in the column errnoidx
+# (defaults to 2).
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace.
+
+BEGIN {
+ FS="[\t]+";
+ header = 1;
+ if (errnoidx == 0)
+ errnoidx = 2;
+
+ print "/* Output of mkerrnos.awk. DO NOT EDIT. */";
+ print "";
+}
+
+/^#/ { next; }
+
+header {
+ if ($1 ~ /^[0-9]/)
+ {
+ print "#include <errno.h>";
+ print "#ifdef _WIN32";
+ print "#include <winsock2.h>";
+ print "#endif";
+ print "";
+ print "static const int err_code_to_errno [] = {";
+ header = 0;
+ }
+ else
+ print;
+}
+
+!header {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ print "#ifdef " $errnoidx;
+ print " " $errnoidx ",";
+ print "#else";
+ print "#ifdef WSA" $errnoidx;
+ print " WSA" $errnoidx ",";
+ print "#else";
+ print " 0,";
+ print "#endif";
+ print "#endif";
+}
+END {
+ print "};";
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkheader.awk b/plugins/MirOTR/libgpg-error-1.9/mkheader.awk
new file mode 100644
index 0000000000..0ff08f98eb
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkheader.awk
@@ -0,0 +1,218 @@
+# mkheader.awk
+# Copyright (C) 2003, 2004 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkheader.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkheader.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkheader.awk program.
+#
+# Certain portions of the mkheader.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkheader.awk. We call these the "data" portions. The rest of the
+# mkheader.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkheader.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkheader.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkheader.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script processes gpg-error.h.in in an awful way.
+# Its input is, one after another, the content of the err-sources.h.in file,
+# the err-codes.h.in file, the errnos.in file, and then gpg-error.h.in.
+# There is nothing fancy about this.
+#
+# An alternative would be to use getline to get the content of the first three files,
+# but then we need to pre-process gpg-error.h.in with configure to get
+# at the full path of the files in @srcdir@.
+
+BEGIN {
+ FS = "[\t]+";
+# sources_nr holds the number of error sources.
+ sources_nr = 0;
+# codes_nr holds the number of error codes.
+ codes_nr = 0;
+# errnos_nr holds the number of system errors.
+ errnos_nr = 0;
+# extra_nr holds the number of extra lines to be included.
+ extra_nr = 0
+
+# These variables walk us through our input.
+ sources_header = 1;
+ sources_body = 0;
+ between_sources_and_codes = 0;
+ codes_body = 0;
+ between_codes_and_errnos = 0;
+ errnos_body = 0;
+ extra_body = 0;
+ gpg_error_h = 0;
+
+ print "/* Output of mkheader.awk. DO NOT EDIT. -*- buffer-read-only: t -*- */";
+ print "";
+
+}
+
+
+sources_header {
+ if ($1 ~ /^[0123456789]+$/)
+ {
+ sources_header = 0;
+ sources_body = 1;
+ }
+}
+
+sources_body {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ if ($1 == "")
+ {
+ sources_body = 0;
+ between_sources_and_codes = 1;
+ }
+ else
+ {
+# Remember the error source number and symbol of each error source.
+ sources_idx[sources_nr] = $1;
+ sources_sym[sources_nr] = $2;
+ sources_nr++;
+ }
+}
+
+between_sources_and_codes {
+ if ($1 ~ /^[0123456789]+$/)
+ {
+ between_sources_and_codes = 0;
+ codes_body = 1;
+ }
+}
+
+codes_body {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ if ($1 == "")
+ {
+ codes_body = 0;
+ between_codes_and_errnos = 1;
+ }
+ else
+ {
+# Remember the error code number and symbol of each error source.
+ codes_idx[codes_nr] = $1;
+ codes_sym[codes_nr] = $2;
+ codes_nr++;
+ }
+}
+
+between_codes_and_errnos {
+ if ($1 ~ /^[0-9]/)
+ {
+ between_codes_and_errnos = 0;
+ errnos_body = 1;
+ }
+}
+
+errnos_body {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+ if ($1 !~ /^[0-9]/)
+ {
+# Note that this assumes that extra_body.in doesn't start with a digit.
+ errnos_body = 0;
+ extra_body = 1;
+ }
+ else
+ {
+ errnos_idx[errnos_nr] = "GPG_ERR_SYSTEM_ERROR | " $1;
+ errnos_sym[errnos_nr] = "GPG_ERR_" $2;
+ errnos_nr++;
+ }
+}
+
+extra_body {
+ if (/^##/)
+ next
+
+ if (/^EOF/)
+ {
+ extra_body = 0;
+ gpg_error_h = 1;
+ next;
+ }
+ else
+ {
+ extra_line[extra_nr] = $0;
+ extra_nr++;
+ }
+}
+
+gpg_error_h {
+ if ($0 ~ /^@include err-sources/)
+ {
+ for (i = 0; i < sources_nr; i++)
+ {
+ print " " sources_sym[i] " = " sources_idx[i] ",";
+# print "#define " sources_sym[i] " (" sources_idx[i] ")";
+ }
+ }
+ else if ($0 ~ /^@include err-codes/)
+ {
+ for (i = 0; i < codes_nr; i++)
+ {
+ print " " codes_sym[i] " = " codes_idx[i] ",";
+# print "#define " codes_sym[i] " (" codes_idx[i] ")";
+ }
+ }
+ else if ($0 ~ /^@include errnos/)
+ {
+ for (i = 0; i < errnos_nr; i++)
+ {
+ print " " errnos_sym[i] " = " errnos_idx[i] ",";
+# print "#define " errnos_sym[i] " (" errnos_idx[i] ")";
+ }
+ }
+ else if ($0 ~ /^@include extra-h.in/)
+ {
+ for (i = 0; i < extra_nr; i++)
+ {
+ print extra_line[i];
+ }
+ }
+ else
+ print;
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkstrtable.awk b/plugins/MirOTR/libgpg-error-1.9/mkstrtable.awk
new file mode 100644
index 0000000000..d97e150489
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkstrtable.awk
@@ -0,0 +1,189 @@
+# mkstrtable.awk
+# Copyright (C) 2003, 2004, 2008 g10 Code GmbH
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+#
+# As a special exception, g10 Code GmbH gives unlimited permission to
+# copy, distribute and modify the C source files that are the output
+# of mkstrtable.awk. You need not follow the terms of the GNU General
+# Public License when using or distributing such scripts, even though
+# portions of the text of mkstrtable.awk appear in them. The GNU
+# General Public License (GPL) does govern all other use of the material
+# that constitutes the mkstrtable.awk program.
+#
+# Certain portions of the mkstrtable.awk source text are designed to be
+# copied (in certain cases, depending on the input) into the output of
+# mkstrtable.awk. We call these the "data" portions. The rest of the
+# mkstrtable.awk source text consists of comments plus executable code
+# that decides which of the data portions to output in any given case.
+# We call these comments and executable code the "non-data" portions.
+# mkstrtable.h never copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of mkstrtable.awk
+# released by g10 Code GmbH. When you make and distribute a modified version
+# of mkstrtable.awk, you may extend this special exception to the GPL to
+# apply to your modified version as well, *unless* your modified version
+# has the potential to copy into its output some of the text that was the
+# non-data portion of the version that you started with. (In other words,
+# unless your change moves or copies text from the non-data portions to the
+# data portions.) If your modification has such potential, you must delete
+# any notice of this special exception to the GPL from your modified version.
+
+# This script outputs a source file that does define the following
+# symbols:
+#
+# static const char msgstr[];
+# A string containing all messages in the list.
+#
+# static const int msgidx[];
+# A list of index numbers, one for each message, that points to the
+# beginning of the string in msgstr.
+#
+# msgidxof (code);
+# A macro that maps code numbers to idx numbers. If a DEFAULT MESSAGE
+# is provided (see below), its index will be returned for unknown codes.
+# Otherwise -1 is returned for codes that do not appear in the list.
+# You can lookup the message with code CODE with:
+# msgstr + msgidx[msgidxof (code)].
+#
+# The input file has the following format:
+# CODE1 ... MESSAGE1 (code nr, <tab>, something, <tab>, msg)
+# CODE2 ... MESSAGE2 (code nr, <tab>, something, <tab>, msg)
+# ...
+# CODEn ... MESSAGEn (code nr, <tab>, something, <tab>, msg)
+# ... DEFAULT-MESSAGE (<tab>, something, <tab>, fall-back msg)
+#
+# Comments (starting with # and ending at the end of the line) are removed,
+# as is trailing whitespace. The last line is optional; if no DEFAULT
+# MESSAGE is given, msgidxof will return the number -1 for unknown
+# index numbers.
+#
+# The field to be used is specified with the variable "textidx" on
+# the command line. It defaults to 2.
+#
+# The variable nogettext can be set to 1 to suppress gettext markers.
+#
+# The variable prefix can be used to prepend a string to each message.
+#
+# The variable namespace can be used to prepend a string to each
+# variable and macro name.
+
+BEGIN {
+ FS = "[\t]+";
+# cpos holds the current position in the message string.
+ cpos = 0;
+# msg holds the number of messages.
+ msg = 0;
+ print "/* Output of mkstrtable.awk. DO NOT EDIT. */";
+ print "";
+ header = 1;
+ if (textidx == 0)
+ textidx = 2;
+# nogettext can be set to 1 to suppress gettext noop markers.
+}
+
+/^#/ { next; }
+
+header {
+ if ($1 ~ /^[0123456789]+$/)
+ {
+ print "/* The purpose of this complex string table is to produce";
+ print " optimal code with a minimum of relocations. */";
+ print "";
+ print "static const char " namespace "msgstr[] = ";
+ header = 0;
+ }
+ else
+ print;
+}
+
+!header {
+ sub (/\#.+/, "");
+ sub (/[ ]+$/, ""); # Strip trailing space and tab characters.
+
+ if (/^$/)
+ next;
+
+# Print the string msgstr line by line. We delay output by one line to be able
+# to treat the last line differently (see END).
+ if (last_msgstr)
+ {
+ if (nogettext)
+ print " \"" last_msgstr "\" \"\\0\"";
+ else
+ print " gettext_noop (\"" last_msgstr "\") \"\\0\"";
+ }
+ last_msgstr = prefix $textidx;
+
+# Remember the error code and msgidx of each error message.
+ code[msg] = $1;
+ pos[msg] = cpos;
+ cpos += length (last_msgstr) + 1;
+ msg++;
+
+ if ($1 == "")
+ {
+ has_default = 1;
+ exit;
+ }
+}
+END {
+ if (has_default)
+ coded_msgs = msg - 1;
+ else
+ coded_msgs = msg;
+
+ if (nogettext)
+ print " \"" last_msgstr "\";";
+ else
+ print " gettext_noop (\"" last_msgstr "\");";
+ print "";
+ print "static const int " namespace "msgidx[] =";
+ print " {";
+ for (i = 0; i < coded_msgs; i++)
+ print " " pos[i] ",";
+ print " " pos[coded_msgs];
+ print " };";
+ print "";
+ print "static inline int";
+ print namespace "msgidxof (int code)";
+ print "{";
+ print " return (0 ? 0";
+
+# Gather the ranges.
+ skip = code[0];
+ start = code[0];
+ stop = code[0];
+ for (i = 1; i < coded_msgs; i++)
+ {
+ if (code[i] == stop + 1)
+ stop++;
+ else
+ {
+ print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+ skip ")";
+ skip += code[i] - stop - 1;
+ start = code[i];
+ stop = code[i];
+ }
+ }
+ print " : ((code >= " start ") && (code <= " stop ")) ? (code - " \
+ skip ")";
+ if (has_default)
+ print " : " stop + 1 " - " skip ");";
+ else
+ print " : -1);";
+ print "}";
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.c b/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.c
new file mode 100644
index 0000000000..68d0f05de7
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.c
@@ -0,0 +1,178 @@
+/* mkw32errmap.c - Generate mapping sources for Windows.
+ Copyright (C) 2010 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef RESOLVE_MACROS
+# include <winerror.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+
+static const char header_gpg_extra_errno_h[] =
+ "/* errno.h - WindowsCE errno.h substitute\n"
+ " Copyright (C) 2010 g10 Code GmbH\n"
+ "\n"
+ " This file is free software; as a special exception the author gives\n"
+ " unlimited permission to copy and/or distribute it, with or without\n"
+ " modifications, as long as this notice is preserved.\n"
+ "\n"
+ " This file is distributed in the hope that it will be useful, but\n"
+ " WITHOUT ANY WARRANTY, to the extent permitted by law; without even\n"
+ " the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n"
+ " PURPOSE.\n"
+ "\n"
+ " +++ Do not edit! File has been generated by mkw32errmap.c +++\n"
+ "\n"
+ " This file is intended to be used with ming32ce-gcc to implement an\n"
+ " errno substitute under WindowsCE. It must be included via gcc's\n"
+ " -idirafter option. The gpg-error-config script emits the\n"
+ " appropriate option snippet. The actual implementation of the errno\n"
+ " related functions are part of libgpg-error. A separate header file\n"
+ " is required because errno.h is often included before gpg-error.h.\n"
+ " */\n"
+ "\n"
+ "#ifndef _GPG_ERROR_EXTRA_ERRNO_H\n"
+ "#define _GPG_ERROR_EXTRA_ERRNO_H\n"
+ "\n"
+ "/* Due to peculiarities in W32 we can't implement ERRNO as an\n"
+ " writable lvalue. This also allows us to easily find places\n"
+ " where ERRNO is being written to. See also gpg_err_set_errno. */\n"
+ "int _gpg_w32ce_get_errno (void);\n"
+ "#define errno (_gpg_w32ce_get_errno ())\n"
+ "\n";
+static const char footer_gpg_extra_errno_h[] =
+ "\n"
+ "#endif /*_GPG_ERROR_EXTRA_ERRNO_H*/\n";
+
+
+/* The table below is used in two modes. First we run the host
+ preprocessor over it to generate a new include file. This include
+ file has the same content but the Windows error macros are
+ resolved. This is so that we don't need to include winerror.h into
+ the generated errno.h. The mkw32errmap_marker variable is only
+ here to have something to grep for after preprocessing. */
+static int mkw32errmap_marker;
+struct table_s
+{
+ int *dummy;
+ const char *name;
+ int w32code;
+ int w32code2;
+};
+
+struct table_s table[] =
+ {
+#ifdef RESOLVE_MACROS
+#define X(a,b,c) \
+ {&mkw32errmap_marker, (a), (b), (c)}
+ X( "EPERM", ERROR_CANNOT_MAKE , 0 ),
+ X( "ENOENT", ERROR_FILE_NOT_FOUND , ERROR_PATH_NOT_FOUND ),
+ X( "EINTR", ERROR_INVALID_AT_INTERRUPT_TIME , 0 ),
+ X( "EIO", ERROR_IO_DEVICE , 0 ),
+ X( "ENXIO", ERROR_FILE_INVALID , 0 ),
+ X( "EBADF", ERROR_INVALID_HANDLE , 0 ),
+ X( "EAGAIN", ERROR_MORE_DATA , WSAEWOULDBLOCK ),
+
+ X( "ENOMEM", ERROR_NOT_ENOUGH_MEMORY , 0 ),
+ X( "EACCES", ERROR_ACCESS_DENIED , 0 ),
+ X( "EFAULT", ERROR_PROCESS_ABORTED , 0 ),
+ X( "EBUSY", ERROR_BUSY , 0 ),
+ X( "EEXIST", ERROR_FILE_EXISTS , WSAEADDRINUSE ),
+
+ X( "EXDEV", ERROR_NOT_SAME_DEVICE , 0 ),
+ X( "ENODEV", ERROR_BAD_DEVICE , ERROR_DEV_NOT_EXIST ),
+
+ X( "ENOTDIR",ERROR_DIRECTORY , 0 ),
+ X( "EINVAL", ERROR_INVALID_PARAMETER , 0 ),
+ X( "ENFILE", ERROR_NO_MORE_FILES , 0 ),
+ X( "EMFILE", ERROR_TOO_MANY_OPEN_FILES , 0 ),
+ X( "ENOSPC", ERROR_DISK_FULL , 0 ),
+ X( "EROFS", ERROR_WRITE_PROTECT , 0 ),
+ X( "EPIPE", ERROR_BROKEN_PIPE , 0 ),
+ X( "ERANGE", ERROR_ARITHMETIC_OVERFLOW , 0 ),
+ X( "EDEADLOCK",ERROR_POSSIBLE_DEADLOCK , 0 ),
+ X( "ENAMETOOLONG", ERROR_FILENAME_EXCED_RANGE, 0 ),
+ X( "ENOLCK", ERROR_SHARING_BUFFER_EXCEEDED , 0 ),
+ X( "ENOSYS", ERROR_NOT_SUPPORTED , 0 ),
+ X( "ENOTEMPTY",ERROR_DIR_NOT_EMPTY , 0 ),
+ X( "ESPIPE", ERROR_SEEK_ON_DEVICE , 0 ),
+#if 0 /* FIXME: Find appropriate mappings. */
+ X( "EILSEQ", ),
+ X( "EDOM", ),
+ X( "EMLINK", ),
+ X( "ESRCH", ), /* No such process */
+ X( "E2BIG", ), /* Arg list too long */
+ X( "ENOEXEC", ), /* Exec format error */
+ X( "ECHILD", ), /* No child processes */
+ X( "EISDIR", ), /* Is a directory */
+ X( "ENOTTY", ), /* Inappropriate I/O control operation */
+ X( "EFBIG", ), /* File too large */
+#endif
+#undef X
+#else /*!RESOLVE_MACROS*/
+# include "mkw32errmap.tab.h"
+#endif /*!RESOLVE_MACROS*/
+ { NULL, 0 }
+ };
+
+
+
+static int
+compare_table (const void *a_v, const void *b_v)
+{
+ const struct table_s *a = a_v;
+ const struct table_s *b = b_v;
+
+ return (a->w32code - b->w32code);
+}
+
+
+int
+main (int argc, char **argv)
+{
+ int idx;
+
+ for (idx=0; table[idx].name; idx++)
+ ;
+ qsort (table, idx, sizeof *table, compare_table);
+
+ if (argc == 2 && !strcmp (argv[1], "--map"))
+ {
+ fputs ("static int\n"
+ "map_w32codes (int err)\n"
+ "{\n"
+ " switch (err)\n"
+ " {\n", stdout );
+ for (idx=0; table[idx].name; idx++)
+ if (table[idx].w32code2)
+ printf (" case %d: return %d;\n",
+ table[idx].w32code2, table[idx].w32code);
+ fputs (" default: return err;\n"
+ " }\n"
+ "}\n", stdout);
+ }
+ else
+ {
+ fputs (header_gpg_extra_errno_h, stdout);
+ for (idx=0; table[idx].name; idx++)
+ printf ("#define %-12s %5d\n", table[idx].name, table[idx].w32code);
+ fputs (footer_gpg_extra_errno_h, stdout);
+ }
+
+ return 0;
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.map.c b/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.map.c
new file mode 100644
index 0000000000..c65491e927
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/mkw32errmap.map.c
@@ -0,0 +1 @@
+/*dummy*/
diff --git a/plugins/MirOTR/libgpg-error-1.9/strerror-sym.c b/plugins/MirOTR/libgpg-error-1.9/strerror-sym.c
new file mode 100644
index 0000000000..3d79f40bb5
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/strerror-sym.c
@@ -0,0 +1,56 @@
+/* strerror-sym.c - Describing an error code with its symbol name.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stddef.h>
+
+#include <gpg-error.h>
+
+#include "err-codes-sym.h"
+#include "errnos-sym.h"
+
+/* Return a pointer to a string containing the name of the symbol of
+ the error code in the error value ERR. Returns NULL if the error
+ code is not known. */
+const char *
+gpg_strerror_sym (gpg_error_t err)
+{
+ gpg_err_code_t code = gpg_err_code (err);
+
+ if (code & GPG_ERR_SYSTEM_ERROR)
+ {
+ int idx;
+
+ code &= ~GPG_ERR_SYSTEM_ERROR;
+ idx = errnos_msgidxof (code);
+ if (idx >= 0)
+ return errnos_msgstr + errnos_msgidx[idx];
+ else
+ return NULL;
+ }
+
+ if (msgidxof (code) == msgidxof (GPG_ERR_CODE_DIM))
+ return NULL;
+
+ return msgstr + msgidx[msgidxof (code)];
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/strerror.c b/plugins/MirOTR/libgpg-error-1.9/strerror.c
new file mode 100644
index 0000000000..dc56040262
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/strerror.c
@@ -0,0 +1,169 @@
+/* strerror.c - Describing an error code.
+ Copyright (C) 2003 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <gpg-error.h>
+
+#include "gettext.h"
+#include "err-codes.h"
+
+/* Return a pointer to a string containing a description of the error
+ code in the error value ERR. This function is not thread-safe. */
+const char *
+gpg_strerror (gpg_error_t err)
+{
+ gpg_err_code_t code = gpg_err_code (err);
+
+ if (code & GPG_ERR_SYSTEM_ERROR)
+ {
+ int no = gpg_err_code_to_errno (code);
+ if (no)
+ return strerror (no);
+ else
+ code = GPG_ERR_UNKNOWN_ERRNO;
+ }
+ return dgettext (PACKAGE, msgstr + msgidx[msgidxof (code)]);
+}
+
+
+#ifdef HAVE_STRERROR_R
+#ifdef STRERROR_R_CHAR_P
+/* The GNU C library and probably some other systems have this weird
+ variant of strerror_r. */
+
+/* Return a dynamically allocated string in *STR describing the system
+ error NO. If this call succeeds, return 1. If this call fails due
+ to a resource shortage, set *STR to NULL and return 1. If this
+ call fails because the error number is not valid, don't set *STR
+ and return 0. */
+static int
+system_strerror_r (int no, char *buf, size_t buflen)
+{
+ char *errstr;
+
+ errstr = strerror_r (no, buf, buflen);
+ if (errstr != buf)
+ {
+ size_t errstr_len = strlen (errstr) + 1;
+ size_t cpy_len = errstr_len < buflen ? errstr_len : buflen;
+ memcpy (buf, errstr, cpy_len);
+
+ return cpy_len == errstr_len ? 0 : ERANGE;
+ }
+ else
+ {
+ /* We can not tell if the buffer was large enough, but we can
+ try to make a guess. */
+ if (strlen (buf) + 1 >= buflen)
+ return ERANGE;
+
+ return 0;
+ }
+}
+
+#else /* STRERROR_R_CHAR_P */
+/* Now the POSIX version. */
+
+static int
+system_strerror_r (int no, char *buf, size_t buflen)
+{
+ return strerror_r (no, buf, buflen);
+}
+
+#endif /* STRERROR_R_CHAR_P */
+
+#else /* HAVE_STRERROR_H */
+/* Without strerror_r(), we can still provide a non-thread-safe
+ version. Maybe we are even lucky and the system's strerror() is
+ already thread-safe. */
+
+static int
+system_strerror_r (int no, char *buf, size_t buflen)
+{
+ char *errstr = strerror (no);
+
+ if (!errstr)
+ {
+ int saved_errno = errno;
+
+ if (saved_errno != EINVAL)
+ snprintf (buf, buflen, "strerror failed: %i\n", errno);
+ return saved_errno;
+ }
+ else
+ {
+ size_t errstr_len = strlen (errstr) + 1;
+ size_t cpy_len = errstr_len < buflen ? errstr_len : buflen;
+ memcpy (buf, errstr, cpy_len);
+ return cpy_len == errstr_len ? 0 : ERANGE;
+ }
+}
+#endif
+
+
+/* Return the error string for ERR in the user-supplied buffer BUF of
+ size BUFLEN. This function is, in contrast to gpg_strerror,
+ thread-safe if a thread-safe strerror_r() function is provided by
+ the system. If the function succeeds, 0 is returned and BUF
+ contains the string describing the error. If the buffer was not
+ large enough, ERANGE is returned and BUF contains as much of the
+ beginning of the error string as fits into the buffer. */
+int
+gpg_strerror_r (gpg_error_t err, char *buf, size_t buflen)
+{
+ gpg_err_code_t code = gpg_err_code (err);
+ const char *errstr;
+ size_t errstr_len;
+ size_t cpy_len;
+
+ if (code & GPG_ERR_SYSTEM_ERROR)
+ {
+ int no = gpg_err_code_to_errno (code);
+ if (no)
+ {
+ int system_err = system_strerror_r (no, buf, buflen);
+
+ if (system_err != EINVAL)
+ {
+ if (buflen)
+ buf[buflen - 1] = '\0';
+ return system_err;
+ }
+ }
+ code = GPG_ERR_UNKNOWN_ERRNO;
+ }
+
+ errstr = dgettext (PACKAGE, msgstr + msgidx[msgidxof (code)]);
+ errstr_len = strlen (errstr) + 1;
+ cpy_len = errstr_len < buflen ? errstr_len : buflen;
+ memcpy (buf, errstr, cpy_len);
+ if (buflen)
+ buf[buflen - 1] = '\0';
+
+ return cpy_len == errstr_len ? 0 : ERANGE;
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/strsource-sym.c b/plugins/MirOTR/libgpg-error-1.9/strsource-sym.c
new file mode 100644
index 0000000000..a191310e95
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/strsource-sym.c
@@ -0,0 +1,43 @@
+/* strsource-sym.c - Describing an error source with its symbol name.
+ Copyright (C) 2003, 2004 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stddef.h>
+
+#include <gpg-error.h>
+
+#include "err-sources-sym.h"
+
+/* Return a pointer to a string containing the name of the symbol of
+ the error source in the error value ERR. Returns NULL if the error
+ code is not known. */
+const char *
+gpg_strsource_sym (gpg_error_t err)
+{
+ gpg_err_source_t source = gpg_err_source (err);
+
+ if (msgidxof (source) == msgidxof (GPG_ERR_SOURCE_DIM))
+ return NULL;
+
+ return msgstr + msgidx[msgidxof (source)];
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/strsource.c b/plugins/MirOTR/libgpg-error-1.9/strsource.c
new file mode 100644
index 0000000000..66d783c436
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/strsource.c
@@ -0,0 +1,37 @@
+/* strsource.c - Describing an error source.
+ Copyright (C) 2003 g10 Code GmbH
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with libgpg-error; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gpg-error.h>
+
+#include "gettext.h"
+#include "err-sources.h"
+
+/* Return a pointer to a string containing a description of the error
+ source in the error value ERR. */
+const char *
+gpg_strsource (gpg_error_t err)
+{
+ gpg_err_source_t source = gpg_err_source (err);
+ return dgettext (PACKAGE, msgstr + msgidx[msgidxof (source)]);
+}
diff --git a/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc b/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc
new file mode 100644
index 0000000000..5a3b96bca1
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc
@@ -0,0 +1,52 @@
+/* versioninfo.rc.in - for libgpg-error
+ * Copyright (C) 2005 g10 Code GmbH
+ *
+ * This file is free software; as a special exception the author gives
+ * unlimited permission to copy and/or distribute it, with or without
+ * modifications, as long as this notice is preserved.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/* This file is processed by configure to create versioninfo.rc */
+
+#line __LINE__ "versioninfo.rc.in"
+
+#include <afxres.h>
+
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,9,0,2
+ PRODUCTVERSION 1,9,0,2
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x21L
+#else
+ FILEFLAGS 0x20L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Provided under the terms of the GNU Lesser General Public License.\0"
+ VALUE "CompanyName", "g10 Code GmbH\0"
+ VALUE "FileDescription", "libgpg-error - Common error codes\0"
+ VALUE "FileVersion", "1.9\0"
+ VALUE "InternalName", "libgpg-error\0"
+ VALUE "LegalCopyright", "Copyright © 2005 g10 Code GmbH\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "libgpg-error.dll\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "libgpg-error\0"
+ VALUE "ProductVersion", "1.9\0"
+ VALUE "SpecialBuild", "2010-08-12T17:56+0000\0"
+ END
+ END
+END
+
diff --git a/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc.in b/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc.in
new file mode 100644
index 0000000000..3384adc361
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/versioninfo.rc.in
@@ -0,0 +1,52 @@
+/* versioninfo.rc.in - for libgpg-error
+ * Copyright (C) 2005 g10 Code GmbH
+ *
+ * This file is free software; as a special exception the author gives
+ * unlimited permission to copy and/or distribute it, with or without
+ * modifications, as long as this notice is preserved.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/* This file is processed by configure to create versioninfo.rc */
+
+#line __LINE__ "versioninfo.rc.in"
+
+#include <afxres.h>
+
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @BUILD_FILEVERSION@
+ PRODUCTVERSION @BUILD_FILEVERSION@
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x21L
+#else
+ FILEFLAGS 0x20L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Provided under the terms of the GNU Lesser General Public License.\0"
+ VALUE "CompanyName", "g10 Code GmbH\0"
+ VALUE "FileDescription", "libgpg-error - Common error codes\0"
+ VALUE "FileVersion", "@VERSION@\0"
+ VALUE "InternalName", "libgpg-error\0"
+ VALUE "LegalCopyright", "Copyright © 2005 g10 Code GmbH\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "libgpg-error.dll\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "libgpg-error\0"
+ VALUE "ProductVersion", "@VERSION@\0"
+ VALUE "SpecialBuild", "@BUILD_TIMESTAMP@\0"
+ END
+ END
+END
+
diff --git a/plugins/MirOTR/libgpg-error-1.9/w32-add.h b/plugins/MirOTR/libgpg-error-1.9/w32-add.h
new file mode 100644
index 0000000000..02848acf73
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/w32-add.h
@@ -0,0 +1,40 @@
+## w32-add.h - Snippet to be be included into gpg-error.h.
+## Comments are indicated by a double hash mark. Due to a
+## peculiarity of the script the first used line must not
+## start with a hash mark.
+
+/* Decide whether to use the format_arg attribute. */
+#if _GPG_ERR_GCC_VERSION > 20800
+# define _GPG_ERR_ATTR_FORMAT_ARG(a) __attribute__ ((__format_arg__ (a)))
+#else
+# define _GPG_ERR_ATTR_FORMAT_ARG(a)
+#endif
+
+/* A lean gettext implementation based on GNU style mo files which are
+ required to be encoded in UTF-8. There is a limit on 65534 entries
+ to save some RAM. Only Germanic plural rules are supported. */
+const char *_gpg_w32_bindtextdomain (const char *domainname,
+ const char *dirname);
+const char *_gpg_w32_textdomain (const char *domainname);
+const char *_gpg_w32_gettext (const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (1);
+const char *_gpg_w32_dgettext (const char *domainname, const char *msgid)
+ _GPG_ERR_ATTR_FORMAT_ARG (2);
+const char *_gpg_w32_dngettext (const char *domainname, const char *msgid1,
+ const char *msgid2, unsigned long int n)
+ _GPG_ERR_ATTR_FORMAT_ARG (2) _GPG_ERR_ATTR_FORMAT_ARG (3);
+const char *_gpg_w32_gettext_localename (void);
+int _gpg_w32_gettext_use_utf8 (int value);
+
+#ifdef GPG_ERR_ENABLE_GETTEXT_MACROS
+# define bindtextdomain(a,b) _gpg_w32_bindtextdomain ((a), (b))
+# define textdomain(a) _gpg_w32_textdomain ((a))
+# define gettext(a) _gpg_w32_gettext ((a))
+# define dgettext(a,b) _gpg_w32_dgettext ((a), (b))
+# define ngettext(a,b,c) _gpg_w32_dngettext (NULL, (a), (b), (c))
+# define dngettext(a,b,c,d) _gpg_w32_dngettext ((a), (b), (c), (d))
+# define gettext_localename() _gpg_w32_gettext_localename ()
+# define gettext_use_utf8(a) _gpg_w32_gettext_use_utf8 (a)
+#endif /*GPG_ERR_ENABLE_GETTEXT_MACROS*/
+
+
diff --git a/plugins/MirOTR/libgpg-error-1.9/w32-gettext.c b/plugins/MirOTR/libgpg-error-1.9/w32-gettext.c
new file mode 100644
index 0000000000..da07a25695
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/w32-gettext.c
@@ -0,0 +1,1886 @@
+/* w32-gettext.h - A simple gettext implementation for Windows targets.
+ Copyright (C) 1995, 1996, 1997, 1999, 2005, 2007,
+2 2008, 2010 Free Software Foundation, Inc.
+
+ This file is part of libgpg-error.
+
+ libgpg-error is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ libgpg-error is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+#if !defined (_WIN32) && !defined (__CYGWIN32__)
+# error This module may only be build for Windows or Cygwin32
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdint.h>
+#ifndef HAVE_W32CE_SYSTEM
+# include <locale.h>
+#endif /*HAVE_W32CE_SYSTEM*/
+#include <windows.h>
+
+#ifdef JNLIB_IN_JNLIB
+#include "libjnlib-config.h"
+#endif
+
+#ifndef jnlib_malloc
+# define jnlib_malloc(a) malloc ((a))
+# define jnlib_calloc(a,b) calloc ((a), (b))
+# define jnlib_free(a) free ((a))
+# define jnlib_xstrdup(a) not_used
+#endif /*!jnlib_malloc*/
+
+#include "init.h"
+
+
+
+/* localname.c from gettext BEGIN. */
+
+/* Determine the current selected locale.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License as published
+ by the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
+
+/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
+/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
+/* Renamed _nl_locale_name, removed unsed args, removed include files,
+ non-W32 code and changed comments <wk@gnupg.org>. */
+
+/* Mingw headers don't have latest language and sublanguage codes. */
+#ifndef LANG_AFRIKAANS
+#define LANG_AFRIKAANS 0x36
+#endif
+#ifndef LANG_ALBANIAN
+#define LANG_ALBANIAN 0x1c
+#endif
+#ifndef LANG_AMHARIC
+#define LANG_AMHARIC 0x5e
+#endif
+#ifndef LANG_ARABIC
+#define LANG_ARABIC 0x01
+#endif
+#ifndef LANG_ARMENIAN
+#define LANG_ARMENIAN 0x2b
+#endif
+#ifndef LANG_ASSAMESE
+#define LANG_ASSAMESE 0x4d
+#endif
+#ifndef LANG_AZERI
+#define LANG_AZERI 0x2c
+#endif
+#ifndef LANG_BASQUE
+#define LANG_BASQUE 0x2d
+#endif
+#ifndef LANG_BELARUSIAN
+#define LANG_BELARUSIAN 0x23
+#endif
+#ifndef LANG_BENGALI
+#define LANG_BENGALI 0x45
+#endif
+#ifndef LANG_BURMESE
+#define LANG_BURMESE 0x55
+#endif
+#ifndef LANG_CAMBODIAN
+#define LANG_CAMBODIAN 0x53
+#endif
+#ifndef LANG_CATALAN
+#define LANG_CATALAN 0x03
+#endif
+#ifndef LANG_CHEROKEE
+#define LANG_CHEROKEE 0x5c
+#endif
+#ifndef LANG_DIVEHI
+#define LANG_DIVEHI 0x65
+#endif
+#ifndef LANG_EDO
+#define LANG_EDO 0x66
+#endif
+#ifndef LANG_ESTONIAN
+#define LANG_ESTONIAN 0x25
+#endif
+#ifndef LANG_FAEROESE
+#define LANG_FAEROESE 0x38
+#endif
+#ifndef LANG_FARSI
+#define LANG_FARSI 0x29
+#endif
+#ifndef LANG_FRISIAN
+#define LANG_FRISIAN 0x62
+#endif
+#ifndef LANG_FULFULDE
+#define LANG_FULFULDE 0x67
+#endif
+#ifndef LANG_GAELIC
+#define LANG_GAELIC 0x3c
+#endif
+#ifndef LANG_GALICIAN
+#define LANG_GALICIAN 0x56
+#endif
+#ifndef LANG_GEORGIAN
+#define LANG_GEORGIAN 0x37
+#endif
+#ifndef LANG_GUARANI
+#define LANG_GUARANI 0x74
+#endif
+#ifndef LANG_GUJARATI
+#define LANG_GUJARATI 0x47
+#endif
+#ifndef LANG_HAUSA
+#define LANG_HAUSA 0x68
+#endif
+#ifndef LANG_HAWAIIAN
+#define LANG_HAWAIIAN 0x75
+#endif
+#ifndef LANG_HEBREW
+#define LANG_HEBREW 0x0d
+#endif
+#ifndef LANG_HINDI
+#define LANG_HINDI 0x39
+#endif
+#ifndef LANG_IBIBIO
+#define LANG_IBIBIO 0x69
+#endif
+#ifndef LANG_IGBO
+#define LANG_IGBO 0x70
+#endif
+#ifndef LANG_INDONESIAN
+#define LANG_INDONESIAN 0x21
+#endif
+#ifndef LANG_INUKTITUT
+#define LANG_INUKTITUT 0x5d
+#endif
+#ifndef LANG_KANNADA
+#define LANG_KANNADA 0x4b
+#endif
+#ifndef LANG_KANURI
+#define LANG_KANURI 0x71
+#endif
+#ifndef LANG_KASHMIRI
+#define LANG_KASHMIRI 0x60
+#endif
+#ifndef LANG_KAZAK
+#define LANG_KAZAK 0x3f
+#endif
+#ifndef LANG_KONKANI
+#define LANG_KONKANI 0x57
+#endif
+#ifndef LANG_KYRGYZ
+#define LANG_KYRGYZ 0x40
+#endif
+#ifndef LANG_LAO
+#define LANG_LAO 0x54
+#endif
+#ifndef LANG_LATIN
+#define LANG_LATIN 0x76
+#endif
+#ifndef LANG_LATVIAN
+#define LANG_LATVIAN 0x26
+#endif
+#ifndef LANG_LITHUANIAN
+#define LANG_LITHUANIAN 0x27
+#endif
+#ifndef LANG_MACEDONIAN
+#define LANG_MACEDONIAN 0x2f
+#endif
+#ifndef LANG_MALAY
+#define LANG_MALAY 0x3e
+#endif
+#ifndef LANG_MALAYALAM
+#define LANG_MALAYALAM 0x4c
+#endif
+#ifndef LANG_MALTESE
+#define LANG_MALTESE 0x3a
+#endif
+#ifndef LANG_MANIPURI
+#define LANG_MANIPURI 0x58
+#endif
+#ifndef LANG_MARATHI
+#define LANG_MARATHI 0x4e
+#endif
+#ifndef LANG_MONGOLIAN
+#define LANG_MONGOLIAN 0x50
+#endif
+#ifndef LANG_NEPALI
+#define LANG_NEPALI 0x61
+#endif
+#ifndef LANG_ORIYA
+#define LANG_ORIYA 0x48
+#endif
+#ifndef LANG_OROMO
+#define LANG_OROMO 0x72
+#endif
+#ifndef LANG_PAPIAMENTU
+#define LANG_PAPIAMENTU 0x79
+#endif
+#ifndef LANG_PASHTO
+#define LANG_PASHTO 0x63
+#endif
+#ifndef LANG_PUNJABI
+#define LANG_PUNJABI 0x46
+#endif
+#ifndef LANG_RHAETO_ROMANCE
+#define LANG_RHAETO_ROMANCE 0x17
+#endif
+#ifndef LANG_SAAMI
+#define LANG_SAAMI 0x3b
+#endif
+#ifndef LANG_SANSKRIT
+#define LANG_SANSKRIT 0x4f
+#endif
+#ifndef LANG_SERBIAN
+#define LANG_SERBIAN 0x1a
+#endif
+#ifndef LANG_SINDHI
+#define LANG_SINDHI 0x59
+#endif
+#ifndef LANG_SINHALESE
+#define LANG_SINHALESE 0x5b
+#endif
+#ifndef LANG_SLOVAK
+#define LANG_SLOVAK 0x1b
+#endif
+#ifndef LANG_SOMALI
+#define LANG_SOMALI 0x77
+#endif
+#ifndef LANG_SORBIAN
+#define LANG_SORBIAN 0x2e
+#endif
+#ifndef LANG_SUTU
+#define LANG_SUTU 0x30
+#endif
+#ifndef LANG_SWAHILI
+#define LANG_SWAHILI 0x41
+#endif
+#ifndef LANG_SYRIAC
+#define LANG_SYRIAC 0x5a
+#endif
+#ifndef LANG_TAGALOG
+#define LANG_TAGALOG 0x64
+#endif
+#ifndef LANG_TAJIK
+#define LANG_TAJIK 0x28
+#endif
+#ifndef LANG_TAMAZIGHT
+#define LANG_TAMAZIGHT 0x5f
+#endif
+#ifndef LANG_TAMIL
+#define LANG_TAMIL 0x49
+#endif
+#ifndef LANG_TATAR
+#define LANG_TATAR 0x44
+#endif
+#ifndef LANG_TELUGU
+#define LANG_TELUGU 0x4a
+#endif
+#ifndef LANG_THAI
+#define LANG_THAI 0x1e
+#endif
+#ifndef LANG_TIBETAN
+#define LANG_TIBETAN 0x51
+#endif
+#ifndef LANG_TIGRINYA
+#define LANG_TIGRINYA 0x73
+#endif
+#ifndef LANG_TSONGA
+#define LANG_TSONGA 0x31
+#endif
+#ifndef LANG_TSWANA
+#define LANG_TSWANA 0x32
+#endif
+#ifndef LANG_TURKMEN
+#define LANG_TURKMEN 0x42
+#endif
+#ifndef LANG_UKRAINIAN
+#define LANG_UKRAINIAN 0x22
+#endif
+#ifndef LANG_URDU
+#define LANG_URDU 0x20
+#endif
+#ifndef LANG_UZBEK
+#define LANG_UZBEK 0x43
+#endif
+#ifndef LANG_VENDA
+#define LANG_VENDA 0x33
+#endif
+#ifndef LANG_VIETNAMESE
+#define LANG_VIETNAMESE 0x2a
+#endif
+#ifndef LANG_WELSH
+#define LANG_WELSH 0x52
+#endif
+#ifndef LANG_XHOSA
+#define LANG_XHOSA 0x34
+#endif
+#ifndef LANG_YI
+#define LANG_YI 0x78
+#endif
+#ifndef LANG_YIDDISH
+#define LANG_YIDDISH 0x3d
+#endif
+#ifndef LANG_YORUBA
+#define LANG_YORUBA 0x6a
+#endif
+#ifndef LANG_ZULU
+#define LANG_ZULU 0x35
+#endif
+#ifndef SUBLANG_ARABIC_SAUDI_ARABIA
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+#endif
+#ifndef SUBLANG_ARABIC_IRAQ
+#define SUBLANG_ARABIC_IRAQ 0x02
+#endif
+#ifndef SUBLANG_ARABIC_EGYPT
+#define SUBLANG_ARABIC_EGYPT 0x03
+#endif
+#ifndef SUBLANG_ARABIC_LIBYA
+#define SUBLANG_ARABIC_LIBYA 0x04
+#endif
+#ifndef SUBLANG_ARABIC_ALGERIA
+#define SUBLANG_ARABIC_ALGERIA 0x05
+#endif
+#ifndef SUBLANG_ARABIC_MOROCCO
+#define SUBLANG_ARABIC_MOROCCO 0x06
+#endif
+#ifndef SUBLANG_ARABIC_TUNISIA
+#define SUBLANG_ARABIC_TUNISIA 0x07
+#endif
+#ifndef SUBLANG_ARABIC_OMAN
+#define SUBLANG_ARABIC_OMAN 0x08
+#endif
+#ifndef SUBLANG_ARABIC_YEMEN
+#define SUBLANG_ARABIC_YEMEN 0x09
+#endif
+#ifndef SUBLANG_ARABIC_SYRIA
+#define SUBLANG_ARABIC_SYRIA 0x0a
+#endif
+#ifndef SUBLANG_ARABIC_JORDAN
+#define SUBLANG_ARABIC_JORDAN 0x0b
+#endif
+#ifndef SUBLANG_ARABIC_LEBANON
+#define SUBLANG_ARABIC_LEBANON 0x0c
+#endif
+#ifndef SUBLANG_ARABIC_KUWAIT
+#define SUBLANG_ARABIC_KUWAIT 0x0d
+#endif
+#ifndef SUBLANG_ARABIC_UAE
+#define SUBLANG_ARABIC_UAE 0x0e
+#endif
+#ifndef SUBLANG_ARABIC_BAHRAIN
+#define SUBLANG_ARABIC_BAHRAIN 0x0f
+#endif
+#ifndef SUBLANG_ARABIC_QATAR
+#define SUBLANG_ARABIC_QATAR 0x10
+#endif
+#ifndef SUBLANG_AZERI_LATIN
+#define SUBLANG_AZERI_LATIN 0x01
+#endif
+#ifndef SUBLANG_AZERI_CYRILLIC
+#define SUBLANG_AZERI_CYRILLIC 0x02
+#endif
+#ifndef SUBLANG_BENGALI_INDIA
+#define SUBLANG_BENGALI_INDIA 0x01
+#endif
+#ifndef SUBLANG_BENGALI_BANGLADESH
+#define SUBLANG_BENGALI_BANGLADESH 0x02
+#endif
+#ifndef SUBLANG_CHINESE_MACAU
+#define SUBLANG_CHINESE_MACAU 0x05
+#endif
+#ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
+#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+#endif
+#ifndef SUBLANG_ENGLISH_JAMAICA
+#define SUBLANG_ENGLISH_JAMAICA 0x08
+#endif
+#ifndef SUBLANG_ENGLISH_CARIBBEAN
+#define SUBLANG_ENGLISH_CARIBBEAN 0x09
+#endif
+#ifndef SUBLANG_ENGLISH_BELIZE
+#define SUBLANG_ENGLISH_BELIZE 0x0a
+#endif
+#ifndef SUBLANG_ENGLISH_TRINIDAD
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b
+#endif
+#ifndef SUBLANG_ENGLISH_ZIMBABWE
+#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+#endif
+#ifndef SUBLANG_ENGLISH_PHILIPPINES
+#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+#endif
+#ifndef SUBLANG_ENGLISH_INDONESIA
+#define SUBLANG_ENGLISH_INDONESIA 0x0e
+#endif
+#ifndef SUBLANG_ENGLISH_HONGKONG
+#define SUBLANG_ENGLISH_HONGKONG 0x0f
+#endif
+#ifndef SUBLANG_ENGLISH_INDIA
+#define SUBLANG_ENGLISH_INDIA 0x10
+#endif
+#ifndef SUBLANG_ENGLISH_MALAYSIA
+#define SUBLANG_ENGLISH_MALAYSIA 0x11
+#endif
+#ifndef SUBLANG_ENGLISH_SINGAPORE
+#define SUBLANG_ENGLISH_SINGAPORE 0x12
+#endif
+#ifndef SUBLANG_FRENCH_LUXEMBOURG
+#define SUBLANG_FRENCH_LUXEMBOURG 0x05
+#endif
+#ifndef SUBLANG_FRENCH_MONACO
+#define SUBLANG_FRENCH_MONACO 0x06
+#endif
+#ifndef SUBLANG_FRENCH_WESTINDIES
+#define SUBLANG_FRENCH_WESTINDIES 0x07
+#endif
+#ifndef SUBLANG_FRENCH_REUNION
+#define SUBLANG_FRENCH_REUNION 0x08
+#endif
+#ifndef SUBLANG_FRENCH_CONGO
+#define SUBLANG_FRENCH_CONGO 0x09
+#endif
+#ifndef SUBLANG_FRENCH_SENEGAL
+#define SUBLANG_FRENCH_SENEGAL 0x0a
+#endif
+#ifndef SUBLANG_FRENCH_CAMEROON
+#define SUBLANG_FRENCH_CAMEROON 0x0b
+#endif
+#ifndef SUBLANG_FRENCH_COTEDIVOIRE
+#define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
+#endif
+#ifndef SUBLANG_FRENCH_MALI
+#define SUBLANG_FRENCH_MALI 0x0d
+#endif
+#ifndef SUBLANG_FRENCH_MOROCCO
+#define SUBLANG_FRENCH_MOROCCO 0x0e
+#endif
+#ifndef SUBLANG_FRENCH_HAITI
+#define SUBLANG_FRENCH_HAITI 0x0f
+#endif
+#ifndef SUBLANG_GERMAN_LUXEMBOURG
+#define SUBLANG_GERMAN_LUXEMBOURG 0x04
+#endif
+#ifndef SUBLANG_GERMAN_LIECHTENSTEIN
+#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+#endif
+#ifndef SUBLANG_KASHMIRI_INDIA
+#define SUBLANG_KASHMIRI_INDIA 0x02
+#endif
+#ifndef SUBLANG_MALAY_MALAYSIA
+#define SUBLANG_MALAY_MALAYSIA 0x01
+#endif
+#ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+#endif
+#ifndef SUBLANG_NEPALI_INDIA
+#define SUBLANG_NEPALI_INDIA 0x02
+#endif
+#ifndef SUBLANG_PUNJABI_INDIA
+#define SUBLANG_PUNJABI_INDIA 0x01
+#endif
+#ifndef SUBLANG_ROMANIAN_ROMANIA
+#define SUBLANG_ROMANIAN_ROMANIA 0x01
+#endif
+#ifndef SUBLANG_SERBIAN_LATIN
+#define SUBLANG_SERBIAN_LATIN 0x02
+#endif
+#ifndef SUBLANG_SERBIAN_CYRILLIC
+#define SUBLANG_SERBIAN_CYRILLIC 0x03
+#endif
+#ifndef SUBLANG_SINDHI_INDIA
+#define SUBLANG_SINDHI_INDIA 0x00
+#endif
+#ifndef SUBLANG_SINDHI_PAKISTAN
+#define SUBLANG_SINDHI_PAKISTAN 0x01
+#endif
+#ifndef SUBLANG_SPANISH_GUATEMALA
+#define SUBLANG_SPANISH_GUATEMALA 0x04
+#endif
+#ifndef SUBLANG_SPANISH_COSTA_RICA
+#define SUBLANG_SPANISH_COSTA_RICA 0x05
+#endif
+#ifndef SUBLANG_SPANISH_PANAMA
+#define SUBLANG_SPANISH_PANAMA 0x06
+#endif
+#ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+#endif
+#ifndef SUBLANG_SPANISH_VENEZUELA
+#define SUBLANG_SPANISH_VENEZUELA 0x08
+#endif
+#ifndef SUBLANG_SPANISH_COLOMBIA
+#define SUBLANG_SPANISH_COLOMBIA 0x09
+#endif
+#ifndef SUBLANG_SPANISH_PERU
+#define SUBLANG_SPANISH_PERU 0x0a
+#endif
+#ifndef SUBLANG_SPANISH_ARGENTINA
+#define SUBLANG_SPANISH_ARGENTINA 0x0b
+#endif
+#ifndef SUBLANG_SPANISH_ECUADOR
+#define SUBLANG_SPANISH_ECUADOR 0x0c
+#endif
+#ifndef SUBLANG_SPANISH_CHILE
+#define SUBLANG_SPANISH_CHILE 0x0d
+#endif
+#ifndef SUBLANG_SPANISH_URUGUAY
+#define SUBLANG_SPANISH_URUGUAY 0x0e
+#endif
+#ifndef SUBLANG_SPANISH_PARAGUAY
+#define SUBLANG_SPANISH_PARAGUAY 0x0f
+#endif
+#ifndef SUBLANG_SPANISH_BOLIVIA
+#define SUBLANG_SPANISH_BOLIVIA 0x10
+#endif
+#ifndef SUBLANG_SPANISH_EL_SALVADOR
+#define SUBLANG_SPANISH_EL_SALVADOR 0x11
+#endif
+#ifndef SUBLANG_SPANISH_HONDURAS
+#define SUBLANG_SPANISH_HONDURAS 0x12
+#endif
+#ifndef SUBLANG_SPANISH_NICARAGUA
+#define SUBLANG_SPANISH_NICARAGUA 0x13
+#endif
+#ifndef SUBLANG_SPANISH_PUERTO_RICO
+#define SUBLANG_SPANISH_PUERTO_RICO 0x14
+#endif
+#ifndef SUBLANG_SWEDISH_FINLAND
+#define SUBLANG_SWEDISH_FINLAND 0x02
+#endif
+#ifndef SUBLANG_TAMAZIGHT_ARABIC
+#define SUBLANG_TAMAZIGHT_ARABIC 0x01
+#endif
+#ifndef SUBLANG_TAMAZIGHT_LATIN
+#define SUBLANG_TAMAZIGHT_LATIN 0x02
+#endif
+#ifndef SUBLANG_TIGRINYA_ETHIOPIA
+#define SUBLANG_TIGRINYA_ETHIOPIA 0x00
+#endif
+#ifndef SUBLANG_TIGRINYA_ERITREA
+#define SUBLANG_TIGRINYA_ERITREA 0x01
+#endif
+#ifndef SUBLANG_URDU_PAKISTAN
+#define SUBLANG_URDU_PAKISTAN 0x01
+#endif
+#ifndef SUBLANG_URDU_INDIA
+#define SUBLANG_URDU_INDIA 0x02
+#endif
+#ifndef SUBLANG_UZBEK_LATIN
+#define SUBLANG_UZBEK_LATIN 0x01
+#endif
+#ifndef SUBLANG_UZBEK_CYRILLIC
+#define SUBLANG_UZBEK_CYRILLIC 0x02
+#endif
+
+/* Return an XPG style locale name
+ language[_territory[.codeset]][@modifier].
+ Don't even bother determining the codeset; it's not useful in this
+ context, because message catalogs are not specific to a single
+ codeset. The result must not be freed; it is statically
+ allocated. */
+static const char *
+my_nl_locale_name (const char *categoryname)
+{
+ const char *retval;
+ LCID lcid;
+ LANGID langid;
+ int primary, sub;
+
+ /* Let the user override the system settings through environment
+ variables, as on POSIX systems. */
+#ifndef HAVE_W32CE_SYSTEM
+ retval = getenv ("LC_ALL");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ retval = getenv (categoryname);
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+ retval = getenv ("LANG");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+#endif /*!HAVE_W32CE_SYSTEM*/
+
+ /* Use native Win32 API locale ID. */
+#ifdef HAVE_W32CE_SYSTEM
+ lcid = GetSystemDefaultLCID ();
+#else
+ lcid = GetThreadLocale ();
+#endif
+
+ /* Strip off the sorting rules, keep only the language part. */
+ langid = LANGIDFROMLCID (lcid);
+
+ /* Split into language and territory part. */
+ primary = PRIMARYLANGID (langid);
+ sub = SUBLANGID (langid);
+
+ /* Dispatch on language.
+ See also http://www.unicode.org/unicode/onlinedat/languages.html .
+ For details about languages, see http://www.ethnologue.com/ . */
+ switch (primary)
+ {
+ case LANG_AFRIKAANS: return "af_ZA";
+ case LANG_ALBANIAN: return "sq_AL";
+ case LANG_AMHARIC: return "am_ET";
+ case LANG_ARABIC:
+ switch (sub)
+ {
+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
+ case SUBLANG_ARABIC_EGYPT: return "ar_EG";
+ case SUBLANG_ARABIC_LIBYA: return "ar_LY";
+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
+ case SUBLANG_ARABIC_OMAN: return "ar_OM";
+ case SUBLANG_ARABIC_YEMEN: return "ar_YE";
+ case SUBLANG_ARABIC_SYRIA: return "ar_SY";
+ case SUBLANG_ARABIC_JORDAN: return "ar_JO";
+ case SUBLANG_ARABIC_LEBANON: return "ar_LB";
+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
+ case SUBLANG_ARABIC_UAE: return "ar_AE";
+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
+ case SUBLANG_ARABIC_QATAR: return "ar_QA";
+ }
+ return "ar";
+ case LANG_ARMENIAN: return "hy_AM";
+ case LANG_ASSAMESE: return "as_IN";
+ case LANG_AZERI:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
+ }
+ return "az";
+ case LANG_BASQUE:
+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
+ case LANG_BELARUSIAN: return "be_BY";
+ case LANG_BENGALI:
+ switch (sub)
+ {
+ case SUBLANG_BENGALI_INDIA: return "bn_IN";
+ case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
+ }
+ return "bn";
+ case LANG_BULGARIAN: return "bg_BG";
+ case LANG_BURMESE: return "my_MM";
+ case LANG_CAMBODIAN: return "km_KH";
+ case LANG_CATALAN: return "ca_ES";
+ case LANG_CHEROKEE: return "chr_US";
+ case LANG_CHINESE:
+ switch (sub)
+ {
+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
+ case SUBLANG_CHINESE_MACAU: return "zh_MO";
+ }
+ return "zh";
+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
+ * What used to be called Serbo-Croatian
+ * should really now be two separate
+ * languages because of political reasons.
+ * (Says tml, who knows nothing about Serbian
+ * or Croatian.)
+ * (I can feel those flames coming already.)
+ */
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "hr_HR";
+ case SUBLANG_SERBIAN_LATIN: return "sr_CS";
+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
+ }
+ return "hr";
+ case LANG_CZECH: return "cs_CZ";
+ case LANG_DANISH: return "da_DK";
+ case LANG_DIVEHI: return "div_MV";
+ case LANG_DUTCH:
+ switch (sub)
+ {
+ case SUBLANG_DUTCH: return "nl_NL";
+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
+ }
+ return "nl";
+ case LANG_EDO: return "bin_NG";
+ case LANG_ENGLISH:
+ switch (sub)
+ {
+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
+ * English was the language spoken in England.
+ * Oh well.
+ */
+ case SUBLANG_ENGLISH_US: return "en_US";
+ case SUBLANG_ENGLISH_UK: return "en_GB";
+ case SUBLANG_ENGLISH_AUS: return "en_AU";
+ case SUBLANG_ENGLISH_CAN: return "en_CA";
+ case SUBLANG_ENGLISH_NZ: return "en_NZ";
+ case SUBLANG_ENGLISH_EIRE: return "en_IE";
+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+ case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
+ case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
+ case SUBLANG_ENGLISH_INDIA: return "en_IN";
+ case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
+ case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
+ }
+ return "en";
+ case LANG_ESTONIAN: return "et_EE";
+ case LANG_FAEROESE: return "fo_FO";
+ case LANG_FARSI: return "fa_IR";
+ case LANG_FINNISH: return "fi_FI";
+ case LANG_FRENCH:
+ switch (sub)
+ {
+ case SUBLANG_FRENCH: return "fr_FR";
+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
+ case SUBLANG_FRENCH_SWISS: return "fr_CH";
+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
+ case SUBLANG_FRENCH_MONACO: return "fr_MC";
+ case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
+ case SUBLANG_FRENCH_REUNION: return "fr_RE";
+ case SUBLANG_FRENCH_CONGO: return "fr_CG";
+ case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
+ case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
+ case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
+ case SUBLANG_FRENCH_MALI: return "fr_ML";
+ case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
+ case SUBLANG_FRENCH_HAITI: return "fr_HT";
+ }
+ return "fr";
+ case LANG_FRISIAN: return "fy_NL";
+ case LANG_FULFULDE: return "ful_NG";
+ case LANG_GAELIC:
+ switch (sub)
+ {
+ case 0x01: /* SCOTTISH */ return "gd_GB";
+ case 0x02: /* IRISH */ return "ga_IE";
+ }
+ return "C";
+ case LANG_GALICIAN: return "gl_ES";
+ case LANG_GEORGIAN: return "ka_GE";
+ case LANG_GERMAN:
+ switch (sub)
+ {
+ case SUBLANG_GERMAN: return "de_DE";
+ case SUBLANG_GERMAN_SWISS: return "de_CH";
+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
+ }
+ return "de";
+ case LANG_GREEK: return "el_GR";
+ case LANG_GUARANI: return "gn_PY";
+ case LANG_GUJARATI: return "gu_IN";
+ case LANG_HAUSA: return "ha_NG";
+ case LANG_HAWAIIAN:
+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */
+ return "cpe_US";
+ case LANG_HEBREW: return "he_IL";
+ case LANG_HINDI: return "hi_IN";
+ case LANG_HUNGARIAN: return "hu_HU";
+ case LANG_IBIBIO: return "nic_NG";
+ case LANG_ICELANDIC: return "is_IS";
+ case LANG_IGBO: return "ibo_NG";
+ case LANG_INDONESIAN: return "id_ID";
+ case LANG_INUKTITUT: return "iu_CA";
+ case LANG_ITALIAN:
+ switch (sub)
+ {
+ case SUBLANG_ITALIAN: return "it_IT";
+ case SUBLANG_ITALIAN_SWISS: return "it_CH";
+ }
+ return "it";
+ case LANG_JAPANESE: return "ja_JP";
+ case LANG_KANNADA: return "kn_IN";
+ case LANG_KANURI: return "kau_NG";
+ case LANG_KASHMIRI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ks_PK";
+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
+ }
+ return "ks";
+ case LANG_KAZAK: return "kk_KZ";
+ case LANG_KONKANI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "kok_IN";
+ case LANG_KOREAN: return "ko_KR";
+ case LANG_KYRGYZ: return "ky_KG";
+ case LANG_LAO: return "lo_LA";
+ case LANG_LATIN: return "la_VA";
+ case LANG_LATVIAN: return "lv_LV";
+ case LANG_LITHUANIAN: return "lt_LT";
+ case LANG_MACEDONIAN: return "mk_MK";
+ case LANG_MALAY:
+ switch (sub)
+ {
+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
+ }
+ return "ms";
+ case LANG_MALAYALAM: return "ml_IN";
+ case LANG_MALTESE: return "mt_MT";
+ case LANG_MANIPURI:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "mni_IN";
+ case LANG_MARATHI: return "mr_IN";
+ case LANG_MONGOLIAN:
+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
+ case LANG_NEPALI:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "ne_NP";
+ case SUBLANG_NEPALI_INDIA: return "ne_IN";
+ }
+ return "ne";
+ case LANG_NORWEGIAN:
+ switch (sub)
+ {
+ case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO";
+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
+ }
+ return "no";
+ case LANG_ORIYA: return "or_IN";
+ case LANG_OROMO: return "om_ET";
+ case LANG_PAPIAMENTU: return "pap_AN";
+ case LANG_PASHTO:
+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
+ case LANG_POLISH: return "pl_PL";
+ case LANG_PORTUGUESE:
+ switch (sub)
+ {
+ case SUBLANG_PORTUGUESE: return "pt_PT";
+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
+ }
+ return "pt";
+ case LANG_PUNJABI:
+ switch (sub)
+ {
+ case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
+ }
+ return "pa";
+ case LANG_RHAETO_ROMANCE: return "rm_CH";
+ case LANG_ROMANIAN:
+ switch (sub)
+ {
+ case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
+ }
+ return "ro";
+ case LANG_RUSSIAN:
+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
+ case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
+ case LANG_SANSKRIT: return "sa_IN";
+ case LANG_SINDHI:
+ switch (sub)
+ {
+ case SUBLANG_SINDHI_INDIA: return "sd_IN";
+ case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
+ }
+ return "sd";
+ case LANG_SINHALESE: return "si_LK";
+ case LANG_SLOVAK: return "sk_SK";
+ case LANG_SLOVENIAN: return "sl_SI";
+ case LANG_SOMALI: return "so_SO";
+ case LANG_SORBIAN:
+ /* FIXME: Adjust this when such locales appear on Unix. */
+ return "wen_DE";
+ case LANG_SPANISH:
+ switch (sub)
+ {
+ case SUBLANG_SPANISH: return "es_ES";
+ case SUBLANG_SPANISH_MEXICAN: return "es_MX";
+ case SUBLANG_SPANISH_MODERN:
+ return "es_ES@modern"; /* not seen on Unix */
+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
+ case SUBLANG_SPANISH_PANAMA: return "es_PA";
+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
+ case SUBLANG_SPANISH_PERU: return "es_PE";
+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
+ case SUBLANG_SPANISH_ECUADOR: return "es_EC";
+ case SUBLANG_SPANISH_CHILE: return "es_CL";
+ case SUBLANG_SPANISH_URUGUAY: return "es_UY";
+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
+ case SUBLANG_SPANISH_HONDURAS: return "es_HN";
+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
+ }
+ return "es";
+ case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
+ case LANG_SWAHILI: return "sw_KE";
+ case LANG_SWEDISH:
+ switch (sub)
+ {
+ case SUBLANG_DEFAULT: return "sv_SE";
+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
+ }
+ return "sv";
+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
+ case LANG_TAGALOG: return "tl_PH";
+ case LANG_TAJIK: return "tg_TJ";
+ case LANG_TAMAZIGHT:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Tamazight locales appear on Unix. */
+ case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
+ case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
+ }
+ return "ber_MA";
+ case LANG_TAMIL:
+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
+ case LANG_TATAR: return "tt_RU";
+ case LANG_TELUGU: return "te_IN";
+ case LANG_THAI: return "th_TH";
+ case LANG_TIBETAN: return "bo_CN";
+ case LANG_TIGRINYA:
+ switch (sub)
+ {
+ case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
+ case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
+ }
+ return "ti";
+ case LANG_TSONGA: return "ts_ZA";
+ case LANG_TSWANA: return "tn_BW";
+ case LANG_TURKISH: return "tr_TR";
+ case LANG_TURKMEN: return "tk_TM";
+ case LANG_UKRAINIAN: return "uk_UA";
+ case LANG_URDU:
+ switch (sub)
+ {
+ case SUBLANG_URDU_PAKISTAN: return "ur_PK";
+ case SUBLANG_URDU_INDIA: return "ur_IN";
+ }
+ return "ur";
+ case LANG_UZBEK:
+ switch (sub)
+ {
+ case SUBLANG_UZBEK_LATIN: return "uz_UZ";
+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
+ }
+ return "uz";
+ case LANG_VENDA:
+ /* FIXME: It's not clear whether Venda has the ISO 639-2 two-letter code
+ "ve" or not.
+ http://www.loc.gov/standards/iso639-2/englangn.html has it, but
+ http://lcweb.loc.gov/standards/iso639-2/codechanges.html doesn't, */
+ return "ven_ZA"; /* or "ve_ZA"? */
+ case LANG_VIETNAMESE: return "vi_VN";
+ case LANG_WELSH: return "cy_GB";
+ case LANG_XHOSA: return "xh_ZA";
+ case LANG_YI: return "sit_CN";
+ case LANG_YIDDISH: return "yi_IL";
+ case LANG_YORUBA: return "yo_NG";
+ case LANG_ZULU: return "zu_ZA";
+ default: return "C";
+ }
+}
+
+/* localname.c from gettext END. */
+
+
+
+/* Support functions. */
+
+static __inline__ uint32_t
+do_swap_u32 (uint32_t i)
+{
+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+
+#define SWAPIT(flag, data) ((flag) ? do_swap_u32(data) : (data))
+
+
+/* We assume to have `unsigned long int' value with at least 32 bits. */
+#define HASHWORDBITS 32
+
+/* The so called `hashpjw' function by P.J. Weinberger
+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
+static __inline__ unsigned long
+hash_string( const char *str_param )
+{
+ unsigned long int hval, g;
+ const char *str = str_param;
+
+ hval = 0;
+ while (*str != '\0')
+ {
+ hval <<= 4;
+ hval += (unsigned long int) *str++;
+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+ if (g != 0)
+ {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
+ }
+ return hval;
+}
+
+
+/* Generic message catalog and gettext stuff. */
+
+/* The magic number of the GNU message catalog format. */
+#define MAGIC 0x950412de
+#define MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format. */
+#define MO_REVISION_NUMBER 0
+
+
+/* Header for binary .mo file format. */
+struct mo_file_header
+{
+ /* The magic number. */
+ uint32_t magic;
+ /* The revision number of the file format. */
+ uint32_t revision;
+ /* The number of strings pairs. */
+ uint32_t nstrings;
+ /* Offset of table with start offsets of original strings. */
+ uint32_t orig_tab_offset;
+ /* Offset of table with start offsets of translation strings. */
+ uint32_t trans_tab_offset;
+ /* Size of hashing table. */
+ uint32_t hash_tab_size;
+ /* Offset of first hashing entry. */
+ uint32_t hash_tab_offset;
+};
+
+
+struct string_desc
+{
+ /* Length of addressed string. */
+ uint32_t length;
+ /* Offset of string in file. */
+ uint32_t offset;
+};
+
+
+struct overflow_space_s
+{
+ struct overflow_space_s *next;
+ uint32_t idx;
+ uint32_t length;
+ char d[1];
+};
+
+struct loaded_domain
+{
+ char *data;
+ char *data_native; /* Data mapped to the native version of the
+ string. (Allocated along with DATA). */
+ int must_swap;
+ uint16_t nstrings; /* Number of strings. */
+ uint16_t *mapped; /* Array of mapping indicators:
+ 0 := Not mapped (original utf8).
+ 1 := Mapped to native encoding in overflow space.
+ >=2 := Mapped to native encoding. The value
+ gives the length of the mapped string.
+ Because the terminating nul is included
+ in the length and an empty string is
+ not allowed, values are always > 1. */
+ struct overflow_space_s *overflow_space;
+ struct string_desc *orig_tab;
+ struct string_desc *trans_tab;
+ uint32_t hash_size;
+ uint32_t *hash_tab;
+};
+
+
+/* The list of domains we we are aware of. This list is protected by
+ the criticla section DOMAINLIST_ACCESS_CS. */
+static struct domainlist_s *domainlist;
+
+/* A critical section to guard access to the domainlist. */
+static CRITICAL_SECTION domainlist_access_cs;
+
+/* The name of the current domain. This is a malloced string. This
+ is a gobal variable which is not thread-safe. */
+static char *current_domainname;
+
+
+
+/* Constructor for this module. Called from DllMain. */
+static void module_init (void) __attribute__ ((__constructor__));
+static void
+module_init (void)
+{
+ InitializeCriticalSection (&domainlist_access_cs);
+}
+
+
+/* Free the domain data. */
+static void
+free_domain (struct loaded_domain *domain)
+{
+ struct overflow_space_s *os, *os2;
+
+ jnlib_free (domain->data);
+ jnlib_free (domain->mapped);
+ for (os = domain->overflow_space; os; os = os2)
+ {
+ os2 = os->next;
+ jnlib_free (os);
+ }
+ jnlib_free (domain);
+}
+
+
+static struct loaded_domain *
+load_domain (const char *filename)
+{
+ FILE *fp;
+ size_t size;
+ struct stat st;
+ struct mo_file_header *data = NULL;
+ struct loaded_domain *domain = NULL;
+ size_t to_read;
+ char *read_ptr;
+
+ fp = fopen (filename, "rb");
+ if (!fp)
+ {
+ return NULL;
+ }
+ if (fstat (fileno (fp), &st)
+ || (size = (size_t) st.st_size) != st.st_size
+ || size < sizeof (struct mo_file_header))
+ {
+ fclose (fp);
+ return NULL;
+ }
+
+ data = (2*size <= size)? NULL : jnlib_malloc (2*size);
+ if (!data)
+ {
+ fclose (fp);
+ return NULL;
+ }
+
+ to_read = size;
+ read_ptr = (char *) data;
+ do
+ {
+ long int nb = fread (read_ptr, 1, to_read, fp);
+ if (nb < to_read)
+ {
+ fclose (fp);
+ jnlib_free (data);
+ return NULL;
+ }
+ read_ptr += nb;
+ to_read -= nb;
+ }
+ while (to_read > 0);
+ fclose (fp);
+
+ /* Using the magic number we can test whether it really is a message
+ catalog file. */
+ if (data->magic != MAGIC && data->magic != MAGIC_SWAPPED)
+ {
+ /* The magic number is wrong: not a message catalog file. */
+ jnlib_free (data);
+ return NULL;
+ }
+
+ domain = jnlib_calloc (1, sizeof *domain);
+ if (!domain)
+ {
+ jnlib_free (data);
+ return NULL;
+ }
+ domain->data = (char *) data;
+ domain->data_native = (char *) data + size;
+ domain->must_swap = data->magic != MAGIC;
+
+ /* Fill in the information about the available tables. */
+ switch (SWAPIT (domain->must_swap, data->revision))
+ {
+ case MO_REVISION_NUMBER:
+ {
+ uint32_t nstrings;
+
+ /* Because we use 16 bit values for the mapping array, we
+ can't support more that 65534 strings (65535 would be okay,
+ but it is often used as a special value). A PO file with
+ that many translations is very unlikely given that GnuPG
+ with its very large number of strings has only about 1600
+ strings + variants. */
+ nstrings = SWAPIT (domain->must_swap, data->nstrings);
+ if (nstrings > 65534)
+ goto bailout;
+ domain->nstrings = nstrings;
+ domain->orig_tab = (struct string_desc *)
+ ((char *) data + SWAPIT (domain->must_swap, data->orig_tab_offset));
+ domain->trans_tab = (struct string_desc *)
+ ((char *) data + SWAPIT (domain->must_swap, data->trans_tab_offset));
+ domain->hash_size = SWAPIT (domain->must_swap, data->hash_tab_size);
+ domain->hash_tab = (uint32_t *)
+ ((char *) data + SWAPIT (domain->must_swap, data->hash_tab_offset));
+ }
+ break;
+
+ default: /* This is an invalid revision. */
+ goto bailout;
+ }
+
+ /* Allocate an array to keep track of code page mappings. */
+ domain->mapped = jnlib_calloc (domain->nstrings, sizeof *domain->mapped);
+ if (domain->mapped)
+ return domain; /* Okay. */
+
+ bailout:
+ jnlib_free (data);
+ jnlib_free (domain);
+ return NULL;
+}
+
+
+/* Return a malloced wide char string from an UTF-8 encoded input
+ string STRING. Caller must free this value. On failure returns
+ NULL. The result of calling this function with STRING set to NULL
+ is not defined. */
+static wchar_t *
+utf8_to_wchar (const char *string, size_t length, size_t *retlen)
+{
+ int n;
+ wchar_t *result;
+ size_t nbytes;
+
+ n = MultiByteToWideChar (CP_UTF8, 0, string, length, NULL, 0);
+ if (n < 0 || (n+1) <= 0)
+ return NULL;
+
+ nbytes = (size_t)(n+1) * sizeof(*result);
+ if (nbytes / sizeof(*result) != (n+1))
+ {
+ gpg_err_set_errno (ENOMEM);
+ return NULL;
+ }
+ result = jnlib_malloc (nbytes);
+ if (!result)
+ return NULL;
+
+ n = MultiByteToWideChar (CP_UTF8, 0, string, length, result, n);
+ if (n < 0)
+ {
+ jnlib_free (result);
+ return NULL;
+ }
+ *retlen = n;
+ return result;
+}
+
+
+/* Return a malloced string encoded in UTF-8 from the wide char input
+ string STRING. Caller must free this value. On failure returns
+ NULL. The result of calling this function with STRING set to NULL
+ is not defined. */
+static char *
+wchar_to_native (const wchar_t *string, size_t length, size_t *retlen)
+{
+ int n;
+ char *result;
+
+ n = WideCharToMultiByte (CP_ACP, 0, string, length, NULL, 0, NULL, NULL);
+ if (n < 0 || (n+1) <= 0)
+ return NULL;
+
+ result = jnlib_malloc (n+1);
+ if (!result)
+ return NULL;
+
+ n = WideCharToMultiByte (CP_ACP, 0, string, length, result, n, NULL, NULL);
+ if (n < 0)
+ {
+ jnlib_free (result);
+ return NULL;
+ }
+ *retlen = n;
+ return result;
+}
+
+
+/* Convert UTF8 to the native codepage. Caller must free the return value. */
+static char *
+utf8_to_native (const char *string, size_t length, size_t *retlen)
+{
+ wchar_t *wstring;
+ char *result;
+ size_t newlen;
+
+ wstring = utf8_to_wchar (string, length, &newlen);
+ if (wstring)
+ {
+ result = wchar_to_native (wstring, newlen, &newlen);
+ jnlib_free (wstring);
+ }
+ else
+ result = NULL;
+ *retlen = result? newlen : 0;
+ return result;
+}
+
+
+
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+const char *
+_gpg_w32_bindtextdomain (const char *domainname, const char *dirname)
+{
+ const char *catval_full;
+ char *catval;
+ char *fname;
+ const char *retvalue;
+
+ if (!dirname)
+ {
+ struct domainlist_s *dl;
+
+ retvalue = NULL;
+ EnterCriticalSection (&domainlist_access_cs);
+ {
+ for (dl = domainlist; dl; dl = dl->next)
+ if (!strcmp (dl->name, domainname))
+ {
+ retvalue = dl->dname;
+ break;
+ }
+ }
+ LeaveCriticalSection (&domainlist_access_cs);
+ return retvalue;
+ }
+
+ /* DIRNAME is "$INSTALLDIR\share\locale". */
+
+ /* First find out the category value. */
+ catval = NULL;
+ catval_full = my_nl_locale_name ("LC_MESSAGES");
+
+ /* Normally we would have to loop over all returned locales and
+ search for the right file. See gettext intl/dcigettext.c for all
+ the gory details. Here, we only support the basic category, and
+ ignore everything else. */
+ if (catval_full)
+ {
+ char *p;
+
+ catval = jnlib_malloc (strlen (catval_full) + 1);
+ if (catval)
+ {
+ strcpy (catval, catval_full);
+ p = strchr (catval, '_');
+ if (p)
+ *p = '\0';
+ }
+ }
+ if (!catval)
+ return NULL;
+
+ /* Now build the filename string. The complete filename is this:
+ DIRNAME + \ + CATVAL + \LC_MESSAGES\ + DOMAINNAME + .mo */
+ {
+ int len = (strlen (dirname) + 1 + strlen (catval) + 13
+ + strlen (domainname) + 3 + 1);
+ char *p;
+
+ fname = jnlib_malloc (len);
+ if (!fname)
+ {
+ jnlib_free (catval);
+ return NULL;
+ }
+
+ p = fname;
+ strcpy (p, dirname);
+ p += strlen (dirname);
+ *(p++) = '\\';
+ strcpy (p, catval);
+ p += strlen (catval);
+ strcpy (p, "\\LC_MESSAGES\\");
+ p += 13;
+ strcpy (p, domainname);
+ p += strlen (domainname);
+ strcpy (p, ".mo");
+ }
+
+ jnlib_free (catval);
+
+ /* Store the domain information in the domainlist. */
+ {
+ struct domainlist_s *item, *dl;
+ char *rel_ptr1 = NULL;
+ char *rel_ptr2 = NULL;
+
+ item = jnlib_calloc (1, sizeof *dl + strlen (domainname));
+ if (!item)
+ {
+ jnlib_free (fname);
+ return NULL;
+ }
+ strcpy (item->name, domainname);
+ item->dname = jnlib_malloc (strlen (dirname) +1);
+ if(!item->dname)
+ {
+ jnlib_free (item);
+ jnlib_free (fname);
+ return NULL;
+ }
+ strcpy (item->dname, dirname);
+ retvalue = item->dname;
+
+ EnterCriticalSection (&domainlist_access_cs);
+ {
+ for (dl = domainlist; dl; dl = dl->next)
+ if (!strcmp (dl->name, domainname))
+ break;
+ if (!dl) /* First time called for this domainname. */
+ {
+ item->fname = fname;
+ fname = NULL;
+ item->next = domainlist;
+ domainlist = item;
+ item = NULL;
+ }
+ else /* Update only. */
+ {
+ rel_ptr1 = dl->fname;
+ dl->fname = fname;
+ fname = NULL;
+ rel_ptr2 = dl->dname;
+ dl->dname = item->dname;
+ item->dname = NULL;
+ }
+ }
+ LeaveCriticalSection (&domainlist_access_cs);
+
+ jnlib_free (item);
+ jnlib_free (rel_ptr1);
+ jnlib_free (rel_ptr2);
+ }
+
+ return retvalue;
+}
+
+
+
+
+static const char *
+get_plural (const char *data, size_t datalen, unsigned long nplural)
+{
+ const char *p;
+ int idx;
+
+ /* We only support the Germanic rule. */
+ idx = (nplural == 1? 0 : 1);
+
+ for (; idx; idx--)
+ {
+ p = strchr (data, 0) + 1;
+ if (p >= data+datalen)
+ return "ERROR in GETTEXT (bad plural entry)";
+ datalen -= (p-data);
+ data = p;
+ }
+ return data;
+}
+
+
+static const char*
+get_string (struct loaded_domain *domain, uint32_t idx,
+ int use_plural, unsigned long nplural)
+{
+ struct tls_space_s *tls = get_tls ();
+ struct overflow_space_s *os;
+ const char *trans; /* Pointer to the translated entry. */
+ size_t translen; /* Length of that entry. */
+
+ if (idx > 65534)
+ return "ERROR in GETTEXT (too many strings)";
+
+ if (tls->gt_use_utf8)
+ {
+ trans = (domain->data
+ + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
+ translen = SWAPIT(domain->must_swap, domain->trans_tab[idx].length);
+ }
+ else if (!domain->mapped[idx])
+ {
+ /* Not yet mapped. Map from utf-8 to native encoding now. */
+ const char *p_utf8;
+ size_t plen_utf8, buflen;
+ char *buf;
+
+ p_utf8 = (domain->data
+ + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
+ plen_utf8 = SWAPIT(domain->must_swap, domain->trans_tab[idx].length);
+
+ buf = utf8_to_native (p_utf8, plen_utf8, &buflen);
+ if (!buf)
+ {
+ trans = "ERROR in GETTEXT MALLOC";
+ translen = 0;
+ }
+ else if (buflen <= plen_utf8 && buflen > 1)
+ {
+ /* Copy into the DATA_NATIVE area. */
+ char *p_tmp;
+
+ p_tmp = (domain->data_native
+ + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
+ memcpy (p_tmp, buf, buflen);
+ domain->mapped[idx] = buflen;
+ trans = p_tmp;
+ translen = buflen;
+ }
+ else
+ {
+ /* There is not enough space for the translation (or for
+ whatever reason an empty string is used): Store it in the
+ overflow_space and mark that in the mapped array.
+ Because UTF-8 strings are in general shorter than the
+ Windows 2 byte encodings, we expect that this won't
+ happen too often (if at all) and thus we use a linked
+ list to manage this space. */
+ os = jnlib_malloc (sizeof *os + buflen);
+ if (os)
+ {
+ os->idx = idx;
+ memcpy (os->d, buf, buflen);
+ os->length = buflen;
+ os->next = domain->overflow_space;
+ domain->overflow_space = os;
+ domain->mapped[idx] = 1;
+ trans = os->d;
+ translen = os->length;
+ }
+ else
+ {
+ trans = "ERROR in GETTEXT MALLOC";
+ translen = 0;
+ }
+ }
+ jnlib_free (buf);
+ }
+ else if (domain->mapped[idx] == 1)
+ {
+ /* The translated string is in the overflow_space. */
+ for (os=domain->overflow_space; os; os = os->next)
+ if (os->idx == idx)
+ break;
+ if (os)
+ {
+ trans = os->d;
+ translen = os->length;
+ }
+ else
+ {
+ trans = "ERROR in GETTEXT (overflow space)\n";
+ translen = 0;
+ }
+ }
+ else
+ {
+ trans = (domain->data_native
+ + SWAPIT(domain->must_swap, domain->trans_tab[idx].offset));
+ translen = domain->mapped[idx];
+ }
+
+ if (use_plural && translen)
+ return get_plural (trans, translen, nplural);
+ else
+ return trans;
+}
+
+
+static const char *
+do_gettext (const char *domainname,
+ const char *msgid, const char *msgid2, unsigned long nplural)
+{
+ struct domainlist_s *dl;
+ struct loaded_domain *domain;
+ int load_failed;
+ uint32_t top, bottom, nstr;
+ char *filename;
+
+ if (!domainname)
+ domainname = current_domainname? current_domainname : "";
+
+ /* FIXME: The whole locking stuff is a bit questionable because
+ gettext does not claim to be thread-safe. We need to investigate
+ this further. */
+
+ load_failed = 0;
+ domain = NULL;
+ filename = NULL;
+ EnterCriticalSection (&domainlist_access_cs);
+ {
+ for (dl = domainlist; dl; dl = dl->next)
+ if (!strcmp (dl->name, domainname))
+ {
+ load_failed = dl->load_failed;
+ domain = dl->domain;
+ break;
+ }
+ if (dl && !domain && !load_failed && dl->fname)
+ {
+ filename = jnlib_malloc (strlen (dl->fname) + 1);
+ if (filename)
+ strcpy (filename, dl->fname);
+ }
+ }
+ LeaveCriticalSection (&domainlist_access_cs);
+ if (!dl)
+ goto not_found; /* DOMAINNAME not bound. */
+ if (filename)
+ {
+ /* No attempt so far to load the MO file. Try now. */
+ int updated = 0;
+
+ domain = load_domain (filename);
+ jnlib_free (filename);
+ filename = NULL;
+ EnterCriticalSection (&domainlist_access_cs);
+ {
+ for (dl = domainlist; dl; dl = dl->next)
+ if (!strcmp (dl->name, domainname))
+ {
+ if (domain)
+ dl->domain = domain;
+ else
+ dl->load_failed = 1;
+ updated = 1;
+ break;
+ }
+ }
+ LeaveCriticalSection (&domainlist_access_cs);
+ if (!updated)
+ {
+ /* Ooops - lost the domain. */
+ free_domain (domain);
+ domain = NULL;
+ }
+ }
+
+ if (!domain)
+ goto not_found; /* No MO file. */
+
+ /* First try to use the hash table. */
+ if (domain->hash_size > 2 && domain->hash_tab)
+ {
+ /* Use the hashing table. */
+ uint32_t len = strlen (msgid);
+ uint32_t hash_val = hash_string (msgid);
+ uint32_t idx = hash_val % domain->hash_size;
+ uint32_t incr = 1 + (hash_val % (domain->hash_size - 2));
+
+ while ( (nstr = SWAPIT (domain->must_swap, domain->hash_tab[idx])) )
+ {
+ nstr--;
+ if (nstr < domain->nstrings
+ && SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr].length) >= len
+ && !strcmp (msgid, (domain->data
+ + SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr].offset))))
+ {
+ return get_string (domain, nstr, !!msgid2, nplural);
+ }
+
+ if (idx >= domain->hash_size - incr)
+ idx -= domain->hash_size - incr;
+ else
+ idx += incr;
+ }
+ }
+
+ /* Now we try the default method: binary search in the sorted array
+ of messages. */
+ bottom = 0;
+ top = domain->nstrings;
+ while (bottom < top)
+ {
+ int cmp_val;
+
+ nstr = (bottom + top) / 2;
+ cmp_val = strcmp (msgid, (domain->data
+ + SWAPIT(domain->must_swap,
+ domain->orig_tab[nstr].offset)));
+ if (cmp_val < 0)
+ top = nstr;
+ else if (cmp_val > 0)
+ bottom = nstr + 1;
+ else
+ {
+ return get_string (domain, nstr, !!msgid2, nplural);
+ }
+ }
+
+ not_found:
+ /* We use the standard Germanic rule if plural has been requested. */
+ return msgid2? (nplural == 1? msgid : msgid2) : msgid;
+}
+
+
+const char *
+_gpg_w32_textdomain (const char *domainname)
+{
+ char *string;
+
+ if (!domainname)
+ {
+ if (!current_domainname)
+ gpg_err_set_errno (0);
+ }
+ else
+ {
+ string = malloc (strlen (domainname) + 1);
+ if (!string)
+ return NULL;
+ strcpy (string, domainname);
+ current_domainname = string;
+ }
+ return current_domainname;
+}
+
+
+/* A direct implementation of gettext instead of a macro calling
+ dngettext. This is so that the caller does not need to push dummy
+ values on the stack. The used domain is the first one registered
+ with bindtextdomain. */
+const char *
+_gpg_w32_gettext (const char *msgid)
+{
+ return do_gettext (NULL, msgid, NULL, 0);
+}
+
+
+/* A direct implementation of dgettext instead of a macro calling
+ dngettext. This is so that the caller does not need to push dummy
+ values on the stack. */
+const char *
+_gpg_w32_dgettext (const char *domainname, const char *msgid)
+{
+ return do_gettext (domainname, msgid, NULL, 0);
+}
+
+
+/* Our implementation of dngettext. This is the most genereic
+ function we have; a macro implements ngettext. */
+const char *
+_gpg_w32_dngettext (const char *domainname, const char *msgid1,
+ const char *msgid2, unsigned long int n)
+{
+ /* We use the simple Germanic plural rule. */
+ return do_gettext (domainname, msgid1, msgid2, n);
+}
+
+
+/* Return the locale name as used by gettext. The return value will
+ never be NULL. */
+const char *
+_gpg_w32_gettext_localename (void)
+{
+ const char *s;
+
+ s = my_nl_locale_name ("LC_MESSAGES");
+ return s? s:"";
+}
+
+
+/* With a VALUE of 1 switch the gettext functions into utf8 mode.
+ That is the strings are returned without translation to the native
+ charset. A VALUE of 0 switches back to translated strings. A VALUE
+ of -1 returns the current value. */
+int
+_gpg_w32_gettext_use_utf8 (int value)
+{
+ struct tls_space_s *tls = get_tls ();
+ int last = tls->gt_use_utf8;
+ if (value != -1)
+ tls->gt_use_utf8 = value;
+ return last;
+}
+
+
+#ifdef TEST
+int
+main (int argc, char **argv)
+{
+ const char atext1[] =
+ "Warning: You have entered an insecure passphrase.%%0A"
+ "A passphrase should be at least %u character long.";
+ const char atext2[] =
+ "Warning: You have entered an insecure passphrase.%%0A"
+ "A passphrase should be at least %u characters long.";
+
+ if (argc)
+ {
+ argc--;
+ argv++;
+ }
+
+ _gpg_err_w32_bindtextdomain ("gnupg2", "c:/programme/gnu/gnupg/share/locale");
+
+ printf ("locale is `%s'\n", _gpg_err_w32_gettext_localename ());
+ fputs ("text with N=1:\n", stdout);
+ fputs (_gpg_err_w32_ngettext (atext1, atext2, 1), stdout);
+ fputs ("\n\ntext with N=2:\n", stdout);
+ fputs (_gpg_err_w32_ngettext (atext1, atext2, 2), stdout);
+ fputs ("\nready\n", stdout);
+
+ return 0;
+}
+/*
+ * Local Variables:
+ * compile-command: "i586-mingw32msvc-gcc -DTEST -Wall -g w32-gettext.c"
+ * End:
+ */
+#endif /*TEST*/
diff --git a/plugins/MirOTR/libgpg-error-1.9/w32ce-add.h b/plugins/MirOTR/libgpg-error-1.9/w32ce-add.h
new file mode 100644
index 0000000000..83b75386f0
--- /dev/null
+++ b/plugins/MirOTR/libgpg-error-1.9/w32ce-add.h
@@ -0,0 +1,7 @@
+## w32ce-add.h - Snippet to be be included into gpg-error.h.
+## (Comments are indicated by a double hash mark)
+
+/* Substitute for strerror - this one is thread safe. */
+char *_gpg_w32ce_strerror (int err);
+#define strerror(a) _gpg_w32ce_strerror (a)
+