Project

General

Profile

Actions

Feature #7288

closed

Documentation missing: FileUtils.chmod "+X", "directory"

Added by joerg.herzinger (Jörg Herzinger) almost 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
[ruby-core:48965]

Description

Documentation for chmods "X" (uppercase) feature is missing. This sets the execute bit on directories but not on files. Tested on my Ubuntu machine it works although not documented.
Reproducable like this:

[irb]
require 'fileutils'
FileUtils.cd "/tmp";FileUtils.touch "testfile";FileUtils.mkdir "testdir"

FileUtils.chmod "-x", "testfile"; FileUtils.chmod "-x", "testdir"
File.executable? "testdir" => false
File.executable? "testfile" => false

FileUtils.chmod "+X", "testfile"; FileUtils.chmod "+X", "testdir"
File.executable? "testdir" => true
File.executable? "testfile" => false
[/irb]

From chmods man page:
... execute (or search for directories) (x), execute/search only if the file is a directory or already has execute permission for some user (X) ...

Updated by zzak (zzak _) almost 12 years ago

  • Category set to doc
  • Target version set to 2.0.0

I was looking through lib/fileutils.rb

It seems it's using the private method symbolic_modes_to_i which takes the mode passed from FileUtils.chmod and translates it into an octal number, or absolute mode, for use with File.chmod. This then takes us to FileUtils.mode_mask which does the heavy lifting, and seems to include a special case for "X", which it translates into "0111".

chmod(1): The execute/search bits if the file is a directory or any
of the execute/search bits are set in the original (unmodi-
fied) mode. Operations with the perm symbol X'' are only meaningful in conjunction with the op symbol +'', and are
ignored in all other cases.

Call me crazy, but it seems you're right and we need to add this "X" mode to our documentation.

I will try to come up with a patch for this soon.

Actions #2

Updated by zzak (zzak _) almost 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37652.
Jörg, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Actions

Also available in: Atom PDF

Like0
Like0Like0