* transcode.c: variables renamed for consistency.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2008-09-04 15:35:30 +00:00
parent 5091f1db18
commit a50b307900
2 changed files with 59 additions and 55 deletions

View File

@ -1,3 +1,7 @@
Fri Sep 5 00:22:34 2008 Tanaka Akira <akr@fsij.org>
* transcode.c: variables renamed for consistency.
Fri Sep 5 00:05:27 2008 Tanaka Akira <akr@fsij.org> Fri Sep 5 00:05:27 2008 Tanaka Akira <akr@fsij.org>
* pack.c (encodes): make buff fixed length to avoid SEGV by * pack.c (encodes): make buff fixed length to avoid SEGV by

View File

@ -128,8 +128,8 @@ struct rb_econv_t {
*/ */
typedef struct { typedef struct {
const char *from; const char *sname;
const char *to; const char *dname;
const char *lib; /* maybe null. it means that don't load the library. */ const char *lib; /* maybe null. it means that don't load the library. */
const rb_transcoder *transcoder; const rb_transcoder *transcoder;
} transcoder_entry_t; } transcoder_entry_t;
@ -137,39 +137,39 @@ typedef struct {
static st_table *transcoder_table; static st_table *transcoder_table;
static transcoder_entry_t * static transcoder_entry_t *
make_transcoder_entry(const char *from, const char *to) make_transcoder_entry(const char *sname, const char *dname)
{ {
st_data_t val; st_data_t val;
st_table *table2; st_table *table2;
if (!st_lookup(transcoder_table, (st_data_t)from, &val)) { if (!st_lookup(transcoder_table, (st_data_t)sname, &val)) {
val = (st_data_t)st_init_strcasetable(); val = (st_data_t)st_init_strcasetable();
st_add_direct(transcoder_table, (st_data_t)from, val); st_add_direct(transcoder_table, (st_data_t)sname, val);
} }
table2 = (st_table *)val; table2 = (st_table *)val;
if (!st_lookup(table2, (st_data_t)to, &val)) { if (!st_lookup(table2, (st_data_t)dname, &val)) {
transcoder_entry_t *entry = ALLOC(transcoder_entry_t); transcoder_entry_t *entry = ALLOC(transcoder_entry_t);
entry->from = from; entry->sname = sname;
entry->to = to; entry->dname = dname;
entry->lib = NULL; entry->lib = NULL;
entry->transcoder = NULL; entry->transcoder = NULL;
val = (st_data_t)entry; val = (st_data_t)entry;
st_add_direct(table2, (st_data_t)to, val); st_add_direct(table2, (st_data_t)dname, val);
} }
return (transcoder_entry_t *)val; return (transcoder_entry_t *)val;
} }
static transcoder_entry_t * static transcoder_entry_t *
get_transcoder_entry(const char *from, const char *to) get_transcoder_entry(const char *sname, const char *dname)
{ {
st_data_t val; st_data_t val;
st_table *table2; st_table *table2;
if (!st_lookup(transcoder_table, (st_data_t)from, &val)) { if (!st_lookup(transcoder_table, (st_data_t)sname, &val)) {
return NULL; return NULL;
} }
table2 = (st_table *)val; table2 = (st_table *)val;
if (!st_lookup(table2, (st_data_t)to, &val)) { if (!st_lookup(table2, (st_data_t)dname, &val)) {
return NULL; return NULL;
} }
return (transcoder_entry_t *)val; return (transcoder_entry_t *)val;
@ -178,26 +178,26 @@ get_transcoder_entry(const char *from, const char *to)
void void
rb_register_transcoder(const rb_transcoder *tr) rb_register_transcoder(const rb_transcoder *tr)
{ {
const char *const from_e = tr->from_encoding; const char *const sname = tr->from_encoding;
const char *const to_e = tr->to_encoding; const char *const dname = tr->to_encoding;
transcoder_entry_t *entry; transcoder_entry_t *entry;
entry = make_transcoder_entry(from_e, to_e); entry = make_transcoder_entry(sname, dname);
if (entry->transcoder) { if (entry->transcoder) {
rb_raise(rb_eArgError, "transcoder from %s to %s has been already registered", rb_raise(rb_eArgError, "transcoder from %s to %s has been already registered",
from_e, to_e); sname, dname);
} }
entry->transcoder = tr; entry->transcoder = tr;
} }
static void static void
declare_transcoder(const char *from, const char *to, const char *lib) declare_transcoder(const char *sname, const char *dname, const char *lib)
{ {
transcoder_entry_t *entry; transcoder_entry_t *entry;
entry = make_transcoder_entry(from, to); entry = make_transcoder_entry(sname, dname);
entry->lib = lib; entry->lib = lib;
} }
@ -231,27 +231,27 @@ typedef struct {
static int static int
transcode_search_path_i(st_data_t key, st_data_t val, st_data_t arg) transcode_search_path_i(st_data_t key, st_data_t val, st_data_t arg)
{ {
const char *to = (const char *)key; const char *dname = (const char *)key;
search_path_bfs_t *bfs = (search_path_bfs_t *)arg; search_path_bfs_t *bfs = (search_path_bfs_t *)arg;
search_path_queue_t *q; search_path_queue_t *q;
if (st_lookup(bfs->visited, (st_data_t)to, &val)) { if (st_lookup(bfs->visited, (st_data_t)dname, &val)) {
return ST_CONTINUE; return ST_CONTINUE;
} }
q = ALLOC(search_path_queue_t); q = ALLOC(search_path_queue_t);
q->enc = to; q->enc = dname;
q->next = NULL; q->next = NULL;
*bfs->queue_last_ptr = q; *bfs->queue_last_ptr = q;
bfs->queue_last_ptr = &q->next; bfs->queue_last_ptr = &q->next;
st_add_direct(bfs->visited, (st_data_t)to, (st_data_t)bfs->base_enc); st_add_direct(bfs->visited, (st_data_t)dname, (st_data_t)bfs->base_enc);
return ST_CONTINUE; return ST_CONTINUE;
} }
static int static int
transcode_search_path(const char *from, const char *to, transcode_search_path(const char *sname, const char *dname,
void (*callback)(const char *from, const char *to, int depth, void *arg), void (*callback)(const char *sname, const char *dname, int depth, void *arg),
void *arg) void *arg)
{ {
search_path_bfs_t bfs; search_path_bfs_t bfs;
@ -261,17 +261,17 @@ transcode_search_path(const char *from, const char *to,
int found; int found;
int pathlen; int pathlen;
if (encoding_equal(from, to)) if (encoding_equal(sname, dname))
return -1; return -1;
q = ALLOC(search_path_queue_t); q = ALLOC(search_path_queue_t);
q->enc = from; q->enc = sname;
q->next = NULL; q->next = NULL;
bfs.queue_last_ptr = &q->next; bfs.queue_last_ptr = &q->next;
bfs.queue = q; bfs.queue = q;
bfs.visited = st_init_strcasetable(); bfs.visited = st_init_strcasetable();
st_add_direct(bfs.visited, (st_data_t)from, (st_data_t)NULL); st_add_direct(bfs.visited, (st_data_t)sname, (st_data_t)NULL);
while (bfs.queue) { while (bfs.queue) {
q = bfs.queue; q = bfs.queue;
@ -285,8 +285,8 @@ transcode_search_path(const char *from, const char *to,
} }
table2 = (st_table *)val; table2 = (st_table *)val;
if (st_lookup(table2, (st_data_t)to, &val)) { if (st_lookup(table2, (st_data_t)dname, &val)) {
st_add_direct(bfs.visited, (st_data_t)to, (st_data_t)q->enc); st_add_direct(bfs.visited, (st_data_t)dname, (st_data_t)q->enc);
xfree(q); xfree(q);
found = 1; found = 1;
goto cleanup; goto cleanup;
@ -308,7 +308,7 @@ transcode_search_path(const char *from, const char *to,
} }
if (found) { if (found) {
const char *enc = to; const char *enc = dname;
int depth; int depth;
pathlen = 0; pathlen = 0;
while (1) { while (1) {
@ -319,7 +319,7 @@ transcode_search_path(const char *from, const char *to,
enc = (const char *)val; enc = (const char *)val;
} }
depth = pathlen; depth = pathlen;
enc = to; enc = dname;
while (1) { while (1) {
st_lookup(bfs.visited, (st_data_t)enc, &val); st_lookup(bfs.visited, (st_data_t)enc, &val);
if (!val) if (!val)
@ -850,7 +850,7 @@ rb_econv_open_by_transcoder_entries(int n, transcoder_entry_t **entries)
} }
static void static void
trans_open_i(const char *from, const char *to, int depth, void *arg) trans_open_i(const char *sname, const char *dname, int depth, void *arg)
{ {
transcoder_entry_t ***entries_ptr = arg; transcoder_entry_t ***entries_ptr = arg;
transcoder_entry_t **entries; transcoder_entry_t **entries;
@ -862,11 +862,11 @@ trans_open_i(const char *from, const char *to, int depth, void *arg)
else { else {
entries = *entries_ptr; entries = *entries_ptr;
} }
entries[depth] = get_transcoder_entry(from, to); entries[depth] = get_transcoder_entry(sname, dname);
} }
rb_econv_t * rb_econv_t *
rb_econv_open(const char *from, const char *to, int ecflags) rb_econv_open(const char *sname, const char *dname, int ecflags)
{ {
transcoder_entry_t **entries = NULL; transcoder_entry_t **entries = NULL;
int num_trans; int num_trans;
@ -878,27 +878,27 @@ rb_econv_open(const char *from, const char *to, int ecflags)
int sidx, didx; int sidx, didx;
senc = NULL; senc = NULL;
if (*from) { if (*sname) {
sidx = rb_enc_find_index(from); sidx = rb_enc_find_index(sname);
if (0 <= sidx) { if (0 <= sidx) {
senc = rb_enc_from_index(sidx); senc = rb_enc_from_index(sidx);
} }
} }
denc = NULL; denc = NULL;
if (*to) { if (*dname) {
didx = rb_enc_find_index(to); didx = rb_enc_find_index(dname);
if (0 <= didx) { if (0 <= didx) {
denc = rb_enc_from_index(didx); denc = rb_enc_from_index(didx);
} }
} }
if (*from == '\0' && *to == '\0') { if (*sname == '\0' && *dname == '\0') {
num_trans = 0; num_trans = 0;
entries = ALLOC_N(transcoder_entry_t *, 1+2); entries = ALLOC_N(transcoder_entry_t *, 1+2);
} }
else { else {
num_trans = transcode_search_path(from, to, trans_open_i, (void *)&entries); num_trans = transcode_search_path(sname, dname, trans_open_i, (void *)&entries);
} }
if (num_trans < 0 || !entries) { if (num_trans < 0 || !entries) {
@ -907,7 +907,7 @@ rb_econv_open(const char *from, const char *to, int ecflags)
} }
num_additional = 0; num_additional = 0;
if ((!*from || (senc && rb_enc_asciicompat(senc))) && if ((!*sname || (senc && rb_enc_asciicompat(senc))) &&
(ecflags & (ECONV_CRLF_NEWLINE_ENCODER|ECONV_CR_NEWLINE_ENCODER))) { (ecflags & (ECONV_CRLF_NEWLINE_ENCODER|ECONV_CR_NEWLINE_ENCODER))) {
const char *name = (ecflags & ECONV_CRLF_NEWLINE_ENCODER) ? "crlf_newline" : "cr_newline"; const char *name = (ecflags & ECONV_CRLF_NEWLINE_ENCODER) ? "crlf_newline" : "cr_newline";
transcoder_entry_t *e = get_transcoder_entry("", name); transcoder_entry_t *e = get_transcoder_entry("", name);
@ -928,7 +928,7 @@ rb_econv_open(const char *from, const char *to, int ecflags)
ecflags &= ~(ECONV_CRLF_NEWLINE_ENCODER|ECONV_CR_NEWLINE_ENCODER); ecflags &= ~(ECONV_CRLF_NEWLINE_ENCODER|ECONV_CR_NEWLINE_ENCODER);
} }
if ((!*to || (denc && rb_enc_asciicompat(denc))) && if ((!*dname || (denc && rb_enc_asciicompat(denc))) &&
(ecflags & ECONV_UNIVERSAL_NEWLINE_DECODER)) { (ecflags & ECONV_UNIVERSAL_NEWLINE_DECODER)) {
transcoder_entry_t *e = get_transcoder_entry("universal_newline", ""); transcoder_entry_t *e = get_transcoder_entry("universal_newline", "");
if (!e) { if (!e) {
@ -949,8 +949,8 @@ rb_econv_open(const char *from, const char *to, int ecflags)
return NULL; return NULL;
ec->flags = ecflags; ec->flags = ecflags;
ec->source_encoding_name = from; ec->source_encoding_name = sname;
ec->destination_encoding_name = to; ec->destination_encoding_name = dname;
if (num_trans == num_additional) { if (num_trans == num_additional) {
ec->last_tc = NULL; ec->last_tc = NULL;
@ -1325,7 +1325,7 @@ rb_econv_encoding_to_insert_output(rb_econv_t *ec)
} }
static unsigned char * static unsigned char *
allocate_converted_string(const char *str_encoding, const char *insert_encoding, allocate_converted_string(const char *sname, const char *dname,
const unsigned char *str, size_t len, const unsigned char *str, size_t len,
size_t *dst_len_ptr) size_t *dst_len_ptr)
{ {
@ -1342,7 +1342,7 @@ allocate_converted_string(const char *str_encoding, const char *insert_encoding,
if (dst_bufsize == 0) if (dst_bufsize == 0)
dst_bufsize += 1; dst_bufsize += 1;
ec = rb_econv_open(str_encoding, insert_encoding, 0); ec = rb_econv_open(sname, dname, 0);
if (ec == NULL) if (ec == NULL)
return NULL; return NULL;
dst_str = xmalloc(dst_bufsize); dst_str = xmalloc(dst_bufsize);
@ -1640,20 +1640,20 @@ rb_econv_binmode(rb_econv_t *ec)
} }
static VALUE static VALUE
econv_description(const char *senc, const char *denc, int ecflags, VALUE mesg) econv_description(const char *sname, const char *dname, int ecflags, VALUE mesg)
{ {
int has_description = 0; int has_description = 0;
if (NIL_P(mesg)) if (NIL_P(mesg))
mesg = rb_str_new(NULL, 0); mesg = rb_str_new(NULL, 0);
if (*senc != '\0' || *denc != '\0') { if (*sname != '\0' || *dname != '\0') {
if (*senc == '\0') if (*sname == '\0')
rb_str_cat2(mesg, denc); rb_str_cat2(mesg, dname);
else if (*denc == '\0') else if (*dname == '\0')
rb_str_cat2(mesg, senc); rb_str_cat2(mesg, sname);
else else
rb_str_catf(mesg, "%s to %s", senc, denc); rb_str_catf(mesg, "%s to %s", sname, dname);
has_description = 1; has_description = 1;
} }
@ -1685,11 +1685,11 @@ econv_description(const char *senc, const char *denc, int ecflags, VALUE mesg)
} }
VALUE VALUE
rb_econv_open_exc(const char *senc, const char *denc, int ecflags) rb_econv_open_exc(const char *sname, const char *dname, int ecflags)
{ {
VALUE mesg, exc; VALUE mesg, exc;
mesg = rb_str_new_cstr("code converter open failed ("); mesg = rb_str_new_cstr("code converter open failed (");
econv_description(senc, denc, ecflags, mesg); econv_description(sname, dname, ecflags, mesg);
rb_str_cat2(mesg, ")"); rb_str_cat2(mesg, ")");
exc = rb_exc_new3(rb_eNoConverter, mesg); exc = rb_exc_new3(rb_eNoConverter, mesg);
return exc; return exc;