Bug #13972 ยป 0001-file.c-document-File.-setuid-setgid-sticky-support-f.patch
NEWS | ||
---|---|---|
* File.stat, File.exist?, and other rb_stat()-using methods release GVL
|
||
[Bug #13941]
|
||
* File.rename releases GVL [Feature #13951]
|
||
* File.setuid?, File.setgid?, File.sticky? accept bare IO objects
|
||
in addition to file names.
|
||
* Hash
|
||
file.c | ||
---|---|---|
* File.setuid?(file_name) -> true or false
|
||
*
|
||
* Returns <code>true</code> if the named file has the setuid bit set.
|
||
*
|
||
* _file_name_ can be an IO object.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* File.setgid?(file_name) -> true or false
|
||
*
|
||
* Returns <code>true</code> if the named file has the setgid bit set.
|
||
*
|
||
* _file_name_ can be an IO object.
|
||
*/
|
||
static VALUE
|
||
... | ... | |
* File.sticky?(file_name) -> true or false
|
||
*
|
||
* Returns <code>true</code> if the named file has the sticky bit set.
|
||
*
|
||
* _file_name_ can be an IO object.
|
||
*/
|
||
static VALUE
|
test/ruby/test_file_exhaustive.rb | ||
---|---|---|
assert_file.grpowned?(utf8_file)
|
||
end if POSIX
|
||
def io_open(file_name)
|
||
# avoid File.open since we do not want #to_path
|
||
io = IO.for_fd(IO.sysopen(file_name))
|
||
yield io
|
||
ensure
|
||
io&.close
|
||
end
|
||
def test_suid
|
||
assert_file.not_setuid?(regular_file)
|
||
assert_file.not_setuid?(utf8_file)
|
||
assert_file.setuid?(suidfile) if suidfile
|
||
if suidfile
|
||
assert_file.setuid?(suidfile)
|
||
io_open(suidfile) { |io| assert_file.setuid?(io) }
|
||
end
|
||
end
|
||
def test_sgid
|
||
assert_file.not_setgid?(regular_file)
|
||
assert_file.not_setgid?(utf8_file)
|
||
assert_file.setgid?(sgidfile) if sgidfile
|
||
if sgidfile
|
||
assert_file.setgid?(sgidfile)
|
||
io_open(sgidfile) { |io| assert_file.setgid?(io) }
|
||
end
|
||
end
|
||
def test_sticky
|
||
assert_file.not_sticky?(regular_file)
|
||
assert_file.not_sticky?(utf8_file)
|
||
assert_file.sticky?(stickyfile) if stickyfile
|
||
if stickyfile
|
||
assert_file.sticky?(stickyfile)
|
||
io_open(stickyfile) { |io| assert_file.sticky?(io) }
|
||
end
|
||
end
|
||
def test_path_identical_p
|
||
-
|