summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-09-03 13:03:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-09-03 13:03:54 +0000
commit5669902126ec202d2cb482e6d15c0c28bc6025cd (patch)
tree3512b669204ad8c6fcd5255fbff0e2278a61b241 /string.c
parentad6731b0f9a3e41fac176f90ed5c2cbb43618433 (diff)
string.c: rb_enc_str_new_cstr
* string.c (rb_enc_str_new_cstr): new function to create a string from the C-string pointer with the specified encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/string.c b/string.c
index 7f8707ae5c..70cedf204b 100644
--- a/string.c
+++ b/string.c
@@ -34,6 +34,7 @@
#undef rb_str_new_cstr
#undef rb_tainted_str_new_cstr
#undef rb_usascii_str_new_cstr
+#undef rb_enc_str_new_cstr
#undef rb_external_str_new_cstr
#undef rb_locale_str_new_cstr
#undef rb_str_dup_frozen
@@ -474,6 +475,18 @@ rb_usascii_str_new_cstr(const char *ptr)
}
VALUE
+rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc)
+{
+ if (!ptr) {
+ rb_raise(rb_eArgError, "NULL pointer given");
+ }
+ if (rb_enc_mbminlen(enc) != 1) {
+ rb_raise(rb_eArgError, "wchar encoding given");
+ }
+ return rb_enc_str_new(ptr, strlen(ptr), enc);
+}
+
+VALUE
rb_tainted_str_new(const char *ptr, long len)
{
VALUE str = rb_str_new(ptr, len);