let stat filename =
try
let stats = Unix.LargeFile.stat filename
in
let kind =
match stats.Unix.LargeFile.st_kind with
Unix.S_REG -> File
| Unix.S_DIR -> Dir
| Unix.S_CHR -> Dev_char
| Unix.S_BLK -> Dev_block
| Unix.S_LNK -> Link
| Unix.S_FIFO -> Fifo
| Unix.S_SOCK -> Socket
in
let is_link =
let stats = Unix.LargeFile.lstat filename
in
stats.Unix.LargeFile.st_kind = Unix.S_LNK
in
{
kind = kind;
is_link = is_link;
permission = permission_of_int stats.Unix.LargeFile.st_perm;
size = B (Int64.to_float stats.Unix.LargeFile.st_size);
owner = stats.Unix.LargeFile.st_uid;
group_owner = stats.Unix.LargeFile.st_gid;
access_time = stats.Unix.LargeFile.st_atime;
modification_time = stats.Unix.LargeFile.st_mtime;
creation_time = stats.Unix.LargeFile.st_ctime;
}
with Unix.Unix_error(_) ->
raise FileDoesntExist