Граф коммитов

852 Коммитов

Автор SHA1 Сообщение Дата
Alan Wu 5404e2fd31
[DOC] Fix false link to ::Data 2022-12-09 21:56:02 -05:00
Samuel Williams 6fd5d2dc00
Introduce `IO.new(..., path:)` and promote `File#path` to `IO#path`. (#6867) 2022-12-08 18:19:53 +13:00
Yudai Takada 29e6d97517
Fix typos (#6775)
* s/Innteger/Integer/

* s/diretory/directory/

* s/Bufer/Buffer/

* s/defalt/default/

* s/covearge/coverage/
2022-11-20 21:07:18 -08:00
Samuel Williams ea8a7287e2
Add support for `sockaddr_un` on Windows. (#6513)
* Windows: Fix warning about undefined if_indextoname()

* Windows: Fix UNIXSocket on MINGW and make .pair more reliable

* Windows: Use nonblock=true for read tests with scheduler

* Windows: Move socket detection from File.socket? to File.stat

Add S_IFSOCK to Windows and interpret reparse points accordingly.
Enable tests that work now.

* Windows: Use wide-char functions to UNIXSocket

This fixes behaviour with non-ASCII characters.
It also fixes deletion of temporary UNIXSocket.pair files.

* Windows: Add UNIXSocket tests for specifics of Windows impl.

* Windows: fix VC build due to missing _snwprintf

Avoid usage of _snwprintf, since it fails linking ruby.dll like so:

  linking shared-library x64-vcruntime140-ruby320.dll
  x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol snwprintf
  x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol vsnwprintf_l

whereas linking miniruby.exe succeeds.

This patch uses snprintf on the UTF-8 string instead.

Also remove branch GetWindowsDirectoryW, since it doesn't work.

* Windows: Fix dangling symlink test failures

Co-authored-by: Lars Kanis <kanis@comcard.de>
2022-11-17 14:50:25 -08:00
Lars Kanis 7b1d23fd29
Windows: Readlink improvements (#6745)
* Windows: Use readlink emulation for File.readlink

This fixes readlink emulation for the ERROR_MORE_DATA case and general error reporting.
It now releases GVL while readlink IO operation.

The dedicated rb_readlink was introduced in commit 2ffb87995a
in order to improve encoding and buffer allocation.
However the encoding issues are solved since ruby-3.0 switched to UTF-8
and the buffer allocation will be improved in a later commit.

* Windows: Increase the default buffer size for reparse point info

So far nearly all queries of reparse points needed two attempts to get enough buffer.

* Windows: Remove declaration of rb_w32_wreadlink

It was removed in commit 2f6fdd3aeb
2022-11-17 01:57:52 -08:00
Burdette Lamar 0e1e1b1980
[DOC] Enhanced RDoc for IO (#6669) 2022-11-09 10:15:39 -06:00
Burdette Lamar bc939d2937
[DOC] More about line number (#6582) 2022-10-19 10:34:51 -05:00
Nobuyoshi Nakada 139e79e5a9
[DOC] Remove unknown markup or macro [ci skip]
Also remove the ancient word "Windows NT".
2022-10-05 19:43:54 +09:00
Nobuyoshi Nakada c198cf4329
Remove an unused macro [ci skip] 2022-10-03 23:19:55 +09:00
Nobuyoshi Nakada 8218cb73ba
[Bug #19034] No runtime check for `utimensat` if unavailable 2022-10-03 23:18:34 +09:00
Burdette Lamar ded895baa9
[DOC] RDoc changes for IO (#6458)
Moves Expect library doc into io.c.
    Changes certain links to local sections, now pointing to sections in doc/io_streams.rdoc.
    Removes local sections now superseded by sections in doc/io_streams.rdoc.
2022-10-02 08:24:08 -05:00
Yuta Saito e3cc1a6cae Initialize Objective-C classes before fork() for macOS 13
Since macOS 13, CFString family API used in
`rb_str_append_normalized_ospath` may internally use Objective-C classes
(`NSTaggedPointerString` and `NSPlaceholderMutableString`) for small strings.

On the other hand, Objective-C classes should not be used for the first
time in a `fork()`'ed but not `exec()`'ed process. Violations for this rule
can result deadlock during class initialization, so Objective-C runtime
conservatively crashes on such cases by default.

Therefore, we need to use CFString API to initialize Objective-C classes
used internally *before* `fork()`.

For more details, see https://bugs.ruby-lang.org/issues/18912
2022-09-26 12:03:40 +09:00
Burdette Lamar 56d773dc6f
New page IO Streams (#6383)
This page provides an overview of IO streams. It's meant to be linked to from many other doc spots. In particular it will be linked to from many places in ARGF, File, IO, and StringIO.
2022-09-21 16:34:55 -05:00
卜部昌平 0cd86ffb2e avoid ANYARGS
Use macro instead of a static functon.  This isn't very amusing but
doing this wihtout a macro (is possibe but) seems just too much.
2022-09-21 11:44:09 +09:00
S-H-GAMELINKS 79f50b9d02 Using is_broken_string function 2022-09-10 09:32:51 +09:00
Nobuyoshi Nakada e2ccb316b4 [Bug #5317] Use `rb_off_t` instead of `off_t`
Get rid of the conflict with system-provided small `off_t`.
2022-09-08 23:01:07 +09:00
Nobuyoshi Nakada 55fef084da [Win32] Remove dead code using `chsize`
Already using `rb_w32_truncate` and `rb_w32_ftruncate`, and
`HAVE_FTRUNCATE` has been added 14 years ago.
2022-09-08 23:01:07 +09:00
Nobuyoshi Nakada 51291ade70
Remove extra semicolons at the top level [ci skip] 2022-09-05 00:16:47 +09:00
Nobuyoshi Nakada 35c794b26d Fixed by [Bug #18964] 2022-08-19 03:05:53 +09:00
Jean Boussier b0b9f7201a rb_str_resize: Only clear coderange on truncation
If we are expanding the string or only stripping extra capacity
then coderange won't change, so clearing it is wasteful.
2022-08-18 10:09:08 +02:00
Takashi Kokubun 5b21e94beb Expand tabs [ci skip]
[Misc #18891]
2022-07-21 09:42:04 -07:00
Jean Boussier d084585f01 Rename ENCINDEX_ASCII to ENCINDEX_ASCII_8BIT
Otherwise it's way too easy to confuse it with US_ASCII.
2022-07-19 08:48:56 +02:00
Nobuyoshi Nakada 5e1c182900
Remove no longer used label [ci skip] 2022-06-29 12:38:12 +09:00
Nobuyoshi Nakada b6b9a6190d
Check availability of `utimensat` on macOS 2022-06-27 17:52:13 +09:00
S-H-GAMELINKS 420f3ced4d Using is_ascii_string to check encoding 2022-06-17 12:02:50 +09:00
Kazuhiro NISHIYAMA 67950a4c0a
Fix missing paren [ci skip] 2022-05-06 18:13:22 +09:00
Burdette Lamar ae96ef9cfb
File rdoc (#5888)
Treats:
    ::pipe?
    ::symlink?
    ::socket?
    ::blockdev?
    ::chardev?
2022-05-05 15:02:54 -05:00
Burdette Lamar 72628c1ccc
Enhanced RDoc for File (#5849)
Treats:

    #path
    ::stat
    ::lstat
    #lstat
    ::directory?

Also adds section "Example Files" that explains assumptions about example files. I'm using t.txt already, and I'm pretty sure I'll need t.dat (binary data). I don't know whether I'll need t.rus (Russian text).
2022-04-26 16:49:28 -05:00
Nobuyoshi Nakada b0666d6417
[DOC] Use consistent terms [Bug #18680] 2022-04-18 17:53:05 +09:00
Nobuyoshi Nakada 7f81f33547 Return `false` where sticky-bit is not provided [Bug #18734] 2022-04-15 17:52:10 +09:00
Peter Zhu 381475f02e Use an empty string when building File.expand_path
Allocating a string of length MAXPATHLEN and then shrinking the string
is inefficient when the resulting path is short. Preallocating a large
string is also a problem for Variable Width Allocation since we can't
easily downsize the capacity.

I ran the following benchmark:

```ruby
Benchmark.ips do |x|
  {
    "empty" => "",
    "short" => "a/" * 10,
    "medium" => "a/" * 100,
    "long" => "a/" * 500
  }.each do |name, path|
    x.report(name) do |times|
      i = 0
      while i < times
        File.expand_path(path)
        i += 1
      end
    end
  end
end
```

On this commit:

```
 empty     97.486k (± 0.7%) i/s -    492.915k in   5.056507s
 short     96.026k (± 2.4%) i/s -    486.489k in   5.068966s
medium     86.304k (± 1.3%) i/s -    435.336k in   5.045112s
  long     59.395k (± 1.7%) i/s -    302.175k in   5.089026s
```

On master:

```
 empty     94.138k (± 1.4%) i/s -    472.158k in   5.016590s
 short     92.043k (± 1.4%) i/s -    468.180k in   5.087496s
medium     84.910k (± 2.3%) i/s -    425.750k in   5.017007s
  long     61.503k (± 2.7%) i/s -    309.723k in   5.039429s
```
2022-04-12 09:54:57 -04:00
Burdette Lamar d0b7df8153
Fix formatting of What's Here for File (#5717) 2022-03-25 12:16:37 -05:00
Peter Zhu f53f49197f [DOC] Replace with IO@Modes 2022-02-07 09:52:06 -05:00
Peter Zhu a32e5e1b97 [DOC] Use RDoc link style for links in the same class/module
I used this regex:

(?<=\[)#(?:class|module)-([A-Za-z]+)-label-([A-Za-z0-9\-\+]+)

And performed a global find & replace for this:

rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Peter Zhu f9a2802bc5 [DOC] Use RDoc link style for links to other classes/modules
I used this regex:

([A-Za-z]+)\.html#(?:class|module)-[A-Za-z]+-label-([A-Za-z0-9\-\+]+)

And performed a global find & replace for this:

rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Peter Zhu ecd469fad0 [DOC] Fix links in documentation for File and IO
Fixes some typos and dead links.
2022-02-07 09:52:06 -05:00
Burdette Lamar 6dc4c942a3
File rdoc (#5438)
Treats:

    File introduction
    File.open
    File.new
2022-01-13 18:00:24 -06:00
Nobuyoshi Nakada bf97415c02 Removed deprecated Dir.exists? and File.exists? 2021-12-28 18:36:30 +09:00
Nobuyoshi Nakada 4f74153846
Adjust styles [ci skip] 2021-12-24 21:17:27 +09:00
Samuel Williams 49166fc74a Improved exception usage/classes. 2021-12-21 12:25:42 +13:00
Nobuyoshi Nakada 46e46eafd4
size_t is not for file size 2021-11-10 16:41:26 +09:00
Samuel Williams 4b89034218 IO::Buffer for scheduler interface. 2021-11-10 19:21:05 +13:00
Nobuyoshi Nakada 1ce3706c58
[DOC] Fix indent as single paragraph [ci skip] 2021-11-05 09:58:46 +09:00
U.Nakamura 3099bb6e3c rb_encoding is already const
- this change get rid of a warning of mswin build.
  see include/ruby/internal/encoding/encoding.h(116)
2021-10-14 10:23:33 +09:00
Nobuyoshi Nakada 8f480eafab rb_group_member: Simplify 2021-10-14 00:20:13 +09:00
Jeremy Evans ee89543e09 Fix regression on Solaris after change to use realpath on loaded features
After the change to use realpath on loaded features, Solaris CI
started failing in test_no_curdir (which tests behavior for running
ruby without a working directory).

I was able to trace the problem to the following call chain:

rb_call_inits->Init_Thread->Init_thread_sync->rb_provide->
get_loaded_features_index->rb_check_realpath->rb_dir_getwd_ospath->
ruby_getcwd

This will throw an exception, but because Ruby hasn't been fully
initialized at the point the exception is thrown, it just exits
with a status of 1.

The bug here is that rb_check_realpath should not raise an
exception, it should return nil.  This bug is hit on Solaris
because Solaris uses the realpath emulation instead of native
realpath, and the realpath emualation raised instead of
returning nil if the mode was RB_REALPATH_CHECK. Use rb_rescue
in the realpath emulation if the mode is RB_REALPATH_CHECK, and
swallow any exceptions raised and return nil.
2021-10-04 19:30:01 -09:00
xtkoba c5ff954410 Get rid of unused function warning for `_WIN32` 2021-10-03 11:06:24 +09:00
Nobuyoshi Nakada 3e46117d3f Associate the encoding to the found path 2021-10-01 20:28:44 +09:00
S.H b8c3a84bdd
Refactor and Using RBOOL macro 2021-09-15 08:11:05 +09:00
S-H-GAMELINKS bdd6d8746f Replace RBOOL macro 2021-09-05 23:01:27 +09:00