xref: /csrg-svn/sys/tahoe/stand/vdformat/util.c (revision 29538)
1*29538Ssam #ifndef lint
2*29538Ssam static char sccsid[] = "@(#)util.c	1.1 (Berkeley/CCI) 07/05/86";
3*29538Ssam #endif
4*29538Ssam 
5*29538Ssam #include	"vdfmt.h"
6*29538Ssam #include	"cmd.h"
7*29538Ssam 
8*29538Ssam /*
9*29538Ssam */
10*29538Ssam 
11*29538Ssam to_track(daddr)
12*29538Ssam dskadr	daddr;
13*29538Ssam {
14*29538Ssam 	return ((daddr.cylinder * CURRENT->vc_ntrak) + daddr.track);
15*29538Ssam }
16*29538Ssam 
17*29538Ssam 
18*29538Ssam /*
19*29538Ssam */
20*29538Ssam 
21*29538Ssam dskadr *from_track(trk)
22*29538Ssam int	trk;
23*29538Ssam {
24*29538Ssam 	static dskadr	temp;
25*29538Ssam 
26*29538Ssam 	temp.cylinder = trk / CURRENT->vc_ntrak;
27*29538Ssam 	temp.track = trk % CURRENT->vc_ntrak;
28*29538Ssam 	temp.sector = 0;
29*29538Ssam 	return &temp;
30*29538Ssam }
31*29538Ssam 
32*29538Ssam 
33*29538Ssam /*
34*29538Ssam */
35*29538Ssam 
36*29538Ssam to_sector(daddr)
37*29538Ssam dskadr	daddr;
38*29538Ssam {
39*29538Ssam 	return ((to_track(daddr) * CURRENT->vc_nsec) + daddr.sector);
40*29538Ssam }
41*29538Ssam 
42*29538Ssam 
43*29538Ssam /*
44*29538Ssam */
45*29538Ssam 
46*29538Ssam dskadr *from_sector(sec)
47*29538Ssam unsigned int	sec;
48*29538Ssam {
49*29538Ssam 	static dskadr	temp;
50*29538Ssam 
51*29538Ssam 	temp = *from_track((int)(sec / CURRENT->vc_nsec));
52*29538Ssam 	temp.sector = sec % CURRENT->vc_nsec;
53*29538Ssam 	return &temp;
54*29538Ssam }
55*29538Ssam 
56*29538Ssam 
57*29538Ssam /*
58*29538Ssam **
59*29538Ssam */
60*29538Ssam 
61*29538Ssam print_unix_block(dskaddr)
62*29538Ssam dskadr	dskaddr;
63*29538Ssam {
64*29538Ssam 	char	fs;
65*29538Ssam 	int	blk;
66*29538Ssam 	int	sec_per_blk=DEV_BSIZE / SECSIZ;
67*29538Ssam 
68*29538Ssam 	indent();
69*29538Ssam 	blk = to_sector(dskaddr) / sec_per_blk;
70*29538Ssam 	print("** Warning - Unable to relocate sector %d:\n",to_sector(dskaddr));
71*29538Ssam #ifdef notdef
72*29538Ssam 	indent();
73*29538Ssam 	print("to map out using BADSECT use the following values:\n");
74*29538Ssam 	indent();
75*29538Ssam 	for(fs = 0; fs < 8; fs++) {
76*29538Ssam 		int	s, l;
77*29538Ssam 
78*29538Ssam 		s = CURRENT->partition[fs].par_start;
79*29538Ssam 		l = CURRENT->partition[fs].par_len;
80*29538Ssam 		if((blk < (s+l)) && (blk >= s)) {
81*29538Ssam 			print("On the '%c' Partition use block %d.\n",
82*29538Ssam 			    fs+'a', blk-s);
83*29538Ssam 		}
84*29538Ssam 	}
85*29538Ssam #endif
86*29538Ssam 	exdent(3);
87*29538Ssam }
88*29538Ssam 
89*29538Ssam dskadr	*from_unix(par, block)
90*29538Ssam unsigned char	par;
91*29538Ssam unsigned int	block;
92*29538Ssam {
93*29538Ssam 	unsigned int	sector;
94*29538Ssam 	register int	fs;
95*29538Ssam 	static dskadr		dskaddr;
96*29538Ssam 
97*29538Ssam #ifdef notdef
98*29538Ssam 	fs =  tolower(par) - 'a';
99*29538Ssam 	if((fs < 8) && (block <= CURRENT->partition[fs].par_len))
100*29538Ssam 		dskaddr = *from_sector(
101*29538Ssam 		    (CURRENT->partition[fs].par_start + block) *
102*29538Ssam 		     DEV_BSIZE/SECSIZE);
103*29538Ssam 	else {
104*29538Ssam #endif
105*29538Ssam 		dskaddr.cylinder = -1;
106*29538Ssam 		dskaddr.track = -1;
107*29538Ssam 		dskaddr.sector = -1;
108*29538Ssam #ifdef notdef
109*29538Ssam 	}
110*29538Ssam #endif
111*29538Ssam 	return &dskaddr;
112*29538Ssam }
113*29538Ssam 
114*29538Ssam 
115*29538Ssam blkzero(addr, len)
116*29538Ssam register char	*addr;
117*29538Ssam register int	len;
118*29538Ssam {
119*29538Ssam 	while(len--)
120*29538Ssam 		*(addr++) = (char)0;
121*29538Ssam }
122*29538Ssam 
123*29538Ssam 
124*29538Ssam blkcopy(from, to, len)
125*29538Ssam register char	*from;
126*29538Ssam register char	*to;
127*29538Ssam register int	len;
128*29538Ssam {
129*29538Ssam 	while(len--)
130*29538Ssam 		*(to++) = *(from++);
131*29538Ssam }
132*29538Ssam 
133*29538Ssam 
134*29538Ssam boolean blkcmp(a, b, len)
135*29538Ssam register char	*a;
136*29538Ssam register char	*b;
137*29538Ssam register int	len;
138*29538Ssam {
139*29538Ssam 	while(len--) {
140*29538Ssam 		if(*(a++) != *(b++))
141*29538Ssam 			return false;
142*29538Ssam 	}
143*29538Ssam 	return true;
144*29538Ssam }
145*29538Ssam 
146