Re: rcs-5.9.4: t810 test failed

Thien-Thi Nguyen <[email protected]> Fri, 27 Oct 2017 21:07:46 +0200
Newsgroups gmane.comp.version-control.rcs.bugs
Message-ID <[email protected]>
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


() Xose Vazquez Perez <[email protected]>
() Thu, 26 Oct 2017 19:26:45 +0200

   $ stat x
   Modify: 2017-10-26 19:18:31.309078104 +0200

   $ stat x,v
   Modify: 2017-10-26 19:18:31.000000000 +0200

Cool, this is a big clue.  Seeing this, i now feel i can trust
/bin/sh =E2=80=98test -nt=E2=80=99 on your system to DTRT (i.e., the failur=
e of
t810 is meaningful).  (On the flip side, sending a tarball of
the failing tNNN.d loses a bit of its allure as a first step
collaborative debug strategy, so it goes...)

The correct outcome should be that x,v mtime explicitly mirrors
x mtime (i.e., ...:31.309078104).  The current implementation
uses =E2=80=98utime=E2=80=99 (in rcsedit.c, func =E2=80=98setmtime=E2=80=99=
) to do this job.
This works on filesystems lacking sub-second resolution support,
but that's no longer sufficient these days, apparently.

I see from utime(2) on my system:

 POSIX.1-2008 marks utime() as obsolete.

Seems like a good hint as well, pointing us to =E2=80=98utimensat=E2=80=99 =
as a
replacement (specified in POSIX.1-2008) that supports =E2=80=98struct
timespec=E2=80=99 for full nanosecond resolution.

On the input side (finding the x mtime), we'll use gnulib module
=E2=80=98stat-time=E2=80=99 to tame the =E2=80=98struct stat=E2=80=99 zoo. =
 Finally, an excuse
to rename var =E2=80=98newRCStime=E2=80=99 to something less ugly -- bwahah=
ahah!

=2D-=20
Thien-Thi Nguyen -----------------------------------------------
 (defun responsep (query)
   (pcase (context query)
     (`(technical ,ml) (correctp ml))
     ...))                              748E A0E8 1CB8 A748 9BFA
=2D-------------------------------------- 6CE4 6703 2224 4C80 7502


--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlnzhAUACgkQZwMiJEyAdQI0JgCglHtnIshxeciekxenwBbeK54i
uGgAn3roRk2I/17DT09DOHF3I/PIukkQ
=xOZY
-----END PGP SIGNATURE-----
--=-=-=--