|
|
1.1 root 1: /* newer.c - exit with status 1 if first arg is newer than second,
2: else exit with status 0
3: -v option gives verbose response to stdout
4: */
5:
6: #include <fcntl.h>
7: #include <stdio.h>
8: #include <sys/stat.h>
9:
10: main(argc, argv)
11: int argc;
12: char * argv[];
13: {
14: int fd1, fd2;
15: int argn, verbose = 0;
16: struct stat s1, s2;
17:
18: if (argc < 3 || argc > 4) {
19: fprintf(stderr, "Usage: %s [-v] file1 file2\n", argv[0]);
20: exit(2);
21: }
22: argn = 1;
23:
24: if (argc == 4) {
25: if (strcmp(argv[1], "-v")) {
26: fprintf(stderr, "Usage: %s [-v] file1 file2\n", argv[0]);
27: exit(2);
28: } else {
29: verbose = 1;
30: argn++;
31: }
32: }
33:
34: if ((fd1 = open(argv[argn], O_RDONLY)) < 0) {
35: if (verbose)
36: fprintf(stderr, "%s: can't open file %s\n",
37: argv[0], argv[argn]);
38: exit(2);
39: }
40:
41: if (fstat(fd1, &s1) < 0) {
42: if (verbose)
43: fprintf(stderr, "%s: can't stat file %s\n",
44: argv[0], argv[argn]);
45: exit(2);
46: }
47:
48: argn++;
49: if ((fd2 = open(argv[argn], O_RDONLY)) < 0) {
50: if (verbose)
51: fprintf(stderr, "%s: can't open file %s\n",
52: argv[0], argv[argn]);
53: exit(2);
54: }
55:
56: if (fstat(fd2, &s2) < 0) {
57: if (verbose)
58: fprintf(stderr, "%s: can't stat file %s\n",
59: argv[0], argv[argn]);
60: exit(2);
61: }
62:
63: close(fd1);
64: close(fd2);
65:
66: if (s1.st_mtime > s2.st_mtime) {
67: if (verbose)
68: printf("%s is newer than %s\n",
69: argv[argn-1], argv[argn]);
70: exit (0);
71: } else {
72: if (verbose)
73: printf("%s is NOT newer than %s\n",
74: argv[argn-1], argv[argn]);
75: exit (1);
76: }
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.