aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-26 15:54:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-04-26 15:54:14 +0000
commit3b937bbdc4abc6ec1d3ec5d6b4e31714e0456e35 (patch)
tree38bfc1e0d1bc6572ad4e7fb1753d71612dc8a8fd
parent7140c8f0cddac4ffc3d06d49d5e571a046dee089 (diff)
downloadruby-3b937bbdc4abc6ec1d3ec5d6b4e31714e0456e35.tar.gz
* include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--include/ruby/encoding.h1
-rw-r--r--transcode.c24
3 files changed, 16 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index b417e8b76b..00707f673d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Apr 27 00:54:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
+
Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_truncate): fix function.
diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h
index 80f310c6b2..5ccbbbdfd8 100644
--- a/include/ruby/encoding.h
+++ b/include/ruby/encoding.h
@@ -303,6 +303,7 @@ void rb_econv_binmode(rb_econv_t *ec);
#define ECONV_UNDEF_HEX_CHARREF 0x00000030
#define ECONV_DECORATOR_MASK 0x0000ff00
+#define ECONV_NEWLINE_DECORATOR_MASK 0x00003f00
#define ECONV_UNIVERSAL_NEWLINE_DECORATOR 0x00000100
#define ECONV_CRLF_NEWLINE_DECORATOR 0x00001000
diff --git a/transcode.c b/transcode.c
index 5106f012dd..9433e6a3df 100644
--- a/transcode.c
+++ b/transcode.c
@@ -1025,13 +1025,15 @@ decorator_names(int ecflags, const char **decorators_ret)
{
int num_decorators;
- if ((ecflags & ECONV_CRLF_NEWLINE_DECORATOR) &&
- (ecflags & ECONV_CR_NEWLINE_DECORATOR))
- return -1;
-
- if ((ecflags & (ECONV_CRLF_NEWLINE_DECORATOR|ECONV_CR_NEWLINE_DECORATOR)) &&
- (ecflags & ECONV_UNIVERSAL_NEWLINE_DECORATOR))
+ switch (ecflags & ECONV_NEWLINE_DECORATOR_MASK) {
+ case ECONV_UNIVERSAL_NEWLINE_DECORATOR:
+ case ECONV_CRLF_NEWLINE_DECORATOR:
+ case ECONV_CR_NEWLINE_DECORATOR:
+ case 0:
+ break;
+ default:
return -1;
+ }
if ((ecflags & ECONV_XML_TEXT_DECORATOR) &&
(ecflags & ECONV_XML_ATTR_CONTENT_DECORATOR))
@@ -1965,7 +1967,7 @@ rb_econv_binmode(rb_econv_t *ec)
}
}
- ec->flags &= ~(ECONV_UNIVERSAL_NEWLINE_DECORATOR|ECONV_CRLF_NEWLINE_DECORATOR|ECONV_CR_NEWLINE_DECORATOR);
+ ec->flags &= ~ECONV_NEWLINE_DECORATOR_MASK;
}
@@ -1987,9 +1989,7 @@ econv_description(const char *sname, const char *dname, int ecflags, VALUE mesg)
has_description = 1;
}
- if (ecflags & (ECONV_UNIVERSAL_NEWLINE_DECORATOR|
- ECONV_CRLF_NEWLINE_DECORATOR|
- ECONV_CR_NEWLINE_DECORATOR|
+ if (ecflags & (ECONV_NEWLINE_DECORATOR_MASK|
ECONV_XML_TEXT_DECORATOR|
ECONV_XML_ATTR_CONTENT_DECORATOR|
ECONV_XML_ATTR_QUOTE_DECORATOR)) {
@@ -2647,9 +2647,7 @@ str_transcode0(int argc, VALUE *argv, VALUE *self, int ecflags, VALUE ecopts)
arg2 = argc<=1 ? Qnil : argv[1];
dencidx = str_transcode_enc_args(str, &arg1, &arg2, &sname, &senc, &dname, &denc);
- if ((ecflags & (ECONV_UNIVERSAL_NEWLINE_DECORATOR|
- ECONV_CRLF_NEWLINE_DECORATOR|
- ECONV_CR_NEWLINE_DECORATOR|
+ if ((ecflags & (ECONV_NEWLINE_DECORATOR_MASK|
ECONV_XML_TEXT_DECORATOR|
ECONV_XML_ATTR_CONTENT_DECORATOR|
ECONV_XML_ATTR_QUOTE_DECORATOR)) == 0) {