#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <time.h> char *ptime(time_t t) { struct tm *ts; static char string[30]; ts=localtime(&t); strftime(string,sizeof(string),"%e %h - %H:%M", ts); return(string); } int main(int argc, char *argv[]) { int fd; char *name; const int mode=O_RDONLY; struct stat info; if (argc<2) { fprintf(stderr,"Usage\n\t%s <filein>",argv[0]); exit(1); } name=argv[1]; if ((fd=open(name,mode))<0) { fprintf(stderr,"%s:",name); perror("open"); exit(1); } if (fstat(fd,&info)) { perror("stat"); exit(2); } printf("File Info:\n"); printf("\tdevice:\t%x\n",info.st_dev); printf("\tinode:\t%x\n",info.st_ino); printf("\tprotection:\t%o\n",info.st_mode); printf("\tnumber of hard links:\t%u\n",info.st_nlink); printf("\tuser ID of owner:\t%u\n",info.st_uid); printf("\tgroup ID of owner:\t%u\n",info.st_gid); printf("\tdevice type (if inode device):%x\n",info.st_rdev); printf("\ttotal size, in bytes:\t%u\n",info.st_size); printf("\tblocksize for filesystem I/O:\t%u\n",info.st_blksize); printf("\tnumber of blocks allocated:\t%u\n",info.st_blocks); printf("\ttime of last access:\t%s\n",ptime(info.st_atime)); printf("\ttime of last modification:\t%s\n",ptime(info.st_mtime)); printf("\ttime of last status change\t%s\n",ptime(info.st_ctime)); if (close(fd)) perror("close"); }