summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--enc/trans/newline.trans3
-rw-r--r--transcode.c6
3 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index f0194f69c9..1cf5a885b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Wed Sep 10 01:05:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (rb_universal_newline): swap src_encoding
+ and dst_encoding.
+
+ * transcode.c (rb_econv_decorate_at): call get_transcoder_entry only
+ once.
+ (rb_econv_binmode): follow universal_newline change.
+
Wed Sep 10 00:01:36 2008 Tanaka Akira <akr@fsij.org>
* include/ruby/io.h (rb_io_t): rename field: writeconv_stateless to
diff --git a/enc/trans/newline.trans b/enc/trans/newline.trans
index db49a9f003..14eacd1876 100644
--- a/enc/trans/newline.trans
+++ b/enc/trans/newline.trans
@@ -87,7 +87,7 @@ universal_newline_finish(void *statep, unsigned char *o)
static const rb_transcoder
rb_universal_newline = {
- "universal_newline", "", universal_newline,
+ "", "universal_newline", universal_newline,
TRANSCODE_TABLE_INFO,
1, /* input_unit_length */
1, /* max_input */
@@ -129,4 +129,3 @@ Init_newline(void)
rb_register_transcoder(&rb_crlf_newline);
rb_register_transcoder(&rb_cr_newline);
}
-
diff --git a/transcode.c b/transcode.c
index 0fbbd0a11f..0ca20d239a 100644
--- a/transcode.c
+++ b/transcode.c
@@ -132,7 +132,7 @@ struct rb_econv_t {
* Dispatch data and logic
*/
-#define SUPPLEMENTAL_CONVERSION(sname, dname) (*(sname) == '\0' || *(dname) == '\0')
+#define SUPPLEMENTAL_CONVERSION(sname, dname) (*(sname) == '\0')
typedef struct {
const char *sname;
@@ -1762,8 +1762,6 @@ rb_econv_decorate_at(rb_econv_t *ec, const char *decorator_name, int n)
entry = get_transcoder_entry("", decorator_name);
if (!entry)
- entry = get_transcoder_entry(decorator_name, "");
- if (!entry)
return -1;
tr = load_transcoder_entry(entry);
@@ -1833,7 +1831,7 @@ rb_econv_binmode(rb_econv_t *ec)
n = 0;
if (ec->flags & ECONV_UNIVERSAL_NEWLINE_DECORATOR) {
- entry = get_transcoder_entry("universal_newline", "");
+ entry = get_transcoder_entry("", "universal_newline");
if (entry->transcoder)
trs[n++] = entry->transcoder;
}