diff -burN cvs-1.11.21.orig/src/login.c cvs-1.11.21/src/login.c --- cvs-1.11.21.orig/src/login.c 2006-01-13 23:13:53.072883256 +0100 +++ cvs-1.11.21/src/login.c 2006-01-13 23:15:29.033295056 +0100 @@ -313,9 +313,25 @@ fp = CVS_FOPEN (passfile, "r"); if (fp == NULL) { + /* 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"); + if (fp == NULL) + { + /* Creating the password file didn't work. Bail out. */ + error(0, errno, "warning: failed to open %s for writing", passfile); + goto process; + } + fclose (fp); + fp = CVS_FOPEN (passfile, "r"); + if (fp == NULL) + { + /* Opening the password file didn't work. Bail out. */ error (0, errno, "warning: failed to open %s for reading", passfile); goto process; } + } /* Check each line to see if we have this entry already. */ line = 0;