diff options
Diffstat (limited to 'ext/-test-/printf')
| -rw-r--r-- | ext/-test-/printf/depend | 294 | ||||
| -rw-r--r-- | ext/-test-/printf/printf.c | 64 |
2 files changed, 182 insertions, 176 deletions
diff --git a/ext/-test-/printf/depend b/ext/-test-/printf/depend index 9c26e49d89..be895cf769 100644 --- a/ext/-test-/printf/depend +++ b/ext/-test-/printf/depend @@ -2,163 +2,169 @@ printf.o: $(RUBY_EXTCONF_H) printf.o: $(arch_hdrdir)/ruby/config.h printf.o: $(hdrdir)/ruby.h -printf.o: $(hdrdir)/ruby/3/anyargs.h -printf.o: $(hdrdir)/ruby/3/arithmetic.h -printf.o: $(hdrdir)/ruby/3/arithmetic/char.h -printf.o: $(hdrdir)/ruby/3/arithmetic/double.h -printf.o: $(hdrdir)/ruby/3/arithmetic/fixnum.h -printf.o: $(hdrdir)/ruby/3/arithmetic/gid_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/int.h -printf.o: $(hdrdir)/ruby/3/arithmetic/intptr_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/long.h -printf.o: $(hdrdir)/ruby/3/arithmetic/long_long.h -printf.o: $(hdrdir)/ruby/3/arithmetic/mode_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/off_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/pid_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/short.h -printf.o: $(hdrdir)/ruby/3/arithmetic/size_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/st_data_t.h -printf.o: $(hdrdir)/ruby/3/arithmetic/uid_t.h -printf.o: $(hdrdir)/ruby/3/assume.h -printf.o: $(hdrdir)/ruby/3/attr/alloc_size.h -printf.o: $(hdrdir)/ruby/3/attr/artificial.h -printf.o: $(hdrdir)/ruby/3/attr/cold.h -printf.o: $(hdrdir)/ruby/3/attr/const.h -printf.o: $(hdrdir)/ruby/3/attr/constexpr.h -printf.o: $(hdrdir)/ruby/3/attr/deprecated.h -printf.o: $(hdrdir)/ruby/3/attr/diagnose_if.h -printf.o: $(hdrdir)/ruby/3/attr/enum_extensibility.h -printf.o: $(hdrdir)/ruby/3/attr/error.h -printf.o: $(hdrdir)/ruby/3/attr/flag_enum.h -printf.o: $(hdrdir)/ruby/3/attr/forceinline.h -printf.o: $(hdrdir)/ruby/3/attr/format.h -printf.o: $(hdrdir)/ruby/3/attr/maybe_unused.h -printf.o: $(hdrdir)/ruby/3/attr/noalias.h -printf.o: $(hdrdir)/ruby/3/attr/nodiscard.h -printf.o: $(hdrdir)/ruby/3/attr/noexcept.h -printf.o: $(hdrdir)/ruby/3/attr/noinline.h -printf.o: $(hdrdir)/ruby/3/attr/nonnull.h -printf.o: $(hdrdir)/ruby/3/attr/noreturn.h -printf.o: $(hdrdir)/ruby/3/attr/pure.h -printf.o: $(hdrdir)/ruby/3/attr/restrict.h -printf.o: $(hdrdir)/ruby/3/attr/returns_nonnull.h -printf.o: $(hdrdir)/ruby/3/attr/warning.h -printf.o: $(hdrdir)/ruby/3/attr/weakref.h -printf.o: $(hdrdir)/ruby/3/cast.h -printf.o: $(hdrdir)/ruby/3/compiler_is.h -printf.o: $(hdrdir)/ruby/3/compiler_is/apple.h -printf.o: $(hdrdir)/ruby/3/compiler_is/clang.h -printf.o: $(hdrdir)/ruby/3/compiler_is/gcc.h -printf.o: $(hdrdir)/ruby/3/compiler_is/intel.h -printf.o: $(hdrdir)/ruby/3/compiler_is/msvc.h -printf.o: $(hdrdir)/ruby/3/compiler_is/sunpro.h -printf.o: $(hdrdir)/ruby/3/compiler_since.h -printf.o: $(hdrdir)/ruby/3/config.h -printf.o: $(hdrdir)/ruby/3/constant_p.h -printf.o: $(hdrdir)/ruby/3/core.h -printf.o: $(hdrdir)/ruby/3/core/rarray.h -printf.o: $(hdrdir)/ruby/3/core/rbasic.h -printf.o: $(hdrdir)/ruby/3/core/rbignum.h -printf.o: $(hdrdir)/ruby/3/core/rclass.h -printf.o: $(hdrdir)/ruby/3/core/rdata.h -printf.o: $(hdrdir)/ruby/3/core/rfile.h -printf.o: $(hdrdir)/ruby/3/core/rhash.h -printf.o: $(hdrdir)/ruby/3/core/robject.h -printf.o: $(hdrdir)/ruby/3/core/rregexp.h -printf.o: $(hdrdir)/ruby/3/core/rstring.h -printf.o: $(hdrdir)/ruby/3/core/rstruct.h -printf.o: $(hdrdir)/ruby/3/core/rtypeddata.h -printf.o: $(hdrdir)/ruby/3/ctype.h -printf.o: $(hdrdir)/ruby/3/dllexport.h -printf.o: $(hdrdir)/ruby/3/dosish.h -printf.o: $(hdrdir)/ruby/3/error.h -printf.o: $(hdrdir)/ruby/3/eval.h -printf.o: $(hdrdir)/ruby/3/event.h -printf.o: $(hdrdir)/ruby/3/fl_type.h -printf.o: $(hdrdir)/ruby/3/gc.h -printf.o: $(hdrdir)/ruby/3/glob.h -printf.o: $(hdrdir)/ruby/3/globals.h -printf.o: $(hdrdir)/ruby/3/has/attribute.h -printf.o: $(hdrdir)/ruby/3/has/builtin.h -printf.o: $(hdrdir)/ruby/3/has/c_attribute.h -printf.o: $(hdrdir)/ruby/3/has/cpp_attribute.h -printf.o: $(hdrdir)/ruby/3/has/declspec_attribute.h -printf.o: $(hdrdir)/ruby/3/has/extension.h -printf.o: $(hdrdir)/ruby/3/has/feature.h -printf.o: $(hdrdir)/ruby/3/has/warning.h -printf.o: $(hdrdir)/ruby/3/intern/array.h -printf.o: $(hdrdir)/ruby/3/intern/bignum.h -printf.o: $(hdrdir)/ruby/3/intern/class.h -printf.o: $(hdrdir)/ruby/3/intern/compar.h -printf.o: $(hdrdir)/ruby/3/intern/complex.h -printf.o: $(hdrdir)/ruby/3/intern/cont.h -printf.o: $(hdrdir)/ruby/3/intern/dir.h -printf.o: $(hdrdir)/ruby/3/intern/enum.h -printf.o: $(hdrdir)/ruby/3/intern/enumerator.h -printf.o: $(hdrdir)/ruby/3/intern/error.h -printf.o: $(hdrdir)/ruby/3/intern/eval.h -printf.o: $(hdrdir)/ruby/3/intern/file.h -printf.o: $(hdrdir)/ruby/3/intern/gc.h -printf.o: $(hdrdir)/ruby/3/intern/hash.h -printf.o: $(hdrdir)/ruby/3/intern/io.h -printf.o: $(hdrdir)/ruby/3/intern/load.h -printf.o: $(hdrdir)/ruby/3/intern/marshal.h -printf.o: $(hdrdir)/ruby/3/intern/numeric.h -printf.o: $(hdrdir)/ruby/3/intern/object.h -printf.o: $(hdrdir)/ruby/3/intern/parse.h -printf.o: $(hdrdir)/ruby/3/intern/proc.h -printf.o: $(hdrdir)/ruby/3/intern/process.h -printf.o: $(hdrdir)/ruby/3/intern/random.h -printf.o: $(hdrdir)/ruby/3/intern/range.h -printf.o: $(hdrdir)/ruby/3/intern/rational.h -printf.o: $(hdrdir)/ruby/3/intern/re.h -printf.o: $(hdrdir)/ruby/3/intern/ruby.h -printf.o: $(hdrdir)/ruby/3/intern/select.h -printf.o: $(hdrdir)/ruby/3/intern/select/largesize.h -printf.o: $(hdrdir)/ruby/3/intern/signal.h -printf.o: $(hdrdir)/ruby/3/intern/sprintf.h -printf.o: $(hdrdir)/ruby/3/intern/string.h -printf.o: $(hdrdir)/ruby/3/intern/struct.h -printf.o: $(hdrdir)/ruby/3/intern/thread.h -printf.o: $(hdrdir)/ruby/3/intern/time.h -printf.o: $(hdrdir)/ruby/3/intern/variable.h -printf.o: $(hdrdir)/ruby/3/intern/vm.h -printf.o: $(hdrdir)/ruby/3/interpreter.h -printf.o: $(hdrdir)/ruby/3/iterator.h -printf.o: $(hdrdir)/ruby/3/memory.h -printf.o: $(hdrdir)/ruby/3/method.h -printf.o: $(hdrdir)/ruby/3/module.h -printf.o: $(hdrdir)/ruby/3/newobj.h -printf.o: $(hdrdir)/ruby/3/rgengc.h -printf.o: $(hdrdir)/ruby/3/scan_args.h -printf.o: $(hdrdir)/ruby/3/special_consts.h -printf.o: $(hdrdir)/ruby/3/static_assert.h -printf.o: $(hdrdir)/ruby/3/stdalign.h -printf.o: $(hdrdir)/ruby/3/stdbool.h -printf.o: $(hdrdir)/ruby/3/symbol.h -printf.o: $(hdrdir)/ruby/3/token_paste.h -printf.o: $(hdrdir)/ruby/3/value.h -printf.o: $(hdrdir)/ruby/3/value_type.h -printf.o: $(hdrdir)/ruby/3/variable.h -printf.o: $(hdrdir)/ruby/3/warning_push.h -printf.o: $(hdrdir)/ruby/3/xmalloc.h printf.o: $(hdrdir)/ruby/assert.h printf.o: $(hdrdir)/ruby/backward.h printf.o: $(hdrdir)/ruby/backward/2/assume.h printf.o: $(hdrdir)/ruby/backward/2/attributes.h printf.o: $(hdrdir)/ruby/backward/2/bool.h -printf.o: $(hdrdir)/ruby/backward/2/extern.h -printf.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h printf.o: $(hdrdir)/ruby/backward/2/inttypes.h printf.o: $(hdrdir)/ruby/backward/2/limits.h printf.o: $(hdrdir)/ruby/backward/2/long_long.h -printf.o: $(hdrdir)/ruby/backward/2/r_cast.h -printf.o: $(hdrdir)/ruby/backward/2/rmodule.h printf.o: $(hdrdir)/ruby/backward/2/stdalign.h printf.o: $(hdrdir)/ruby/backward/2/stdarg.h printf.o: $(hdrdir)/ruby/defines.h printf.o: $(hdrdir)/ruby/encoding.h printf.o: $(hdrdir)/ruby/intern.h +printf.o: $(hdrdir)/ruby/internal/abi.h +printf.o: $(hdrdir)/ruby/internal/anyargs.h +printf.o: $(hdrdir)/ruby/internal/arithmetic.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/char.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/double.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/int.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/long.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/short.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +printf.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +printf.o: $(hdrdir)/ruby/internal/assume.h +printf.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +printf.o: $(hdrdir)/ruby/internal/attr/artificial.h +printf.o: $(hdrdir)/ruby/internal/attr/cold.h +printf.o: $(hdrdir)/ruby/internal/attr/const.h +printf.o: $(hdrdir)/ruby/internal/attr/constexpr.h +printf.o: $(hdrdir)/ruby/internal/attr/deprecated.h +printf.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +printf.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +printf.o: $(hdrdir)/ruby/internal/attr/error.h +printf.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +printf.o: $(hdrdir)/ruby/internal/attr/forceinline.h +printf.o: $(hdrdir)/ruby/internal/attr/format.h +printf.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +printf.o: $(hdrdir)/ruby/internal/attr/noalias.h +printf.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +printf.o: $(hdrdir)/ruby/internal/attr/noexcept.h +printf.o: $(hdrdir)/ruby/internal/attr/noinline.h +printf.o: $(hdrdir)/ruby/internal/attr/nonnull.h +printf.o: $(hdrdir)/ruby/internal/attr/noreturn.h +printf.o: $(hdrdir)/ruby/internal/attr/packed_struct.h +printf.o: $(hdrdir)/ruby/internal/attr/pure.h +printf.o: $(hdrdir)/ruby/internal/attr/restrict.h +printf.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h +printf.o: $(hdrdir)/ruby/internal/attr/warning.h +printf.o: $(hdrdir)/ruby/internal/attr/weakref.h +printf.o: $(hdrdir)/ruby/internal/cast.h +printf.o: $(hdrdir)/ruby/internal/compiler_is.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +printf.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +printf.o: $(hdrdir)/ruby/internal/compiler_since.h +printf.o: $(hdrdir)/ruby/internal/config.h +printf.o: $(hdrdir)/ruby/internal/constant_p.h +printf.o: $(hdrdir)/ruby/internal/core.h +printf.o: $(hdrdir)/ruby/internal/core/rarray.h +printf.o: $(hdrdir)/ruby/internal/core/rbasic.h +printf.o: $(hdrdir)/ruby/internal/core/rbignum.h +printf.o: $(hdrdir)/ruby/internal/core/rclass.h +printf.o: $(hdrdir)/ruby/internal/core/rdata.h +printf.o: $(hdrdir)/ruby/internal/core/rfile.h +printf.o: $(hdrdir)/ruby/internal/core/rhash.h +printf.o: $(hdrdir)/ruby/internal/core/robject.h +printf.o: $(hdrdir)/ruby/internal/core/rregexp.h +printf.o: $(hdrdir)/ruby/internal/core/rstring.h +printf.o: $(hdrdir)/ruby/internal/core/rstruct.h +printf.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +printf.o: $(hdrdir)/ruby/internal/ctype.h +printf.o: $(hdrdir)/ruby/internal/dllexport.h +printf.o: $(hdrdir)/ruby/internal/dosish.h +printf.o: $(hdrdir)/ruby/internal/encoding/coderange.h +printf.o: $(hdrdir)/ruby/internal/encoding/ctype.h +printf.o: $(hdrdir)/ruby/internal/encoding/encoding.h +printf.o: $(hdrdir)/ruby/internal/encoding/pathname.h +printf.o: $(hdrdir)/ruby/internal/encoding/re.h +printf.o: $(hdrdir)/ruby/internal/encoding/sprintf.h +printf.o: $(hdrdir)/ruby/internal/encoding/string.h +printf.o: $(hdrdir)/ruby/internal/encoding/symbol.h +printf.o: $(hdrdir)/ruby/internal/encoding/transcode.h +printf.o: $(hdrdir)/ruby/internal/error.h +printf.o: $(hdrdir)/ruby/internal/eval.h +printf.o: $(hdrdir)/ruby/internal/event.h +printf.o: $(hdrdir)/ruby/internal/fl_type.h +printf.o: $(hdrdir)/ruby/internal/gc.h +printf.o: $(hdrdir)/ruby/internal/glob.h +printf.o: $(hdrdir)/ruby/internal/globals.h +printf.o: $(hdrdir)/ruby/internal/has/attribute.h +printf.o: $(hdrdir)/ruby/internal/has/builtin.h +printf.o: $(hdrdir)/ruby/internal/has/c_attribute.h +printf.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +printf.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +printf.o: $(hdrdir)/ruby/internal/has/extension.h +printf.o: $(hdrdir)/ruby/internal/has/feature.h +printf.o: $(hdrdir)/ruby/internal/has/warning.h +printf.o: $(hdrdir)/ruby/internal/intern/array.h +printf.o: $(hdrdir)/ruby/internal/intern/bignum.h +printf.o: $(hdrdir)/ruby/internal/intern/class.h +printf.o: $(hdrdir)/ruby/internal/intern/compar.h +printf.o: $(hdrdir)/ruby/internal/intern/complex.h +printf.o: $(hdrdir)/ruby/internal/intern/cont.h +printf.o: $(hdrdir)/ruby/internal/intern/dir.h +printf.o: $(hdrdir)/ruby/internal/intern/enum.h +printf.o: $(hdrdir)/ruby/internal/intern/enumerator.h +printf.o: $(hdrdir)/ruby/internal/intern/error.h +printf.o: $(hdrdir)/ruby/internal/intern/eval.h +printf.o: $(hdrdir)/ruby/internal/intern/file.h +printf.o: $(hdrdir)/ruby/internal/intern/hash.h +printf.o: $(hdrdir)/ruby/internal/intern/io.h +printf.o: $(hdrdir)/ruby/internal/intern/load.h +printf.o: $(hdrdir)/ruby/internal/intern/marshal.h +printf.o: $(hdrdir)/ruby/internal/intern/numeric.h +printf.o: $(hdrdir)/ruby/internal/intern/object.h +printf.o: $(hdrdir)/ruby/internal/intern/parse.h +printf.o: $(hdrdir)/ruby/internal/intern/proc.h +printf.o: $(hdrdir)/ruby/internal/intern/process.h +printf.o: $(hdrdir)/ruby/internal/intern/random.h +printf.o: $(hdrdir)/ruby/internal/intern/range.h +printf.o: $(hdrdir)/ruby/internal/intern/rational.h +printf.o: $(hdrdir)/ruby/internal/intern/re.h +printf.o: $(hdrdir)/ruby/internal/intern/ruby.h +printf.o: $(hdrdir)/ruby/internal/intern/select.h +printf.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +printf.o: $(hdrdir)/ruby/internal/intern/set.h +printf.o: $(hdrdir)/ruby/internal/intern/signal.h +printf.o: $(hdrdir)/ruby/internal/intern/sprintf.h +printf.o: $(hdrdir)/ruby/internal/intern/string.h +printf.o: $(hdrdir)/ruby/internal/intern/struct.h +printf.o: $(hdrdir)/ruby/internal/intern/thread.h +printf.o: $(hdrdir)/ruby/internal/intern/time.h +printf.o: $(hdrdir)/ruby/internal/intern/variable.h +printf.o: $(hdrdir)/ruby/internal/intern/vm.h +printf.o: $(hdrdir)/ruby/internal/interpreter.h +printf.o: $(hdrdir)/ruby/internal/iterator.h +printf.o: $(hdrdir)/ruby/internal/memory.h +printf.o: $(hdrdir)/ruby/internal/method.h +printf.o: $(hdrdir)/ruby/internal/module.h +printf.o: $(hdrdir)/ruby/internal/newobj.h +printf.o: $(hdrdir)/ruby/internal/scan_args.h +printf.o: $(hdrdir)/ruby/internal/special_consts.h +printf.o: $(hdrdir)/ruby/internal/static_assert.h +printf.o: $(hdrdir)/ruby/internal/stdalign.h +printf.o: $(hdrdir)/ruby/internal/stdbool.h +printf.o: $(hdrdir)/ruby/internal/stdckdint.h +printf.o: $(hdrdir)/ruby/internal/symbol.h +printf.o: $(hdrdir)/ruby/internal/value.h +printf.o: $(hdrdir)/ruby/internal/value_type.h +printf.o: $(hdrdir)/ruby/internal/variable.h +printf.o: $(hdrdir)/ruby/internal/warning_push.h +printf.o: $(hdrdir)/ruby/internal/xmalloc.h printf.o: $(hdrdir)/ruby/missing.h printf.o: $(hdrdir)/ruby/onigmo.h printf.o: $(hdrdir)/ruby/oniguruma.h diff --git a/ext/-test-/printf/printf.c b/ext/-test-/printf/printf.c index e793bb7a48..889c0d9f0d 100644 --- a/ext/-test-/printf/printf.c +++ b/ext/-test-/printf/printf.c @@ -25,7 +25,7 @@ uint_to_str(char *p, char *e, unsigned int x) char *e0 = e; if (e <= p) return p; do { - *--e = x % 10 + '0'; + *--e = x % 10 + '0'; } while ((x /= 10) != 0 && e > p); memmove(p, e, e0 - e); return p + (e0 - e); @@ -44,48 +44,48 @@ printf_test_call(int argc, VALUE *argv, VALUE self) if (RSTRING_LEN(type) != 1) rb_raise(rb_eArgError, "wrong length(%ld)", RSTRING_LEN(type)); switch (cnv = RSTRING_PTR(type)[0]) { case 'd': case 'x': case 'o': case 'X': - n = NUM2INT(num); - break; + n = NUM2INT(num); + break; case 's': - s = StringValueCStr(num); - break; + s = StringValueCStr(num); + break; default: rb_raise(rb_eArgError, "wrong conversion(%c)", cnv); } *p++ = '%'; if (!NIL_P(opt)) { - VALUE v; - Check_Type(opt, T_HASH); - if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("space"))))) { - *p++ = ' '; - } - if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("hash"))))) { - *p++ = '#'; - } - if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("plus"))))) { - *p++ = '+'; - } - if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("minus"))))) { - *p++ = '-'; - } - if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("zero"))))) { - *p++ = '0'; - } - if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("width"))))) { - p = uint_to_str(p, format + sizeof(format), NUM2UINT(v)); - } - if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("prec"))))) { - *p++ = '.'; - if (FIXNUM_P(v)) - p = uint_to_str(p, format + sizeof(format), NUM2UINT(v)); - } + VALUE v; + Check_Type(opt, T_HASH); + if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("space"))))) { + *p++ = ' '; + } + if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("hash"))))) { + *p++ = '#'; + } + if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("plus"))))) { + *p++ = '+'; + } + if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("minus"))))) { + *p++ = '-'; + } + if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("zero"))))) { + *p++ = '0'; + } + if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("width"))))) { + p = uint_to_str(p, format + sizeof(format), NUM2UINT(v)); + } + if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("prec"))))) { + *p++ = '.'; + if (FIXNUM_P(v)) + p = uint_to_str(p, format + sizeof(format), NUM2UINT(v)); + } } *p++ = cnv; *p++ = '\0'; if (cnv == 's') { - result = rb_enc_sprintf(rb_usascii_encoding(), format, s); + result = rb_enc_sprintf(rb_usascii_encoding(), format, s); } else { - result = rb_enc_sprintf(rb_usascii_encoding(), format, n); + result = rb_enc_sprintf(rb_usascii_encoding(), format, n); } return rb_assoc_new(result, rb_usascii_str_new_cstr(format)); } |
