blob: 31f4879c1d5cf3253c59b97cbf381556d183c5d4 [file] [log] [blame]
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
int main() {
int ret;
struct _stat st = {};
struct _stat32 st32 = {};
struct _stat32i64 st32i64 = {};
struct _stat64 st64 = {};
struct _stat64i32 st64i32 = {};
errno = 0;
ret = _fstat(0, &st);
printf("_fstat:\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 = _fstat32(0, &st32);
printf("_fstat32:\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 = _fstat32i64(0, &st32i64);
printf("_fstat32i64:\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 = _fstat64(0, &st64);
printf("_fstat64:\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 = _fstat64i32(0, &st64i32);
printf("_fstat64i32:\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;
}