summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-09-24 13:57:27 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-09-24 13:57:27 +0000
commit96999ae441597cd5a8300658ad76a90fe02954b0 (patch)
tree98a097d55d9d4b3759240de23daf1655460124ef
parent79e5d74377af803222fb9c84bd97d624aafec39b (diff)
downloadlibhubbub-96999ae441597cd5a8300658ad76a90fe02954b0.tar.gz
libhubbub-96999ae441597cd5a8300658ad76a90fe02954b0.tar.bz2
Report errors from libparserutils better.
svn path=/trunk/hubbub/; revision=5431
-rw-r--r--include/hubbub/errors.h2
-rw-r--r--src/hubbub.c8
-rw-r--r--src/utils/errors.c3
-rw-r--r--src/utils/parserutilserror.h41
4 files changed, 51 insertions, 3 deletions
diff --git a/include/hubbub/errors.h b/include/hubbub/errors.h
index 9199d09..6398766 100644
--- a/include/hubbub/errors.h
+++ b/include/hubbub/errors.h
@@ -21,6 +21,8 @@ typedef enum hubbub_error {
HUBBUB_INVALID = 7,
HUBBUB_FILENOTFOUND = 8,
HUBBUB_NEEDDATA = 9,
+
+ HUBBUB_UNKNOWN = 10
} hubbub_error;
/* Convert a hubbub error value to a string */
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 <hubbub/hubbub.h>
+#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 <jmb@netsurf-browser.org>
+ */
+
+#ifndef hubbub_utils_parserutilserror_h_
+#define hubbub_utils_parserutilserror_h_
+
+#include <parserutils/errors.h>
+
+#include <hubbub/errors.h>
+
+/**
+ * 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
+