Imported Debian patch 0.66.1-1
[hcoop/debian/courier-authlib.git] / libs / unicode / unicode_htmlent.c
diff --git a/libs/unicode/unicode_htmlent.c b/libs/unicode/unicode_htmlent.c
new file mode 100644 (file)
index 0000000..549d069
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+** Copyright 2011 Double Precision, Inc.
+** See COPYING for distribution information.
+**
+*/
+
+#include       "unicode_config.h"
+#include       "unicode.h"
+
+#include <stdlib.h>
+
+struct i {
+       size_t n_start;
+       size_t n_size;
+       unicode_char v;
+};
+
+#include "unicode_htmlent.h"
+
+
+static int compar(const void *key, const void *obj)
+{
+       size_t j;
+       const char *p=n + ((const struct i *)obj)->n_start;
+       const char *ckey=(const char *)key;
+
+       for (j=0; j<((const struct i *)obj)->n_size; ++j)
+       {
+               if (*ckey < *p)
+                       return -1;
+
+               if (*ckey > *p)
+                       return 1;
+
+               ++p;
+               ++ckey;
+       }
+
+       if (*ckey)
+               return 1;
+
+       return 0;
+}
+
+unicode_char unicode_html40ent_lookup(const char *n)
+{
+       const struct i *ptr=
+               (const struct i *)bsearch(n, ii,
+                                         sizeof(ii)/sizeof(ii[0]),
+                                         sizeof(ii[0]), compar);
+
+       if (ptr)
+               return ptr->v;
+       return 0;
+}