915 Commits
Author SHA1 Message Date
BurdetteLamar ab4a0b4e0e [DOC] Doc for File::Stat<=> 2025-12-21 14:05:55 -05:00
B. Burt 4762f429f4 [DOC] typo fix in ruby/file.c 2025-12-03 14:16:03 +09:00
Nobuyoshi Nakada a4c051b870 Remove PATH check 2025-11-07 20:42:29 +09:00
Jean Boussier 7a05dbc478 File.dirname: return consistent encoding for "."
[Bug #21561]

It's preferable if the method is consistent in the encoding in
the returned string.
2025-09-12 09:24:31 +02:00
Nobuyoshi Nakada f7be281679 [DOC] Clarify the conversion by File.path 2025-08-27 20:10:52 +09:00
Nobuyoshi Nakada dedf9f5f62 Suppress gcc 15 unterminated-string-initialization warnings 2025-07-16 18:48:35 +09:00
Nobuyoshi Nakada c7f5ae981a The device numbers in struct statx may be larger than dev_t
`dev_t` is already 64-bit in glibc, but on some platforms like Alpine
Linux and Android NDK, `makedev` is defined as more than 32-bit (
promoting to `unsigned long long` then left-shifting by 32bit), while
`dev_t` is still 32-bit.
2025-06-13 19:35:52 +09:00
Earlopain 96fdaf2e39 Fix build on alpine with statx change
Since https://github.com/ruby/ruby/commit/18a036a6133bd141dfc25cd48ced9a2b78826af6 building on alpine fails
because usage of `__u32`, which is not portable.

> file.c: In function 'rb_stat_new':
> file.c:546:33: error: '__u32' undeclared (first use in this function)
>   # define CP_32(m) .stx_ ## m = (__u32)st->st_ ## m
2025-06-09 21:22:36 +09:00
Nobuyoshi Nakada 18a036a613 [Feature #21205] Define File::Stat#birthtime by statx 2025-05-30 20:55:12 +09:00
Samuel Williams 20a1c1dc6b Ensure struct rb_io is passed through to thread.c. (#13134) 2025-04-19 09:55:16 +09:00
Yuta Saito b4f74e24d9 [wasm] Fallback to emulated realpath on wasi-libc realpath ENOTSUP
wasi-libc 22 and later support realpath(3)
(https://github.com/WebAssembly/wasi-libc/pull/463) but the underlying
host syscall may return ENOTSUP. This is typically the case when using
incomplete WASI polyfills on web browsers. For such cases, we should
fallback to the emulated realpath.
2025-04-18 07:47:49 +09:00
Alan Wu 6fbc32b5d0 GCC defines __linux__, not __LINUX__
Fixes: 2c6512fe67
2025-04-01 16:25:01 -04:00
Earlopain 7c88cbb4a6 [Feature #20971] Deprecate rb_path_check
https://bugs.ruby-lang.org/issues/20971
2025-03-13 18:43:48 +09:00
tomoya ishida 2d3d7a74e9 [DOC] Fix wrong call-seq format (#12662) 2025-01-29 21:53:00 +09:00
Nobuyoshi Nakada e433e6515e [DOC] Exclude 'Class' and 'Module' from RDoc's autolinking 2025-01-02 12:36:06 +09:00
Yuta Saito c77f0b9134 [Bug #20631] Workaround for macOS 15.0 fork crash
macOS 15.0 24A5331b seems to have a weird issue that
`CFStringCreateWithBytesNoCopy` does not return `NSTaggedPointerString`
instance for the first call. This issue is fixed in macOS 15.1 but we
need to workaround it for macOS 15.0.
2024-10-10 13:40:59 +09:00
John Bampton 3fc1495c30 Fix spelling 2024-10-09 07:14:44 +09:00
Samuel Williams c50298d7d4 Introduce rb_io_blocking_region which takes struct rb_io argument. (#11795)
This does not change any actual behaviour, but provides a choke point for blocking IO operations.

* Update `IO::Buffer` to use `rb_io_blocking_region`.

* Update `File` to use `rb_io_blocking_region`.

* Update `IO` to use `rb_io_blocking_region`.
2024-10-05 15:10:12 +13:00
Yusuke Endoh b93c51c114 Free a buffer allocated by realpath
8350b48cfa introduced a memory leak bug.

Will fix [Bug #20773]
`loop { File.realpath("foo") }` caused memory leak.
2024-09-30 20:35:46 +09:00
Nobuyoshi Nakada 2a65f4c907 Extract mutable_CFString_new
From duplicate code in `rb_CFString_class_initialize_before_fork` and
`rb_str_append_normalized_ospath`.
2024-09-26 18:17:13 +09:00
Nobuyoshi Nakada 8350b48cfa Import patches for old macOS from MacPorts 2024-09-26 10:32:30 +09:00
Jeremy Evans ad761ad2d0 Release GVL for get{pwnam,pwuid,grgid,grnam}_r calls in process.c
Do not release GVL around get{pwuid,pwnam,grgid,grnam} calls,
as doing so is not thread-safe.  Another C extension could have
a concurrent call, and derefencing the returned pointer from
these calls could result in a segfault.

Have rb_home_dir_of call rb_getpwdirnam_for_login if available,
so it can use getpwnam_r and release GVL in a thread-safe manner.

This is related to GVL releasing work in [Bug #20587].
2024-09-12 07:24:02 -07:00
Jeremy Evans ae886e0c83 Check getlogin return value before passing to strcasecmp
getlogin can return NULL, and this can avoid a segfault
in that case.

Mentioned as an issue in comment to bug 20586.
2024-08-22 11:20:47 +09:00
Nobuyoshi Nakada d11d615ba6 Fix utimesat availability condition
As `__has_attribute` macro is always defined in internal/compilers.h,
gcc warns `-Wunguarded-availability-new` as unknown option.  Check if
the warning option is usable instead.
2024-07-18 11:20:17 +09:00
Jeremy Evans 8ade9994bf Release GVL around system calls in dir.c
* Release GVL for fdopendir calls
* Release GVL for readdir calls
* Release GVL for chdir call in dir_chdir0
* Release GVL for fchdir call in dir_fchdir
* Release GVL for chroot calls
* Release GVL for lstat calls
* Release GVL for stat calls
* Release GVL for fstatat calls
* Release GVL for getpwnam call in rb_home_dir_of
  (technically in file.c, but called from dir.c)

This does not release GVL for readdir/stat/lstat on Windows,
as that causes issues because the emulation functions that
are called in win32.c require the GVL.

This also removes some explicit casts either to or from void *,
which are allowed implicitly.  The remaining casts to or from
void * are part of function pointer casts, which are not
allowed implicitly and will generate a warning.
2024-07-14 12:02:00 -07:00
BurdetteLamar a57b4340d0 Doc fixes 2024-07-08 14:35:29 -04:00
cui fliter 226a889dc7 [DOC] fix some comments
Signed-off-by: cui fliter <imcusg@gmail.com>
2024-03-05 18:50:47 +09:00
Nobuyoshi Nakada 5a4cd732f0 Make File#chown unblocking 2024-03-02 14:37:57 +09:00
Nobuyoshi Nakada 061c684084 Make File#chmod unblocking 2024-03-02 14:37:53 +09:00
Peter Zhu df5b8ea4db Remove unneeded RUBY_FUNC_EXPORTED 2024-02-23 10:24:21 -05:00
Burdette Lamar d4b4b53bc0 [DOC] Fix links in doc (#9970) 2024-02-20 16:10:52 -05:00
Yusuke Endoh 25d74b9527 Do not include a backtick in error messages and backtraces
[Feature #16495]
2024-02-15 18:42:31 +09:00
Burdette Lamar 7b93e65e9f [DOC] Pretty tables for Kernel#test doc (#9751) 2024-02-01 17:55:13 -05:00
Peter Zhu dddef93bbd Fix memory leak in File.expand_path
File.expand_path leaks the dir if the encodings are not compatible.

For example:

    Encoding.default_external = Encoding::UTF_16BE

    10.times do
      100_000.times do
        File.expand_path("./a")
      rescue
      end

      puts `ps -o rss= -p #{$$}`
    end

Before:

    12288
    15488
    18656
    21872
    25056
    28240
    31392
    34688
    37856
    41056

After:

    9680
    9728
    9728
    9792
    9792
    9792
    9792
    9792
    9792
2024-01-30 16:43:44 -05:00
Nobuyoshi Nakada d86c4e553e Define IO_WITHOUT_GVL macro 2024-01-24 20:51:50 +09:00
Peter Zhu 85a7da742a [DOC] Escape File in documentation 2024-01-08 11:30:29 -05:00
BurdetteLamar 45b0e77881 Markdown table for #flock 2023-12-25 22:10:20 -05:00
Nobuyoshi Nakada 0fef890b4f [DOC] Fix markup in HTML
Inside HTML is not markdown.
2023-12-24 13:59:34 +09:00
Burdette Lamar 688a1314e6 [DOC] Clean up doc for File#flock (#9332) 2023-12-23 16:08:26 -05:00
Nobuyoshi Nakada 9b00b2bfb2 [DOC] Add links from File::Constants to File constants 2023-12-18 20:17:44 +09:00
Nobuyoshi Nakada ca8733daaf [DOC] Fixed document position
Method documentation must be placed immediately before each
implementation, without any other functions or preprocessor
directives.
2023-12-06 19:56:38 +09:00
Jean Boussier 4f031a745d Embed File::Stat objects
They are very short lived and fit in a 160B slot.
2023-11-22 14:52:32 +01:00
Dana Sherson ef72970a04 Fix File.directory? doc hidding File::Stat#directory? doc
Now the documentation that was already in the codebase for
`File::Stat#directory?` shows up.
2023-11-17 16:41:30 -05:00
Nobuyoshi Nakada 50520cc193 [DOC] Missing comment markers 2023-09-27 16:18:05 +09:00
Burdette Lamar 36cd2b2a52 [DOC] Correction for doc guide + TOC fix in File (#8505) 2023-09-24 17:57:21 -04:00
Burdette Lamar b8e782c1b5 [DOC] Link fix (#8340) 2023-08-31 10:27:10 -04:00
Nobuyoshi Nakada 00ac3a64ba Introduce at_char_boundary function 2023-08-26 08:58:02 +09:00
BurdetteLamar 546c5cfe4c [DOC] Don't suppress autolinks 2023-08-12 13:04:04 -04:00
Kentaro Takeyama f72ddd92be [rubygems/rubygems] Bundler: Update bundle-outdated(1) man
Updated output examples to current format since the output format has changed since version 2.2.0.dev

https://github.com/rubygems/rubygems/commit/48d98f906a
2023-07-24 23:58:06 +00:00
Burdette Lamar bcc160b449 [DOC] RDoc for File::Constants (#8103) 2023-07-23 10:24:19 -04:00