PageRenderTime 48ms CodeModel.GetById 12ms app.highlight 30ms RepoModel.GetById 1ms app.codeStats 0ms

/vendors/gnutls/include/gpg-error.h

https://bitbucket.org/hjwhang/libimobiledevice-win32
C++ Header | 703 lines | 537 code | 60 blank | 106 comment | 1 complexity | 818397e3569a04566b45d17b99f4ac25 MD5 | raw file
  1/* Output of mkheader.awk.  DO NOT EDIT.  -*- buffer-read-only: t -*- */
  2
  3/* gpg-error.h - Public interface to libgpg-error.
  4   Copyright (C) 2003, 2004, 2010 g10 Code GmbH
  5
  6   This file is part of libgpg-error.
  7 
  8   libgpg-error is free software; you can redistribute it and/or
  9   modify it under the terms of the GNU Lesser General Public License
 10   as published by the Free Software Foundation; either version 2.1 of
 11   the License, or (at your option) any later version.
 12 
 13   libgpg-error is distributed in the hope that it will be useful, but
 14   WITHOUT ANY WARRANTY; without even the implied warranty of
 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 16   Lesser General Public License for more details.
 17 
 18   You should have received a copy of the GNU Lesser General Public
 19   License along with this program; if not, see <http://www.gnu.org/licenses/>.
 20 */
 21
 22
 23#ifndef GPG_ERROR_H
 24#define GPG_ERROR_H	1
 25
 26#include <stddef.h>
 27
 28#ifdef __GNUC__
 29#define GPG_ERR_INLINE __inline__
 30#elif __STDC_VERSION__ >= 199901L
 31#define GPG_ERR_INLINE inline
 32#else
 33#ifndef GPG_ERR_INLINE
 34#define GPG_ERR_INLINE
 35#endif 
 36#endif
 37
 38
 39#ifdef __cplusplus
 40extern "C" {
 41#if 0 /* just to make Emacs auto-indent happy */
 42}
 43#endif
 44#endif /* __cplusplus */
 45
 46/* The GnuPG project consists of many components.  Error codes are
 47   exchanged between all components.  The common error codes and their
 48   user-presentable descriptions are kept into a shared library to
 49   allow adding new error codes and components without recompiling any
 50   of the other components.  The interface will not change in a
 51   backward incompatible way.
 52
 53   An error code together with an error source build up an error
 54   value.  As the error value is been passed from one component to
 55   another, it preserver the information about the source and nature
 56   of the error.
 57
 58   A component of the GnuPG project can define the following macros to
 59   tune the behaviour of the library:
 60
 61   GPG_ERR_SOURCE_DEFAULT: Define to an error source of type
 62   gpg_err_source_t to make that source the default for gpg_error().
 63   Otherwise GPG_ERR_SOURCE_UNKNOWN is used as default.
 64
 65   GPG_ERR_ENABLE_GETTEXT_MACROS: Define to provide macros to map the
 66   internal gettext API to standard names.  This has only an effect on
 67   Windows platforms.  */
 68
 69
 70/* The error source type gpg_err_source_t.
 71
 72   Where as the Poo out of a welle small
 73   Taketh his firste springing and his sours.
 74					--Chaucer.  */
 75
 76/* Only use free slots, never change or reorder the existing
 77   entries.  */
 78typedef enum
 79  {
 80    GPG_ERR_SOURCE_UNKNOWN = 0,
 81    GPG_ERR_SOURCE_GCRYPT = 1,
 82    GPG_ERR_SOURCE_GPG = 2,
 83    GPG_ERR_SOURCE_GPGSM = 3,
 84    GPG_ERR_SOURCE_GPGAGENT = 4,
 85    GPG_ERR_SOURCE_PINENTRY = 5,
 86    GPG_ERR_SOURCE_SCD = 6,
 87    GPG_ERR_SOURCE_GPGME = 7,
 88    GPG_ERR_SOURCE_KEYBOX = 8,
 89    GPG_ERR_SOURCE_KSBA = 9,
 90    GPG_ERR_SOURCE_DIRMNGR = 10,
 91    GPG_ERR_SOURCE_GSTI = 11,
 92    GPG_ERR_SOURCE_GPA = 12,
 93    GPG_ERR_SOURCE_KLEO = 13,
 94    GPG_ERR_SOURCE_G13 = 14,
 95    GPG_ERR_SOURCE_ANY = 31,
 96    GPG_ERR_SOURCE_USER_1 = 32,
 97    GPG_ERR_SOURCE_USER_2 = 33,
 98    GPG_ERR_SOURCE_USER_3 = 34,
 99    GPG_ERR_SOURCE_USER_4 = 35,
100
101    /* This is one more than the largest allowed entry.  */
102    GPG_ERR_SOURCE_DIM = 128
103  } gpg_err_source_t;
104
105
106/* The error code type gpg_err_code_t.  */
107
108/* Only use free slots, never change or reorder the existing
109   entries.  */
110typedef enum
111  {
112    GPG_ERR_NO_ERROR = 0,
113    GPG_ERR_GENERAL = 1,
114    GPG_ERR_UNKNOWN_PACKET = 2,
115    GPG_ERR_UNKNOWN_VERSION = 3,
116    GPG_ERR_PUBKEY_ALGO = 4,
117    GPG_ERR_DIGEST_ALGO = 5,
118    GPG_ERR_BAD_PUBKEY = 6,
119    GPG_ERR_BAD_SECKEY = 7,
120    GPG_ERR_BAD_SIGNATURE = 8,
121    GPG_ERR_NO_PUBKEY = 9,
122    GPG_ERR_CHECKSUM = 10,
123    GPG_ERR_BAD_PASSPHRASE = 11,
124    GPG_ERR_CIPHER_ALGO = 12,
125    GPG_ERR_KEYRING_OPEN = 13,
126    GPG_ERR_INV_PACKET = 14,
127    GPG_ERR_INV_ARMOR = 15,
128    GPG_ERR_NO_USER_ID = 16,
129    GPG_ERR_NO_SECKEY = 17,
130    GPG_ERR_WRONG_SECKEY = 18,
131    GPG_ERR_BAD_KEY = 19,
132    GPG_ERR_COMPR_ALGO = 20,
133    GPG_ERR_NO_PRIME = 21,
134    GPG_ERR_NO_ENCODING_METHOD = 22,
135    GPG_ERR_NO_ENCRYPTION_SCHEME = 23,
136    GPG_ERR_NO_SIGNATURE_SCHEME = 24,
137    GPG_ERR_INV_ATTR = 25,
138    GPG_ERR_NO_VALUE = 26,
139    GPG_ERR_NOT_FOUND = 27,
140    GPG_ERR_VALUE_NOT_FOUND = 28,
141    GPG_ERR_SYNTAX = 29,
142    GPG_ERR_BAD_MPI = 30,
143    GPG_ERR_INV_PASSPHRASE = 31,
144    GPG_ERR_SIG_CLASS = 32,
145    GPG_ERR_RESOURCE_LIMIT = 33,
146    GPG_ERR_INV_KEYRING = 34,
147    GPG_ERR_TRUSTDB = 35,
148    GPG_ERR_BAD_CERT = 36,
149    GPG_ERR_INV_USER_ID = 37,
150    GPG_ERR_UNEXPECTED = 38,
151    GPG_ERR_TIME_CONFLICT = 39,
152    GPG_ERR_KEYSERVER = 40,
153    GPG_ERR_WRONG_PUBKEY_ALGO = 41,
154    GPG_ERR_TRIBUTE_TO_D_A = 42,
155    GPG_ERR_WEAK_KEY = 43,
156    GPG_ERR_INV_KEYLEN = 44,
157    GPG_ERR_INV_ARG = 45,
158    GPG_ERR_BAD_URI = 46,
159    GPG_ERR_INV_URI = 47,
160    GPG_ERR_NETWORK = 48,
161    GPG_ERR_UNKNOWN_HOST = 49,
162    GPG_ERR_SELFTEST_FAILED = 50,
163    GPG_ERR_NOT_ENCRYPTED = 51,
164    GPG_ERR_NOT_PROCESSED = 52,
165    GPG_ERR_UNUSABLE_PUBKEY = 53,
166    GPG_ERR_UNUSABLE_SECKEY = 54,
167    GPG_ERR_INV_VALUE = 55,
168    GPG_ERR_BAD_CERT_CHAIN = 56,
169    GPG_ERR_MISSING_CERT = 57,
170    GPG_ERR_NO_DATA = 58,
171    GPG_ERR_BUG = 59,
172    GPG_ERR_NOT_SUPPORTED = 60,
173    GPG_ERR_INV_OP = 61,
174    GPG_ERR_TIMEOUT = 62,
175    GPG_ERR_INTERNAL = 63,
176    GPG_ERR_EOF_GCRYPT = 64,
177    GPG_ERR_INV_OBJ = 65,
178    GPG_ERR_TOO_SHORT = 66,
179    GPG_ERR_TOO_LARGE = 67,
180    GPG_ERR_NO_OBJ = 68,
181    GPG_ERR_NOT_IMPLEMENTED = 69,
182    GPG_ERR_CONFLICT = 70,
183    GPG_ERR_INV_CIPHER_MODE = 71,
184    GPG_ERR_INV_FLAG = 72,
185    GPG_ERR_INV_HANDLE = 73,
186    GPG_ERR_TRUNCATED = 74,
187    GPG_ERR_INCOMPLETE_LINE = 75,
188    GPG_ERR_INV_RESPONSE = 76,
189    GPG_ERR_NO_AGENT = 77,
190    GPG_ERR_AGENT = 78,
191    GPG_ERR_INV_DATA = 79,
192    GPG_ERR_ASSUAN_SERVER_FAULT = 80,
193    GPG_ERR_ASSUAN = 81,
194    GPG_ERR_INV_SESSION_KEY = 82,
195    GPG_ERR_INV_SEXP = 83,
196    GPG_ERR_UNSUPPORTED_ALGORITHM = 84,
197    GPG_ERR_NO_PIN_ENTRY = 85,
198    GPG_ERR_PIN_ENTRY = 86,
199    GPG_ERR_BAD_PIN = 87,
200    GPG_ERR_INV_NAME = 88,
201    GPG_ERR_BAD_DATA = 89,
202    GPG_ERR_INV_PARAMETER = 90,
203    GPG_ERR_WRONG_CARD = 91,
204    GPG_ERR_NO_DIRMNGR = 92,
205    GPG_ERR_DIRMNGR = 93,
206    GPG_ERR_CERT_REVOKED = 94,
207    GPG_ERR_NO_CRL_KNOWN = 95,
208    GPG_ERR_CRL_TOO_OLD = 96,
209    GPG_ERR_LINE_TOO_LONG = 97,
210    GPG_ERR_NOT_TRUSTED = 98,
211    GPG_ERR_CANCELED = 99,
212    GPG_ERR_BAD_CA_CERT = 100,
213    GPG_ERR_CERT_EXPIRED = 101,
214    GPG_ERR_CERT_TOO_YOUNG = 102,
215    GPG_ERR_UNSUPPORTED_CERT = 103,
216    GPG_ERR_UNKNOWN_SEXP = 104,
217    GPG_ERR_UNSUPPORTED_PROTECTION = 105,
218    GPG_ERR_CORRUPTED_PROTECTION = 106,
219    GPG_ERR_AMBIGUOUS_NAME = 107,
220    GPG_ERR_CARD = 108,
221    GPG_ERR_CARD_RESET = 109,
222    GPG_ERR_CARD_REMOVED = 110,
223    GPG_ERR_INV_CARD = 111,
224    GPG_ERR_CARD_NOT_PRESENT = 112,
225    GPG_ERR_NO_PKCS15_APP = 113,
226    GPG_ERR_NOT_CONFIRMED = 114,
227    GPG_ERR_CONFIGURATION = 115,
228    GPG_ERR_NO_POLICY_MATCH = 116,
229    GPG_ERR_INV_INDEX = 117,
230    GPG_ERR_INV_ID = 118,
231    GPG_ERR_NO_SCDAEMON = 119,
232    GPG_ERR_SCDAEMON = 120,
233    GPG_ERR_UNSUPPORTED_PROTOCOL = 121,
234    GPG_ERR_BAD_PIN_METHOD = 122,
235    GPG_ERR_CARD_NOT_INITIALIZED = 123,
236    GPG_ERR_UNSUPPORTED_OPERATION = 124,
237    GPG_ERR_WRONG_KEY_USAGE = 125,
238    GPG_ERR_NOTHING_FOUND = 126,
239    GPG_ERR_WRONG_BLOB_TYPE = 127,
240    GPG_ERR_MISSING_VALUE = 128,
241    GPG_ERR_HARDWARE = 129,
242    GPG_ERR_PIN_BLOCKED = 130,
243    GPG_ERR_USE_CONDITIONS = 131,
244    GPG_ERR_PIN_NOT_SYNCED = 132,
245    GPG_ERR_INV_CRL = 133,
246    GPG_ERR_BAD_BER = 134,
247    GPG_ERR_INV_BER = 135,
248    GPG_ERR_ELEMENT_NOT_FOUND = 136,
249    GPG_ERR_IDENTIFIER_NOT_FOUND = 137,
250    GPG_ERR_INV_TAG = 138,
251    GPG_ERR_INV_LENGTH = 139,
252    GPG_ERR_INV_KEYINFO = 140,
253    GPG_ERR_UNEXPECTED_TAG = 141,
254    GPG_ERR_NOT_DER_ENCODED = 142,
255    GPG_ERR_NO_CMS_OBJ = 143,
256    GPG_ERR_INV_CMS_OBJ = 144,
257    GPG_ERR_UNKNOWN_CMS_OBJ = 145,
258    GPG_ERR_UNSUPPORTED_CMS_OBJ = 146,
259    GPG_ERR_UNSUPPORTED_ENCODING = 147,
260    GPG_ERR_UNSUPPORTED_CMS_VERSION = 148,
261    GPG_ERR_UNKNOWN_ALGORITHM = 149,
262    GPG_ERR_INV_ENGINE = 150,
263    GPG_ERR_PUBKEY_NOT_TRUSTED = 151,
264    GPG_ERR_DECRYPT_FAILED = 152,
265    GPG_ERR_KEY_EXPIRED = 153,
266    GPG_ERR_SIG_EXPIRED = 154,
267    GPG_ERR_ENCODING_PROBLEM = 155,
268    GPG_ERR_INV_STATE = 156,
269    GPG_ERR_DUP_VALUE = 157,
270    GPG_ERR_MISSING_ACTION = 158,
271    GPG_ERR_MODULE_NOT_FOUND = 159,
272    GPG_ERR_INV_OID_STRING = 160,
273    GPG_ERR_INV_TIME = 161,
274    GPG_ERR_INV_CRL_OBJ = 162,
275    GPG_ERR_UNSUPPORTED_CRL_VERSION = 163,
276    GPG_ERR_INV_CERT_OBJ = 164,
277    GPG_ERR_UNKNOWN_NAME = 165,
278    GPG_ERR_LOCALE_PROBLEM = 166,
279    GPG_ERR_NOT_LOCKED = 167,
280    GPG_ERR_PROTOCOL_VIOLATION = 168,
281    GPG_ERR_INV_MAC = 169,
282    GPG_ERR_INV_REQUEST = 170,
283    GPG_ERR_UNKNOWN_EXTN = 171,
284    GPG_ERR_UNKNOWN_CRIT_EXTN = 172,
285    GPG_ERR_LOCKED = 173,
286    GPG_ERR_UNKNOWN_OPTION = 174,
287    GPG_ERR_UNKNOWN_COMMAND = 175,
288    GPG_ERR_NOT_OPERATIONAL = 176,
289    GPG_ERR_NO_PASSPHRASE = 177,
290    GPG_ERR_NO_PIN = 178,
291    GPG_ERR_NOT_ENABLED = 179,
292    GPG_ERR_NO_ENGINE = 180,
293    GPG_ERR_UNFINISHED = 199,
294    GPG_ERR_BUFFER_TOO_SHORT = 200,
295    GPG_ERR_SEXP_INV_LEN_SPEC = 201,
296    GPG_ERR_SEXP_STRING_TOO_LONG = 202,
297    GPG_ERR_SEXP_UNMATCHED_PAREN = 203,
298    GPG_ERR_SEXP_NOT_CANONICAL = 204,
299    GPG_ERR_SEXP_BAD_CHARACTER = 205,
300    GPG_ERR_SEXP_BAD_QUOTATION = 206,
301    GPG_ERR_SEXP_ZERO_PREFIX = 207,
302    GPG_ERR_SEXP_NESTED_DH = 208,
303    GPG_ERR_SEXP_UNMATCHED_DH = 209,
304    GPG_ERR_SEXP_UNEXPECTED_PUNC = 210,
305    GPG_ERR_SEXP_BAD_HEX_CHAR = 211,
306    GPG_ERR_SEXP_ODD_HEX_NUMBERS = 212,
307    GPG_ERR_SEXP_BAD_OCT_CHAR = 213,
308    GPG_ERR_ASS_GENERAL = 257,
309    GPG_ERR_ASS_ACCEPT_FAILED = 258,
310    GPG_ERR_ASS_CONNECT_FAILED = 259,
311    GPG_ERR_ASS_INV_RESPONSE = 260,
312    GPG_ERR_ASS_INV_VALUE = 261,
313    GPG_ERR_ASS_INCOMPLETE_LINE = 262,
314    GPG_ERR_ASS_LINE_TOO_LONG = 263,
315    GPG_ERR_ASS_NESTED_COMMANDS = 264,
316    GPG_ERR_ASS_NO_DATA_CB = 265,
317    GPG_ERR_ASS_NO_INQUIRE_CB = 266,
318    GPG_ERR_ASS_NOT_A_SERVER = 267,
319    GPG_ERR_ASS_NOT_A_CLIENT = 268,
320    GPG_ERR_ASS_SERVER_START = 269,
321    GPG_ERR_ASS_READ_ERROR = 270,
322    GPG_ERR_ASS_WRITE_ERROR = 271,
323    GPG_ERR_ASS_TOO_MUCH_DATA = 273,
324    GPG_ERR_ASS_UNEXPECTED_CMD = 274,
325    GPG_ERR_ASS_UNKNOWN_CMD = 275,
326    GPG_ERR_ASS_SYNTAX = 276,
327    GPG_ERR_ASS_CANCELED = 277,
328    GPG_ERR_ASS_NO_INPUT = 278,
329    GPG_ERR_ASS_NO_OUTPUT = 279,
330    GPG_ERR_ASS_PARAMETER = 280,
331    GPG_ERR_ASS_UNKNOWN_INQUIRE = 281,
332    GPG_ERR_USER_1 = 1024,
333    GPG_ERR_USER_2 = 1025,
334    GPG_ERR_USER_3 = 1026,
335    GPG_ERR_USER_4 = 1027,
336    GPG_ERR_USER_5 = 1028,
337    GPG_ERR_USER_6 = 1029,
338    GPG_ERR_USER_7 = 1030,
339    GPG_ERR_USER_8 = 1031,
340    GPG_ERR_USER_9 = 1032,
341    GPG_ERR_USER_10 = 1033,
342    GPG_ERR_USER_11 = 1034,
343    GPG_ERR_USER_12 = 1035,
344    GPG_ERR_USER_13 = 1036,
345    GPG_ERR_USER_14 = 1037,
346    GPG_ERR_USER_15 = 1038,
347    GPG_ERR_USER_16 = 1039,
348    GPG_ERR_MISSING_ERRNO = 16381,
349    GPG_ERR_UNKNOWN_ERRNO = 16382,
350    GPG_ERR_EOF = 16383,
351
352    /* The following error codes are used to map system errors.  */
353#define GPG_ERR_SYSTEM_ERROR	(1 << 15)
354    GPG_ERR_E2BIG = GPG_ERR_SYSTEM_ERROR | 0,
355    GPG_ERR_EACCES = GPG_ERR_SYSTEM_ERROR | 1,
356    GPG_ERR_EADDRINUSE = GPG_ERR_SYSTEM_ERROR | 2,
357    GPG_ERR_EADDRNOTAVAIL = GPG_ERR_SYSTEM_ERROR | 3,
358    GPG_ERR_EADV = GPG_ERR_SYSTEM_ERROR | 4,
359    GPG_ERR_EAFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 5,
360    GPG_ERR_EAGAIN = GPG_ERR_SYSTEM_ERROR | 6,
361    GPG_ERR_EALREADY = GPG_ERR_SYSTEM_ERROR | 7,
362    GPG_ERR_EAUTH = GPG_ERR_SYSTEM_ERROR | 8,
363    GPG_ERR_EBACKGROUND = GPG_ERR_SYSTEM_ERROR | 9,
364    GPG_ERR_EBADE = GPG_ERR_SYSTEM_ERROR | 10,
365    GPG_ERR_EBADF = GPG_ERR_SYSTEM_ERROR | 11,
366    GPG_ERR_EBADFD = GPG_ERR_SYSTEM_ERROR | 12,
367    GPG_ERR_EBADMSG = GPG_ERR_SYSTEM_ERROR | 13,
368    GPG_ERR_EBADR = GPG_ERR_SYSTEM_ERROR | 14,
369    GPG_ERR_EBADRPC = GPG_ERR_SYSTEM_ERROR | 15,
370    GPG_ERR_EBADRQC = GPG_ERR_SYSTEM_ERROR | 16,
371    GPG_ERR_EBADSLT = GPG_ERR_SYSTEM_ERROR | 17,
372    GPG_ERR_EBFONT = GPG_ERR_SYSTEM_ERROR | 18,
373    GPG_ERR_EBUSY = GPG_ERR_SYSTEM_ERROR | 19,
374    GPG_ERR_ECANCELED = GPG_ERR_SYSTEM_ERROR | 20,
375    GPG_ERR_ECHILD = GPG_ERR_SYSTEM_ERROR | 21,
376    GPG_ERR_ECHRNG = GPG_ERR_SYSTEM_ERROR | 22,
377    GPG_ERR_ECOMM = GPG_ERR_SYSTEM_ERROR | 23,
378    GPG_ERR_ECONNABORTED = GPG_ERR_SYSTEM_ERROR | 24,
379    GPG_ERR_ECONNREFUSED = GPG_ERR_SYSTEM_ERROR | 25,
380    GPG_ERR_ECONNRESET = GPG_ERR_SYSTEM_ERROR | 26,
381    GPG_ERR_ED = GPG_ERR_SYSTEM_ERROR | 27,
382    GPG_ERR_EDEADLK = GPG_ERR_SYSTEM_ERROR | 28,
383    GPG_ERR_EDEADLOCK = GPG_ERR_SYSTEM_ERROR | 29,
384    GPG_ERR_EDESTADDRREQ = GPG_ERR_SYSTEM_ERROR | 30,
385    GPG_ERR_EDIED = GPG_ERR_SYSTEM_ERROR | 31,
386    GPG_ERR_EDOM = GPG_ERR_SYSTEM_ERROR | 32,
387    GPG_ERR_EDOTDOT = GPG_ERR_SYSTEM_ERROR | 33,
388    GPG_ERR_EDQUOT = GPG_ERR_SYSTEM_ERROR | 34,
389    GPG_ERR_EEXIST = GPG_ERR_SYSTEM_ERROR | 35,
390    GPG_ERR_EFAULT = GPG_ERR_SYSTEM_ERROR | 36,
391    GPG_ERR_EFBIG = GPG_ERR_SYSTEM_ERROR | 37,
392    GPG_ERR_EFTYPE = GPG_ERR_SYSTEM_ERROR | 38,
393    GPG_ERR_EGRATUITOUS = GPG_ERR_SYSTEM_ERROR | 39,
394    GPG_ERR_EGREGIOUS = GPG_ERR_SYSTEM_ERROR | 40,
395    GPG_ERR_EHOSTDOWN = GPG_ERR_SYSTEM_ERROR | 41,
396    GPG_ERR_EHOSTUNREACH = GPG_ERR_SYSTEM_ERROR | 42,
397    GPG_ERR_EIDRM = GPG_ERR_SYSTEM_ERROR | 43,
398    GPG_ERR_EIEIO = GPG_ERR_SYSTEM_ERROR | 44,
399    GPG_ERR_EILSEQ = GPG_ERR_SYSTEM_ERROR | 45,
400    GPG_ERR_EINPROGRESS = GPG_ERR_SYSTEM_ERROR | 46,
401    GPG_ERR_EINTR = GPG_ERR_SYSTEM_ERROR | 47,
402    GPG_ERR_EINVAL = GPG_ERR_SYSTEM_ERROR | 48,
403    GPG_ERR_EIO = GPG_ERR_SYSTEM_ERROR | 49,
404    GPG_ERR_EISCONN = GPG_ERR_SYSTEM_ERROR | 50,
405    GPG_ERR_EISDIR = GPG_ERR_SYSTEM_ERROR | 51,
406    GPG_ERR_EISNAM = GPG_ERR_SYSTEM_ERROR | 52,
407    GPG_ERR_EL2HLT = GPG_ERR_SYSTEM_ERROR | 53,
408    GPG_ERR_EL2NSYNC = GPG_ERR_SYSTEM_ERROR | 54,
409    GPG_ERR_EL3HLT = GPG_ERR_SYSTEM_ERROR | 55,
410    GPG_ERR_EL3RST = GPG_ERR_SYSTEM_ERROR | 56,
411    GPG_ERR_ELIBACC = GPG_ERR_SYSTEM_ERROR | 57,
412    GPG_ERR_ELIBBAD = GPG_ERR_SYSTEM_ERROR | 58,
413    GPG_ERR_ELIBEXEC = GPG_ERR_SYSTEM_ERROR | 59,
414    GPG_ERR_ELIBMAX = GPG_ERR_SYSTEM_ERROR | 60,
415    GPG_ERR_ELIBSCN = GPG_ERR_SYSTEM_ERROR | 61,
416    GPG_ERR_ELNRNG = GPG_ERR_SYSTEM_ERROR | 62,
417    GPG_ERR_ELOOP = GPG_ERR_SYSTEM_ERROR | 63,
418    GPG_ERR_EMEDIUMTYPE = GPG_ERR_SYSTEM_ERROR | 64,
419    GPG_ERR_EMFILE = GPG_ERR_SYSTEM_ERROR | 65,
420    GPG_ERR_EMLINK = GPG_ERR_SYSTEM_ERROR | 66,
421    GPG_ERR_EMSGSIZE = GPG_ERR_SYSTEM_ERROR | 67,
422    GPG_ERR_EMULTIHOP = GPG_ERR_SYSTEM_ERROR | 68,
423    GPG_ERR_ENAMETOOLONG = GPG_ERR_SYSTEM_ERROR | 69,
424    GPG_ERR_ENAVAIL = GPG_ERR_SYSTEM_ERROR | 70,
425    GPG_ERR_ENEEDAUTH = GPG_ERR_SYSTEM_ERROR | 71,
426    GPG_ERR_ENETDOWN = GPG_ERR_SYSTEM_ERROR | 72,
427    GPG_ERR_ENETRESET = GPG_ERR_SYSTEM_ERROR | 73,
428    GPG_ERR_ENETUNREACH = GPG_ERR_SYSTEM_ERROR | 74,
429    GPG_ERR_ENFILE = GPG_ERR_SYSTEM_ERROR | 75,
430    GPG_ERR_ENOANO = GPG_ERR_SYSTEM_ERROR | 76,
431    GPG_ERR_ENOBUFS = GPG_ERR_SYSTEM_ERROR | 77,
432    GPG_ERR_ENOCSI = GPG_ERR_SYSTEM_ERROR | 78,
433    GPG_ERR_ENODATA = GPG_ERR_SYSTEM_ERROR | 79,
434    GPG_ERR_ENODEV = GPG_ERR_SYSTEM_ERROR | 80,
435    GPG_ERR_ENOENT = GPG_ERR_SYSTEM_ERROR | 81,
436    GPG_ERR_ENOEXEC = GPG_ERR_SYSTEM_ERROR | 82,
437    GPG_ERR_ENOLCK = GPG_ERR_SYSTEM_ERROR | 83,
438    GPG_ERR_ENOLINK = GPG_ERR_SYSTEM_ERROR | 84,
439    GPG_ERR_ENOMEDIUM = GPG_ERR_SYSTEM_ERROR | 85,
440    GPG_ERR_ENOMEM = GPG_ERR_SYSTEM_ERROR | 86,
441    GPG_ERR_ENOMSG = GPG_ERR_SYSTEM_ERROR | 87,
442    GPG_ERR_ENONET = GPG_ERR_SYSTEM_ERROR | 88,
443    GPG_ERR_ENOPKG = GPG_ERR_SYSTEM_ERROR | 89,
444    GPG_ERR_ENOPROTOOPT = GPG_ERR_SYSTEM_ERROR | 90,
445    GPG_ERR_ENOSPC = GPG_ERR_SYSTEM_ERROR | 91,
446    GPG_ERR_ENOSR = GPG_ERR_SYSTEM_ERROR | 92,
447    GPG_ERR_ENOSTR = GPG_ERR_SYSTEM_ERROR | 93,
448    GPG_ERR_ENOSYS = GPG_ERR_SYSTEM_ERROR | 94,
449    GPG_ERR_ENOTBLK = GPG_ERR_SYSTEM_ERROR | 95,
450    GPG_ERR_ENOTCONN = GPG_ERR_SYSTEM_ERROR | 96,
451    GPG_ERR_ENOTDIR = GPG_ERR_SYSTEM_ERROR | 97,
452    GPG_ERR_ENOTEMPTY = GPG_ERR_SYSTEM_ERROR | 98,
453    GPG_ERR_ENOTNAM = GPG_ERR_SYSTEM_ERROR | 99,
454    GPG_ERR_ENOTSOCK = GPG_ERR_SYSTEM_ERROR | 100,
455    GPG_ERR_ENOTSUP = GPG_ERR_SYSTEM_ERROR | 101,
456    GPG_ERR_ENOTTY = GPG_ERR_SYSTEM_ERROR | 102,
457    GPG_ERR_ENOTUNIQ = GPG_ERR_SYSTEM_ERROR | 103,
458    GPG_ERR_ENXIO = GPG_ERR_SYSTEM_ERROR | 104,
459    GPG_ERR_EOPNOTSUPP = GPG_ERR_SYSTEM_ERROR | 105,
460    GPG_ERR_EOVERFLOW = GPG_ERR_SYSTEM_ERROR | 106,
461    GPG_ERR_EPERM = GPG_ERR_SYSTEM_ERROR | 107,
462    GPG_ERR_EPFNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 108,
463    GPG_ERR_EPIPE = GPG_ERR_SYSTEM_ERROR | 109,
464    GPG_ERR_EPROCLIM = GPG_ERR_SYSTEM_ERROR | 110,
465    GPG_ERR_EPROCUNAVAIL = GPG_ERR_SYSTEM_ERROR | 111,
466    GPG_ERR_EPROGMISMATCH = GPG_ERR_SYSTEM_ERROR | 112,
467    GPG_ERR_EPROGUNAVAIL = GPG_ERR_SYSTEM_ERROR | 113,
468    GPG_ERR_EPROTO = GPG_ERR_SYSTEM_ERROR | 114,
469    GPG_ERR_EPROTONOSUPPORT = GPG_ERR_SYSTEM_ERROR | 115,
470    GPG_ERR_EPROTOTYPE = GPG_ERR_SYSTEM_ERROR | 116,
471    GPG_ERR_ERANGE = GPG_ERR_SYSTEM_ERROR | 117,
472    GPG_ERR_EREMCHG = GPG_ERR_SYSTEM_ERROR | 118,
473    GPG_ERR_EREMOTE = GPG_ERR_SYSTEM_ERROR | 119,
474    GPG_ERR_EREMOTEIO = GPG_ERR_SYSTEM_ERROR | 120,
475    GPG_ERR_ERESTART = GPG_ERR_SYSTEM_ERROR | 121,
476    GPG_ERR_EROFS = GPG_ERR_SYSTEM_ERROR | 122,
477    GPG_ERR_ERPCMISMATCH = GPG_ERR_SYSTEM_ERROR | 123,
478    GPG_ERR_ESHUTDOWN = GPG_ERR_SYSTEM_ERROR | 124,
479    GPG_ERR_ESOCKTNOSUPPORT = GPG_ERR_SYSTEM_ERROR | 125,
480    GPG_ERR_ESPIPE = GPG_ERR_SYSTEM_ERROR | 126,
481    GPG_ERR_ESRCH = GPG_ERR_SYSTEM_ERROR | 127,
482    GPG_ERR_ESRMNT = GPG_ERR_SYSTEM_ERROR | 128,
483    GPG_ERR_ESTALE = GPG_ERR_SYSTEM_ERROR | 129,
484    GPG_ERR_ESTRPIPE = GPG_ERR_SYSTEM_ERROR | 130,
485    GPG_ERR_ETIME = GPG_ERR_SYSTEM_ERROR | 131,
486    GPG_ERR_ETIMEDOUT = GPG_ERR_SYSTEM_ERROR | 132,
487    GPG_ERR_ETOOMANYREFS = GPG_ERR_SYSTEM_ERROR | 133,
488    GPG_ERR_ETXTBSY = GPG_ERR_SYSTEM_ERROR | 134,
489    GPG_ERR_EUCLEAN = GPG_ERR_SYSTEM_ERROR | 135,
490    GPG_ERR_EUNATCH = GPG_ERR_SYSTEM_ERROR | 136,
491    GPG_ERR_EUSERS = GPG_ERR_SYSTEM_ERROR | 137,
492    GPG_ERR_EWOULDBLOCK = GPG_ERR_SYSTEM_ERROR | 138,
493    GPG_ERR_EXDEV = GPG_ERR_SYSTEM_ERROR | 139,
494    GPG_ERR_EXFULL = GPG_ERR_SYSTEM_ERROR | 140,
495
496    /* This is one more than the largest allowed entry.  */
497    GPG_ERR_CODE_DIM = 65536
498  } gpg_err_code_t;
499
500
501/* The error value type gpg_error_t.  */
502
503/* We would really like to use bit-fields in a struct, but using
504   structs as return values can cause binary compatibility issues, in
505   particular if you want to do it effeciently (also see
506   -freg-struct-return option to GCC).  */
507typedef unsigned int gpg_error_t;
508
509/* We use the lowest 16 bits of gpg_error_t for error codes.  The 16th
510   bit indicates system errors.  */
511#define GPG_ERR_CODE_MASK	(GPG_ERR_CODE_DIM - 1)
512
513/* Bits 17 to 24 are reserved.  */
514
515/* We use the upper 7 bits of gpg_error_t for error sources.  */
516#define GPG_ERR_SOURCE_MASK	(GPG_ERR_SOURCE_DIM - 1)
517#define GPG_ERR_SOURCE_SHIFT	24
518
519/* The highest bit is reserved.  It shouldn't be used to prevent
520   potential negative numbers when transmitting error values as
521   text.  */
522
523
524/* GCC feature test.  */
525#undef _GPG_ERR_HAVE_CONSTRUCTOR
526#if __GNUC__
527#define _GPG_ERR_GCC_VERSION (__GNUC__ * 10000 \
528                            + __GNUC_MINOR__ * 100 \
529                            + __GNUC_PATCHLEVEL__)
530
531#if _GPG_ERR_GCC_VERSION > 30100
532#define _GPG_ERR_CONSTRUCTOR	__attribute__ ((__constructor__))
533#define _GPG_ERR_HAVE_CONSTRUCTOR
534#endif
535#endif
536
537#ifndef _GPG_ERR_CONSTRUCTOR
538#define _GPG_ERR_CONSTRUCTOR
539#endif
540
541
542/* Initialization function.  */
543
544/* Initialize the library.  This function should be run early.  */
545gpg_error_t gpg_err_init (void) _GPG_ERR_CONSTRUCTOR;
546
547/* If this is defined, the library is already initialized by the
548   constructor and does not need to be initialized explicitely.  */
549#undef GPG_ERR_INITIALIZED
550#ifdef _GPG_ERR_HAVE_CONSTRUCTOR
551#define GPG_ERR_INITIALIZED	1
552#endif
553
554
555/* Constructor and accessor functions.  */
556
557/* Construct an error value from an error code and source.  Within a
558   subsystem, use gpg_error.  */
559static GPG_ERR_INLINE gpg_error_t
560gpg_err_make (gpg_err_source_t source, gpg_err_code_t code)
561{
562  return code == GPG_ERR_NO_ERROR ? GPG_ERR_NO_ERROR
563    : (((source & GPG_ERR_SOURCE_MASK) << GPG_ERR_SOURCE_SHIFT)
564       | (code & GPG_ERR_CODE_MASK));
565}
566
567
568/* The user should define GPG_ERR_SOURCE_DEFAULT before including this
569   file to specify a default source for gpg_error.  */
570#ifndef GPG_ERR_SOURCE_DEFAULT
571#define GPG_ERR_SOURCE_DEFAULT	GPG_ERR_SOURCE_UNKNOWN
572#endif
573
574static GPG_ERR_INLINE gpg_error_t
575gpg_error (gpg_err_code_t code)
576{
577  return gpg_err_make (GPG_ERR_SOURCE_DEFAULT, code);
578}
579
580
581/* Retrieve the error code from an error value.  */
582static GPG_ERR_INLINE gpg_err_code_t
583gpg_err_code (gpg_error_t err)
584{
585  return (gpg_err_code_t) (err & GPG_ERR_CODE_MASK);
586}
587
588
589/* Retrieve the error source from an error value.  */
590static GPG_ERR_INLINE gpg_err_source_t
591gpg_err_source (gpg_error_t err)
592{
593  return (gpg_err_source_t) ((err >> GPG_ERR_SOURCE_SHIFT)
594			     & GPG_ERR_SOURCE_MASK);
595}
596
597
598/* String functions.  */
599
600/* Return a pointer to a string containing a description of the error
601   code in the error value ERR.  This function is not thread-safe.  */
602const char *gpg_strerror (gpg_error_t err);
603
604/* Return the error string for ERR in the user-supplied buffer BUF of
605   size BUFLEN.  This function is, in contrast to gpg_strerror,
606   thread-safe if a thread-safe strerror_r() function is provided by
607   the system.  If the function succeeds, 0 is returned and BUF
608   contains the string describing the error.  If the buffer was not
609   large enough, ERANGE is returned and BUF contains as much of the
610   beginning of the error string as fits into the buffer.  */
611int gpg_strerror_r (gpg_error_t err, char *buf, size_t buflen);
612
613/* Return a pointer to a string containing a description of the error
614   source in the error value ERR.  */
615const char *gpg_strsource (gpg_error_t err);
616
617
618/* Mapping of system errors (errno).  */
619
620/* Retrieve the error code for the system error ERR.  This returns
621   GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped (report
622   this). */
623gpg_err_code_t gpg_err_code_from_errno (int err);
624
625
626/* Retrieve the system error for the error code CODE.  This returns 0
627   if CODE is not a system error code.  */
628int gpg_err_code_to_errno (gpg_err_code_t code);
629
630
631/* Retrieve the error code directly from the ERRNO variable.  This
632   returns GPG_ERR_UNKNOWN_ERRNO if the system error is not mapped
633   (report this) and GPG_ERR_MISSING_ERRNO if ERRNO has the value 0. */
634gpg_err_code_t gpg_err_code_from_syserror (void);
635
636
637/* Set the ERRNO variable.  This function is the preferred way to set
638   ERRNO due to peculiarities on WindowsCE.  */
639void gpg_err_set_errno (int err);
640
641/* Decide whether to use the format_arg attribute.  */
642#if _GPG_ERR_GCC_VERSION > 20800
643# define _GPG_ERR_ATTR_FORMAT_ARG(a)  __attribute__ ((__format_arg__ (a)))
644#else
645# define _GPG_ERR_ATTR_FORMAT_ARG(a)
646#endif
647
648/* A lean gettext implementation based on GNU style mo files which are
649   required to be encoded in UTF-8.  There is a limit on 65534 entries
650   to save some RAM.  Only Germanic plural rules are supported.  */
651const char *_gpg_w32_bindtextdomain (const char *domainname,
652                                     const char *dirname);
653const char *_gpg_w32_textdomain (const char *domainname);
654const char *_gpg_w32_gettext (const char *msgid)
655            _GPG_ERR_ATTR_FORMAT_ARG (1);
656const char *_gpg_w32_dgettext (const char *domainname, const char *msgid)
657            _GPG_ERR_ATTR_FORMAT_ARG (2);
658const char *_gpg_w32_dngettext (const char *domainname, const char *msgid1,
659                                const char *msgid2, unsigned long int n)
660            _GPG_ERR_ATTR_FORMAT_ARG (2) _GPG_ERR_ATTR_FORMAT_ARG (3);
661const char *_gpg_w32_gettext_localename (void);
662int _gpg_w32_gettext_use_utf8 (int value);
663
664#ifdef GPG_ERR_ENABLE_GETTEXT_MACROS
665# define bindtextdomain(a,b) _gpg_w32_bindtextdomain ((a), (b))
666# define textdomain(a)       _gpg_w32_textdomain ((a))
667# define gettext(a)          _gpg_w32_gettext ((a))
668# define dgettext(a,b)       _gpg_w32_dgettext ((a), (b))
669# define ngettext(a,b,c)     _gpg_w32_dngettext (NULL, (a), (b), (c))
670# define dngettext(a,b,c,d)  _gpg_w32_dngettext ((a), (b), (c), (d))
671# define gettext_localename() _gpg_w32_gettext_localename ()
672# define gettext_use_utf8(a) _gpg_w32_gettext_use_utf8 (a)
673#endif /*GPG_ERR_ENABLE_GETTEXT_MACROS*/
674
675
676
677/* Self-documenting convenience functions.  */
678
679static GPG_ERR_INLINE gpg_error_t
680gpg_err_make_from_errno (gpg_err_source_t source, int err)
681{
682  return gpg_err_make (source, gpg_err_code_from_errno (err));
683}
684
685
686static GPG_ERR_INLINE gpg_error_t
687gpg_error_from_errno (int err)
688{
689  return gpg_error (gpg_err_code_from_errno (err));
690}
691
692static GPG_ERR_INLINE gpg_error_t
693gpg_error_from_syserror (void)
694{
695  return gpg_error (gpg_err_code_from_syserror ());
696}
697
698#ifdef __cplusplus
699}
700#endif
701
702
703#endif	/* GPG_ERROR_H */