summaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-02-22 06:01:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-02-22 06:01:08 +0000
commitfc90c4ec5da9e60c18785b3b4c393b5294009c1e (patch)
tree92a8e777962d8a706170e1021be26aa062377ab7 /file.c
parent607ecea7c9ca30ef4dbdadc72c9d32131946a069 (diff)
Support File#birthtime on Linux
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67116 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/file.c b/file.c
index ca61836784..e24cf68fc6 100644
--- a/file.c
+++ b/file.c
@@ -1208,6 +1208,8 @@ statx_birthtime(const struct statx *stx, VALUE fname)
}
typedef struct statx statx_data;
+# define HAVE_STAT_BIRTHTIME
+
#elif defined(HAVE_STAT_BIRTHTIME)
# define statx_without_gvl(path, st, mask) stat_without_gvl(path, st)
# define fstatx_without_gvl(fd, st, mask) fstat_without_gvl(fd, st)
@@ -2434,13 +2436,13 @@ static VALUE
rb_file_birthtime(VALUE obj)
{
rb_io_t *fptr;
- struct stat st;
+ statx_data st;
GetOpenFile(obj, fptr);
- if (fstat(fptr->fd, &st) == -1) {
+ if (fstatx_without_gvl(fptr->fd, &st, STATX_BTIME) == -1) {
rb_sys_fail_path(fptr->pathv);
}
- return stat_birthtime(&st);
+ return statx_birthtime(&st, fptr->pathv);
}
#else
# define rb_file_birthtime rb_f_notimplement