diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-03-03 10:16:14 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-03-03 10:16:14 +0000 |
commit | 369124b0ec6aa0d58ea628339713444c559bfa5f (patch) | |
tree | 69b7aaee156382355dbde6cd1302bb73d2e3e6c9 /io.c | |
parent | 0861165bdcef50bb504526153d87d8e0a7be0140 (diff) |
shugo's method etc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -1314,6 +1314,35 @@ f_print(argc, argv) } static VALUE +io_putc(io, ch) + VALUE io, ch; +{ + OpenFile *fptr; + FILE *f; + int c = NUM2CHR(ch); + + rb_secure(4); + GetOpenFile(io, fptr); + io_writable(fptr); + + f = GetWriteFile(fptr); + + if (fputc(c, f) == EOF || ferror(f)) + rb_sys_fail(fptr->path); + if (fptr->mode & FMODE_SYNC) + fflush(f); + + return ch; +} + +static VALUE +f_putc(recv, ch) + VALUE recv, ch; +{ + return io_putc(rb_defout, ch); +} + +static VALUE io_puts(argc, argv, out) int argc; VALUE *argv; @@ -2275,6 +2304,7 @@ opt_i_set(val) void Init_IO() { + extern VALUE mKernel; extern VALUE mEnumerable; extern VALUE eException; @@ -2287,6 +2317,8 @@ Init_IO() rb_define_global_function("open", f_open, -1); rb_define_global_function("printf", f_printf, -1); rb_define_global_function("print", f_print, -1); + rb_define_global_function("putc", f_putc, 1); + rb_define_global_function("putchar", f_putc, 1); rb_define_global_function("puts", f_puts, -1); rb_define_global_function("gets", f_gets_method, -1); rb_define_global_function("readline", f_readline, -1); @@ -2331,6 +2363,7 @@ Init_IO() rb_define_method(cIO, "reopen", io_reopen, 1); rb_define_method(cIO, "print", io_print, -1); + rb_define_method(cIO, "putc", io_putc, 1); rb_define_method(cIO, "puts", io_puts, -1); rb_define_method(cIO, "printf", io_printf, -1); |