Ejemplo n.º 1
0
    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())
Ejemplo n.º 2
0
    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())
Ejemplo n.º 3
0
    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())
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
    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')
Ejemplo n.º 7
0
from directory_entry import directory_entry
x = directory_entry(pathname="/usr/local")
x.find_children()
x.print_children()