void print_struct_stat(struct tcb *tcp, const struct strace_stat *const st) { tprints("{"); if (!abbrev(tcp)) { tprintf("st_dev=makedev(%u, %u), st_ino=%llu, st_mode=", (unsigned int) major(st->dev), (unsigned int) minor(st->dev), st->ino); print_symbolic_mode_t(st->mode); tprintf(", st_nlink=%llu, st_uid=%llu, st_gid=%llu", st->nlink, st->uid, st->gid); tprintf(", st_blksize=%llu", st->blksize); tprintf(", st_blocks=%llu", st->blocks); } else { tprints("st_mode="); print_symbolic_mode_t(st->mode); } switch (st->mode & S_IFMT) { case S_IFCHR: case S_IFBLK: tprintf(", st_rdev=makedev(%u, %u)", (unsigned int) major(st->rdev), (unsigned int) minor(st->rdev)); break; default: tprintf(", st_size=%llu", st->size); break; } if (!abbrev(tcp)) { tprints(", st_atime="); tprints(sprinttime(st->atime)); if (st->atime_nsec) tprintf(".%09llu", st->atime_nsec); tprints(", st_mtime="); tprints(sprinttime(st->mtime)); if (st->mtime_nsec) tprintf(".%09llu", st->mtime_nsec); tprints(", st_ctime="); tprints(sprinttime(st->ctime)); if (st->ctime_nsec) tprintf(".%09llu", st->ctime_nsec); } else { tprints(", ..."); } tprints("}"); }
static void decode_mknod(struct tcb *tcp, int offset) { unsigned short mode = tcp->u_arg[offset + 1]; unsigned int dev; printpath(tcp, tcp->u_arg[offset]); tprints(", "); print_symbolic_mode_t(mode); switch (mode & S_IFMT) { case S_IFCHR: case S_IFBLK: dev = tcp->u_arg[offset + 2]; tprints(", "); print_dev_t(dev); break; } }