/* * call-seq: * File.umask() => integer * File.umask(integer) => integer * * 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. Umask values are <em>subtracted</em> from the * default permissions, so a umask of <code>0222</code> would make a * file read-only for everyone. * * File.umask(0006) #=> 18 * File.umask #=> 6 */ static VALUE rb_file_s_umask(argc, argv) int argc; VALUE *argv; { int omask = 0; rb_secure(2); if (argc == 0) { omask = umask(0); umask(omask); } else if (argc == 1) { omask = umask(NUM2INT(argv[0])); } else { rb_raise(rb_eArgError, "wrong number of arguments"); } return INT2FIX(omask); }