mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
b9b6377401
commit
6dc4c942a3
Notes:
git
2022-01-14 09:00:49 +09:00
Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2 changed files with 90 additions and 54 deletions
81
file.c
81
file.c
|
@ -6511,36 +6511,67 @@ const char ruby_null_device[] =
|
|||
;
|
||||
|
||||
/*
|
||||
* A File is an abstraction of any file object accessible by the
|
||||
* program and is closely associated with class IO. File includes
|
||||
* the methods of module FileTest as class methods, allowing you to
|
||||
* write (for example) <code>File.exist?("foo")</code>.
|
||||
* A \File object is a representation of a file in the underlying platform.
|
||||
*
|
||||
* In the description of File methods,
|
||||
* <em>permission bits</em> are a platform-specific
|
||||
* set of bits that indicate permissions of a file. On Unix-based
|
||||
* systems, permissions are viewed as a set of three octets, for the
|
||||
* owner, the group, and the rest of the world. For each of these
|
||||
* entities, permissions may be set to read, write, or execute the
|
||||
* file:
|
||||
* \Class \File extends module FileTest, supporting such singleton methods
|
||||
* as <tt>File.exist?</tt>.
|
||||
*
|
||||
* The permission bits <code>0644</code> (in octal) would thus be
|
||||
* interpreted as read/write for owner, and read-only for group and
|
||||
* other. Higher-order bits may also be used to indicate the type of
|
||||
* file (plain, directory, pipe, socket, and so on) and various other
|
||||
* special features. If the permissions are for a directory, the
|
||||
* meaning of the execute bit changes; when set the directory can be
|
||||
* searched.
|
||||
* == \File Permissions
|
||||
*
|
||||
* On non-Posix operating systems, there may be only the ability to
|
||||
* make a file read-only or read-write. In this case, the remaining
|
||||
* permission bits will be synthesized to resemble typical values. For
|
||||
* instance, on Windows NT the default permission bits are
|
||||
* <code>0644</code>, which means read/write for owner, read-only for
|
||||
* all others. The only change that can be made is to make the file
|
||||
* A \File object has _permissions_, an octal integer representing
|
||||
* the permissions of an actual file in the underlying platform.
|
||||
*
|
||||
* Note that file permissions are quite different from the _mode_
|
||||
* of a file stream (\File object).
|
||||
* See {IO Modes}[#class-IO-label-Modes].
|
||||
*
|
||||
* In a \File object, the permissions are available thus,
|
||||
* where method +mode+, despite its name, returns permissions:
|
||||
*
|
||||
* f = File.new('t.txt')
|
||||
* f.lstat.mode.to_s(8) # => "100644"
|
||||
*
|
||||
* On a Unix-based operating system,
|
||||
* the three low-order octal digits represent the permissions
|
||||
* for owner (6), group (4), and world (4).
|
||||
* The triplet of bits in each octal digit represent, respectively,
|
||||
* read, write, and execute permissions.
|
||||
*
|
||||
* Permissions <tt>0644</tt> thus represent read-write access for owner
|
||||
* and read-only access for group and world.
|
||||
* See man pages {open(2)}[https://www.unix.com/man-page/bsd/2/open]
|
||||
* and {chmod(2)}[https://www.unix.com/man-page/bsd/2/chmod].
|
||||
*
|
||||
* For a directory, the meaning of the execute bit changes:
|
||||
* when set, the directory can be searched.
|
||||
*
|
||||
* Higher-order bits in permissions may indicate the type of file
|
||||
* (plain, directory, pipe, socket, etc.) and various other special features.
|
||||
*
|
||||
* On non-Posix operating systems, permissions may include only read-only or read-write,
|
||||
* in which case, the remaining permission will resemble typical values.
|
||||
* On Windows, for instance, the default permissions are <code>0644</code>;
|
||||
* The only change that can be made is to make the file
|
||||
* read-only, which is reported as <code>0444</code>.
|
||||
*
|
||||
* Various constants for the methods in File can be found in File::Constants.
|
||||
* For a method that actually creates a file in the underlying platform
|
||||
* (as opposed to merely creating a \File object),
|
||||
* permissions may be specified:
|
||||
*
|
||||
* File.new('t.tmp', File::CREAT, 0644)
|
||||
* File.new('t.tmp', File::CREAT, 0444)
|
||||
*
|
||||
* Permissions may also be changed:
|
||||
*
|
||||
* f = File.new('t.tmp', File::CREAT, 0444)
|
||||
* f.chmod(0644)
|
||||
* f.chmod(0444)
|
||||
*
|
||||
* == \File Constants
|
||||
*
|
||||
* Various constants for use in \File and \IO methods
|
||||
* may be found in module File::Constants;
|
||||
* an array of their names is returned by <tt>File::Constants.constants</tt>.
|
||||
*
|
||||
* == What's Here
|
||||
*
|
||||
|
|
63
io.c
63
io.c
|
@ -7631,26 +7631,20 @@ rb_open_file(int argc, const VALUE *argv, VALUE io)
|
|||
return io;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Document-method: File::open
|
||||
*
|
||||
* call-seq:
|
||||
* File.open(filename, mode="r" [, opt]) -> file
|
||||
* File.open(filename [, mode [, perm]] [, opt]) -> file
|
||||
* File.open(filename, mode="r" [, opt]) {|file| block } -> obj
|
||||
* File.open(filename [, mode [, perm]] [, opt]) {|file| block } -> obj
|
||||
* File.open(path, mode = 'r', perm = 0666, **opts]) -> file
|
||||
* File.open(path, mode = 'r', perm = 0666, **opts]) {|f| ... } -> object
|
||||
*
|
||||
* With no associated block, File.open is a synonym for
|
||||
* File.new. If the optional code block is given, it will
|
||||
* be passed the opened +file+ as an argument and the File object will
|
||||
* automatically be closed when the block terminates. The value of the block
|
||||
* will be returned from File.open.
|
||||
* Creates a new \File object, via File.new with the given arguments.
|
||||
*
|
||||
* If a file is being created, its initial permissions may be set using the
|
||||
* +perm+ parameter. See File.new for further discussion.
|
||||
* With no block given, returns the \File object.
|
||||
*
|
||||
* With a block given, calls the block with the \File object
|
||||
* and returns the block's value.
|
||||
*
|
||||
* See IO.new for a description of the +mode+ and +opt+ parameters.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -9056,27 +9050,38 @@ rb_io_set_encoding_by_bom(VALUE io)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* File.new(filename, mode="r" [, opt]) -> file
|
||||
* File.new(filename [, mode [, perm]] [, opt]) -> file
|
||||
* File.new(path, mode = 'r', perm = 0666, **opts) -> file
|
||||
*
|
||||
* Opens the file named by +filename+ according to the given +mode+ and
|
||||
* returns a new File object.
|
||||
* Opens the file at the given +path+ according to the given +mode+;
|
||||
* creates and returns a new \File object for that file.
|
||||
*
|
||||
* See IO.new for a description of +mode+ and +opt+.
|
||||
*
|
||||
* If a file is being created, permission bits may be given in +perm+. These
|
||||
* mode and permission bits are platform dependent; on Unix systems, see
|
||||
* open(2) and chmod(2) man pages for details.
|
||||
*
|
||||
* The new File object is buffered mode (or non-sync mode), unless
|
||||
* The new \File object is buffered mode (or non-sync mode), unless
|
||||
* +filename+ is a tty.
|
||||
* See IO#flush, IO#fsync, IO#fdatasync, and IO#sync= about sync mode.
|
||||
* See IO#flush, IO#fsync, IO#fdatasync, and IO#sync=.
|
||||
*
|
||||
* === Examples
|
||||
* Argument +path+ must be a valid file path:
|
||||
*
|
||||
* File.new('/etc/fstab')
|
||||
* File.new('t.txt')
|
||||
*
|
||||
* Optional argument +mode+ (defaults to 'r') must specify a valid mode
|
||||
* see {\IO Modes}[#class-IO-label-Modes]:
|
||||
*
|
||||
* File.new('t.tmp', 'w')
|
||||
* File.new('t.tmp', File::RDONLY)
|
||||
*
|
||||
* Optional argument +perm+ (defaults to 0666) must specify valid permissions
|
||||
* see {File Permissions}[#class-File-label-Permissions]:
|
||||
*
|
||||
* File.new('t.tmp', File::CREAT, 0644)
|
||||
* File.new('t.tmp', File::CREAT, 0444)
|
||||
*
|
||||
* Optional argument +opts+ must specify valid open options
|
||||
* see {IO Open Options}[#class-IO-label-Open+Options]:
|
||||
*
|
||||
* File.new('t.tmp', autoclose: true)
|
||||
* File.new('t.tmp', internal_encoding: nil)
|
||||
*
|
||||
* f = File.new("testfile", "r")
|
||||
* f = File.new("newfile", "w+")
|
||||
* f = File.new("newfile", File::CREAT|File::TRUNC|File::RDWR, 0644)
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Add table
Reference in a new issue