From 655343e6dcc28a6d14b7449e9dbc4093ddc9b2f6 Mon Sep 17 00:00:00 2001 From: Melinda Shore Date: Sun, 22 Sep 2013 11:31:35 -0800 Subject: [PATCH] files added for getdns_get_errorstr_by_id() --- src/getdns/getdns_error.h | 70 +++++++++++++++++++++++++++++++++++++++ src/getdns_error.c | 54 ++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/getdns/getdns_error.h create mode 100644 src/getdns_error.c diff --git a/src/getdns/getdns_error.h b/src/getdns/getdns_error.h new file mode 100644 index 00000000..4d328562 --- /dev/null +++ b/src/getdns/getdns_error.h @@ -0,0 +1,70 @@ +/** + * \file + * \brief include this header in your application to use getdns API + * This source was taken from the original pseudo-implementation by + * Paul Hoffman. + */ +/* The MIT License (MIT) + * Copyright (c) 2013 Verisign, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef GETDNS_ERROR_H +#define GETDNS_ERROR_H + +#include + + + +struct getdns_struct_lookup_table { /* may or may not want to move this into */ + int id; /* getdns.h if it's more generally useful */ + const char *name; +}; + +typedef struct getdns_struct_lookup_table getdns_lookup_table; + +/** + * \defgroup error_table error number to string mapping + * @{ + */ + +getdns_lookup_table getdns_error_str[] = { + { GETDNS_RETURN_GOOD, "Good" }, + { GETDNS_RETURN_GENERIC_ERROR, "Generic error" }, + { GETDNS_RETURN_BAD_DOMAIN_NAME, "Badly-formed domain name" }, + { GETDNS_RETURN_BAD_CONTEXT, "Bad value for a context type" }, + { GETDNS_RETURN_CONTEXT_UPDATE_FAIL, "Did not update the context" }, + { GETDNS_RETURN_UNKNOWN_TRANSACTION, "An attempt was made to cancel a callback with a transaction_id that is not recognized" }, + { GETDNS_RETURN_NO_SUCH_LIST_ITEM, "A helper function for lists had an index argument that was too high" }, + { GETDNS_RETURN_NO_SUCH_DICT_NAME, "A helper function for dicts had a name argument that for a name that is not in the dict" }, + { GETDNS_RETURN_WRONG_TYPE_REQUESTED, "A helper function was supposed to return a certain type for an item, but the wrong type was given" }, + { GETDNS_RETURN_NO_SUCH_EXTENSION, "A name in the extensions dict is not a valid extension" }, + { GETDNS_RETURN_EXTENSION_MISFORMAT, "One or more of the extensions is has a bad format" }, + { GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED, "A query was made with a context that is using stub resolution and a DNSSEC extension specified" }, + { 0, "" } +}; + +typedef enum getdns_enum_status getdns_status; +const char *getdns_get_errorstr_by_id(uint16_t err); + +/** @} + */ + +#endif /* GETDNS_ERROR_H */ diff --git a/src/getdns_error.c b/src/getdns_error.c new file mode 100644 index 00000000..21fa507e --- /dev/null +++ b/src/getdns_error.c @@ -0,0 +1,54 @@ +/** + * + * /brief getdns error code to string functon + * + */ + +/* The MIT License (MIT) + * Copyright (c) 2013 Verisign, Include. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +#include +#include + +/*---------------------------------------- getdns_get_errorstr_by_id() */ +/** + * return error string from getdns return + * heavily modeled on ldns ldns_get_errorstr_by_id + * @param err getdns_return_t + * @return string containing error message + */ + + +const char * +getdns_get_errorstr_by_id(uint16_t err) +{ + getdns_lookup_table *lt; + + lt = getdns_error_str; + while (lt->name != 0) { + if (lt->id == err) + return lt->name; + lt++; + } + return 0; +}