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