--- /dev/null
+--- cvs-1.11.1p1/src/login.c.bero Tue Jul 31 18:12:58 2001
++++ cvs-1.11.1p1/src/login.c Tue Jul 31 18:17:32 2001
+@@ -322,8 +322,18 @@
+ fp = CVS_FOPEN (passfile, "r");
+ if (fp == NULL)
+ {
+- error (0, errno, "failed to open %s for reading", passfile);
+- goto error_exit;
++ /* The password file doesn't exist yet - probably because it's
++ * the first time someone uses cvs login. Create it.
++ */
++ fp = CVS_FOPEN (passfile, "w");
++ fclose (fp);
++ fp = CVS_FOPEN (passfile, "r");
++ if (fp == NULL)
++ {
++ /* Creating the password file didn't work. Bail out. */
++ error (0, errno, "failed to open %s for reading", passfile);
++ goto error_exit;
++ }
+ }
+
+ cvsroot_canonical = normalize_cvsroot (root);
+--- cvs-1.11.1p1/src/logmsg.c.bero Tue Jul 31 18:12:00 2001
++++ cvs-1.11.1p1/src/logmsg.c Tue Jul 31 18:12:21 2001
+@@ -247,7 +247,7 @@
+ }
+
+ (void) fprintf (fp,
+- "%s----------------------------------------------------------------------\n",
++ "\n%s----------------------------------------------------------------------\n",
+ CVSEDITPREFIX);
+ (void) fprintf (fp,
+ "%sEnter Log. Lines beginning with `%.*s' are removed automatically\n%s\n",
--- /dev/null
+--- src/vers_ts.c~ Sun Oct 4 02:01:40 1998
++++ src/vers_ts.c Mon Jan 8 12:00:57 2001
+@@ -340,13 +340,22 @@
+ {
+ struct stat sb;
+ char *cp;
+- char *ts;
++ char *ts = NULL;
++ time_t mtime = 0L;
+
+- if (CVS_LSTAT (file, &sb) < 0)
++ if (!CVS_LSTAT (file, &sb))
+ {
+- ts = NULL;
++ mtime = sb.st_mtime;
+ }
+- else
++ /* If it's a symlink, return whichever is the newest mtime of
++ the link and its target, for safety.
++ */
++ if (!CVS_STAT (file, &sb))
++ {
++ if (mtime < sb.st_mtime)
++ mtime = sb.st_mtime;
++ }
++ if (mtime)
+ {
+ struct tm *tm_p;
+ struct tm local_tm;