summaryrefslogtreecommitdiff
path: root/src/hubbub.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hubbub.c')
-rw-r--r--src/hubbub.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/hubbub.c b/src/hubbub.c
new file mode 100644
index 0000000..32e0a1f
--- /dev/null
+++ b/src/hubbub.c
@@ -0,0 +1,63 @@
+/*
+ * 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>
+ */
+
+#include <hubbub/hubbub.h>
+
+#include "charset/aliases.h"
+#include "tokeniser/entities.h"
+
+/**
+ * Initialise the Hubbub library for use.
+ *
+ * This _must_ be called before using any hubbub functions
+ *
+ * \param aliases_file Pointer to name of file containing encoding alias data
+ * \param alloc Pointer to (de)allocation function
+ * \param pw Pointer to client-specific private data (may be NULL)
+ * \return HUBBUB_OK on success, applicable error otherwise.
+ */
+hubbub_error hubbub_initialise(const char *aliases_file,
+ hubbub_alloc alloc, void *pw)
+{
+ hubbub_error error;
+
+ if (aliases_file == NULL || alloc == NULL)
+ return HUBBUB_BADPARM;
+
+ error = hubbub_aliases_create(aliases_file, alloc, pw);
+ if (error != HUBBUB_OK)
+ return error;
+
+ error = hubbub_entities_create(alloc, pw);
+ if (error != HUBBUB_OK) {
+ hubbub_aliases_destroy(alloc, pw);
+ return error;
+ }
+
+ return HUBBUB_OK;
+}
+
+/**
+ * Clean up after Hubbub
+ *
+ * \param alloc Pointer to (de)allocation function
+ * \param pw Pointer to client-specific private data (may be NULL)
+ * \return HUBBUB_OK on success, applicable error otherwise.
+ */
+hubbub_error hubbub_finalise(hubbub_alloc alloc, void *pw)
+{
+ if (alloc == NULL)
+ return HUBBUB_BADPARM;
+
+ hubbub_entities_destroy(alloc, pw);
+
+ hubbub_aliases_destroy(alloc, pw);
+
+ return HUBBUB_OK;
+}
+
+