rf = rcs_open(fpath, RCS_MODE_READ);
rf = rcs_open(fpath, RCS_READ);
cvs_getlog_file(CVSFILE *cf, void *arg){	int ret;	char *repo, fpath[MAXPATHLEN];	RCSFILE *rf;	struct cvsroot *root;	struct cvs_ent *entp;	ret = 0;	rf = NULL;	root = CVS_DIR_ROOT(cf);	repo = CVS_DIR_REPO(cf);	if (cf->cf_type == DT_DIR) {		if (root->cr_method != CVS_METHOD_LOCAL) {			if (cf->cf_cvstat == CVS_FST_UNKNOWN)				ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE,				    CVS_FILE_NAME(cf));			else				ret = cvs_senddir(root, cf);		}		return (ret);	}	cvs_file_getpath(cf, fpath, sizeof(fpath));	entp = cvs_ent_getent(fpath);	if (root->cr_method != CVS_METHOD_LOCAL) {		if ((entp != NULL) && (cvs_sendentry(root, entp) < 0)) {			cvs_ent_free(entp);			return (-1);		}		switch (cf->cf_cvstat) {		case CVS_FST_UNKNOWN:			ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE,			    CVS_FILE_NAME(cf));			break;		case CVS_FST_UPTODATE:			ret = cvs_sendreq(root, CVS_REQ_UNCHANGED,			    CVS_FILE_NAME(cf));			break;		case CVS_FST_ADDED:		case CVS_FST_MODIFIED:			ret = cvs_sendreq(root, CVS_REQ_ISMODIFIED,			    CVS_FILE_NAME(cf));			break;		default:			break;		}	} else {		if (cf->cf_cvstat == CVS_FST_UNKNOWN) {			cvs_printf("? %s\n", fpath);			return (0);		}		snprintf(fpath, sizeof(fpath), "%s/%s/%s%s",		    root->cr_dir, repo, CVS_FILE_NAME(cf), RCS_FILE_EXT);		rf = rcs_open(fpath, RCS_MODE_READ);		if (rf == NULL) {			cvs_ent_free(entp);			return (-1);		}		rcs_close(rf);	}	if (entp != NULL)		cvs_ent_free(entp);	return (ret);}