@@ -38,7 +38,31 @@ module unix_stat
38
38
integer (kind= c_int), parameter , public :: S_ISGID = int (o' 0002000' )
39
39
integer (kind= c_int), parameter , public :: S_ISVTX = int (o' 0001000' )
40
40
41
- ! struct stat
41
+ #if defined(__aarch64__)
42
+
43
+ ! struct stat (aarch64)
44
+ type, bind(c), public :: c_stat_type
45
+ integer (kind= c_dev_t) :: st_dev = 0 ! ID of device containing file
46
+ integer (kind= c_ino_t) :: st_ino = 0 ! inode number
47
+ integer (kind= c_mode_t) :: st_mode = 0 ! protection
48
+ integer (kind= c_nlink_t) :: st_nlink = 0 ! number of hard links
49
+ integer (kind= c_uid_t) :: st_uid = 0 ! user ID of owner
50
+ integer (kind= c_gid_t) :: st_gid = 0 ! group ID of owner
51
+ integer (kind= c_dev_t) :: st_rdev = 0 ! device ID (if special file)
52
+ integer (kind= c_dev_t), private :: pad0 = 0
53
+ integer (kind= c_off_t) :: st_size = 0 ! total size, in bytes
54
+ integer (kind= c_blksize_t) :: st_blksize = 0 ! blocksize for file system I/O
55
+ integer (kind= c_int), private :: pad1 = 0
56
+ integer (kind= c_blkcnt_t) :: st_blocks = 0 ! number of 512B blocks allocated
57
+ type (c_timespec) :: st_atim ! time of last access
58
+ type (c_timespec) :: st_mtim ! time of last modification
59
+ type (c_timespec) :: st_ctim ! time of last status change
60
+ integer (kind= c_long), private :: reserved(2 ) = 0
61
+ end type c_stat_type
62
+
63
+ #else
64
+
65
+ ! struct stat (x86-64)
42
66
type, bind(c), public :: c_stat_type
43
67
integer (kind= c_dev_t) :: st_dev = 0 ! ID of device containing file
44
68
integer (kind= c_ino_t) :: st_ino = 0 ! inode number
@@ -57,6 +81,7 @@ module unix_stat
57
81
integer (kind= c_long), private :: reserved(3 ) = 0
58
82
end type c_stat_type
59
83
84
+ #endif
60
85
#elif defined (__FreeBSD__)
61
86
62
87
integer (kind= c_int), parameter , public :: S_IRWXU = int (o' 0000700' )
0 commit comments