diff options
author | Marcus Brinkmann <[email protected]> | 2004-02-27 04:20:26 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2004-02-27 04:20:26 +0000 |
commit | ac0ec715597a9240871c6c7251f0927be042cb98 (patch) | |
tree | 0b772634b212db3a56c8aef7c888167bc36d1a2f /src/strerror-sym.c | |
parent | Added GPG_ERR_NOT_LOCKED. (diff) | |
download | libgpg-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.c | 56 |
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)]; +} |