diff -uprk.orig cvs-1.11.10.orig/src/logmsg.c cvs-1.11.10/src/logmsg.c --- cvs-1.11.10.orig/src/logmsg.c 2003-06-23 17:52:18 +0400 +++ cvs-1.11.10/src/logmsg.c 2003-12-15 03:55:04 +0300 @@ -11,6 +11,9 @@ #include "cvs.h" #include "getline.h" +#include +#include + static int find_type PROTO((Node * p, void *closure)); static int fmt_proc PROTO((Node * p, void *closure)); static int logfile_write PROTO((char *repository, char *filter, @@ -193,6 +196,7 @@ do_editor (dir, messagep, repository, ch size_t line_chars_allocated; char *fname; struct stat pre_stbuf, post_stbuf; + struct utimbuf pre_utbuf; int retcode = 0; #ifdef CLIENT_SUPPORT @@ -286,6 +290,13 @@ do_editor (dir, messagep, repository, ch if ( CVS_STAT (fname, &pre_stbuf) == -1) pre_stbuf.st_mtime = 0; + /* Decrease the file's modification time by 1 second so we + * to find out if the `editor' program changes it in less than 1 second. + */ + pre_utbuf.actime = &pre_stbuf.st_mtime; + pre_utbuf.modtime = &pre_stbuf.st_ctime - 1; + utime (fname, &pre_utbuf); + if (editinfo_editor) free (editinfo_editor); editinfo_editor = (char *) NULL;