aboutsummaryrefslogtreecommitdiffstats
path: root/src/strerror-sym.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2004-02-27 04:20:26 +0000
committerMarcus Brinkmann <[email protected]>2004-02-27 04:20:26 +0000
commitac0ec715597a9240871c6c7251f0927be042cb98 (patch)
tree0b772634b212db3a56c8aef7c888167bc36d1a2f /src/strerror-sym.c
parentAdded GPG_ERR_NOT_LOCKED. (diff)
downloadlibgpg-error-ac0ec715597a9240871c6c7251f0927be042cb98.tar.gz
libgpg-error-ac0ec715597a9240871c6c7251f0927be042cb98.zip
2004-02-27 Marcus Brinkmann <[email protected]>
* src/Makefile.am (noinst_PROGRAMS): New variable. (gpg_error_LDADD): New variable. (gpg_error_SOURCES): New variable. (EXTRA_DIST): Add mkheader.awk and gpg-error.h.in. (BUILT_SOURCES): Add err-sources-sym.h, err-codes-sym.h and errnos-sym.h. (CLEANFILES): Add err-sources-sym.h, err-codes-sym.h, errnos-sym.h and gpg-error.h. (err-codes.h, err-sources.h): Add -v textidx=3 to mkstrtable.awk invocation. (err-codes-sym.h): New target. (err-sources-sym.h): New target. (gpg-error.h): New rule. * src/mkstrtable.awk: Skip the second field (which contains the error code symbol). (FS): Allow more than one tab as field separator. Allow to specify the field to be used as text with the variable textidx. Allow to suppress gettext markers in the output. Allow to specify a prefix to the messages. Allow to specify a namespace for the variable and macro names. * src/mkerrnos.awk (FS): Initialize. Understand variable errnoidx, which defaults to 2, to cope with the error names being in a different column than the first. * src/mkerrcodes1.awk: Likewise. Use \t as separator. * src/mkheader.awk: New file. * src/errnos.in: Add error code numbers (relativ to GPG_ERR_SYSTEM_ERROR). * src/strerror-sym.c: New file. * src/strsources-sym.c: New file. * src/err-codes.h.in: Add the error code symbol for every error code. (GPG_ERR_BUFFER_TOO_SHORT): Fix error code (it is 200, not 199). * src/err-sources.h.in: Likewise. * src/gpg-error.h.in: New file. * src/gpg-error.h: File removed. * src/gpg-error.c: New file.
Diffstat (limited to 'src/strerror-sym.c')
-rw-r--r--src/strerror-sym.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/strerror-sym.c b/src/strerror-sym.c
new file mode 100644
index 0000000..3d79f40
--- /dev/null
+++ b/src/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)];
+}