sender 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +10 -1
- data/Makefile +2 -2
- data/Manifest.txt +27 -0
- data/README.rdoc +74 -24
- data/Rakefile +3 -1
- data/ext/sender/RPSender_internal.c +64 -0
- data/ext/sender/RPSender_internal.h +10 -0
- data/ext/sender/RubySourceSupport.c +2 -2
- data/ext/sender/RubySourceSupport.h +4 -4
- data/ext/sender/debug.h +36 -0
- data/ext/sender/dln.h +41 -0
- data/ext/sender/encdb.h +147 -0
- data/ext/sender/eval_intern.h +215 -0
- data/ext/sender/extconf.rb +0 -14
- data/ext/sender/gc.h +75 -0
- data/ext/sender/id.h +163 -0
- data/ext/sender/iseq.h +103 -0
- data/ext/sender/main.c +5 -4
- data/ext/sender/node.h +516 -0
- data/ext/sender/parse.h +189 -0
- data/ext/sender/rb_Global.c +18 -30
- data/ext/sender/rb_Global.h +7 -7
- data/ext/sender/rb_Global_internal.h +1 -1
- data/ext/sender/rb_Kernel.c +162 -0
- data/ext/sender/rb_Kernel.h +16 -0
- data/ext/sender/regenc.h +207 -0
- data/ext/sender/regint.h +842 -0
- data/ext/sender/regparse.h +351 -0
- data/ext/sender/revision.h +1 -0
- data/ext/sender/thread_pthread.h +24 -0
- data/ext/sender/thread_win32.h +33 -0
- data/ext/sender/transcode_data.h +106 -0
- data/ext/sender/transdb.h +147 -0
- data/ext/sender/version.h +55 -0
- data/ext/sender/vm_core.h +647 -0
- data/ext/sender/vm_exec.h +184 -0
- data/ext/sender/vm_insnhelper.h +196 -0
- data/ext/sender/vm_opts.h +51 -0
- data/lib/sender/sender.bundle +0 -0
- data/lib/sender.rb +1 -1
- data/sender.gemspec +55 -0
- metadata +48 -6
data/CHANGELOG.rdoc
CHANGED
data/Makefile
CHANGED
@@ -41,7 +41,7 @@ sitearchdir = $(sitelibdir)/$(sitearch)
|
|
41
41
|
vendorlibdir = $(vendordir)/$(ruby_version)
|
42
42
|
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
43
43
|
|
44
|
-
CC =
|
44
|
+
CC = gcc
|
45
45
|
CXX = g++
|
46
46
|
LIBRUBY = $(LIBRUBY_SO)
|
47
47
|
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
@@ -52,7 +52,7 @@ COUTFLAG = -o
|
|
52
52
|
|
53
53
|
RUBY_EXTCONF_H =
|
54
54
|
cflags = $(optflags) $(debugflags) $(warnflags)
|
55
|
-
optflags =
|
55
|
+
optflags =
|
56
56
|
debugflags = -g
|
57
57
|
warnflags = -Wall -Wno-parentheses
|
58
58
|
CFLAGS = -fno-common $(cflags) -fno-common -pipe -fno-common
|
data/Manifest.txt
CHANGED
@@ -4,14 +4,41 @@ Makefile
|
|
4
4
|
Manifest.txt
|
5
5
|
README.rdoc
|
6
6
|
Rakefile
|
7
|
+
ext/sender/RPSender_internal.c
|
8
|
+
ext/sender/RPSender_internal.h
|
7
9
|
ext/sender/RubySourceSupport.c
|
8
10
|
ext/sender/RubySourceSupport.h
|
11
|
+
ext/sender/debug.h
|
12
|
+
ext/sender/dln.h
|
13
|
+
ext/sender/encdb.h
|
14
|
+
ext/sender/eval_intern.h
|
9
15
|
ext/sender/extconf.rb
|
16
|
+
ext/sender/gc.h
|
17
|
+
ext/sender/id.h
|
18
|
+
ext/sender/iseq.h
|
10
19
|
ext/sender/main.c
|
20
|
+
ext/sender/node.h
|
21
|
+
ext/sender/parse.h
|
11
22
|
ext/sender/rb_Global.c
|
12
23
|
ext/sender/rb_Global.h
|
13
24
|
ext/sender/rb_Global_internal.h
|
25
|
+
ext/sender/rb_Kernel.c
|
26
|
+
ext/sender/rb_Kernel.h
|
27
|
+
ext/sender/regenc.h
|
28
|
+
ext/sender/regint.h
|
29
|
+
ext/sender/regparse.h
|
30
|
+
ext/sender/revision.h
|
31
|
+
ext/sender/thread_pthread.h
|
32
|
+
ext/sender/thread_win32.h
|
33
|
+
ext/sender/transcode_data.h
|
34
|
+
ext/sender/transdb.h
|
35
|
+
ext/sender/version.h
|
36
|
+
ext/sender/vm_core.h
|
37
|
+
ext/sender/vm_exec.h
|
38
|
+
ext/sender/vm_insnhelper.h
|
39
|
+
ext/sender/vm_opts.h
|
14
40
|
lib/sender.rb
|
15
41
|
lib/sender/sender.bundle
|
16
42
|
mkmf.log
|
43
|
+
sender.gemspec
|
17
44
|
test/test_sender.rb
|
data/README.rdoc
CHANGED
@@ -1,40 +1,90 @@
|
|
1
1
|
Sender:
|
2
2
|
|
3
3
|
== DESCRIPTION:
|
4
|
+
http://rubygems.org/gems/sender
|
4
5
|
|
5
6
|
Adds __sender__ and __caller__ to the built-in __callee__ and __method__ functions.
|
7
|
+
|
8
|
+
Adds object-oriented backtrace, which returns :object and :method for each stack frame,
|
9
|
+
and which permits queries regarding backtrace contents.
|
10
|
+
|
11
|
+
* __sender__
|
12
|
+
* __caller__
|
13
|
+
* backtrace
|
14
|
+
* backtrace( frames_to_trace_backward )
|
15
|
+
* backtrace_includes?( Class )
|
16
|
+
* backtrace_includes?( class_instance )
|
17
|
+
* backtrace_includes?( :symbol )
|
18
|
+
* backtrace_includes?( Class, class_instance, :symbol, ... )
|
6
19
|
|
7
|
-
==
|
20
|
+
== INSTALL:
|
8
21
|
|
9
|
-
|
22
|
+
* sudo gem install sender
|
10
23
|
|
11
|
-
|
24
|
+
== EXAMPLE:
|
12
25
|
|
13
|
-
|
14
|
-
def sender_test
|
15
|
-
puts( 'Caller was: ' + __caller__.to_s )
|
16
|
-
puts( 'Sender was: ' + __sender__.to_s )
|
17
|
-
end
|
18
|
-
end
|
26
|
+
require 'sender'
|
19
27
|
|
20
|
-
|
21
|
-
def run_tests
|
22
|
-
test = SenderTest.new
|
23
|
-
test.sender_test
|
24
|
-
end
|
25
|
-
end
|
28
|
+
require '../sender/lib/sender/sender'
|
26
29
|
|
27
|
-
|
28
|
-
test.run_tests
|
29
|
-
|
30
|
-
Outputs:
|
31
|
-
|
32
|
-
Caller was: sender_test
|
33
|
-
Sender was: #<SenderTest:0x0000010103ee88>
|
30
|
+
require 'pp'
|
34
31
|
|
35
|
-
|
32
|
+
class Test
|
36
33
|
|
37
|
-
|
34
|
+
def test
|
35
|
+
self.another_test
|
36
|
+
end
|
37
|
+
|
38
|
+
def another_test
|
39
|
+
test2 = Test2.new
|
40
|
+
test2.and_another_test_in_another_object
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
class Test2
|
46
|
+
|
47
|
+
def and_another_test_in_another_object
|
48
|
+
puts 'Sender was: ' + __sender__.pretty_inspect.to_s
|
49
|
+
puts 'Caller was: ' + __caller__.to_s
|
50
|
+
pp Kernel.backtrace
|
51
|
+
pp Kernel.backtrace( 2 )
|
52
|
+
puts 'These should be true:'
|
53
|
+
pp Kernel.backtrace_includes?( :another_test )
|
54
|
+
pp Kernel.backtrace_includes?( Test )
|
55
|
+
pp Kernel.backtrace_includes?( $test )
|
56
|
+
pp Kernel.backtrace_includes?( :another_test, Test, $test )
|
57
|
+
puts 'These should be false:'
|
58
|
+
pp Kernel.backtrace_includes?( :non_existing_function )
|
59
|
+
pp Kernel.backtrace_includes?( Test2 )
|
60
|
+
pp Kernel.backtrace_includes?( self )
|
61
|
+
pp Kernel.backtrace_includes?( :non_existing_function, Test2, self )
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
$test = Test.new
|
67
|
+
$test.test
|
68
|
+
|
69
|
+
== EXAMPLE's OUTPUT:
|
70
|
+
|
71
|
+
Sender was: #<Test:0x0000010101ef18>
|
72
|
+
Caller was: and_another_test_in_another_object
|
73
|
+
[{:object=>#<Test:0x0000010101ef18>, :method=>:another_test},
|
74
|
+
{:object=>#<Test:0x0000010101ef18>, :method=>:test},
|
75
|
+
{:object=>main}]
|
76
|
+
[{:object=>#<Test:0x0000010101ef18>, :method=>:another_test},
|
77
|
+
{:object=>#<Test:0x0000010101ef18>, :method=>:test}]
|
78
|
+
These should be true:
|
79
|
+
true
|
80
|
+
true
|
81
|
+
true
|
82
|
+
true
|
83
|
+
These should be false:
|
84
|
+
false
|
85
|
+
false
|
86
|
+
false
|
87
|
+
false
|
38
88
|
|
39
89
|
== LICENSE:
|
40
90
|
|
data/Rakefile
CHANGED
@@ -11,6 +11,8 @@ Hoe.spec 'sender' do
|
|
11
11
|
self.spec_extras = { :extensions => ["ext/sender/extconf.rb"] }
|
12
12
|
self.extra_dev_deps << ['rake-compiler', '>= 0']
|
13
13
|
|
14
|
+
self.version="1.1.0"
|
15
|
+
|
14
16
|
Rake::ExtensionTask.new( 'sender', spec ) do |ext|
|
15
17
|
ext.lib_dir = File.join('lib', 'sender')
|
16
18
|
end
|
@@ -20,6 +22,6 @@ Rake::Task[:test].prerequisites << :compile
|
|
20
22
|
|
21
23
|
task :cultivate do
|
22
24
|
system "touch Manifest.txt; rake check_manifest | grep -v \"(in \" | patch"
|
23
|
-
system "rake debug_gem | grep -v \"(in \" >
|
25
|
+
system "rake debug_gem | grep -v \"(in \" > sender.gemspec"
|
24
26
|
end
|
25
27
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
|
2
|
+
#include "RPSender_internal.h"
|
3
|
+
#include "RubySourceSupport.h"
|
4
|
+
|
5
|
+
/*************************
|
6
|
+
* framePriorToCurrent *
|
7
|
+
************************/
|
8
|
+
|
9
|
+
rb_control_frame_t* RPRuby_internal_framePriorTo( rb_control_frame_t* control_frame ) {
|
10
|
+
|
11
|
+
rb_thread_t* c_thread = GET_THREAD();
|
12
|
+
rb_control_frame_t* prior_control_frame = NULL;
|
13
|
+
// get the current frame pointer
|
14
|
+
if ( control_frame == NULL ) {
|
15
|
+
control_frame = c_thread->cfp;
|
16
|
+
}
|
17
|
+
|
18
|
+
if ( ( prior_control_frame = rb_vm_get_ruby_level_next_cfp( c_thread, control_frame ) ) != 0) {
|
19
|
+
|
20
|
+
prior_control_frame = RUBY_VM_PREVIOUS_CONTROL_FRAME( prior_control_frame );
|
21
|
+
|
22
|
+
}
|
23
|
+
else {
|
24
|
+
prior_control_frame = NULL;
|
25
|
+
}
|
26
|
+
|
27
|
+
// if we have a nil object we've passed main, we're done
|
28
|
+
if ( prior_control_frame->self == Qnil ) {
|
29
|
+
return NULL;
|
30
|
+
}
|
31
|
+
|
32
|
+
return prior_control_frame;
|
33
|
+
|
34
|
+
}
|
35
|
+
|
36
|
+
/**********************************
|
37
|
+
* backtraceHashForControlFrame *
|
38
|
+
*********************************/
|
39
|
+
|
40
|
+
VALUE RPSender_internal_backtraceHashForControlFrame( rb_control_frame_t* c_control_frame ) {
|
41
|
+
|
42
|
+
// create new hash for this frame
|
43
|
+
VALUE rb_frame_hash = rb_hash_new();
|
44
|
+
|
45
|
+
// get object and set in hash
|
46
|
+
VALUE rb_object_for_frame = c_control_frame->self;
|
47
|
+
// if we get nil we're done with our backtrace
|
48
|
+
rb_hash_aset( rb_frame_hash,
|
49
|
+
ID2SYM( rb_intern( "object" ) ),
|
50
|
+
rb_object_for_frame );
|
51
|
+
|
52
|
+
// get method and set in hash
|
53
|
+
ID c_frame_function_id = frame_func_id( c_control_frame );
|
54
|
+
// main has no method name
|
55
|
+
if ( c_frame_function_id != 0) {
|
56
|
+
VALUE rb_method_for_frame = ID2SYM( c_frame_function_id );
|
57
|
+
rb_hash_aset( rb_frame_hash,
|
58
|
+
ID2SYM( rb_intern( "method" ) ),
|
59
|
+
rb_method_for_frame );
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
return rb_frame_hash;
|
64
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#ifndef RP_SENDER_INTERNAL
|
2
|
+
#define RP_SENDER_INTERNAL
|
3
|
+
|
4
|
+
#include "ruby.h"
|
5
|
+
#include "eval_intern.h"
|
6
|
+
|
7
|
+
rb_control_frame_t* RPRuby_internal_framePriorTo( rb_control_frame_t* control_frame );
|
8
|
+
VALUE RPSender_internal_backtraceHashForControlFrame( rb_control_frame_t* c_control_frame );
|
9
|
+
|
10
|
+
#endif
|
@@ -1,8 +1,6 @@
|
|
1
1
|
|
2
2
|
#include "RubySourceSupport.h"
|
3
3
|
|
4
|
-
#include "vm_exec.h"
|
5
|
-
|
6
4
|
// Taken from eval.c in Ruby source
|
7
5
|
// No header, so easiest way to integrate was to copy the code and make my own header.
|
8
6
|
// Previously declared static; otherwise unchanged
|
@@ -14,6 +12,7 @@ ID frame_func_id( rb_control_frame_t *cfp )
|
|
14
12
|
return cfp->method_id;
|
15
13
|
}
|
16
14
|
while (iseq) {
|
15
|
+
|
17
16
|
if (RUBY_VM_IFUNC_P(iseq)) {
|
18
17
|
return rb_intern("<ifunc>");
|
19
18
|
}
|
@@ -38,3 +37,4 @@ ID rb_frame_caller(void)
|
|
38
37
|
}
|
39
38
|
return frame_func_id(prev_cfp);
|
40
39
|
}
|
40
|
+
|
@@ -1,9 +1,9 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
3
|
-
|
4
|
-
#include <ruby.h>
|
1
|
+
#ifndef RP_SENDER_RUBY_SOURCE_SUPPORT
|
2
|
+
#define RP_SENDER_RUBY_SOURCE_SUPPORT
|
5
3
|
|
4
|
+
#include "ruby.h"
|
6
5
|
#include "eval_intern.h"
|
6
|
+
#include "vm_core.h"
|
7
7
|
|
8
8
|
ID frame_func_id( rb_control_frame_t *cfp );
|
9
9
|
ID rb_frame_caller(void);
|
data/ext/sender/debug.h
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
|
3
|
+
debug.h - YARV Debug function interface
|
4
|
+
|
5
|
+
$Author: ko1 $
|
6
|
+
created at: 04/08/25 02:33:49 JST
|
7
|
+
|
8
|
+
Copyright (C) 2004-2007 Koichi Sasada
|
9
|
+
|
10
|
+
**********************************************************************/
|
11
|
+
|
12
|
+
#ifndef RUBY_DEBUG_H
|
13
|
+
#define RUBY_DEBUG_H
|
14
|
+
|
15
|
+
#include "ruby/ruby.h"
|
16
|
+
#include "node.h"
|
17
|
+
|
18
|
+
#define dpv(h,v) ruby_debug_print_value(-1, 0, h, v)
|
19
|
+
#define dp(v) ruby_debug_print_value(-1, 0, "", v)
|
20
|
+
#define dpi(i) ruby_debug_print_id(-1, 0, "", i)
|
21
|
+
#define dpn(n) ruby_debug_print_node(-1, 0, "", n)
|
22
|
+
|
23
|
+
#define bp() ruby_debug_breakpoint()
|
24
|
+
|
25
|
+
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
|
26
|
+
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
|
27
|
+
NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
|
28
|
+
int ruby_debug_print_indent(int level, int debug_level, int indent_level);
|
29
|
+
void ruby_debug_breakpoint(void);
|
30
|
+
void ruby_debug_gc_check_func(void);
|
31
|
+
|
32
|
+
#ifdef RUBY_DEBUG_ENV
|
33
|
+
void ruby_set_debug_option(const char *str);
|
34
|
+
#endif
|
35
|
+
|
36
|
+
#endif /* RUBY_DEBUG_H */
|
data/ext/sender/dln.h
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
|
3
|
+
dln.h -
|
4
|
+
|
5
|
+
$Author: nobu $
|
6
|
+
created at: Wed Jan 19 16:53:09 JST 1994
|
7
|
+
|
8
|
+
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
9
|
+
|
10
|
+
**********************************************************************/
|
11
|
+
|
12
|
+
#ifndef DLN_H
|
13
|
+
#define DLN_H
|
14
|
+
|
15
|
+
#ifdef __cplusplus
|
16
|
+
# ifndef HAVE_PROTOTYPES
|
17
|
+
# define HAVE_PROTOTYPES 1
|
18
|
+
# endif
|
19
|
+
# ifndef HAVE_STDARG_PROTOTYPES
|
20
|
+
# define HAVE_STDARG_PROTOTYPES 1
|
21
|
+
# endif
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#undef _
|
25
|
+
#ifdef HAVE_PROTOTYPES
|
26
|
+
# define _(args) args
|
27
|
+
#else
|
28
|
+
# define _(args) ()
|
29
|
+
#endif
|
30
|
+
|
31
|
+
DEPRECATED(char *dln_find_exe(const char*,const char*));
|
32
|
+
DEPRECATED(char *dln_find_file(const char*,const char*));
|
33
|
+
char *dln_find_exe_r(const char*,const char*,char*,int);
|
34
|
+
char *dln_find_file_r(const char*,const char*,char*,int);
|
35
|
+
|
36
|
+
#ifdef USE_DLN_A_OUT
|
37
|
+
extern char *dln_argv0;
|
38
|
+
#endif
|
39
|
+
|
40
|
+
void *dln_load(const char*);
|
41
|
+
#endif
|
data/ext/sender/encdb.h
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
ENC_DEFINE("ASCII-8BIT");
|
2
|
+
ENC_DEFINE("Big5");
|
3
|
+
ENC_DEFINE("CP949");
|
4
|
+
ENC_DEFINE("Emacs-Mule");
|
5
|
+
ENC_DEFINE("EUC-JP");
|
6
|
+
ENC_DEFINE("EUC-KR");
|
7
|
+
ENC_DEFINE("EUC-TW");
|
8
|
+
ENC_DEFINE("GB18030");
|
9
|
+
ENC_DEFINE("GBK");
|
10
|
+
ENC_DEFINE("ISO-8859-1");
|
11
|
+
ENC_DEFINE("ISO-8859-2");
|
12
|
+
ENC_DEFINE("ISO-8859-3");
|
13
|
+
ENC_DEFINE("ISO-8859-4");
|
14
|
+
ENC_DEFINE("ISO-8859-5");
|
15
|
+
ENC_DEFINE("ISO-8859-6");
|
16
|
+
ENC_DEFINE("ISO-8859-7");
|
17
|
+
ENC_DEFINE("ISO-8859-8");
|
18
|
+
ENC_DEFINE("ISO-8859-9");
|
19
|
+
ENC_DEFINE("ISO-8859-10");
|
20
|
+
ENC_DEFINE("ISO-8859-11");
|
21
|
+
ENC_DEFINE("ISO-8859-13");
|
22
|
+
ENC_DEFINE("ISO-8859-14");
|
23
|
+
ENC_DEFINE("ISO-8859-15");
|
24
|
+
ENC_DEFINE("ISO-8859-16");
|
25
|
+
ENC_DEFINE("KOI8-R");
|
26
|
+
ENC_DEFINE("KOI8-U");
|
27
|
+
ENC_DEFINE("Shift_JIS");
|
28
|
+
ENC_DEFINE("US-ASCII");
|
29
|
+
ENC_DEFINE("UTF-8");
|
30
|
+
ENC_DEFINE("UTF-16BE");
|
31
|
+
ENC_DEFINE("UTF-16LE");
|
32
|
+
ENC_DEFINE("UTF-32BE");
|
33
|
+
ENC_DEFINE("UTF-32LE");
|
34
|
+
ENC_DEFINE("Windows-1251");
|
35
|
+
ENC_ALIAS("BINARY", "ASCII-8BIT");
|
36
|
+
ENC_REPLICATE("IBM437", "ASCII-8BIT");
|
37
|
+
ENC_ALIAS("CP437", "IBM437");
|
38
|
+
ENC_REPLICATE("IBM737", "ASCII-8BIT");
|
39
|
+
ENC_ALIAS("CP737", "IBM737");
|
40
|
+
ENC_REPLICATE("IBM775", "ASCII-8BIT");
|
41
|
+
ENC_ALIAS("CP775", "IBM775");
|
42
|
+
ENC_REPLICATE("CP850", "ASCII-8BIT");
|
43
|
+
ENC_ALIAS("IBM850", "CP850");
|
44
|
+
ENC_REPLICATE("IBM852", "ASCII-8BIT");
|
45
|
+
ENC_REPLICATE("CP852", "IBM852");
|
46
|
+
ENC_REPLICATE("IBM855", "ASCII-8BIT");
|
47
|
+
ENC_REPLICATE("CP855", "IBM855");
|
48
|
+
ENC_REPLICATE("IBM857", "ASCII-8BIT");
|
49
|
+
ENC_ALIAS("CP857", "IBM857");
|
50
|
+
ENC_REPLICATE("IBM860", "ASCII-8BIT");
|
51
|
+
ENC_ALIAS("CP860", "IBM860");
|
52
|
+
ENC_REPLICATE("IBM861", "ASCII-8BIT");
|
53
|
+
ENC_ALIAS("CP861", "IBM861");
|
54
|
+
ENC_REPLICATE("IBM862", "ASCII-8BIT");
|
55
|
+
ENC_ALIAS("CP862", "IBM862");
|
56
|
+
ENC_REPLICATE("IBM863", "ASCII-8BIT");
|
57
|
+
ENC_ALIAS("CP863", "IBM863");
|
58
|
+
ENC_REPLICATE("IBM864", "ASCII-8BIT");
|
59
|
+
ENC_ALIAS("CP864", "IBM864");
|
60
|
+
ENC_REPLICATE("IBM865", "ASCII-8BIT");
|
61
|
+
ENC_ALIAS("CP865", "IBM865");
|
62
|
+
ENC_REPLICATE("IBM866", "ASCII-8BIT");
|
63
|
+
ENC_ALIAS("CP866", "IBM866");
|
64
|
+
ENC_REPLICATE("IBM869", "ASCII-8BIT");
|
65
|
+
ENC_ALIAS("CP869", "IBM869");
|
66
|
+
ENC_REPLICATE("Windows-1258", "ASCII-8BIT");
|
67
|
+
ENC_ALIAS("CP1258", "Windows-1258");
|
68
|
+
ENC_REPLICATE("GB1988", "ASCII-8BIT");
|
69
|
+
ENC_REPLICATE("macCentEuro", "ASCII-8BIT");
|
70
|
+
ENC_REPLICATE("macCroatian", "ASCII-8BIT");
|
71
|
+
ENC_REPLICATE("macCyrillic", "ASCII-8BIT");
|
72
|
+
ENC_REPLICATE("macGreek", "ASCII-8BIT");
|
73
|
+
ENC_REPLICATE("macIceland", "ASCII-8BIT");
|
74
|
+
ENC_REPLICATE("macRoman", "ASCII-8BIT");
|
75
|
+
ENC_REPLICATE("macRomania", "ASCII-8BIT");
|
76
|
+
ENC_REPLICATE("macThai", "ASCII-8BIT");
|
77
|
+
ENC_REPLICATE("macTurkish", "ASCII-8BIT");
|
78
|
+
ENC_REPLICATE("macUkraine", "ASCII-8BIT");
|
79
|
+
ENC_ALIAS("CP950", "BIG5");
|
80
|
+
ENC_REPLICATE("stateless-ISO-2022-JP", "Emacs-Mule");
|
81
|
+
ENC_ALIAS("eucJP", "EUC-JP") /* UI-OSF Application Platform Profile for Japanese Environment Version 1.1 */;
|
82
|
+
ENC_REPLICATE("eucJP-ms", "EUC-JP") /* TOG/JVC CDE/Motif Technical WG */;
|
83
|
+
ENC_ALIAS("euc-jp-ms", "eucJP-ms");
|
84
|
+
ENC_REPLICATE("CP51932", "EUC-JP");
|
85
|
+
ENC_ALIAS("eucKR", "EUC-KR");
|
86
|
+
ENC_ALIAS("eucTW", "EUC-TW");
|
87
|
+
ENC_ALIAS("EUC-CN", "GB2312");
|
88
|
+
ENC_ALIAS("eucCN", "GB2312");
|
89
|
+
ENC_REPLICATE("GB12345", "GB2312");
|
90
|
+
ENC_ALIAS("CP936", "GBK");
|
91
|
+
ENC_DUMMY("ISO-2022-JP");
|
92
|
+
ENC_ALIAS("ISO2022-JP", "ISO-2022-JP");
|
93
|
+
ENC_REPLICATE("ISO-2022-JP-2", "ISO-2022-JP");
|
94
|
+
ENC_ALIAS("ISO2022-JP2", "ISO-2022-JP-2");
|
95
|
+
ENC_ALIAS("ISO8859-1", "ISO-8859-1");
|
96
|
+
ENC_REPLICATE("Windows-1252", "ISO-8859-1");
|
97
|
+
ENC_ALIAS("CP1252", "Windows-1252");
|
98
|
+
ENC_ALIAS("ISO8859-2", "ISO-8859-2");
|
99
|
+
ENC_REPLICATE("Windows-1250", "ISO-8859-2");
|
100
|
+
ENC_ALIAS("CP1250", "Windows-1250");
|
101
|
+
ENC_ALIAS("ISO8859-3", "ISO-8859-3");
|
102
|
+
ENC_ALIAS("ISO8859-4", "ISO-8859-4");
|
103
|
+
ENC_ALIAS("ISO8859-5", "ISO-8859-5");
|
104
|
+
ENC_ALIAS("ISO8859-6", "ISO-8859-6");
|
105
|
+
ENC_REPLICATE("Windows-1256", "ISO-8859-6");
|
106
|
+
ENC_ALIAS("CP1256", "Windows-1256");
|
107
|
+
ENC_ALIAS("ISO8859-7", "ISO-8859-7");
|
108
|
+
ENC_REPLICATE("Windows-1253", "ISO-8859-7");
|
109
|
+
ENC_ALIAS("CP1253", "Windows-1253");
|
110
|
+
ENC_ALIAS("ISO8859-8", "ISO-8859-8");
|
111
|
+
ENC_REPLICATE("Windows-1255", "ISO-8859-8");
|
112
|
+
ENC_ALIAS("CP1255", "Windows-1255");
|
113
|
+
ENC_ALIAS("ISO8859-9", "ISO-8859-9");
|
114
|
+
ENC_REPLICATE("Windows-1254", "ISO-8859-9");
|
115
|
+
ENC_ALIAS("CP1254", "Windows-1254");
|
116
|
+
ENC_ALIAS("ISO8859-10", "ISO-8859-10");
|
117
|
+
ENC_ALIAS("ISO8859-11", "ISO-8859-11");
|
118
|
+
ENC_REPLICATE("TIS-620", "ISO-8859-11");
|
119
|
+
ENC_REPLICATE("Windows-874", "ISO-8859-11");
|
120
|
+
ENC_ALIAS("CP874", "Windows-874");
|
121
|
+
ENC_ALIAS("ISO8859-13", "ISO-8859-13");
|
122
|
+
ENC_REPLICATE("Windows-1257", "ISO-8859-13");
|
123
|
+
ENC_ALIAS("CP1257", "Windows-1257");
|
124
|
+
ENC_ALIAS("ISO8859-14", "ISO-8859-14");
|
125
|
+
ENC_ALIAS("ISO8859-15", "ISO-8859-15");
|
126
|
+
ENC_ALIAS("ISO8859-16", "ISO-8859-16");
|
127
|
+
ENC_ALIAS("CP878", "KOI8-R");
|
128
|
+
ENC_ALIAS("SJIS", "Shift_JIS");
|
129
|
+
ENC_REPLICATE("Windows-31J", "Shift_JIS");
|
130
|
+
ENC_ALIAS("CP932", "Windows-31J");
|
131
|
+
ENC_ALIAS("csWindows31J", "Windows-31J") /* IANA. IE6 don't accept Windows-31J but csWindows31J. */;
|
132
|
+
ENC_REPLICATE("MacJapanese", "Shift_JIS");
|
133
|
+
ENC_ALIAS("MacJapan", "MacJapanese");
|
134
|
+
ENC_ALIAS("ASCII", "US-ASCII");
|
135
|
+
ENC_ALIAS("ANSI_X3.4-1968", "US-ASCII");
|
136
|
+
ENC_ALIAS("646", "US-ASCII");
|
137
|
+
ENC_DUMMY("UTF-7");
|
138
|
+
ENC_ALIAS("CP65000", "UTF-7");
|
139
|
+
ENC_ALIAS("CP65001", "UTF-8");
|
140
|
+
ENC_REPLICATE("UTF8-MAC", "UTF-8");
|
141
|
+
ENC_ALIAS("UTF-8-MAC", "UTF8-MAC");
|
142
|
+
ENC_ALIAS("UCS-2BE", "UTF-16BE");
|
143
|
+
ENC_ALIAS("UCS-4BE", "UTF-32BE");
|
144
|
+
ENC_ALIAS("UCS-4LE", "UTF-32LE");
|
145
|
+
ENC_ALIAS("CP1251", "Windows-1251");
|
146
|
+
|
147
|
+
#define ENCODING_COUNT 83
|