(self, block, data)
| 113 | |
| 114 | # Write A Directory |
| 115 | def write_directory(self, block, data): |
| 116 | assert type(block) is int and 1 <= block <= self.__blocks |
| 117 | assert type(data) is str and len(data) |
| 118 | status = self.__disk.status(block) |
| 119 | assert self.STATUS.d1 <= status <= self.STATUS.dZ |
| 120 | self.__seed(data) |
| 121 | dir_map = [block] |
| 122 | if status == self.STATUS.dA: |
| 123 | temp = self.__disk.read(block) |
| 124 | block = (ord(temp[-2]) << 8) + ord(temp[-1]) |
| 125 | dir_map = dir_map + [block] |
| 126 | while self.__disk.status(block) == self.STATUS.dB: |
| 127 | temp = self.__disk.read(block) |
| 128 | block = (ord(temp[-2]) << 8) + ord(temp[-1]) |
| 129 | dir_map = dir_map + [block] |
| 130 | elif status == self.STATUS.dB: |
| 131 | temp = self.__disk.read(block) |
| 132 | dirA = (ord(temp[0]) << 8) + ord(temp[1]) |
| 133 | dir_map = [dirA] + dir_map |
| 134 | dirZ = (ord(temp[-2]) << 8) + ord(temp[-1]) |
| 135 | dir_map = dir_map + [dirZ] |
| 136 | while self.__disk.status(dirA) == self.STATUS.dB: |
| 137 | temp = self.__disk.read(dirA) |
| 138 | dirA = (ord(temp[0]) << 8) + ord(temp[1]) |
| 139 | dir_map = [dirA] + dir_map |
| 140 | while self.__disk.status(dirZ) == self.STATUS.dB: |
| 141 | temp = self.__disk.read(dirZ) |
| 142 | dirZ = (ord(temp[-2]) << 8) + ord(temp[-1]) |
| 143 | dir_map = dir_map + [dirZ] |
| 144 | elif status == self.STATUS.dZ: |
| 145 | temp = self.__disk.read(block) |
| 146 | block = (ord(temp[0]) << 8) + ord(temp[1]) |
| 147 | dir_map = [block] + dir_map |
| 148 | while self.__disk.status(block) == self.STATUS.dB: |
| 149 | temp = self.__disk.read(block) |
| 150 | block = (ord(temp[0]) << 8) + ord(temp[1]) |
| 151 | dir_map = [block] + dir_map |
| 152 | size = self.__size - 4 |
| 153 | if len(data) % size: |
| 154 | blocks = len(data) / size + 1 |
| 155 | else: |
| 156 | blocks = len(data) / size |
| 157 | blocks = [data[index*size:index*size+size] for index in range(blocks)] |
| 158 | while len(dir_map) > len(blocks): |
| 159 | self.__disk.close(dir_map[-1]) |
| 160 | del dir_map[-1] |
| 161 | while len(dir_map) < len(blocks): |
| 162 | dir_map.append(self.__disk.open(255)) |
| 163 | if len(blocks) == 1: |
| 164 | temp = len(data) |
| 165 | size = chr(temp >> 8) + chr(temp & 0xFF) |
| 166 | blocks[0] = size + blocks[0] + size |
| 167 | else: |
| 168 | temp = len(data) |
| 169 | size = chr(temp >> 8) + chr(temp & 0xFF) |
| 170 | temp = dir_map[1] |
| 171 | next = chr(temp >> 8) + chr(temp & 0xFF) |
| 172 | blocks[0] = size + blocks[0] + next |
no test coverage detected