Lines Matching refs:cluster
105 def first_sector_of_cluster(self, cluster: int) -> int:
110 self.data_sector_start() + (cluster - 2) * self.sectors_per_cluster
154 self.cluster = (high_cluster << 16) | low_cluster
171 + (self.cluster >> 16).to_bytes(2, "little")
174 + (self.cluster & 0xFFFF).to_bytes(2, "little")
279 def read_fat_entry(self, cluster: int) -> int:
283 fat_offset = cluster * 2 # FAT16
286 def write_fat_entry(self, cluster: int, value: int) -> None:
290 fat_offset = cluster * 2
308 def next_cluster(self, cluster: int) -> Optional[int]:
315 fat_entry = self.read_fat_entry(cluster)
355 def read_cluster(self, cluster: int) -> bytes:
360 self.boot_sector.first_sector_of_cluster(cluster),
364 def write_cluster(self, cluster: int, data: bytes) -> None:
370 self.boot_sector.first_sector_of_cluster(cluster),
375 self, cluster: Optional[int]
381 while cluster is not None:
382 data = self.read_cluster(cluster)
385 data, self.boot_sector.first_sector_of_cluster(cluster)
388 cluster = self.next_cluster(cluster)
392 self, cluster: Optional[int], name: str, ext: str, attributes: int
422 new_entry.cluster = self.next_free_cluster()
426 self.write_fat_entry(new_entry.cluster, 0xFFFF)
428 if cluster is None:
440 while cluster is not None:
441 data = self.read_cluster(cluster)
445 self.boot_sector.first_sector_of_cluster(cluster)
450 cluster = self.next_cluster(cluster)
496 directory = self.read_directory(current_entry.cluster)
510 cluster: Optional[int] = entry.cluster
511 while cluster is not None and len(data) <= entry.size_bytes:
512 data += self.read_cluster(cluster)
513 cluster = self.next_cluster(cluster)
547 cluster: Optional[int]
551 cluster = entry.cluster
555 assert cluster is not None, "Cluster is None"
556 affected_clusters.add(cluster)
557 cluster = self.next_cluster(cluster)
559 assert cluster is not None, "Cluster is None"
561 self.next_cluster(cluster) is None
570 self.write_fat_entry(cluster, new_cluster)
572 cluster = new_cluster
576 cluster = entry.cluster
578 assert cluster is not None, "Cluster is None"
579 cluster = self.next_cluster(cluster)
580 assert cluster is not None, "Cluster is None"
582 next_cluster = self.next_cluster(cluster)
584 self.write_fat_entry(cluster, 0xFFFF)
587 cluster = next_cluster
589 self.write_fat_entry(cluster, 0)
594 cluster = entry.cluster
596 while cluster is not None:
598 affected_clusters.add(cluster)
599 cluster = self.next_cluster(cluster)
609 for cluster in affected_clusters:
610 first_sector = self.boot_sector.first_sector_of_cluster(cluster)
627 cluster: Optional[int] = entry.cluster
628 while cluster is not None:
631 old_data = self.read_cluster(cluster)
634 self.write_cluster(cluster, data_to_write)
638 cluster = self.next_cluster(cluster)
673 directory = self.read_directory(current_entry.cluster)
674 directory_cluster = current_entry.cluster