From 96999ae441597cd5a8300658ad76a90fe02954b0 Mon Sep 17 00:00:00 2001 From: Andrew Sidwell Date: Wed, 24 Sep 2008 13:57:27 +0000 Subject: Report errors from libparserutils better. svn path=/trunk/hubbub/; revision=5431 --- src/hubbub.c | 8 +++++--- src/utils/errors.c | 3 +++ src/utils/parserutilserror.h | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/utils/parserutilserror.h (limited to 'src') diff --git a/src/hubbub.c b/src/hubbub.c index a1bd783..32ef9ec 100644 --- a/src/hubbub.c +++ b/src/hubbub.c @@ -9,6 +9,7 @@ #include +#include "utils/parserutilserror.h" #include "tokeniser/entities.h" /** @@ -29,8 +30,10 @@ hubbub_error hubbub_initialise(const char *aliases_file, if (aliases_file == NULL || alloc == NULL) return HUBBUB_BADPARM; - if (parserutils_initialise(aliases_file, alloc, pw) != PARSERUTILS_OK) - return !HUBBUB_OK; + error = hubbub_error_from_parserutils_error( + parserutils_initialise(aliases_file, alloc, pw)); + if (error != HUBBUB_OK) + return error; error = hubbub_entities_create(alloc, pw); if (error != HUBBUB_OK) { @@ -60,4 +63,3 @@ hubbub_error hubbub_finalise(hubbub_alloc alloc, void *pw) return HUBBUB_OK; } - diff --git a/src/utils/errors.c b/src/utils/errors.c index 7c6b5ea..cded6be 100644 --- a/src/utils/errors.c +++ b/src/utils/errors.c @@ -47,6 +47,9 @@ const char *hubbub_error_to_string(hubbub_error error) case HUBBUB_NEEDDATA: result = "Insufficient data"; break; + case HUBBUB_UNKNOWN: + result = "Unknown error"; + break; } return result; diff --git a/src/utils/parserutilserror.h b/src/utils/parserutilserror.h new file mode 100644 index 0000000..3e05524 --- /dev/null +++ b/src/utils/parserutilserror.h @@ -0,0 +1,41 @@ +/* + * This file is part of Hubbub. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2007 John-Mark Bell + */ + +#ifndef hubbub_utils_parserutilserror_h_ +#define hubbub_utils_parserutilserror_h_ + +#include + +#include + +/** + * Convert a ParserUtils error into a LibCSS error + * + * \param error The ParserUtils error to convert + * \return The corresponding LibCSS error + */ +static inline hubbub_error hubbub_error_from_parserutils_error( + parserutils_error error) +{ + if (error == PARSERUTILS_OK) + return HUBBUB_OK; + else if (error == PARSERUTILS_NOMEM) + return HUBBUB_NOMEM; + else if (error == PARSERUTILS_BADPARM) + return HUBBUB_BADPARM; + else if (error == PARSERUTILS_INVALID) + return HUBBUB_INVALID; + else if (error == PARSERUTILS_FILENOTFOUND) + return HUBBUB_FILENOTFOUND; + else if (error == PARSERUTILS_NEEDDATA) + return HUBBUB_NEEDDATA; + + return HUBBUB_UNKNOWN; +} + +#endif + -- cgit v1.2.3