blob: b6e18d353193a210a4eb428d6a24e840bb2dd89c [file] [log] [blame]
Dmitry V. Levinab21a942014-12-28 18:15:25 +00001#ifndef DO_PRINTSTAT
2# define DO_PRINTSTAT do_printstat
3#endif
4
5#ifndef STRUCT_STAT
6# define STRUCT_STAT struct stat
7#endif
8
9static void
10DO_PRINTSTAT(struct tcb *tcp, const STRUCT_STAT *statbuf)
11{
12 if (!abbrev(tcp)) {
13 tprintf("{st_dev=makedev(%u, %u), st_ino=%llu, st_mode=%s, ",
14 (unsigned int) major(statbuf->st_dev),
15 (unsigned int) minor(statbuf->st_dev),
16 (unsigned long long) statbuf->st_ino,
17 sprintmode(statbuf->st_mode));
18 tprintf("st_nlink=%u, st_uid=%u, st_gid=%u, ",
19 (unsigned int) statbuf->st_nlink,
20 (unsigned int) statbuf->st_uid,
21 (unsigned int) statbuf->st_gid);
22#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
23 tprintf("st_blksize=%u, ", (unsigned int) statbuf->st_blksize);
24#endif
25#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
26 tprintf("st_blocks=%llu, ",
27 (unsigned long long) statbuf->st_blocks);
28#endif
29 } else {
30 tprintf("{st_mode=%s, ", sprintmode(statbuf->st_mode));
31 }
32
33 switch (statbuf->st_mode & S_IFMT) {
34 case S_IFCHR: case S_IFBLK:
35#ifdef HAVE_STRUCT_STAT_ST_RDEV
36 tprintf("st_rdev=makedev(%u, %u), ",
37 (unsigned int) major(statbuf->st_rdev),
38 (unsigned int) minor(statbuf->st_rdev));
39#else /* !HAVE_STRUCT_STAT_ST_RDEV */
40 tprintf("st_size=makedev(%u, %u), ",
41 (unsigned int) major(statbuf->st_size),
42 (unsigned int) minor(statbuf->st_size));
43#endif /* !HAVE_STRUCT_STAT_ST_RDEV */
44 break;
45 default:
46 tprintf("st_size=%llu, ",
47 (unsigned long long) statbuf->st_size);
48 break;
49 }
50
51 if (!abbrev(tcp)) {
52 tprintf("st_atime=%s, ", sprinttime(statbuf->st_atime));
53 tprintf("st_mtime=%s, ", sprinttime(statbuf->st_mtime));
54 tprintf("st_ctime=%s", sprinttime(statbuf->st_ctime));
55#if HAVE_STRUCT_STAT_ST_FLAGS
56 tprintf(", st_flags=%u", (unsigned int) statbuf->st_flags);
57#endif
58#if HAVE_STRUCT_STAT_ST_FSTYPE
59 tprintf(", st_fstype=%.*s",
60 (int) sizeof statbuf->st_fstype, statbuf->st_fstype);
61#endif
62#if HAVE_STRUCT_STAT_ST_GEN
63 tprintf(", st_gen=%u", (unsigned int) statbuf->st_gen);
64#endif
65 tprints("}");
66 } else {
67 tprints("...}");
68 }
69}
70
71#undef STRUCT_STAT
72#undef DO_PRINTSTAT