| #include <stdio.h> |
| #include <string.h> |
| #include <errno.h> |
| #include <sys/stat.h> |
| #include <wchar.h> |
| |
| int wmain(int argc, wchar_t *wargv[]) { |
| int ret; |
| struct _stat st = {}; |
| struct _stat32 st32 = {}; |
| struct _stat32i64 st32i64 = {}; |
| struct _stat64 st64 = {}; |
| struct _stat64i32 st64i32 = {}; |
| errno = 0; |
| ret = _wstat(argc >= 2 ? wargv[1] : wargv[0], &st); |
| printf("_wstat:\n"); |
| printf("ret=%d\n", ret); |
| printf("errno=%d (%s)\n", errno, strerror(errno)); |
| printf("dev=%u\n", (unsigned)st.st_dev); |
| printf("ino=%u\n", (unsigned)st.st_ino); |
| printf("mode=%u\n", (unsigned)st.st_mode); |
| printf("nlink=%u\n", (unsigned)st.st_nlink); |
| printf("uid=%u\n", (unsigned)st.st_uid); |
| printf("gid=%u\n", (unsigned)st.st_gid); |
| printf("rdev=%u\n", (unsigned)st.st_rdev); |
| /* struct _stat always uses 32-bit unsigned size stored in signed _off_t type */ |
| printf("size=%u\n", (unsigned)st.st_size); |
| /* struct _stat uses either 32-bit or 64-bit signed timestamps based on _USE_32BIT_TIME_T */ |
| printf("atime=%I64d\n", (long long)st.st_atime); |
| printf("mtime=%I64d\n", (long long)st.st_mtime); |
| printf("ctime=%I64d\n", (long long)st.st_ctime); |
| printf("\n"); |
| errno = 0; |
| ret = _wstat32(argc >= 2 ? wargv[1] : wargv[0], &st32); |
| printf("_wstat32:\n"); |
| printf("ret=%d\n", ret); |
| printf("errno=%d (%s)\n", errno, strerror(errno)); |
| printf("dev=%u\n", (unsigned)st32.st_dev); |
| printf("ino=%u\n", (unsigned)st32.st_ino); |
| printf("mode=%u\n", (unsigned)st32.st_mode); |
| printf("nlink=%u\n", (unsigned)st32.st_nlink); |
| printf("uid=%u\n", (unsigned)st32.st_uid); |
| printf("gid=%u\n", (unsigned)st32.st_gid); |
| printf("rdev=%u\n", (unsigned)st32.st_rdev); |
| printf("size=%u\n", (unsigned)st32.st_size); |
| printf("atime=%d\n", (int)st32.st_atime); |
| printf("mtime=%d\n", (int)st32.st_mtime); |
| printf("ctime=%d\n", (int)st32.st_ctime); |
| printf("\n"); |
| errno = 0; |
| ret = _wstat32i64(argc >= 2 ? wargv[1] : wargv[0], &st32i64); |
| printf("_wstat32i64:\n"); |
| printf("ret=%d\n", ret); |
| printf("errno=%d (%s)\n", errno, strerror(errno)); |
| printf("dev=%u\n", (unsigned)st32i64.st_dev); |
| printf("ino=%u\n", (unsigned)st32i64.st_ino); |
| printf("mode=%u\n", (unsigned)st32i64.st_mode); |
| printf("nlink=%u\n", (unsigned)st32i64.st_nlink); |
| printf("uid=%u\n", (unsigned)st32i64.st_uid); |
| printf("gid=%u\n", (unsigned)st32i64.st_gid); |
| printf("rdev=%u\n", (unsigned)st32i64.st_rdev); |
| printf("size=%I64u\n", (unsigned long long)st32i64.st_size); |
| printf("atime=%d\n", (int)st32i64.st_atime); |
| printf("mtime=%d\n", (int)st32i64.st_mtime); |
| printf("ctime=%d\n", (int)st32i64.st_ctime); |
| printf("\n"); |
| errno = 0; |
| ret = _wstat64(argc >= 2 ? wargv[1] : wargv[0], &st64); |
| printf("_wstat64:\n"); |
| printf("ret=%d\n", ret); |
| printf("errno=%d (%s)\n", errno, strerror(errno)); |
| printf("dev=%u\n", (unsigned)st64.st_dev); |
| printf("ino=%u\n", (unsigned)st64.st_ino); |
| printf("mode=%u\n", (unsigned)st64.st_mode); |
| printf("nlink=%u\n", (unsigned)st64.st_nlink); |
| printf("uid=%u\n", (unsigned)st64.st_uid); |
| printf("gid=%u\n", (unsigned)st64.st_gid); |
| printf("rdev=%u\n", (unsigned)st64.st_rdev); |
| printf("size=%I64u\n", (unsigned long long)st64.st_size); |
| printf("atime=%I64d\n", (long long)st64.st_atime); |
| printf("mtime=%I64d\n", (long long)st64.st_mtime); |
| printf("ctime=%I64d\n", (long long)st64.st_ctime); |
| printf("\n"); |
| errno = 0; |
| ret = _wstat64i32(argc >= 2 ? wargv[1] : wargv[0], &st64i32); |
| printf("_wstat64i32:\n"); |
| printf("ret=%d\n", ret); |
| printf("errno=%d (%s)\n", errno, strerror(errno)); |
| printf("dev=%u\n", (unsigned)st64i32.st_dev); |
| printf("ino=%u\n", (unsigned)st64i32.st_ino); |
| printf("mode=%u\n", (unsigned)st64i32.st_mode); |
| printf("nlink=%u\n", (unsigned)st64i32.st_nlink); |
| printf("uid=%u\n", (unsigned)st64i32.st_uid); |
| printf("gid=%u\n", (unsigned)st64i32.st_gid); |
| printf("rdev=%u\n", (unsigned)st64i32.st_rdev); |
| printf("size=%u\n", (unsigned)st64i32.st_size); |
| printf("atime=%I64d\n", (long long)st64i32.st_atime); |
| printf("mtime=%I64d\n", (long long)st64i32.st_mtime); |
| printf("ctime=%I64d\n", (long long)st64i32.st_ctime); |
| return 0; |
| } |