free (line);
ncheck_fileproc (file, update_dir, repository, entries, srcfiles)    char *file;    char *update_dir;    char *repository;    List *entries;    List *srcfiles;{    int notif_type;    char *filename;    char *val;    char *cp;    char *watches;    FILE *fp;    char *line = NULL;    size_t line_len = 0;    /* We send notifications even if noexec.  I'm not sure which behavior       is most sensible.  */    fp = fopen (CVSADM_NOTIFY, "r");    if (fp == NULL)    {	if (!existence_error (errno))	    error (0, errno, "cannot open %s", CVSADM_NOTIFY);	return 0;    }    while (getline (&line, &line_len, fp) > 0)    {	notif_type = line[0];	if (notif_type == '\0')	    continue;	filename = line + 1;	cp = strchr (filename, '\t');	if (cp == NULL)	    continue;	*cp++ = '\0';	val = cp;	cp = strchr (val, '\t');	if (cp == NULL)	    continue;	*cp++ = '+';	cp = strchr (cp, '\t');	if (cp == NULL)	    continue;	*cp++ = '+';	cp = strchr (cp, '\t');	if (cp == NULL)	    continue;	*cp++ = '\0';	watches = cp;	cp = strchr (cp, '\n');	if (cp == NULL)	    continue;	*cp = '\0';	notify_do (notif_type, filename, getcaller (), val, watches,		   repository);    }    if (ferror (fp))	error (0, errno, "cannot read %s", CVSADM_NOTIFY);    if (fclose (fp) < 0)	error (0, errno, "cannot close %s", CVSADM_NOTIFY);    if (unlink (CVSADM_NOTIFY) < 0)	error (0, errno, "cannot remove %s", CVSADM_NOTIFY);    return 0;}