# #include "/lib/h/stat.h" /* Unix stuff */ extern int errno; extern char *sys_errlist[]; /* Command */ struct inode statbuf; int dflg; /* Debugging */ /* */ main(argc, argv) char **argv; { register char *arg; char *sfnm, *tfnm; argv++; for (argc--; (argc > 0); argc--) { arg = *argv; if (*arg++ != '-') break; argv++; switch (*arg) { case '?': helpex(); case 'd': dflg++; break; default: printf("Bad flag: %c", *arg); exit(1); } } if (argc != 2) helpex(); sfnm = argv[0]; tfnm = argv[1]; if (dflg) printf("source file: '%s' target file '%s'\n", sfnm, tfnm); if (stat(sfnm, &statbuf) < 0) serror("Cannot stat() source file"); if (dflg) { printf("source file mdate: %o-%o\n", statbuf.i_mtime[0], statbuf.i_mtime[1]); printf("%s", ctime(&statbuf.i_mtime[0])); } if (mdate(tfnm, &statbuf.i_mtime[0]) < 0) serror("Cannot smdate() target file"); statbuf.i_mtime[0] = 0; statbuf.i_mtime[1] = 0; if (dflg) { if (stat(tfnm, &statbuf) < 0) serror("Cannot stat() target file"); printf("target file mdate: %o-%o\n", statbuf.i_mtime[0], statbuf.i_mtime[1]); printf("%s", ctime(&statbuf.i_mtime[0])); } exit(0); } helpex() { printf("cmdate {-d} {srcfile} {targetfile}\n"); exit(1); } serror(errstr) char *errstr; { char *s; if (errstr != 0) printf("%s: ", errstr); s = sys_errlist[errno]; printf("%s\n", s); exit(1); }