=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsdiff.c,v retrieving revision 1.23 retrieving revision 1.24 diff -c -r1.23 -r1.24 *** src/usr.bin/rcs/rcsdiff.c 2005/11/29 11:11:39 1.23 --- src/usr.bin/rcs/rcsdiff.c 2005/12/01 23:02:27 1.24 *************** *** 1,4 **** ! /* $OpenBSD: rcsdiff.c,v 1.23 2005/11/29 11:11:39 xsa Exp $ */ /* * Copyright (c) 2005 Joris Vink * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcsdiff.c,v 1.24 2005/12/01 23:02:27 niallo Exp $ */ /* * Copyright (c) 2005 Joris Vink * All rights reserved. *************** *** 179,184 **** --- 179,187 ---- BUF *b1, *b2; char rbuf[64]; struct stat st; + struct timeval tv[2], tv2[2]; + memset(&tv, 0, sizeof(tv)); + memset(&tv2, 0, sizeof(tv2)); if (stat(filename, &st) == -1) { cvs_log(LP_ERRNO, "%s", filename); *************** *** 195,206 **** --- 198,213 ---- cvs_log(LP_ERR, "failed to retrieve revision"); return (-1); } + tv[0].tv_sec = (long)rcs_rev_getdate(file, rev); + tv[1].tv_sec = tv[0].tv_sec; if ((b2 = cvs_buf_load(filename, BUF_AUTOEXT)) == NULL) { cvs_log(LP_ERR, "failed to load file: '%s'", filename); cvs_buf_free(b1); return (-1); } + tv2[0].tv_sec = st.st_mtime; + tv2[1].tv_sec = st.st_mtime; strlcpy(path1, rcs_tmpdir, sizeof(path1)); strlcat(path1, "/diff1.XXXXXXXXXX", sizeof(path1)); *************** *** 211,216 **** --- 218,225 ---- return (-1); } cvs_buf_free(b1); + if (utimes(path1, (const struct timeval *)&tv) < 0) + cvs_log(LP_ERRNO, "error setting utimes"); strlcpy(path2, rcs_tmpdir, sizeof(path2)); strlcat(path2, "/diff2.XXXXXXXXXX", sizeof(path2)); *************** *** 220,225 **** --- 229,236 ---- return (-1); } cvs_buf_free(b2); + if (utimes(path2, (const struct timeval *)&tv2) < 0) + cvs_log(LP_ERRNO, "error setting utimes"); cvs_diffreg(path1, path2, NULL); (void)unlink(path1); *************** *** 234,240 **** --- 245,255 ---- char path1[MAXPATHLEN], path2[MAXPATHLEN]; BUF *b1, *b2; char rbuf1[64], rbuf2[64]; + struct timeval tv[2], tv2[2]; + memset(&tv, 0, sizeof(tv)); + memset(&tv2, 0, sizeof(tv2)); + rcsnum_tostr(rev1, rbuf1, sizeof(rbuf1)); if (verbose == 1) printf("retrieving revision %s\n", rbuf1); *************** *** 243,248 **** --- 258,265 ---- cvs_log(LP_ERR, "failed to retrieve revision"); return (-1); } + tv[0].tv_sec = (long)rcs_rev_getdate(file, rev1); + tv[1].tv_sec = tv[0].tv_sec; rcsnum_tostr(rev2, rbuf2, sizeof(rbuf2)); if (verbose == 1) *************** *** 252,257 **** --- 269,276 ---- cvs_log(LP_ERR, "failed to retrieve revision"); return (-1); } + tv2[0].tv_sec = (long)rcs_rev_getdate(file, rev2); + tv2[1].tv_sec = tv2[0].tv_sec; if (verbose == 1) fprintf(stderr, *************** *** 266,271 **** --- 285,292 ---- return (-1); } cvs_buf_free(b1); + if (utimes(path1, (const struct timeval *)&tv) < 0) + cvs_log(LP_ERRNO, "error setting utimes"); strlcpy(path2, rcs_tmpdir, sizeof(path2)); strlcat(path2, "/diff2.XXXXXXXXXX", sizeof(path2)); *************** *** 276,281 **** --- 297,305 ---- } cvs_buf_free(b2); + if (utimes(path2, (const struct timeval *)&tv2) < 0) + cvs_log(LP_ERRNO, "error setting utimes"); + cvs_diffreg(path1, path2, NULL); (void)unlink(path1); (void)unlink(path2);