Feature #2190
closedFileUtils::chmod - allow symbolic mode
Description
=begin
Hello,
I request that FileUtils::chmod() and FileUtils::chmod_R() accept
symbolic modes, which are strings like "u+x,g-w,o=" (see "symbolic
mode" in man chmod
for details), in addition to the numeric modes
they currently accept.
If my request is fulfilled, the following would be equivalent:
FileUtils::chmod(0712, "file.txt")
FileUtils::chmod("u=rwx,g=x,o=w", "file.txt")
In addition, symbolic modes would allow delta/patch changes:
FileUtils::chmod("g+w", "file.txt")
This is not so easy with numeric modes, because you must
first read the current mode, apply your delta/patch mode
using a bitwise OR operation, and finally apply the new
numeric mode using FileUtils::chmod().
Thanks for your consideration.
=end
Files
Updated by znz (Kazuhiro NISHIYAMA) over 14 years ago
- Category set to lib
- Target version set to 2.0.0
=begin
=end
Updated by takkanm (三村 益隆) over 14 years ago
- File 0001-FileUtils-chmod-to-symbolic-mode-added.patch 0001-FileUtils-chmod-to-symbolic-mode-added.patch added
=begin
Hi. I'm takkanm.
FileUtils:: chmod () that I wrote a patch to use the symbolic mode.
How about this?
=end
Updated by sunaku (Suraj Kurapati) over 14 years ago
=begin
Thanks for your patch, takkanm! I hope the Ruby developers will
accept it into Ruby trunk. I have one small suggestion for you:
def fu_mode(mode, path)
- mode.class == String ? symbolic_modes_to_i(mode, path) : mode
- mode.is_a?(String) ? symbolic_modes_to_i(mode, path) : mode
end
Greetings.
=end
Updated by dolzenko (Evgeniy Dolzhenko) about 14 years ago
=begin
+1 Would like to see this it's way to the core, except that current_file_mode
function doesn't seem to be really used anyway and can be removed:
- def symbolic_modes_to_i(modes, path)
- current_mode = current_file_mode(path)
- current_mode = (File.stat(path).mode & 07777)
...
=end
Updated by anthezium (ted cooper) over 13 years ago
=begin
+1
we have a million chmod ...
expressions lurking because of this omission. please accept this into trunk!
=end
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Status changed from Open to Assigned
- Assignee set to kosaki (Motohiro KOSAKI)
=begin
Hi
This request seems very reasonable to me. I'll review the patch later.
=end
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
I slightly change the testcase at r31415. because FreeBSD don't change sticky bit.
Thx.