V10/libcbt/diskrd.c

Compare this file to the similar file:
Show the results in this format:

#include "cbt.h"

extern bfile *curbf;
extern long lseek();

ndrd(lev, where) ndaddr where;
{
	register n;
	if(mustwrite(curbf, lev)) {
		/* do we ever get here? (yes, while splitting) */
		if(ndwrt(curbf->path[lev], curbf->loc[lev]) == EOF)
			return(EOF);
		mustwrite(curbf, lev) = 0;
	}
	if(lseek(curbf->tfd, where * (long)NDSZ, 0) == -1)
		return(EOF);
	if((n = read(curbf->tfd, (char *)curbf->path[lev], NDSZ)) != NDSZ) {
		if(n >= 0)
			errno = BRDERR;
		return(EOF);
	}
	curbf->loc[lev] = where;
	return(0);
}

getincore(lev, where) ndaddr where;
{
	if(ndrd(lev, where) == EOF)
		return(EOF);
	if(curbf->path[lev]->hlev != lev) {
		errno = BRDERR;
		curbf->fatal++;
		return(EOF);
	}
	return(0);
}