Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals

io.c File Reference

#include "ruby.h"
#include "rubyio.h"
#include "rubysig.h"
#include "env.h"
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <syscall.h>
#include <unistd.h>
#include "util.h"
#include <sys/select.h>

Go to the source code of this file.

Data Structures

struct  foreach_arg

Defines

#define NOFILE   64
#define O_ACCMODE   (O_RDONLY | O_WRONLY | O_RDWR)
#define PIPE_BUF   512
#define READ_DATA_PENDING(fp)   ((fp)->FILE_READPTR < (fp)->FILE_READEND)
#define READ_DATA_PENDING_COUNT(fp)   ((fp)->FILE_READEND - (fp)->FILE_READPTR)
#define READ_DATA_BUFFERED(fp)   READ_DATA_PENDING(fp)
#define READ_DATA_PENDING_PTR(fp)   ((char *)(fp)->FILE_READPTR)
#define READ_CHECK(fp)
#define io_seek(fptr, ofs, whence)   fseeko(flush_before_seek(fptr)->f, ofs, whence)
#define io_tell(fptr)   ftello(flush_before_seek(fptr)->f)
#define SEEK_SET   0
#define SEEK_CUR   1
#define SEEK_END   2
#define FMODE_SYNCWRITE   (FMODE_SYNC|FMODE_WRITABLE)
#define S_ISREG(m)   ((m & S_IFMT) == S_IFREG)
#define SMALLBUF   100
#define MODE_BINMODE(a, b)   (a)
#define MODENUM_MAX   4
#define MODE_BINARY(a, b)   (a)
#define ARGF_FORWARD()   do { if (TYPE(current_file) != T_FILE) return argf_forward(); } while (0)
#define NEXT_ARGF_FORWARD()

Functions

void Init_File (void)
timeval rb_time_interval (VALUE)
void rb_eof_error ()
VALUE rb_io_taint_check (VALUE io)
void rb_io_check_initialized (OpenFile *fptr)
void rb_io_check_closed (OpenFile *fptr)
void io_fflush (FILE *, OpenFile *)
OpenFileflush_before_seek (OpenFile *fptr)
void rb_io_check_readable (OpenFile *fptr)
void rb_io_check_writable (OpenFile *fptr)
int rb_read_pending (FILE *fp)
void rb_read_check (FILE *fp)
int ruby_dup (int orig)
VALUE io_alloc (VALUE)
int rb_io_wait_readable (int f)
int rb_io_wait_writable (int f)
int wsplit_p (OpenFile *fptr)
long io_fwrite (VALUE str, OpenFile *fptr)
long rb_io_fwrite (char *ptr, long len, FILE *f) const
VALUE io_write (VALUE io, VALUE str)
VALUE rb_io_write (VALUE io, VALUE str)
VALUE rb_io_addstr (VALUE io, VALUE str)
VALUE rb_io_flush (VALUE io)
VALUE rb_io_tell (VALUE io)
VALUE rb_io_seek (VALUE io, VALUE offset, int whence)
VALUE rb_io_seek_m (int argc, VALUE *argv, VALUE io)
VALUE rb_io_set_pos (VALUE io, VALUE offset)
VALUE rb_io_rewind (VALUE io)
VALUE rb_io_eof (VALUE io)
VALUE rb_io_sync (VALUE io)
VALUE rb_io_set_sync (VALUE io, VALUE mode)
VALUE rb_io_fsync (VALUE io)
VALUE rb_io_fileno (VALUE io)
VALUE rb_io_pid (VALUE io)
VALUE rb_io_inspect (VALUE obj)
VALUE rb_io_to_io (VALUE io)
long read_buffered_data (char *ptr, long len, FILE *f)
long io_fread (char *ptr, long len, OpenFile *fptr)
long rb_io_fread (char *ptr, long len, FILE *f)
long remain_size (OpenFile *fptr)
VALUE read_all (OpenFile *fptr, long siz, VALUE str)
VALUE io_getpartial (int argc, VALUE *argv, VALUE io)
VALUE io_readpartial (int argc, VALUE *argv, VALUE io)
VALUE io_read (int argc, VALUE *argv, VALUE io)
int appendline (OpenFile *fptr, int delim, VALUE *strp)
int swallow (OpenFile *fptr, int term)
VALUE rb_io_getline_fast (OpenFile *fptr, unsigned char delim)
int rscheck (char *rsptr, long rslen, VALUE rs)
VALUE rb_io_getline (VALUE rs, VALUE io)
VALUE rb_io_gets (VALUE io)
VALUE rb_io_gets_m (int argc, VALUE *argv, VALUE io)
VALUE rb_io_lineno (VALUE io)
VALUE rb_io_set_lineno (VALUE io, VALUE lineno)
void lineno_setter (VALUE val, ID id, VALUE *var)
VALUE argf_set_lineno (VALUE argf, VALUE val)
VALUE argf_lineno ()
VALUE rb_io_readline (int argc, VALUE *argv, VALUE io)
VALUE rb_io_readlines (int argc, VALUE *argv, VALUE io)
VALUE rb_io_each_line (int argc, VALUE *argv, VALUE io)
VALUE rb_io_each_byte (VALUE io)
VALUE rb_io_getc (VALUE io)
int rb_getc (FILE *f)
VALUE rb_io_readchar (VALUE io)
VALUE rb_io_ungetc (VALUE io, VALUE c)
VALUE rb_io_isatty (VALUE io)
void fptr_finalize (OpenFile *fptr, int noraise)
void rb_io_fptr_cleanup (OpenFile *fptr, int noraise)
void rb_io_fptr_finalize (OpenFile *fptr)
VALUE rb_io_close (VALUE io)
VALUE rb_io_close_m (VALUE io)
VALUE io_close (VALUE io)
VALUE rb_io_closed (VALUE io)
VALUE rb_io_close_read (VALUE io)
VALUE rb_io_close_write (VALUE io)
VALUE rb_io_sysseek (int argc, VALUE *argv, VALUE io)
VALUE rb_io_syswrite (VALUE io, VALUE str)
VALUE rb_io_sysread (int argc, VALUE *argv, VALUE io)
VALUE rb_io_binmode (VALUE io)
char * rb_io_flags_mode (int flags)
int rb_io_mode_flags (char *mode) const
int rb_io_modenum_flags (int mode)
int rb_io_mode_modenum (char *mode) const
char * rb_io_modenum_mode (int flags)
int rb_sysopen (char *fname, int flags, unsigned int mode)
FILE * rb_fopen (char *fname, const char *mode) const
FILE * rb_fdopen (int fd, const char *mode)
VALUE rb_file_open_internal (VALUE io, const char *fname, const char *mode)
VALUE rb_file_open (char *fname, char *mode) const
VALUE rb_file_sysopen_internal (VALUE io, char *fname, int flags, int mode)
VALUE rb_file_sysopen (char *fname, int flags, int mode) const
void rb_io_synchronized (OpenFile *fptr)
void rb_io_unbuffered (OpenFile *fptr)
VALUE pipe_open (VALUE pstr, char *pname, char *mode)
VALUE rb_io_s_popen (int argc, VALUE *argv, VALUE klass)
VALUE rb_open_file (int argc, VALUE *argv, VALUE io)
VALUE rb_io_s_open (int argc, VALUE *argv, VALUE klass)
VALUE rb_io_s_sysopen (int argc, VALUE *argv)
VALUE rb_f_open (int argc, VALUE *argv)
VALUE rb_io_open (char *fname, char *mode)
VALUE rb_io_get_io (VALUE io)
VALUE rb_io_check_io (VALUE io)
char * rb_io_mode_string (OpenFile *fptr)
VALUE io_reopen (VALUE io, VALUE nfile)
VALUE rb_io_reopen (int argc, VALUE *argv, VALUE file)
VALUE rb_io_init_copy (VALUE dest, VALUE io)
VALUE rb_io_printf (int argc, argv, VALUE out)
VALUE rb_f_printf (int argc, argv)
VALUE rb_io_print (int argc, VALUE *argv, VALUE out)
VALUE rb_f_print (int argc, VALUE *argv)
VALUE rb_io_putc (VALUE io, VALUE ch)
VALUE rb_f_putc (VALUE recv, VALUE ch)
VALUE io_puts_ary (VALUE ary, VALUE out)
VALUE rb_io_puts (int argc, VALUE *argv, VALUE out)
VALUE rb_f_puts (int argc, VALUE *argv)
void rb_p (VALUE obj)
VALUE rb_f_p (int argc, VALUE *argv)
VALUE rb_obj_display (int argc, VALUE *argv, VALUE self)
void rb_write_error2 (char *mesg, long len) const
void rb_write_error (char *mesg) const
void must_respond_to (ID mid, VALUE val, ID id)
void stdout_setter (VALUE val, ID id, VALUE *variable)
void defout_setter (VALUE val, ID id, VALUE *variable)
void deferr_setter (VALUE val, ID id, VALUE *variable)
VALUE prep_stdio (FILE *f, int mode, VALUE klass)
void prep_path (VALUE io, char *path)
VALUE rb_io_initialize (int argc, VALUE *argv, VALUE io)
VALUE rb_file_initialize (int argc, VALUE *argv, VALUE io)
VALUE rb_io_s_new (int argc, VALUE *argv, VALUE klass)
VALUE rb_io_s_for_fd (int argc, VALUE *argv, VALUE klass)
VALUE argf_forward ()
void argf_close (VALUE file)
int next_argv ()
VALUE argf_getline (int argc, VALUE *argv)
VALUE rb_f_gets (int argc, VALUE *argv)
VALUE rb_gets ()
VALUE rb_f_readline (int argc, VALUE *argv)
VALUE rb_f_getc ()
VALUE rb_f_readlines (int argc, VALUE *argv)
VALUE rb_f_backquote (VALUE obj, VALUE str)
VALUE rb_f_select (int argc, VALUE *argv, VALUE obj)
int io_cntl (int fd, int cmd, long narg, int io_p)
VALUE rb_io_ctl (VALUE io, VALUE req, VALUE arg, int io_p)
VALUE rb_io_ioctl (int argc, VALUE *argv, VALUE io)
VALUE rb_io_fcntl (int argc, VALUE *argv, VALUE io)
VALUE rb_f_syscall (int argc, VALUE *argv)
VALUE io_new_instance (VALUE)
VALUE rb_io_s_pipe (VALUE klass)
VALUE io_s_foreach (struct foreach_arg *arg)
VALUE rb_io_s_foreach (int argc, VALUE *argv)
VALUE io_s_readlines (struct foreach_arg *arg)
VALUE rb_io_s_readlines (int argc, VALUE *argv, VALUE io)
VALUE io_s_read (struct foreach_arg *arg)
VALUE rb_io_s_read (int argc, VALUE *argv, VALUE io)
VALUE argf_tell ()
VALUE argf_seek_m (int argc, VALUE *argv, VALUE self)
VALUE argf_set_pos (VALUE self, VALUE offset)
VALUE argf_rewind ()
VALUE argf_fileno ()
VALUE argf_to_io ()
VALUE argf_eof ()
VALUE argf_read (int argc, VALUE *argv)
VALUE argf_getc ()
VALUE argf_readchar ()
VALUE argf_each_line (int argc, VALUE *argv)
VALUE argf_each_byte ()
VALUE argf_filename ()
VALUE argf_file ()
VALUE argf_binmode ()
VALUE argf_skip ()
VALUE argf_close_m ()
VALUE argf_closed ()
VALUE argf_to_s ()
VALUE opt_i_get ()
void opt_i_set (VALUE val)
void Init_IO ()

Variables

VALUE rb_cIO
VALUE rb_eEOFError
VALUE rb_eIOError
VALUE rb_stdin
VALUE rb_stdout
VALUE rb_stderr
VALUE rb_deferr
VALUE orig_stdout
VALUE orig_stderr
VALUE rb_output_fs
VALUE rb_rs
VALUE rb_output_rs
VALUE rb_default_rs
VALUE argf
ID id_write
ID id_read
ID id_getc
char * ruby_inplace_mode
VALUE filename
VALUE current_file
int gets_lineno
int init_p = 0 next_p = 0
VALUE lineno = INT2FIX(0)
int binmode = 0


Define Documentation

 
#define ARGF_FORWARD  )     do { if (TYPE(current_file) != T_FILE) return argf_forward(); } while (0)
 

Definition at line 4190 of file io.c.

Referenced by argf_binmode(), argf_closed(), argf_eof(), argf_fileno(), argf_rewind(), argf_seek_m(), argf_set_pos(), argf_tell(), argf_to_io(), and rb_f_readline().

#define FMODE_SYNCWRITE   (FMODE_SYNC|FMODE_WRITABLE)
 

Definition at line 243 of file io.c.

Referenced by rb_io_check_readable().

#define io_seek fptr,
ofs,
whence   )     fseeko(flush_before_seek(fptr)->f, ofs, whence)
 

Definition at line 234 of file io.c.

Referenced by io_reopen(), rb_io_check_readable(), rb_io_check_writable(), rb_io_rewind(), rb_io_seek(), and rb_io_set_pos().

#define io_tell fptr   )     ftello(flush_before_seek(fptr)->f)
 

Definition at line 235 of file io.c.

Referenced by io_reopen(), rb_io_tell(), and remain_size().

#define MODE_BINARY a,
 )     (a)
 

Referenced by rb_io_modenum_mode().

#define MODE_BINMODE a,
 )     (a)
 

Referenced by rb_io_flags_mode().

#define MODENUM_MAX   4
 

Definition at line 2608 of file io.c.

 
#define NEXT_ARGF_FORWARD  ) 
 

Value:

do {\
     if (!next_argv()) return Qnil;\
      ARGF_FORWARD();\
} while (0)

Definition at line 4191 of file io.c.

Referenced by argf_readchar(), and rb_f_readlines().

#define NOFILE   64
 

Definition at line 71 of file io.c.

Referenced by pipe_open().

#define O_ACCMODE   (O_RDONLY | O_WRONLY | O_RDWR)
 

Definition at line 96 of file io.c.

Referenced by rb_io_mode_modenum().

#define PIPE_BUF   512
 

Definition at line 107 of file io.c.

Referenced by io_fwrite().

#define READ_CHECK fp   ) 
 

Value:

do {\
    if (!READ_DATA_PENDING(fp)) {\
        rb_thread_wait_fd(fileno(fp));\
        rb_io_check_closed(fptr);\
     }\
} while(0)

Definition at line 180 of file io.c.

Referenced by appendline(), io_getpartial(), io_read(), rb_io_each_byte(), rb_io_eof(), rb_io_getc(), read_all(), and swallow().

#define READ_DATA_BUFFERED fp   )     READ_DATA_PENDING(fp)
 

Definition at line 166 of file io.c.

Referenced by rb_io_sysread(), and rb_io_sysseek().

#define READ_DATA_PENDING fp   )     ((fp)->FILE_READPTR < (fp)->FILE_READEND)
 

Definition at line 151 of file io.c.

Referenced by rb_f_select(), rb_getc(), rb_io_eof(), rb_read_check(), rb_read_pending(), and read_buffered_data().

#define READ_DATA_PENDING_COUNT fp   )     ((fp)->FILE_READEND - (fp)->FILE_READPTR)
 

Definition at line 152 of file io.c.

Referenced by appendline(), read_buffered_data(), and swallow().

#define READ_DATA_PENDING_PTR fp   )     ((char *)(fp)->FILE_READPTR)
 

Definition at line 171 of file io.c.

Referenced by appendline(), and swallow().

#define S_ISREG  )     ((m & S_IFMT) == S_IFREG)
 

Definition at line 406 of file io.c.

#define SEEK_CUR   1
 

Definition at line 239 of file io.c.

Referenced by Init_IO(), rb_file_truncate(), rb_io_check_readable(), rb_io_check_writable(), and rb_io_init_copy().

#define SEEK_END   2
 

Definition at line 240 of file io.c.

Referenced by Init_IO().

#define SEEK_SET   0
 

Definition at line 238 of file io.c.

Referenced by Init_IO(), io_reopen(), rb_io_init_copy(), rb_io_s_read(), rb_io_seek_m(), rb_io_set_pos(), and rb_io_sysseek().

#define SMALLBUF   100
 

Definition at line 1105 of file io.c.

Referenced by rb_strftime(), and time_strftime().


Function Documentation

int appendline OpenFile fptr,
int  delim,
VALUE strp
[static]
 

Definition at line 1372 of file io.c.

References NIL_P, Qfalse, Qtrue, rb_io_check_closed(), rb_io_wait_readable(), rb_str_buf_cat(), rb_str_buf_new(), rb_str_cat(), rb_str_new(), rb_str_resize(), rb_sys_fail(), rb_thread_wait_fd(), READ_CHECK, READ_DATA_PENDING_COUNT, READ_DATA_PENDING_PTR, RSTRING, TRAP_BEG, TRAP_END, and VALUE.

Referenced by rb_io_getline(), and rb_io_getline_fast().

VALUE argf_binmode  )  [static]
 

Definition at line 5392 of file io.c.

References argf, ARGF_FORWARD, binmode, current_file, next_argv(), and rb_io_binmode().

Referenced by Init_IO().

void argf_close VALUE  file  )  [static]
 

Definition at line 4197 of file io.c.

References rb_funcall3(), rb_intern(), rb_io_close(), T_FILE, TYPE, and VALUE.

Referenced by argf_close_m(), argf_getc(), argf_getline(), argf_read(), argf_skip(), and rb_gets().

VALUE argf_close_m  )  [static]
 

Definition at line 5412 of file io.c.

References argf, argf_close(), current_file, gets_lineno, and next_argv().

Referenced by Init_IO().

VALUE argf_closed  )  [static]
 

Definition at line 5424 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), and rb_io_closed().

Referenced by Init_IO().

VALUE argf_each_byte  )  [static]
 

Definition at line 5367 of file io.c.

References argf, argf_getc(), NIL_P, rb_yield(), and VALUE.

Referenced by Init_IO().

VALUE argf_each_line int  argc,
VALUE argv
[static]
 

Definition at line 5346 of file io.c.

References argf, argf_getline(), current_file, next_argv(), NIL_P, Qnil, rb_each(), rb_iterate(), rb_yield(), T_FILE, TYPE, and VALUE.

Referenced by Init_IO().

VALUE argf_eof  )  [static]
 

Definition at line 5251 of file io.c.

References ARGF_FORWARD, current_file, init_p, Qfalse, Qtrue, and rb_io_eof().

Referenced by Init_IO().

VALUE argf_file  )  [static]
 

Definition at line 5385 of file io.c.

References current_file, and next_argv().

Referenced by Init_IO().

VALUE argf_filename  )  [static]
 

Definition at line 5378 of file io.c.

References filename, and next_argv().

Referenced by Init_IO().

VALUE argf_fileno  )  [static]
 

Definition at line 5233 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), rb_eArgError, rb_io_fileno(), and rb_raise().

Referenced by Init_IO().

VALUE argf_forward  )  [static]
 

Definition at line 4184 of file io.c.

References FRAME::argc, FRAME::argv, current_file, FRAME::last_func, rb_funcall3(), and ruby_frame.

Referenced by argf_read().

VALUE argf_getc  )  [static]
 

Definition at line 5311 of file io.c.

References argf_close(), current_file, next_argv(), NIL_P, Qnil, rb_funcall3(), rb_intern(), rb_io_getc(), T_FILE, TYPE, and VALUE.

Referenced by argf_each_byte(), argf_readchar(), and Init_IO().

VALUE argf_getline int  argc,
VALUE argv
[static]
 

Definition at line 4327 of file io.c.

References argf_close(), current_file, gets_lineno, INT2FIX, lineno, next_argv(), NIL_P, Qnil, rb_default_rs, rb_io_getline(), rb_io_gets(), rb_rs, rb_scan_args(), StringValue, and VALUE.

Referenced by argf_each_line(), rb_f_gets(), and rb_f_readlines().

VALUE argf_lineno  )  [static]
 

Definition at line 1733 of file io.c.

References lineno.

Referenced by Init_IO().

VALUE argf_read int  argc,
VALUE argv
[static]
 

Definition at line 5264 of file io.c.

References argf_close(), argf_forward(), current_file, INT2NUM, io_read(), next_argv(), NIL_P, NUM2LONG, Qnil, rb_scan_args(), rb_str_append(), rb_str_resize(), RSTRING, StringValue, T_FILE, TYPE, and VALUE.

Referenced by Init_IO().

VALUE argf_readchar  )  [static]
 

Definition at line 5333 of file io.c.

References argf_getc(), NEXT_ARGF_FORWARD, NIL_P, rb_eof_error(), and VALUE.

Referenced by Init_IO().

VALUE argf_rewind  )  [static]
 

Definition at line 5223 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), rb_eArgError, rb_io_rewind(), and rb_raise().

Referenced by Init_IO().

VALUE argf_seek_m int  argc,
VALUE argv,
VALUE  self
[static]
 

Definition at line 5199 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), rb_eArgError, rb_io_seek_m(), rb_raise(), and VALUE.

Referenced by Init_IO().

VALUE argf_set_lineno VALUE  argf,
VALUE  val
[static]
 

Definition at line 1724 of file io.c.

References argf, gets_lineno, INT2FIX, lineno, NUM2INT, Qnil, and VALUE.

Referenced by Init_IO().

VALUE argf_set_pos VALUE  self,
VALUE  offset
[static]
 

Definition at line 5212 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), rb_eArgError, rb_io_set_pos(), rb_raise(), and VALUE.

Referenced by Init_IO().

VALUE argf_skip  )  [static]
 

Definition at line 5402 of file io.c.

References argf, argf_close(), and current_file.

Referenced by Init_IO().

VALUE argf_tell  )  [static]
 

Definition at line 5189 of file io.c.

References ARGF_FORWARD, current_file, next_argv(), rb_eArgError, rb_io_tell(), and rb_raise().

Referenced by Init_IO().

VALUE argf_to_io  )  [static]
 

Definition at line 5243 of file io.c.

References ARGF_FORWARD, current_file, and next_argv().

Referenced by Init_IO().

VALUE argf_to_s  )  [static]
 

Definition at line 5432 of file io.c.

References rb_str_new2().

Referenced by Init_IO().

void deferr_setter VALUE  val,
ID  id,
VALUE variable
[static]
 

Definition at line 3988 of file io.c.

References ID, rb_warn(), stdout_setter(), and VALUE.

Referenced by Init_IO().

void defout_setter VALUE  val,
ID  id,
VALUE variable
[static]
 

Definition at line 3978 of file io.c.

References ID, rb_warn(), stdout_setter(), and VALUE.

Referenced by Init_IO().

OpenFile* flush_before_seek OpenFile fptr  )  [static]
 

Definition at line 225 of file io.c.

References FMODE_WBUF, GetWriteFile, and io_fflush().

void fptr_finalize OpenFile fptr,
int  noraise
[static]
 

Definition at line 2026 of file io.c.

References FMODE_WBUF, rb_io_wait_writable(), and rb_sys_fail().

Referenced by rb_io_fptr_cleanup().

void Init_File void   ) 
 

Definition at line 4333 of file file.c.

References define_filetest_function(), INT2FIX, LOCK_EX, LOCK_NB, LOCK_SH, LOCK_UN, PATH_SEP, Qnil, rb_cFile, rb_cIO, rb_cObject, rb_cStat, rb_define_alloc_func(), rb_define_class(), rb_define_class_under(), rb_define_const(), rb_define_global_function(),