# Encoding loading

**URL:** <https://www.ruby-forum.com/t/encoding-loading/225980>\
**Category:** Development\
**Created:** [December 15, 2007, 5:33am UTC](https://www.ruby-forum.com/t/encoding-loading/225980 "2007-12-15T05:33:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [December 15, 2007, 5:33am UTC](https://www.ruby-forum.com/t/encoding-loading/225980/1 "2007-12-15T05:33:39Z")

</div>

e$B$J$+$@$G$9!#e(B

encodinge$B$r\<+F0E\*$K%m!\<%I$9$k$h$&$K$9$k%Q%C%A$G$9!#e(B

e$B$H$j$"$($:e(B enc/ENCODING  
e$B$H$$$&%i%$%V%i%j$re(Brequiree$B$9$k$h$&$K$J$Ce(B  
e$B$F$$$^$9!#e(Bwin32e$B7O$OL$BP1~$G$9$,!#e(B

# Index: configure.in

— configure.in (revision 14234)  
+++ configure.in (working copy)  
@@ -1204,4 +1247,5 @@ AC\_DEFINE\_UNQUOTED(DLEXT\_MAXLEN, `expr $  
test “.$DLEXT” = “.” || AC\_DEFINE\_UNQUOTED(DLEXT, “.$DLEXT”)  
test “.$DLEXT2” = “.” || AC\_DEFINE\_UNQUOTED(DLEXT2, “.$DLEXT2”)  
+AC\_SUBST(DLEXT)

AC\_SUBST(STRIP)dnl  
@@ -1579,5 +1630,5 @@ AC\_SUBST(MINIOBJS)  
AC\_SUBST(THREAD\_MODEL)

-MAKEFILES=“Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`"  
+MAKEFILES=“Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`  
enc/GNUmakefile”  
MAKEFILES=”`echo $MAKEFILES`"  
AC\_SUBST(MAKEFILES)  
@@ -1735,5 +1786,34 @@ fi  
tr -d ‘\015’ \< largefile.h \> confdefs.h

+test -d enc || mkdir enc  
+BUILTIN\_ENCS=‘ascii euc\_jp sjis unicode utf8’  
+EXTERNAL\_ENCS=  
+for e in “${srcdir}/enc”/\*.c; do

- e=`basename "$e" .c`
- case " $BUILTIN\_ENCS " in
- 

```
 *" $e "*) ;;

```

- 

```
 *) EXTERNAL_ENCS="$EXTERNAL_ENCS $e";;

```

- esac  
+done  
+echo $EX  
+BUILTIN\_ENCOBJS=  
+for e in $BUILTIN\_ENCS; do BUILTIN\_ENCOBJS="$BUILTIN\_ENCOBJS  
$e"’.$(OBJEXT)’; done  
+EXTERNAL\_ENCOBJS=  
+for e in $EXTERNAL\_ENCS; do EXTERNAL\_ENCOBJS="$EXTERNAL\_ENCOBJS  
$e"’.$(OBJEXT)’; done  
+ENCSOS=  
+for e in $EXTERNAL\_ENCS; do ENCSOS="$ENCSOS  
“’$(ENCSODIR)/’”$e"’.$(DLEXT)’; done
- 

+AC\_SUBST(BUILTIN\_ENCOBJS)  
+AC\_SUBST(EXTERNAL\_ENCOBJS)  
+AC\_SUBST(ENCSOS)  
+  
AC\_CONFIG\_FILES($FIRSTMAKEFILE)  
+AC\_CONFIG\_FILES(enc/Makefile, [{

- for e in $ENCS; do
- echo ‘’
- echo ‘$(ENCSODIR)/’"$e"’.$(DLEXT): ‘"$e"’.$(OBJEXT)’
- echo ’ $(LDSHARED) $(DLDFLAGS) $\< $(OUTFLAG)$’’@’
- done \>\> enc/Makefile  
+}], [ENCS="$EXTERNAL\_ENCS"])  
AC\_CONFIG\_FILES(Makefile, [{  
sed ‘/^MISSING/s/$U././g’ Makefile  
Index: common.mk  
===================================================================  
— common.mk (revision 14234)  
+++ common.mk (working copy)  
@@ -19,10 +19,4 @@ RDOCOUT = $(EXTOUT)/rdoc  
DLDOBJS = $(DMYEXT)

-ENCOBJS = ascii.$(OBJEXT) \

- euc\_jp.$(OBJEXT) \
- sjis.$(OBJEXT) \
- unicode.$(OBJEXT) \
- utf8.$(OBJEXT)
- 

COMMONOBJS = array.$(OBJEXT)   
bignum.$(OBJEXT)   
@@ -80,5 +73,5 @@ COMMONOBJS = array.$(OBJEXT)   
cont.$(OBJEXT)   
id.$(OBJEXT) \

- $(ENCOBJS) \

- $(BUILTIN\_ENCOBJS)   
$(MISSING)

# Index: Makefile.in

— Makefile.in (revision 14234)  
+++ Makefile.in (working copy)  
@@ -52,4 +52,5 @@ SOLIBS = @SOLIBS@  
MAINLIBS = @MAINLIBS@  
MINIOBJS = @MINIOBJS@ miniprelude.$(OBJEXT)  
+BUILTIN\_ENCOBJS = @BUILTIN\_ENCOBJS@

RUBY\_INSTALL\_NAME=@RUBY\_INSTALL\_NAME@  
@@ -94,4 +95,5 @@ ASFLAGS = @ASFLAGS@  
OBJEXT = @OBJEXT@  
ASMEXT = S  
+DLEXT = @DLEXT@  
MANTYPE = @MANTYPE@

# Index: enc/Makefile.in

— enc/Makefile.in (revision 0)  
+++ enc/Makefile.in (revision 0)  
@@ -0,0 +1,29 @@  
+srcdir = @srcdir@  
+top\_srcdir = $(srcdir:/enc=)  
+arch = @arch@  
+EXTOUT = $(top\_srcdir)/@EXTOUT@  
+hdrdir = $(top\_srcdir)/include  
+arch\_hdrdir = $(EXTOUT)/include/$(arch)  
+VPATH = $(arch\_hdrdir)/ruby:$(hdrdir)/ruby:$(top\_srcdir):$(srcdir)  
+ENCSODIR = $(EXTOUT)/$(arch)/enc  
+DLEXT = @DLEXT@  
+OBJEXT = @OBJEXT@  
+  
+ENCOBJS = @EXTERNAL\_ENCOBJS@  
+ENCSOS = @ENCSOS@  
+empty =  
+CC = @CC@  
+OUTFLAG = @OUTFLAG@$(empty)  
+CFLAGS = @CFLAGS@ @ARCH\_FLAG@  
+XCFLAGS = -I. -I$(arch\_hdrdir) -I$(hdrdir) -I$(top\_srcdir) @XCFLAGS@  
+CPPFLAGS = @CPPFLAGS@  
+LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@  
+XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)  
+LIBS = @LIBS@ $(EXTLIBS)  
+LDSHARED = @LDSHARED@  
+DLDFLAGS = @DLDFLAGS@ $(EXTLDFLAGS) @ARCH\_FLAG@  
+  
+all: $(ENCOBJS) $(ENCSOS)  
+  
+.c.@OBJEXT@:

- $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c $\<  
Index: encoding.c  
===================================================================  
— encoding.c (revision 14234)  
+++ encoding.c (working copy)  
@@ -156,5 +156,5 @@ enc\_register(const char \*name, rb\_encodi

static VALUE enc\_based\_encoding(VALUE);  
-#define rb\_enc\_registered(name) rb\_enc\_find\_index(name)  
+int rb\_enc\_registered(const char \*name);

int  
@@ -253,5 +253,5 @@ rb\_enc\_from\_index(int index)

int  
-rb\_enc\_find\_index(const char \*name)  
+rb\_enc\_registered(const char \*name)  
{  
int i;  
@@ -279,4 +279,24 @@ rb\_enc\_find\_index(const char \*name)  
}

+static VALUE  
+require\_enc(VALUE enclib)  
+{

- return rb\_require\_safe(enclib, rb\_safe\_level());  
+}
- 

+int  
+rb\_enc\_find\_index(const char \*name)  
+{

- int i = rb\_enc\_registered(name);
- if (i \< 0) {
- VALUE enclib = rb\_sprintf(“enc/%s”, name);
- OBJ\_FREEZE(enclib);
- if (RTEST(rb\_protect(require\_enc, enclib, 0)))
- 

```
 i = rb_enc_registered(name);

```

- rb\_set\_errinfo(Qnil);
- }
- return i;  
+}
- 

rb\_encoding \*  
rb\_enc\_find(const char \*name)

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [December 15, 2007, 6:54am UTC](https://www.ruby-forum.com/t/encoding-loading/225980/2 "2007-12-15T06:54:51Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32606] encoding loading”  
on Sat, 15 Dec 2007 13:11:43 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|encodinge$B$r\<+F0E\*$K%m!\<%I$9$k$h$&$K$9$k%Q%C%A$G$9!#e(B  
|  
|e$B$H$j$"$($:e(B enc/ENCODING e$B$H$$$&%i%$%V%i%j$re(Brequiree$B$9$k$h$&$K$J$Ce(B  
|e$B$F$$$^$9!#e(Bwin32e$B7O$OL$BP1~$G$9$,!#e(B

e$B$$$:$l$K$7$F$bI,MW$G$9$+$i%3%\_%C%H$7$F$/$@$5$$!#e(B
