class File

Public Class Methods

umask() → int click to toggle source
umask( int) → int
umask( int) { ... } → obj

Returns the current umask value for this process. If the optional argument is given, set the umask to that value and return the previous value. If a block is given, the umask value will be reset and the blocks value is returned.

Umask values are subtracted from the default permissions, so a umask of 0222 would make a file read-only for everyone.

File.umask( 0006)   #=> 18
File.umask          #=> 6
VALUE
rb_file_s_umask( int argc, VALUE *argv)
{
    int omask = 0;

    rb_secure( 2);
    switch (argc) {
    case 0:
        omask = umask( 0777);
        umask( omask);
        break;
    case 1:
        omask = umask( NUM2INT( argv[ 0]));
        if (rb_block_given_p())
          return rb_ensure( rb_yield, Qnil,
                              supplement_do_unumask, INT2FIX( omask));
        break;
    default:
        rb_raise( rb_eArgError,
              "wrong number of arguments (%d for 0..1)", argc);
    }
    return INT2FIX( omask);
}

Public Instance Methods

size → integer click to toggle source

Returns file's size. A shortcut for file.stat.size. This constitutes consistency with StringIO.

file.size     #=> 16384
VALUE
rb_file_size( VALUE obj)
{
#ifdef HAVE_HEADER_RUBY_H
    OpenFile *fptr;
#else
    rb_io_t *fptr;
#endif
    struct stat st;

    GetOpenFile( obj, fptr);
#ifdef HAVE_HEADER_RUBY_H
    if (fstat( fileno( fptr->f), &st) == -1) {
        rb_sys_fail( fptr->path);
    }
#else
    if (fstat( fptr->fd, &st) == -1) {
        rb_sys_fail_str( fptr->pathv);
    }
#endif
    return INT2FIX( st.st_size);
}