john@sol1.UUCP (john) (11/10/85)
The following is a slightly modified version of Ken Yap's ftimes. This version allows for the 'v' option which will print the output in human readable format ie. Sat Nov 9 16:46:08 CST 1985. The modified manual page is also included. --------------- CUT ME HERE ---------------------- #!/bin/sh cat >ftimes.1 <<'------ EOF ------' .TH FTIMES 1 .SH NAME ftimes \- display access, change and modify times of a file .SH SYNOPSIS .B ftimes [ \fB\-acmv\fR ] file .SH DESCRIPTION .IR Ftimes displays the access, change and modify times of a file in seconds past the epoch (1 January 1970). This is useful for making decisions in shell scripts. .PP Flags a, c and m select the corresponding times. The v flag displays output in human readable form ie. Sat Nov 9 16:40:22 CST 1985 If no option, or only the v flag is selected, the default is the modify time. .PP Example: .br .nf .in +5 if test `ftimes RCS/file,v` -gt `ftimes file` then co file fi .in -5 .fi is a shell script to check out a RCS file if a newer version has been checked in since the working version was created. .SH AUTHOR Ken Yap (University of Rochester) ------ EOF ------ ls -l ftimes.1 cat >ftimes.c <<'------ EOF ------' /* ** ftimes [-acm] file ** ** Output the access, change and modify times of the file. ** If no flag is selected, the default is the modify time. ** ** This is public domain software. It may be freely distributed, ** modified and used. Please use it for peaceful purposes ** and also not for profit. ** ** Bug reports and comments to: ** ** Ken Yap (ken@rochester.{arpa,uucp}) ** ** I do not promise any sort of support or warrant the ** suitability of this software for any purpose whatsoever. ** ** Last modified: ** ** Ken Yap (ken@rochester.{arpa,uucp}) 26th Sep 1985 ** ** Added verbose -v option to output in human readable format ** John Korsmeyer (sol1!john) 9th Nov 1985 */ #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <time.h> static int aflag = 0, /* display access time */ cflag = 0, /* display change time */ mflag = 0; /* display modify time */ verbose = 0; /* display in human readable format */ main(argc, argv) int argc; char *argv[]; { register int n, errflag = 0; struct stat sb; extern int optind; /* defined in getopt */ extern char *optarg; /* defined in getopt */ int getopt(), stat(); while ((n = getopt (argc, argv, "acmv")) != EOF) { switch (n) { case 'a': aflag++; break; case 'c': cflag++; break; case 'm': mflag++; break; case 'v': verbose++; break; default: errflag++; break; } } argc -= optind; if (errflag || argc != 1) { fprintf(stderr, "usage: %s [-acm] file\n", argv[0]); exit(2); } argv += optind; if (stat(argv[0], &sb) < 0) { perror(argv[0]); exit(1); } if (!aflag && !cflag) mflag = 1; /* at least mod time */ if (aflag) { if(verbose) printf("%s%s", "ACCESS TIME = ", ctime(&sb.st_atime)); else printf("%ld", sb.st_atime); } if (cflag) { if(verbose) printf("%s%s", "CHANGE TIME = ", ctime(&sb.st_ctime)); else printf("%ld", sb.st_ctime); } if (mflag) { if(verbose) printf("%s%s", "MODIFY TIME = ", ctime(&sb.st_mtime)); else printf("%ld", sb.st_mtime); } printf("\n"); exit(0); } ------ EOF ------ ls -l ftimes.c