summaryrefslogtreecommitdiff
path: root/ext/-test-/printf
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-25 02:20:36 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-25 02:20:36 +0000
commit26f96fe1ce6178a83a0b3f0dbb9b4b9c7692103e (patch)
treed9216ee5e033001b6ecc68644dd47009e3f275bb /ext/-test-/printf
parent38f0dd0aba75a31008a698362e264ad894c10685 (diff)
* test/-ext-/test_printf.rb: tests for [Feature #5896].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/-test-/printf')
-rw-r--r--ext/-test-/printf/extconf.rb1
-rw-r--r--ext/-test-/printf/printf.c31
2 files changed, 32 insertions, 0 deletions
diff --git a/ext/-test-/printf/extconf.rb b/ext/-test-/printf/extconf.rb
new file mode 100644
index 0000000000..7b96da0c85
--- /dev/null
+++ b/ext/-test-/printf/extconf.rb
@@ -0,0 +1 @@
+create_makefile("-test-/printf")
diff --git a/ext/-test-/printf/printf.c b/ext/-test-/printf/printf.c
new file mode 100644
index 0000000000..f338637e04
--- /dev/null
+++ b/ext/-test-/printf/printf.c
@@ -0,0 +1,31 @@
+#include <ruby.h>
+#include <ruby/encoding.h>
+
+static VALUE
+printf_i(VALUE self, VALUE obj)
+{
+ char buf[256];
+ snprintf(buf, sizeof(buf), "<%"PRIsVALUE">", obj);
+ return rb_usascii_str_new2(buf);
+}
+
+static VALUE
+printf_s(VALUE self, VALUE obj)
+{
+ return rb_enc_sprintf(rb_usascii_encoding(), "<%"PRIsVALUE">", obj);
+}
+
+static VALUE
+printf_v(VALUE self, VALUE obj)
+{
+ return rb_enc_sprintf(rb_usascii_encoding(), "{%+"PRIsVALUE"}", obj);
+}
+
+void
+Init_printf(void)
+{
+ VALUE m = rb_define_module_under(rb_define_module("Bug"), "Printf");
+ rb_define_singleton_method(m, "i", printf_i, 1);
+ rb_define_singleton_method(m, "s", printf_s, 1);
+ rb_define_singleton_method(m, "v", printf_v, 1);
+}