mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-io/file.c: add File#atime and File#ctime
This commit is contained in:
@@ -158,10 +158,10 @@ Add the line below to your build configuration.
|
||||
| File.writable? | | FileTest |
|
||||
| File.writable_real? | | FileTest |
|
||||
| File.zero? | o | FileTest |
|
||||
| File#atime | | |
|
||||
| File#atime | o | |
|
||||
| File#chmod | | |
|
||||
| File#chown | | |
|
||||
| File#ctime | | |
|
||||
| File#ctime | o | |
|
||||
| File#flock | o | |
|
||||
| File#lstat | | |
|
||||
| File#mtime | o | |
|
||||
|
||||
@@ -11,6 +11,16 @@ class File < IO
|
||||
end
|
||||
end
|
||||
|
||||
def atime
|
||||
t = self._atime
|
||||
t && Time.at(t)
|
||||
end
|
||||
|
||||
def ctime
|
||||
t = self._ctime
|
||||
t && Time.at(t)
|
||||
end
|
||||
|
||||
def mtime
|
||||
t = self._mtime
|
||||
t && Time.at(t)
|
||||
|
||||
@@ -391,6 +391,28 @@ mrb_file__gethome(mrb_state *mrb, mrb_value klass)
|
||||
#endif
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
mrb_file_atime(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
int fd = mrb_io_fileno(mrb, self);
|
||||
mrb_stat st;
|
||||
|
||||
if (mrb_fstat(fd, &st) == -1)
|
||||
return mrb_nil_value();
|
||||
return mrb_int_value(mrb, (mrb_int)st.st_atime);
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
mrb_file_ctime(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
int fd = mrb_io_fileno(mrb, self);
|
||||
mrb_stat st;
|
||||
|
||||
if (mrb_fstat(fd, &st) == -1)
|
||||
return mrb_nil_value();
|
||||
return mrb_int_value(mrb, (mrb_int)st.st_ctime);
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
mrb_file_mtime(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
@@ -610,6 +632,8 @@ mrb_init_file(mrb_state *mrb)
|
||||
mrb_define_class_method(mrb, file, "_gethome", mrb_file__gethome, MRB_ARGS_OPT(1));
|
||||
|
||||
mrb_define_method(mrb, file, "flock", mrb_file_flock, MRB_ARGS_REQ(1));
|
||||
mrb_define_method(mrb, file, "_atime", mrb_file_atime, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, file, "_ctime", mrb_file_ctime, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, file, "_mtime", mrb_file_mtime, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, file, "size", mrb_file_size, MRB_ARGS_NONE());
|
||||
mrb_define_method(mrb, file, "truncate", mrb_file_truncate, MRB_ARGS_REQ(1));
|
||||
|
||||
Reference in New Issue
Block a user