File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / sys / stand / vdfmt / util.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:29:50 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
Power 6/32 Unix version 1.21

#include	"vdfmt.h"
#include	"cmd.h"

/*
*/

to_track(daddr)
dskadr	daddr;
{
	return ((daddr.cylinder * CURRENT->ntrak) + daddr.track);
}


/*
*/

dskadr *from_track(trk)
int	trk;
{
	static dskadr	temp;

	temp.cylinder = trk / CURRENT->ntrak;
	temp.track = trk % CURRENT->ntrak;
	temp.sector = 0;
	return &temp;
}


/*
*/

to_sector(daddr)
dskadr	daddr;
{
	return ((to_track(daddr) * CURRENT->nsec) + daddr.sector);
}


/*
*/

dskadr *from_sector(sec)
unsigned int	sec;
{
	static dskadr	temp;

	temp = *from_track((int)(sec / CURRENT->nsec));
	temp.sector = sec % CURRENT->nsec;
	return &temp;
}


/*
**
*/

print_unix_block(dskaddr)
dskadr	dskaddr;
{
	char	fs;
	int	blk;
	int	sec_per_blk=DEV_BSIZE / CURRENT->secsize;
			
	indent();
	blk = to_sector(dskaddr) / sec_per_blk;
	print("** Warning - Unable to relocate sector %d:\n",to_sector(dskaddr)); 
	indent();
	print("to map out using BADSECT use the following values:\n");
	indent();
	for(fs = 0; fs < 8; fs++) {
		int	s, l;

		s = CURRENT->partition[fs].par_start;
		l = CURRENT->partition[fs].par_len;
		if((blk < (s+l)) && (blk >= s)) {
			print("On the '%c' Partition use block %d.\n",
			    fs+'a', blk-s);
		}
	}
	exdent(3);
}

dskadr	*from_unix(par, block)
unsigned char	par;
unsigned int	block;
{
	unsigned int	sector;
	register int	fs;
	static dskadr		dskaddr;

	fs =  tolower(par) - 'a';
	if((fs < 8) && (block <= CURRENT->partition[fs].par_len)) {
		sector = CURRENT->partition[fs].par_start;
		sector += block;
		sector *= DEV_BSIZE;
		sector /=  CURRENT->secsize;
		dskaddr = *from_sector(sector);
	}
	else {
		dskaddr.cylinder = -1;
		dskaddr.track = -1;
		dskaddr.sector = -1;
	}
	return &dskaddr;
}


blkzero(addr, len)
register char	*addr;
register int	len;
{
	while(len--)
		*(addr++) = (char)0;
}


blkcopy(from, to, len)
register char	*from;
register char	*to;
register int	len;
{
	while(len--)
		*(to++) = *(from++);
}


boolean blkcmp(a, b, len)
register char	*a;
register char	*b;
register int	len;
{
	while(len--) {
		if(*(a++) != *(b++))
			return false;
	}
	return true;
}


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.