def mount(self): log.debug("Mounting photocard...") self.START_OPERATION('mount') try: stat = pcardext.mount(self._read, self._write) disk_info = pcardext.info() self.write_protect = disk_info[8] log.debug("stat=%d" % stat) if stat == 0: if self.write_protect: # if write_protect is True, # card write NAK'd and channel was # closed. We have to reopen here. self.open_channel() self.pcard_mounted = True pcardext.cd('/') self.ls(True, '*', False) else: self.pcard_mounted = False raise Error(ERROR_DEVICE_DOES_NOT_SUPPORT_OPERATION) finally: if self.pcard_mounted: self.END_OPERATION('mount')
def cdup(self, openclose=True): if len(self.dir_stack.as_list()) == 0: return self.cd('/', openclose) self.dir_stack.pop() self.START_OPERATION('cdup') try: pcardext.cd('/') for d in self.dir_stack.as_list(): pcardext.cd(d) self.ls(True, '*', False) finally: self.END_OPERATION('cdup', openclose)
def __tree(self, __d=None): if __d is None: __d = {} pcardext.cd('/') for f in pcardext.ls(): # True, '*', False ): fname = f[0].lower() if self.callback is not None: self.callback() if fname not in ('.', '..'): if f[1] == 'd': self.cd(fname, False) __d[fname] = {} __d[fname] = self.__tree(__d[fname]) self.cdup(False) else: __d[fname] = f[2] return __d
def cd(self, dirs, openclose=True): self.START_OPERATION('cd') try: stat = pcardext.cd(dirs) if stat: if dirs == '/': self.dir_stack.clear() else: dirs = dirs.split('/') for d in dirs: self.dir_stack.push(d) self.ls(True, '*', False) finally: self.END_OPERATION('cd', openclose)