home *** CD-ROM | disk | FTP | other *** search
- From: chet@cwns1.CWRU.EDU (Chet Ramey)
- Newsgroups: alt.sources
- Subject: [comp.unix.questions] Re: how to compare file modification time in bourne shell script
- Message-ID: <1990Jul26.001648.3365@math.lsa.umich.edu>
- Date: 26 Jul 90 00:16:48 GMT
-
- Archive-name: newer/25-Jul-90
- Original-posting-by: chet@cwns1.CWRU.EDU (Chet Ramey)
- Original-subject: Re: how to compare file modification time in bourne shell script
- Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti)
-
- [Reposted from comp.unix.questions.
- Comments on this service to emv@math.lsa.umich.edu (Edward Vielmetti).]
-
- In article <1990Jul23.233044.2729@silma.com> aab@silma.UUCP () writes:
-
- >newer file1 file2
- >that returns 0 if file1 is newer than file2 else returns 1
-
- Here's something I picked up a while back...
-
- /*
- * From Henry Spencer
- *
- * > There doesn't appear to be any decent way to compare the last modified
- * > times of files from the shell...
- *
- * Before everybody starts inventing their own names for this, it should be
- * noted that V8 already has a program for this, newer(1). It takes two
- * filenames as arguments, and exits with status 0 if and only if either
- * (a) the first exists and the second does not, or (b) both exist and the
- * first's modification time is at least as recent as the second's. Other-
- * wise it exits with non-zero status. (The preceding two sentences are
- * essentially the whole of the manual page for it.)
- *
- * Relatively few people have V8, but in the absence of any other precedent
- * for what this facility should like look, it seems reasonable to follow
- * V8's lead.
- *
- * Here is an independent rewrite, done from the manual page and not the
- * code, by me, hereby placed in the public domain:
- */
-
- /*
- * newer - is first file newer than second?
- *
- * newer file1 file2
- *
- * exit with 0 status if file1 exists and file2 does not, or if file1's last
- * modified time is at least as recent as file2's.
- */
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- struct stat file1;
- struct stat file2;
-
- if (argc != 3) {
- fprintf(stderr, "Usage: %s file1 file2\n", argv[0]);
- exit(2);
- }
-
- if (stat(argv[1], &file1) < 0)
- exit(1);
- if (stat(argv[2], &file2) < 0)
- exit(0);
- if (file1.st_mtime >= file2.st_mtime)
- exit(0);
- exit(1);
- }
- --
- Chet Ramey ``See Figure 1.''
- Network Services Group
- Case Western Reserve University
- chet@ins.CWRU.Edu
-