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