class IO
Public Instance Methods
unget(str, ...) → nil
click to toggle source
Feed str into the TTY's input queue.
$stdin.unget "hello\n" #=> nil
VALUE
rb_io_unget( int argc, VALUE *argv, VALUE io)
{
#ifndef RUBY_VM
OpenFile *fptr;
#else
rb_io_t *fptr;
#endif
int fd;
struct termios oldtio, newtio;
void *v[5];
GetOpenFile( io, fptr);
#ifndef RUBY_VM
fd = fileno( fptr->f);
#else
fd = fptr->fd;
#endif
if (tcgetattr( fd, &oldtio) < 0)
RB_SYS_FAIL( fptr);
newtio = oldtio;
newtio.c_iflag &= ~ICRNL;
if (tcsetattr( fd, TCSANOW, &newtio) < 0)
RB_SYS_FAIL( fptr);
v[0] = &fd, v[1] = fptr, v[2] = &oldtio,
v[3] = &argc, v[4] = (void *) argv;
return rb_ensure( io_unget, (VALUE) v, io_reset, (VALUE) v);
}
winsize() → ary
click to toggle source
Get the available window space.
cols, rows, xpixel, ypixel = $stdout.winsize
VALUE
rb_io_winsize( VALUE self)
{
#ifndef RUBY_VM
OpenFile *fptr;
#else
rb_io_t *fptr;
#endif
int fd;
struct winsize w;
VALUE r;
GetOpenFile( self, fptr);
#ifndef RUBY_VM
fd = fileno( fptr->f);
#else
fd = fptr->fd;
#endif
if (ioctl( fd, TIOCGWINSZ, &w) < 0)
RB_SYS_FAIL( fptr);
r = rb_ary_new2( 4);
rb_ary_store( r, 0, INT2NUM( w.ws_col));
rb_ary_store( r, 1, INT2NUM( w.ws_row));
rb_ary_store( r, 2, INT2NUM( w.ws_xpixel));
rb_ary_store( r, 3, INT2NUM( w.ws_ypixel));
return r;
}