basefilename = xmalloc (10 + sizeof CVSADM_BASE + strlen (file));
basefilename = xmalloc (10 + sizeof CVSADM_BASE + strlen (finfo->file));
unedit_fileproc (file, update_dir, repository, entries, srcfiles)    char *file;    char *update_dir;    char *repository;    List *entries;    List *srcfiles;{    FILE *fp;    time_t now;    char *ascnow;    char *basefilename;    if (noexec)	return 0;    basefilename = xmalloc (10 + sizeof CVSADM_BASE + strlen (file));    strcpy (basefilename, CVSADM_BASE);    strcat (basefilename, "/");    strcat (basefilename, file);    if (!isfile (basefilename))    {	/* This file apparently was never cvs edit'd (e.g. we are uneditting	   a directory where only some of the files were cvs edit'd.  */	free (basefilename);	return 0;    }    if (xcmp (file, basefilename) != 0)    {	if (update_dir[0] != '\0')	    printf ("%s/", update_dir);	printf ("%s has been modified; revert changes? ", file);	if (!yesno ())	{	    /* "no".  */	    free (basefilename);	    return 0;	}    }    rename_file (basefilename, file);    free (basefilename);    fp = open_file (CVSADM_NOTIFY, "a");    (void) time (&now);    ascnow = asctime (gmtime (&now));    ascnow[24] = '\0';    fprintf (fp, "U%s\t%s GMT\t%s\t%s\t\n", file,	     ascnow, hostname, CurDir);    if (fclose (fp) < 0)    {	if (update_dir[0] == '\0')	    error (0, errno, "cannot close %s", file);	else	    error (0, errno, "cannot close %s/%s", update_dir, file);    }    xchmod (file, 0);    return 0;}