summaryrefslogtreecommitdiff
path: root/dmyenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'dmyenc.c')
-rw-r--r--dmyenc.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/dmyenc.c b/dmyenc.c
new file mode 100644
index 0000000000..4771841281
--- /dev/null
+++ b/dmyenc.c
@@ -0,0 +1,24 @@
+// This file is used by dynamically-linked ruby, which has no
+// statically-linked encodings other than the builtin encodings.
+//
+// - miniruby does not use this Init_enc. Instead, "miniinit.c"
+// provides Init_enc, which defines only the builtin encodings.
+//
+// - Dynamically-linked ruby uses this Init_enc, which requires
+// "enc/encdb.so" to load the builtin encodings and set up the
+// optional encodings.
+//
+// - Statically-linked ruby does not use this Init_enc. Instead,
+// "enc/encinit.c" (which is a generated file) defines Init_enc,
+// which activates the encodings.
+
+#define require(name) ruby_require_internal(name, (unsigned int)sizeof(name)-1)
+int ruby_require_internal(const char *, int);
+
+void
+Init_enc(void)
+{
+ if (require("enc/encdb.so") == 1) {
+ require("enc/trans/transdb.so");
+ }
+}