summaryrefslogtreecommitdiff
path: root/libcharsetdetect/nspr-emu/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'libcharsetdetect/nspr-emu/README.md')
-rw-r--r--libcharsetdetect/nspr-emu/README.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/libcharsetdetect/nspr-emu/README.md b/libcharsetdetect/nspr-emu/README.md
new file mode 100644
index 0000000..acead14
--- /dev/null
+++ b/libcharsetdetect/nspr-emu/README.md
@@ -0,0 +1,30 @@
+# NSPR emulation library
+
+Author: Max Bolingbroke (<batterseapower@hotmail.com>)
+
+This library was created by pulling together the minimal pieces of NSPR required to get the Universal Character Set
+Detector (UCSD) to compile. It turns out that the UCSD uses only very minimal parts of NSPR, so we can get away with just a few
+header files and totally forget about linking to the library.
+
+Precisely, we used these files from [NSPR v4.8.6](https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.8.6/):
+
+ * prtypes.h
+ * prmem.h
+ * obsolete/protypes.h
+
+I then patched some prototypes in prmem.h to use C library functions directly. The protypes were replaced with #define directives
+that ensure that callers of PR_Malloc, PR_Calloc, PR_Realloc, PR_Free just use their C library counterparts directly.
+
+To finish off, I needed to provide prcpucfg.h. Normally this is generated by the nspr build process, but to simplify things I used
+the version from [Google's Chrome source tree](http://src.chromium.org/viewvc/chrome/trunk/src/base/third_party/nspr/prcpucfg.h?view=markup)
+that just uses the preprocessor to choose between several pre-generated versions.
+
+I had to patch the Google-provided prcpucfg.h so that the #included paths pointed to the right directory.
+
+## Licensing
+
+Chromium (and thus presumably their contribution) is licensed under the BSD license.
+
+NSPR is licensed under the MPL/GPL/LGPL tri-license.
+
+Thus, this emulation library is licensed under the LGPL (I think). \ No newline at end of file