| OLD | NEW |
| 1 | 1 |
| 2 #include <errno.h> | 2 #include <errno.h> |
| 3 #include <sys/stat.h> | 3 #include <sys/stat.h> |
| 4 | 4 |
| 5 #include <nacl_stat.h> | 5 #include <nacl_stat.h> |
| 6 #include <nacl_syscalls.h> | 6 #include <nacl_syscalls.h> |
| 7 | 7 |
| 8 int __xstat (int version, const char *path, struct stat *buf) | 8 int __xstat (int version, const char *path, struct stat *buf) |
| 9 { | 9 { |
| 10 if (buf == NULL || path == NULL) | 10 if (buf == NULL || path == NULL) |
| 11 { | 11 { |
| 12 errno = EFAULT; | 12 errno = EFAULT; |
| 13 return -1; | 13 return -1; |
| 14 } | 14 } |
| 15 struct nacl_abi_stat st; | 15 struct nacl_abi_stat st; |
| 16 int result = NACL_SYSCALL (stat) (path, &st); | 16 int result = NACL_SYSCALL (stat) (path, &st); |
| 17 if (result < 0) | 17 if (result < 0) |
| 18 { | 18 { |
| 19 errno = -result; | 19 errno = -result; |
| 20 return -1; | 20 return -1; |
| 21 } | 21 } |
| 22 else | 22 else |
| 23 { | 23 { |
| 24 buf->st_dev = st.nacl_abi_st_dev; | 24 __nacl_abi_stat_to_stat (&st, buf); |
| 25 #ifdef _HAVE_STAT___PAD1 | |
| 26 buf->__pad1 = 0; | |
| 27 #endif | |
| 28 buf->st_ino = st.nacl_abi_st_ino; | |
| 29 buf->st_mode = st.nacl_abi_st_mode; | |
| 30 buf->st_nlink = st.nacl_abi_st_nlink; | |
| 31 buf->st_uid = st.nacl_abi_st_uid; | |
| 32 buf->st_gid = st.nacl_abi_st_gid; | |
| 33 buf->st_rdev = st.nacl_abi_st_rdev; | |
| 34 #ifdef _HAVE_STAT___PAD2 | |
| 35 buf->__pad2 = 0; | |
| 36 #endif | |
| 37 buf->st_size = st.nacl_abi_st_size; | |
| 38 buf->st_blksize = st.nacl_abi_st_blksize; | |
| 39 buf->st_blocks = st.nacl_abi_st_blocks; | |
| 40 buf->st_atime = st.nacl_abi_st_atime; | |
| 41 buf->st_mtime = st.nacl_abi_st_mtime; | |
| 42 buf->st_ctime = st.nacl_abi_st_ctime; | |
| 43 return 0; | 25 return 0; |
| 44 } | 26 } |
| 45 } | 27 } |
| 46 libc_hidden_def (__xstat) | 28 libc_hidden_def (__xstat) |
| OLD | NEW |