diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-02-22 01:40:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-02-22 01:40:40 +0000 |
commit | 6c801fc58f39085ea5e71fc9b07e4fa52427b5e5 (patch) | |
tree | cd2b6c3543efa3b64c076a9886e61b03d7cfdd85 | |
parent | c5d781dded856a86609ebd9fd4904c3e9f3474fd (diff) |
sprintf.c: ruby specific functions
* sprintf.c (ruby_vsnprintf, ruby_snprintf): move ruby specific
functions from vsnprintf.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | sprintf.c | 33 | ||||
-rw-r--r-- | vsnprintf.c | 40 |
2 files changed, 33 insertions, 40 deletions
@@ -1256,6 +1256,39 @@ fmt_setup(char *buf, size_t size, int c, int flags, int width, int prec) #define upper_hexdigits (ruby_hexdigits+16) #include "vsnprintf.c" +int +ruby_vsnprintf(char *str, size_t n, const char *fmt, va_list ap) +{ + int ret; + rb_printf_buffer f; + + if ((int)n < 1) + return (EOF); + f._flags = __SWR | __SSTR; + f._bf._base = f._p = (unsigned char *)str; + f._bf._size = f._w = n - 1; + f.vwrite = BSD__sfvwrite; + f.vextra = 0; + ret = (int)BSD_vfprintf(&f, fmt, ap); + *f._p = 0; + return ret; +} + +int +ruby_snprintf(char *str, size_t n, char const *fmt, ...) +{ + int ret; + va_list ap; + + if ((int)n < 1) + return (EOF); + + va_start(ap, fmt); + ret = ruby_vsnprintf(str, n, fmt, ap); + va_end(ap); + return ret; +} + typedef struct { rb_printf_buffer base; volatile VALUE value; diff --git a/vsnprintf.c b/vsnprintf.c index 76178fed5e..49431d1640 100644 --- a/vsnprintf.c +++ b/vsnprintf.c @@ -1311,43 +1311,3 @@ exponent(char *p0, int exp, int fmtch) return (int)(p - p0); } #endif /* FLOATING_POINT */ - -int -ruby_vsnprintf(char *str, size_t n, const char *fmt, va_list ap) -{ - int ret; - FILE f; - - if ((int)n < 1) - return (EOF); - f._flags = __SWR | __SSTR; - f._bf._base = f._p = (unsigned char *)str; - f._bf._size = f._w = n - 1; - f.vwrite = BSD__sfvwrite; - f.vextra = 0; - ret = (int)BSD_vfprintf(&f, fmt, ap); - *f._p = 0; - return (ret); -} - -int -ruby_snprintf(char *str, size_t n, char const *fmt, ...) -{ - int ret; - va_list ap; - FILE f; - - if ((int)n < 1) - return (EOF); - - va_start(ap, fmt); - f._flags = __SWR | __SSTR; - f._bf._base = f._p = (unsigned char *)str; - f._bf._size = f._w = n - 1; - f.vwrite = BSD__sfvwrite; - f.vextra = 0; - ret = (int)BSD_vfprintf(&f, fmt, ap); - *f._p = 0; - va_end(ap); - return (ret); -} |