def delDir(self, filepath): path = filepath.split("/", -1) (prevDirectory, theDirectory) = self.findDirectory(filepath) fileName = path[len(path) - 1] delEntry = None emptyString = " " paddedEmptyString = self.padString(emptyString) if (theDirectory == self): for entry in self.rootDirectory: if entry.filename == fileName and entry.type == "d:": delEntry = entry if delEntry.length > 0: for subEntry in delEntry.directoryBlock.directory: if subEntry.empty == False: print( "An entry in the specified directory is occupied" ) return self.rootDirectory.remove(delEntry) self.rootDirectory.append( directory_entry.directory_entry(self.bitmap)) break else: for entry in theDirectory.directoryBlock.directory: if entry.filename == fileName and entry.type == "d:": delEntry = entry if delEntry.length > 0: for subEntry in delEntry.directoryBlock.directory: if subEntry.empty == False: print( "An entry in the specified directory is occupied" ) return theDirectory.directoryBlock.directory.remove(delEntry) theDirectory.directoryBlock.directory.append( directory_entry.directory_entry(self.bitmap)) break for block in delEntry.blocks: if int(block) != 0: self.drive.write_block(int(block), paddedEmptyString) self.bitmap.freeBlock(int(block)) #Write the adjusted directories to the drive if theDirectory != self: self.printDirectory(theDirectory) # Always write volume information self.drive.write_block(0, self.toString())
def format(self): self.drive = drive.Drive(self.name) self.drive.format() for i in range(6): self.rootDirectory.append( directory_entry.directory_entry(self.bitmap)) self.bitmap.retrieveAvailableBlock() self.drive.write_block(0, self.toString())
def delFile(self, filepath): path = filepath.split("/", -1) (prevDirectory, theDirectory) = self.findDirectory(filepath) fileName = path[-1] delEntry = None if (theDirectory == self): for index in range(len(self.rootDirectory)): entry = self.rootDirectory[index] if entry.filename == fileName and entry.type == "f:": self.rootDirectory.remove(entry) self.rootDirectory.append( directory_entry.directory_entry(self.bitmap)) delEntry = entry break else: for index in range(len(theDirectory.directoryBlock.directory)): entry = theDirectory.directoryBlock.directory[index] if entry.filename == fileName and entry.type == "f:": theDirectory.directoryBlock.directory.remove(entry) theDirectory.directoryBlock.directory.append( directory_entry.directory_entry(self.bitmap)) delEntry = entry break emptyString = " " paddedEmptyString = self.padString(emptyString) if (delEntry == None): print("File not found in specified directory") return for block in delEntry.blocks: if int(block) != 0: self.drive.write_block(int(block), paddedEmptyString) self.bitmap.freeBlock(int(block)) # Write the adjusted directories to the drive if theDirectory != self: self.printDirectory(theDirectory) # Always write volume information self.drive.write_block(0, self.toString())
def loadDirectory(self, directory): if directory.isLoaded: return #If no blocks held, ignored for block in directory.blocks: if int(block) != 0: theEntries = self.drive.read_block(int(block)) #Retrieve the 8 entries in each block held by the directory for i in range(8): entry = theEntries[:64] theEntries = theEntries[64:] directoryEntry = directory_entry.directory_entry( self.bitmap) directoryEntry.fromString(entry) directory.directoryBlock.directory.append(directoryEntry) elif int(block) == 0: break directory.isLoaded = True
def reconnect(self): self.drive = drive.Drive(self.name) self.drive.reconnect() volumedata = self.drive.read_block(0) bitmapString = volumedata[:128] entryString = volumedata[128:512] for i in range(6): entry = entryString[:64] entryString = entryString[64:] directoryEntry = directory_entry.directory_entry(self.bitmap) directoryEntry.fromString(entry) self.rootDirectory.append(directoryEntry) self.bitmap = bitmap() self.bitmap.fromString(bitmapString)
#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python from directory_entry import directory_entry x = directory_entry(pathname="/Users/erik/videoportrait") x.find_children() x.print_children(filetype='python')
from directory_entry import directory_entry x = directory_entry(pathname="/usr/local") x.find_children() x.print_children()