MCPcopy Create free account
hub / github.com/ActiveState/code / write_directory

Method write_directory

recipes/Python/492211_dal3py/recipe-492211.py:115–198  ·  view source on GitHub ↗
(self, block, data)

Source from the content-addressed store, hash-verified

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

Callers 6

__init__Method · 0.80
make_directoryMethod · 0.80
remove_directoryMethod · 0.80
make_fileMethod · 0.80
remove_fileMethod · 0.80
renameMethod · 0.80

Calls 8

rangeFunction · 0.85
statusMethod · 0.45
readMethod · 0.45
closeMethod · 0.45
appendMethod · 0.45
openMethod · 0.45
writeMethod · 0.45
editMethod · 0.45

Tested by

no test coverage detected