| #include <stdio.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| #include <sys/stat.h> |
| #include <sys/sysmacros.h> |
| #include <sys/types.h> |
| |
| static void do_stat(const char *path) |
| { |
| struct stat st; |
| |
| if ( stat(path, &st) ) { |
| perror(path); |
| exit(1); |
| } |
| |
| printf("Path = %s\n" |
| " st_dev = %#jx (%u,%u)\n" |
| " st_ino = %ju\n" |
| " st_mode = %#jo\n" |
| " st_nlink = %ju\n" |
| " st_uid = %ju\n" |
| " st_gid = %ju\n" |
| " st_rdev = %#jx (%u,%u)\n" |
| " st_size = %ju\n" |
| " st_blksize = %ju\n" |
| " st_blocks = %ju\n", |
| path, |
| (uintmax_t)st.st_dev, major(st.st_dev), minor(st.st_dev), |
| (uintmax_t)st.st_ino, |
| (uintmax_t)st.st_mode, |
| (uintmax_t)st.st_nlink, |
| (uintmax_t)st.st_uid, |
| (uintmax_t)st.st_gid, |
| (uintmax_t)st.st_rdev, major(st.st_rdev), minor(st.st_rdev), |
| (uintmax_t)st.st_size, |
| (uintmax_t)st.st_blksize, |
| (uintmax_t)st.st_blocks); |
| |
| #ifdef _STATBUF_ST_NSEC |
| printf(" st_atim = %jd.%09u\n" |
| " st.mtim = %jd.%09u\n" |
| " st.ctim = %jd.%09u\n", |
| (uintmax_t)st.st_atim.tv_sec, (unsigned int)st.st_atim.tv_nsec, |
| (uintmax_t)st.st_mtim.tv_sec, (unsigned int)st.st_mtim.tv_nsec, |
| (uintmax_t)st.st_ctim.tv_sec, (unsigned int)st.st_ctim.tv_nsec); |
| #else |
| printf(" st_atime = %jd\n" |
| " st.mtime = %jd\n" |
| " st.ctime = %jd\n", |
| (uintmax_t)st.st_atime, |
| (uintmax_t)st.st_mtime, |
| (uintmax_t)st.st_ctime); |
| #endif |
| } |
| |
| int main(int argc, char *argv[]) |
| { |
| int i; |
| |
| for ( i = 1 ; i < argc ; i++ ) |
| do_stat(argv[i]); |
| |
| return 0; |
| } |