Ruby: file.c File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
file.c File Reference
`#include "ruby/internal/config.h"`
`#include <ctype.h>`
`#include <time.h>`
`#include <sys/types.h>`
`#include <sys/stat.h>`
`#include "dln.h"`
`#include "encindex.h"`
`#include "id.h"`
`#include "internal.h"`
`#include "internal/compilers.h"`
`#include "internal/dir.h"`
`#include "internal/error.h"`
`#include "internal/file.h"`
`#include "internal/io.h"`
`#include "internal/load.h"`
`#include "internal/object.h"`
`#include "internal/process.h"`
`#include "internal/thread.h"`
`#include "internal/vm.h"`
`#include "ruby/encoding.h"`
`#include "ruby/io.h"`
`#include "ruby/thread.h"`
`#include "ruby/util.h"`

Go to the source code of this file.

## Data Structures
struct | apply_filename
struct | apply_arg
struct | no_gvl_stat_data
struct | access_arg
struct | chown_args
struct | utime_args
struct | utimbuf
struct | rename_args

## Macros
#define | MAXPATHLEN 1024
#define | lstat stat
#define | STAT(p, s) stat((p), (s))
#define | USE_OSPATH 0
#define | TO_OSPATH(str) (str)
#define | NORMALIZE_UTF8PATH 0
#define | apply2args(n) (rb_check_arity(argc, n, UNLIMITED_ARGUMENTS), argc-=n)
#define | ST2UINT(val) ((val) & ~(~1UL << (sizeof(val) * CHAR_BIT - 1)))
#define | NUM2DEVT(v) NUM2UINT(v)
#define | DEVT2NUM(v) UINT2NUM(v)
#define | PRI_DEVT_PREFIX ""
#define | HAVE_STAT_BIRTHTIME
#define | rb_stat_birthtime rb_f_notimplement
#define | statx_has_birthtime(st) 0
#define | S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
#define | S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#define | S_ISBLK(m) (0) /* anytime false */
#define | S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#define | S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
#define | S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
#define | S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#define | rb_file_s_birthtime rb_f_notimplement
#define | rb_file_birthtime rb_f_notimplement
#define | rb_file_s_lchmod rb_f_notimplement
#define | rb_file_s_lchown rb_f_notimplement
#define | rb_file_s_lutime rb_f_notimplement
#define | syserr_fail2_in(func, e, s1, s2) syserr_fail2(e, s1, s2)
#define | sys_fail2(s1, s2) syserr_fail2(errno, s1, s2)
#define | rb_file_s_link rb_f_notimplement
#define | rb_file_s_symlink rb_f_notimplement
#define | rb_file_s_readlink rb_f_notimplement
#define | isdirsep(x) ((x) == '/')
#define | USE_NTFS 0
#define | USE_NTFS_ADS 0
#define | istrailinggarbage(x) 0
#define | isADS(x) 0
#define | Next(p, e, enc) ((p) + rb_enc_mbclen((p), (e), (enc)))
#define | Inc(p, e, enc) ((p) = Next((p), (e), (enc)))
#define | has_unc(buf) 0
#define | nextdirsep rb_enc_path_next
#define | skipprefix(path, end, enc) (path)
#define | strrdirsep rb_enc_path_last_separator
#define | BUFCHECK(cond)
#define | BUFINIT()
#define | SKIPPATHSEP(p) 1
#define | BUFCOPY(srcptr, srclen)
#define | WITH_ROOTDIFF(stmt)
#define | endpwent() ((void)0)
#define | EXPAND_PATH_BUFFER() rb_usascii_str_new(0, MAXPATHLEN + 2)
#define | expand_path(fname, dname, abs_mode, long_name, result) str_shrink(rb_file_expand_path_internal(fname, dname, abs_mode, long_name, result))
#define | check_expand_path_args(fname, dname)
#define | fncomp strncmp
#define | rb_file_s_truncate rb_f_notimplement
#define | rb_file_truncate rb_f_notimplement
#define | LOCK_SH 1
#define | LOCK_EX 2
#define | LOCK_NB 4
#define | LOCK_UN 8
#define | CHECK(n) test_check((n), argc, argv)
#define | rb_file_s_mkfifo rb_f_notimplement
#define | ENABLE_PATH_CHECK 1
#define | O_BINARY 0
#define | O_SHARE_DELETE 0

## Typedefs
typedef struct no_gvl_stat_data | no_gvl_stat_data

## Enumerations
enum | rb_realpath_mode { RB_REALPATH_CHECK , RB_REALPATH_DIR , RB_REALPATH_STRICT , RB_REALPATH_MODE_MAX }

## Functions
int | flock (int, int)
VALUE | rb_get_path_check_to_string (VALUE obj)
VALUE | rb_get_path_check_convert (VALUE obj)
VALUE | rb_get_path_no_checksafe (VALUE obj)
VALUE | rb_get_path (VALUE obj)
VALUE | rb_str_encode_ospath (VALUE path)
VALUE | rb_stat_new (const struct stat *st)
int | eaccess (const char *path, int mode)
VALUE | rb_file_directory_p (VALUE obj, VALUE fname)
char * | rb_enc_path_next (const char *s, const char *e, rb_encoding *enc)
char * | rb_enc_path_skip_prefix (const char *path, const char *end, rb_encoding *enc)
char * | rb_enc_path_last_separator (const char *path, const char *end, rb_encoding *enc)
char * | rb_enc_path_end (const char *path, const char *end, rb_encoding *enc)
VALUE | rb_home_dir_of (VALUE user, VALUE result)
VALUE | rb_default_home_dir (VALUE result)
VALUE | rb_file_expand_path_internal (VALUE fname, VALUE dname, int abs_mode, int long_name, VALUE result)
VALUE | rb_file_expand_path (VALUE fname, VALUE dname)
VALUE | rb_file_expand_path_fast (VALUE fname, VALUE dname)
VALUE | rb_file_s_expand_path (int argc, const VALUE *argv)
VALUE | rb_file_absolute_path (VALUE fname, VALUE dname)
VALUE | rb_file_s_absolute_path (int argc, const VALUE *argv)
VALUE | rb_realpath_internal (VALUE basedir, VALUE path, int strict)
VALUE | rb_check_realpath (VALUE basedir, VALUE path, rb_encoding *enc)
const char * | ruby_enc_find_basename (const char *name, long *baselen, long *alllen, rb_encoding *enc)
VALUE | rb_file_dirname (VALUE fname)
const char * | ruby_enc_find_extname (const char *name, long *len, rb_encoding *enc)
void | rb_file_const (const char *name, VALUE value)
int | rb_is_absolute_path (const char *path)
int | rb_path_check (const char *path)
int | ruby_is_fd_loadable (int fd)
int | rb_file_load_ok (const char *path)
int | rb_find_file_ext (VALUE *filep, const char *const *ext)
VALUE | rb_find_file (VALUE path)
void | Init_File (void)

## Variables
VALUE | rb_cFile
VALUE | rb_mFileTest
VALUE | rb_cStat
const char | ruby_null_device []

## Macro Definition Documentation

## ◆ apply2args

#define apply2args | ( |  | n | ) | (rb_check_arity(argc, n, UNLIMITED_ARGUMENTS), argc-=n)

Definition at line 414 of file file.c.

## ◆ BUFCHECK

#define BUFCHECK | ( |  | cond | ) |

Value:
do {\
bdiff = p - buf;\
if (cond) {\
do {buflen *= 2;} while (cond);\
rb_str_resize(result, buflen);\
buf = RSTRING_PTR(result);\
p = buf + bdiff;\
pend = buf + buflen;\
}\
} while (0)
RSTRING_PTR
#define RSTRING_PTR(string)
Definition: fbuffer.h:19
buf
voidpf void * buf
Definition: ioapi.h:138

Definition at line 3535 of file file.c.

## ◆ BUFCOPY

#define BUFCOPY | ( |  | srcptr,
|  |  | srclen
| ) |  |

Value:
do { \
const int skip = SKIPPATHSEP(p); \
rb_str_set_len(result, p-buf+skip); \
BUFCHECK(bdiff + ((srclen)+skip) >= buflen); \
p += skip; \
memcpy(p, (srcptr), (srclen)); \
p += (srclen); \
} while (0)
SKIPPATHSEP
#define SKIPPATHSEP(p)
Definition: file.c:3554
skip
void skip(file *in, unsigned n)
Definition: gzappend.c:202

Definition at line 3557 of file file.c.

## ◆ BUFINIT

#define BUFINIT | ( |  | ) |

Value:
(\
p = buf = RSTRING_PTR(result),\
buflen = RSTRING_LEN(result),\
pend = p + buflen)
RSTRING_LEN
#define RSTRING_LEN(string)
Definition: fbuffer.h:22

Definition at line 3546 of file file.c.

## ◆ CHECK

#define CHECK | ( |  | n | ) | test_check((n), argc, argv)

Definition at line 5276 of file file.c.

## ◆ check_expand_path_args

#define check_expand_path_args | ( |  | fname,
|  |  | dname
| ) |  |

Value:
(((fname) = rb_get_path(fname)), \
(void)(NIL_P(dname) ? (dname) : ((dname) = rb_get_path(dname))))
rb_get_path
VALUE rb_get_path(VALUE obj)
Definition: file.c:245
NIL_P
#define NIL_P
Definition: special_consts.h:46

Definition at line 4092 of file file.c.

## ◆ DEVT2NUM

#define DEVT2NUM | ( |  | v | ) | UINT2NUM(v)

Definition at line 601 of file file.c.

## ◆ ENABLE_PATH_CHECK

#define ENABLE_PATH_CHECK 1

Definition at line 6195 of file file.c.

## ◆ endpwent

#define endpwent | ( |  | ) | ((void)0)

## ◆ expand_path

#define expand_path | ( |  | fname,
|  |  | dname,
|  |  | abs_mode,
|  |  | long_name,
|  |  | result
| ) |  | str_shrink(rb_file_expand_path_internal(fname, dname, abs_mode, long_name, result))

Definition at line 4089 of file file.c.

## ◆ EXPAND_PATH_BUFFER

#define EXPAND_PATH_BUFFER | ( |  | ) | rb_usascii_str_new(0, MAXPATHLEN + 2)

Definition at line 4080 of file file.c.

## ◆ fncomp

#define fncomp strncmp

## ◆ has_unc

#define has_unc | ( |  | buf | ) | 0

Definition at line 3352 of file file.c.

## ◆ HAVE_STAT_BIRTHTIME

#define HAVE_STAT_BIRTHTIME

Definition at line 971 of file file.c.

## ◆ Inc

#define Inc | ( |  | p,
|  |  | e,
|  |  | enc
| ) |  | ((p) = Next((p), (e), (enc)))

Definition at line 3347 of file file.c.

## ◆ isADS

#define isADS | ( |  | x | ) | 0

Definition at line 3343 of file file.c.

## ◆ isdirsep

#define isdirsep | ( |  | x | ) | ((x) == '/')

Definition at line 3317 of file file.c.

## ◆ istrailinggarbage

#define istrailinggarbage | ( |  | x | ) | 0

Definition at line 3338 of file file.c.

## ◆ LOCK_EX

#define LOCK_EX 2

Definition at line 5145 of file file.c.

## ◆ LOCK_NB

#define LOCK_NB 4

Definition at line 5148 of file file.c.

## ◆ LOCK_SH

#define LOCK_SH 1

Definition at line 5142 of file file.c.

## ◆ LOCK_UN

#define LOCK_UN 8

Definition at line 5151 of file file.c.

## ◆ lstat

#define lstat stat

Definition at line 93 of file file.c.

## ◆ MAXPATHLEN

#define MAXPATHLEN 1024

Definition at line 60 of file file.c.

## ◆ Next

#define Next | ( |  | p,
|  |  | e,
|  |  | enc
| ) |  | ((p) + rb_enc_mbclen((p), (e), (enc)))

Definition at line 3346 of file file.c.

## ◆ nextdirsep

#define nextdirsep rb_enc_path_next

Definition at line 3420 of file file.c.

## ◆ NORMALIZE_UTF8PATH

#define NORMALIZE_UTF8PATH 0

Definition at line 411 of file file.c.

## ◆ NUM2DEVT

#define NUM2DEVT | ( |  | v | ) | NUM2UINT(v)

Definition at line 598 of file file.c.

## ◆ O_BINARY

#define O_BINARY 0

## ◆ O_SHARE_DELETE

#define O_SHARE_DELETE 0

## ◆ PRI_DEVT_PREFIX

#define PRI_DEVT_PREFIX ""

Definition at line 604 of file file.c.

## ◆ rb_file_birthtime

#define rb_file_birthtime rb_f_notimplement

Definition at line 2557 of file file.c.

## ◆ rb_file_s_birthtime

#define rb_file_s_birthtime rb_f_notimplement

Definition at line 2528 of file file.c.

## ◆ rb_file_s_lchmod

#define rb_file_s_lchmod rb_f_notimplement

Definition at line 2688 of file file.c.

## ◆ rb_file_s_lchown

#define rb_file_s_lchown rb_f_notimplement

Definition at line 2820 of file file.c.

## ◆ rb_file_s_link

#define rb_file_s_link rb_f_notimplement

Definition at line 3073 of file file.c.

## ◆ rb_file_s_lutime

#define rb_file_s_lutime rb_f_notimplement

Definition at line 3011 of file file.c.

## ◆ rb_file_s_mkfifo

#define rb_file_s_mkfifo rb_f_notimplement

Definition at line 6165 of file file.c.

## ◆ rb_file_s_readlink

#define rb_file_s_readlink rb_f_notimplement

Definition at line 3182 of file file.c.

## ◆ rb_file_s_symlink

#define rb_file_s_symlink rb_f_notimplement

Definition at line 3103 of file file.c.

## ◆ rb_file_s_truncate

#define rb_file_s_truncate rb_f_notimplement

Definition at line 5077 of file file.c.

## ◆ rb_file_truncate

#define rb_file_truncate rb_f_notimplement

Definition at line 5138 of file file.c.

## ◆ rb_stat_birthtime

#define rb_stat_birthtime rb_f_notimplement

Definition at line 1069 of file file.c.

## ◆ S_IRUGO

#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)

Definition at line 1884 of file file.c.

## ◆ S_ISBLK

#define S_ISBLK | ( |  | m | ) | (0) /* anytime false */

## ◆ S_ISCHR

#define S_ISCHR | ( |  | m | ) | (((m) & S_IFMT) == S_IFCHR)

## ◆ S_ISDIR

#define S_ISDIR | ( |  | m | ) | (((m) & S_IFMT) == S_IFDIR)

## ◆ S_ISREG

#define S_ISREG | ( |  | m | ) | (((m) & S_IFMT) == S_IFREG)

Definition at line 2032 of file file.c.

## ◆ S_IWUGO

#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)

Definition at line 1888 of file file.c.

## ◆ S_IXUGO

#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)

Definition at line 1520 of file file.c.

## ◆ SKIPPATHSEP

#define SKIPPATHSEP | ( |  | p | ) | 1

Definition at line 3554 of file file.c.

## ◆ skipprefix

#define skipprefix | ( |  | path,
|  |  | end,
|  |  | enc
| ) |  | (path)

Definition at line 3433 of file file.c.

## ◆ ST2UINT

#define ST2UINT | ( |  | val | ) | ((val) & ~(~1UL << (sizeof(val) * CHAR_BIT - 1)))

Definition at line 595 of file file.c.

## ◆ STAT

#define STAT | ( |  | p,
|  |  | s
| ) |  | stat((p), (s))

Definition at line 129 of file file.c.

## ◆ statx_has_birthtime

#define statx_has_birthtime | ( |  | st | ) | 0

Definition at line 1309 of file file.c.

## ◆ strrdirsep

#define strrdirsep rb_enc_path_last_separator

Definition at line 3468 of file file.c.

## ◆ sys_fail2

#define sys_fail2 | ( |  | s1,
|  |  | s2
| ) |  | syserr_fail2(errno, s1, s2)

Definition at line 3019 of file file.c.

## ◆ syserr_fail2_in

#define syserr_fail2_in | ( |  | func,
|  |  | e,
|  |  | s1,
|  |  | s2
| ) |  | syserr_fail2(e, s1, s2)

Definition at line 3017 of file file.c.

## ◆ TO_OSPATH

#define TO_OSPATH | ( |  | str | ) | (str)

Definition at line 137 of file file.c.

## ◆ USE_NTFS

#define USE_NTFS 0

Definition at line 3324 of file file.c.

## ◆ USE_NTFS_ADS

#define USE_NTFS_ADS 0

Definition at line 3331 of file file.c.

## ◆ USE_OSPATH

#define USE_OSPATH 0

Definition at line 136 of file file.c.

## ◆ WITH_ROOTDIFF

#define WITH_ROOTDIFF | ( |  | stmt | ) |

Value:
do { \
long rootdiff = root - buf; \
stmt; \
root = buf + rootdiff; \
} while (0)
root
int root
Definition: enough.c:226

Definition at line 3566 of file file.c.

## Typedef Documentation

## ◆ no_gvl_stat_data

typedef struct no_gvl_stat_data no_gvl_stat_data

## Enumeration Type Documentation

## ◆ rb_realpath_mode

enum rb_realpath_mode

Enumerator
RB_REALPATH_CHECK |
RB_REALPATH_DIR |
RB_REALPATH_STRICT |
RB_REALPATH_MODE_MAX |

Definition at line 4208 of file file.c.

## Function Documentation

## ◆ eaccess()

int eaccess | ( | const char * | path,
|  | int | mode
| ) |  |

Definition at line 1529 of file file.c.

References access, getegid(), geteuid(), getgid(), getuid(), S_IXUGO, STAT, stat, and X_OK.

## ◆ flock()

int flock | ( | int | fd,
|  | int | operation
| ) |  |

Definition at line 125 of file flock.c.

References rb_notimplement().

## ◆ Init_File()

void Init_File | ( | void |  | ) |

Definition at line 6503 of file file.c.

References INT2FIX, LOCK_EX, LOCK_NB, LOCK_SH, LOCK_UN, O_BINARY, O_NONBLOCK, O_SHARE_DELETE, PATH_SEP, Qnil, rb_cFile, rb_cIO, rb_cObject, rb_cStat, rb_define_alloc_func(), rb_define_class(), rb_define_class_under(), rb_define_const(), rb_define_global_function, rb_define_method, rb_define_module(), rb_define_module_under(), rb_define_singleton_method, rb_file_birthtime, rb_file_directory_p(), rb_file_s_birthtime, rb_file_s_lchmod, rb_file_s_lchown, rb_file_s_link, rb_file_s_lutime, rb_file_s_mkfifo, rb_file_s_readlink, rb_file_s_symlink, rb_file_s_truncate, rb_file_truncate, rb_fstring_cstr, rb_fstring_lit, rb_include_module(), rb_mComparable, rb_mFileTest, rb_obj_freeze(), rb_stat_birthtime, rb_usascii_str_new2, and ruby_null_device.

Referenced by Init_IO().

## ◆ rb_check_realpath()

VALUE rb_check_realpath | ( | VALUE | basedir,
|  | VALUE | path,
|  | rb_encoding * | enc
| ) |  |

Definition at line 4504 of file file.c.

References RB_REALPATH_CHECK.

## ◆ rb_default_home_dir()

VALUE rb_default_home_dir | ( | VALUE | result | ) |

Definition at line 3640 of file file.c.

References getenv, getuid(), NIL_P, rb_eArgError, rb_raise(), rb_str_resize(), and RSTRING_PTR.

Referenced by rb_file_expand_path_internal().

## ◆ rb_enc_path_end()

char * rb_enc_path_end | ( | const char * | path,
|  | const char * | end,
|  | rb_encoding * | enc
| ) |  |

Definition at line 3504 of file file.c.

References isdirsep.

## ◆ rb_enc_path_last_separator()

char * rb_enc_path_last_separator | ( | const char * | path,
|  | const char * | end,
|  | rb_encoding * | enc
| ) |  |

Definition at line 3470 of file file.c.

References Inc, isdirsep, last, and NULL.

Referenced by ruby_init_loadpath().

## ◆ rb_enc_path_next()

char * rb_enc_path_next | ( | const char * | s,
|  | const char * | e,
|  | rb_encoding * | enc
| ) |  |

Definition at line 3422 of file file.c.

References Inc, and isdirsep.

Referenced by rb_enc_path_skip_prefix().

## ◆ rb_enc_path_skip_prefix()

char * rb_enc_path_skip_prefix | ( | const char * | path,
|  | const char * | end,
|  | rb_encoding * | enc
| ) |  |

Definition at line 3436 of file file.c.

References isdirsep, and rb_enc_path_next().

## ◆ rb_file_absolute_path()

VALUE rb_file_absolute_path | ( | VALUE | fname,
|  | VALUE | dname
| ) |  |

Definition at line 4157 of file file.c.

References check_expand_path_args, expand_path, and EXPAND_PATH_BUFFER.

Referenced by rb_f_require_relative(), and rb_file_s_absolute_path().

## ◆ rb_file_const()

void rb_file_const | ( | const char * | name,
|  | VALUE | value
| ) |  |

Definition at line 6171 of file file.c.

References name, and rb_define_const().

Referenced by Init_Dir().

## ◆ rb_file_directory_p()

VALUE rb_file_directory_p | ( | VALUE | obj,
|  | VALUE | fname
| ) |  |

Definition at line 1646 of file file.c.

References Qfalse, Qtrue, S_ISDIR, and stat.

Referenced by Init_Dir(), and Init_File().

## ◆ rb_file_dirname()

VALUE rb_file_dirname | ( | VALUE | fname | ) |

Definition at line 4732 of file file.c.

References FilePathStringValue, isdirsep, name, rb_enc_copy(), rb_enc_get(), rb_str_cat(), rb_str_new, rb_usascii_str_new2, root, RSTRING_LEN, skipprefix, StringValueCStr, strrdirsep, and top.

Referenced by rb_f_require_relative().

## ◆ rb_file_expand_path()

VALUE rb_file_expand_path | ( | VALUE | fname,
|  | VALUE | dname
| ) |  |

Definition at line 4103 of file file.c.

References check_expand_path_args, expand_path, and EXPAND_PATH_BUFFER.

Referenced by rb_file_s_expand_path().

## ◆ rb_file_expand_path_fast()

VALUE rb_file_expand_path_fast | ( | VALUE | fname,
|  | VALUE | dname
| ) |  |

Definition at line 4110 of file file.c.

References expand_path, and EXPAND_PATH_BUFFER.

Referenced by rb_feature_provided().

## ◆ rb_file_expand_path_internal()

VALUE rb_file_expand_path_internal | ( | VALUE | fname,
|  | VALUE | dname,
|  | int | abs_mode,
|  | int | long_name,
|  | VALUE | result
| ) |  |

Definition at line 3731 of file file.c.

References ALLOCA_N, ALLOCV_END, ALLOCV_N, BUFCHECK, BUFCOPY, BUFINIT, ENC_CODERANGE_7BIT, ENC_CODERANGE_CLEAR, ENCINDEX_UTF_8, ENCODING_GET, Inc, int(), INVALID_HANDLE_VALUE, isADS, isdirsep, istrailinggarbage, L, len, MAXPATHLEN, memcpy, nextdirsep, NIL_P, NULL, PRIsVALUE, Qnil, rb_default_home_dir(), rb_eArgError, rb_enc_associate(), rb_enc_check(), rb_enc_copy(), rb_enc_get(), rb_enc_raise, rb_enc_str_coderange(), rb_file_expand_path_internal(), rb_filesystem_encoding(), rb_home_dir_of(), rb_is_absolute_path(), rb_raise(), rb_str_cat_conv_enc_opts(), rb_str_encode_ospath(), rb_str_modify_expand(), rb_str_resize(), rb_str_set_len(), rb_utf8_encoding(), root, RSTRING_LEN, RSTRING_PTR, ruby_getcwd(), S_ISLNK, skipprefix, stat, STRCASECMP, StringValuePtr, strlcat(), strlen(), strncasecmp, strrdirsep, TOLOWER, and WITH_ROOTDIFF.

Referenced by rb_file_expand_path_internal(), rb_find_file(), and rb_find_file_ext().

## ◆ rb_file_load_ok()

int rb_file_load_ok | ( | const char * | path | ) |

Definition at line 6304 of file file.c.

References O_NONBLOCK, rb_cloexec_open(), rb_update_max_fd(), and ruby_is_fd_loadable().

Referenced by rb_find_file(), and rb_find_file_ext().

## ◆ rb_file_s_absolute_path()

VALUE rb_file_s_absolute_path | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 4164 of file file.c.

References argc, argv, Qnil, rb_check_arity, and rb_file_absolute_path().

## ◆ rb_file_s_expand_path()

VALUE rb_file_s_expand_path | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 4116 of file file.c.

References argc, argv, Qnil, rb_check_arity, and rb_file_expand_path().

## ◆ rb_find_file()

VALUE rb_find_file | ( | VALUE | path | ) |

Definition at line 6404 of file file.c.

References f, MAXPATHLEN, RARRAY_AREF, RARRAY_LEN, rb_enc_associate_index(), rb_file_expand_path_internal(), rb_file_load_ok(), RB_GC_GUARD, rb_get_expanded_load_path(), rb_get_path(), rb_is_absolute_path(), rb_str_resize(), rb_str_tmp_new(), rb_usascii_encindex, RSTRING_LEN, RSTRING_PTR, str, and StringValueCStr.

Referenced by rb_load().

## ◆ rb_find_file_ext()

int rb_find_file_ext | ( | VALUE * | filep,
|  | const char *const * | ext
| ) |  |

Definition at line 6345 of file file.c.

References f, MAXPATHLEN, RARRAY_AREF, RARRAY_LEN, rb_enc_associate_index(), rb_file_expand_path_internal(), rb_file_load_ok(), RB_GC_GUARD, rb_get_expanded_load_path(), rb_get_path(), rb_is_absolute_path(), rb_str_cat2, rb_str_dup(), rb_str_resize(), rb_str_set_len(), rb_str_tmp_new(), rb_usascii_encindex, RSTRING_LEN, RSTRING_PTR, str, and StringValueCStr.

## ◆ rb_get_path()

VALUE rb_get_path | ( | VALUE | obj | ) |

Definition at line 245 of file file.c.

References rb_get_path_check_convert(), and rb_get_path_check_to_string().

Referenced by rb_feature_provided(), rb_find_file(), rb_find_file_ext(), rb_get_path_no_checksafe(), and rb_resolve_feature_path().

## ◆ rb_get_path_check_convert()

VALUE rb_get_path_check_convert | ( | VALUE | obj | ) |

Definition at line 226 of file file.c.

References rb_eArgError, rb_raise(), rb_str_new4, and rb_str_to_cstr().

Referenced by rb_get_path().

## ◆ rb_get_path_check_to_string()

VALUE rb_get_path_check_to_string | ( | VALUE | obj | ) |

Definition at line 211 of file file.c.

References CONST_ID, rb_check_funcall_default(), StringValue, and T_STRING.

Referenced by rb_get_path().

## ◆ rb_get_path_no_checksafe()

VALUE rb_get_path_no_checksafe | ( | VALUE | obj | ) |

Definition at line 239 of file file.c.

References rb_get_path().

## ◆ rb_home_dir_of()

VALUE rb_home_dir_of | ( | VALUE | user,
|  | VALUE | result
| ) |  |

Definition at line 3600 of file file.c.

References endpwent, getenv, getlogin(), PRIsVALUE, rb_eArgError, rb_enc_get(), rb_filesystem_encoding(), rb_raise(), rb_str_conv_enc(), rb_utf8_encoding(), RSTRING_PTR, and strcasecmp.

Referenced by rb_file_expand_path_internal().

## ◆ rb_is_absolute_path()

int rb_is_absolute_path | ( | const char * | path | ) |

Definition at line 6177 of file file.c.

References isdirsep.

Referenced by rb_file_expand_path_internal(), rb_find_file(), and rb_find_file_ext().

## ◆ rb_path_check()

int rb_path_check | ( | const char * | path | ) |

Definition at line 6250 of file file.c.

References PATH_SEP_CHAR, rb_str_new, strchr(), and strlen().

## ◆ rb_realpath_internal()

VALUE rb_realpath_internal | ( | VALUE | basedir,
|  | VALUE | path,
|  | int | strict
| ) |  |

Definition at line 4496 of file file.c.

References rb_enc_get(), RB_REALPATH_DIR, and RB_REALPATH_STRICT.

## ◆ rb_stat_new()

VALUE rb_stat_new | ( | const struct stat * | st | ) |

Definition at line 547 of file file.c.

References rb_cStat.

## ◆ rb_str_encode_ospath()

VALUE rb_str_encode_ospath | ( | VALUE | path | ) |

Definition at line 251 of file file.c.

References ENCINDEX_ASCII, ENCINDEX_UTF_8, ENCODING_GET, rb_enc_from_index(), rb_filesystem_encindex(), rb_str_conv_enc(), and rb_utf8_encoding().

Referenced by rb_execarg_addopt(), rb_file_expand_path_internal(), and rb_resolve_feature_path().

## ◆ ruby_enc_find_basename()

const char * ruby_enc_find_basename | ( | const char * | name,
|  | long * | baselen,
|  | long * | alllen,
|  | rb_encoding * | enc
| ) |  |

Definition at line 4589 of file file.c.

References f, Inc, isdirsep, name, root, skipprefix, strlen(), and strrdirsep.

## ◆ ruby_enc_find_extname()

const char * ruby_enc_find_extname | ( | const char * | name,
|  | long * | len,
|  | rb_encoding * | enc
| ) |  |

Definition at line 4786 of file file.c.

References Inc, isADS, isdirsep, istrailinggarbage, last, len, long(), name, strlen(), and strrdirsep.

## ◆ ruby_is_fd_loadable()

int ruby_is_fd_loadable | ( | int | fd | ) |

Definition at line 6277 of file file.c.

References fstat, S_ISCHR, S_ISDIR, S_ISREG, and stat.

Referenced by rb_file_load_ok().

## Variable Documentation

## ◆ rb_cFile

VALUE rb_cFile

Definition at line 174 of file file.c.

Referenced by Init_Dir(), Init_File(), Init_IO(), rb_file_open(), rb_file_open_str(), and rb_io_fdopen().

## ◆ rb_cStat

VALUE rb_cStat

Definition at line 176 of file file.c.

Referenced by Init_File(), and rb_stat_new().

## ◆ rb_mFileTest

VALUE rb_mFileTest

Definition at line 175 of file file.c.

Referenced by Init_File().

## ◆ ruby_null_device

const char ruby_null_device[]

Initial value:
=
"/dev/null"

Definition at line 6457 of file file.c.

Referenced by Init_File().