Ejemplo n.º 1
0
 def readdir(self, path, offset):
     log('--readdir(%r)\n' % path)
     node = cache_get(self.top, path)
     yield fuse.Direntry('.')
     yield fuse.Direntry('..')
     for sub in node.subs():
         yield fuse.Direntry(sub.name)
Ejemplo n.º 2
0
    def readdir_mount(self, path, offset, file_hash, action, rest):
        file_descr = get_file_descr(file_hash)

        LOG.debug('Rest:\n\t%s' % rest)
        if not rest:
            rest = ''

        if rest == '':
            yield fuse.Direntry(os.path.basename(file_descr.file.filename))

        file_ids = get_referenced_file_ids(file_descr)
        file_id_paths = set([file_id.filename for file_id in file_ids])
        LOG.debug(os.path.dirname(file_descr.file.filename))
        LOG.debug(file_id_paths)
        tree = file_ids_as_tree(
            file_ids,
            os.path.dirname(file_descr.file.filename)
        )
        files = get_files_for_path(tree, rest)
        LOG.debug('Files:\n\t%s' % files)
        for key, value in files.iteritems():
            if key == FILE_MARKER:
                for entry in value:
                    yield fuse.Direntry(entry[0])
            else:
                yield fuse.Direntry(key)
Ejemplo n.º 3
0
    def readdir(
        self, path, offset
    ):  #-------------------------- working properly-----------------------------
        print "readdir", path
        yield fuse.Direntry('.')
        yield fuse.Direntry('..')

        sefs = file1()
        all_files = sefs.ls()
        print "Rest of the files in root dir"

        for e in all_files:

            if str(e) == path:
                continue

            if (len(e.split(path)) == 2):
                print "%s" % e
                strpath = e.split(path)
                strpath = strpath[1]

                if path == '/':
                    yield fuse.Direntry(str(e[1:]))
                elif (len(strpath.split('/')) > 2):
                    continue
                else:
                    size = len(path) + 1
                    yield fuse.Direntry(str(e[size:]))
Ejemplo n.º 4
0
    def readdir(self, path, offset):
        try:
            self.logger.debug("ReadDir")
            dirents = ['.', '..']
            if not self.torrent_info:
                if not self.torrent_handle.has_metadata():
                    dirents.append("No metadata downloaded yet")
                    for r in dirents:
                        yield fuse.Direntry(r)
                    return
                else:
                    self.fsinit()

            self.logger.debug("Path: " + path)
            if path != "/":
                path += "/"
            dirlist = self.getbtdirlist(path)

            dirents.extend(dirlist[1])
            self.logger.debug("Dirents: " + unicode(dirents))

            for r in dirents:
                yield fuse.Direntry(r)
        except:
            self.logger.critical(
                str("".join(traceback.format_exception(*sys.exc_info()))))
Ejemplo n.º 5
0
    def readdir(self, path, offset):
        logging.info('readdir: ' + path)
        try:
            fs = self.tdb.find_by_path(path, 'dir')
            if fs[0] == 'file':
                yield -errno.ENOTDIR
                return
            if fs[0] != 'dir':
                yield -errno.ENOENT
                return
        except TagDB.NoTagException:
            yield -errno.ENOENT
            return

        for f in fs[1]:
            if len(f) == 1:
                yield fuse.Direntry(self.tdb.files[f[0]].fname)
            else:
                yield fuse.Direntry(f[1] + '/' + self.tdb.files[f[0]].fname)

        subtags = self.getxattr(path, 'tags', 1)
        if len(subtags) != 0:
            subtags = subtags.split('/')
            for st in subtags:
                if len(st) != 0:
                    yield fuse.Direntry(st)
Ejemplo n.º 6
0
    def readdir(self, path, offset):
        """
        Return content of a directory :
            - List models for root path
            - List records for a model
            - List attachments for a record
        We don't have to check for the path, because getattr already returns -ENOENT if the model/record/attachment doesn't exist
        """
        yield fuse.Direntry('.')
        yield fuse.Direntry('..')

        paths = path.split('/')[1:]
        # List models
        if path == '/':
            model_obj = Object(self.oerp_connection, 'ir.model')
            model_ids = model_obj.search([])
            for model_data in model_obj.read(model_ids, ['model']):
                yield fuse.Direntry(model_data['model'])
        # List records
        elif len(paths) == 1:
            element_obj = Object(self.oerp_connection, paths[0])
            element_ids = element_obj.search([])
            for element_data in element_obj.read(element_ids, ['id']):
                yield fuse.Direntry(str(element_data['id']))
        # List attachments
        else:
            attachment_obj = Object(self.oerp_connection, 'ir.attachment')
            attachment_ids = attachment_obj.search([
                ('res_model', '=', paths[0]), ('res_id', '=', int(paths[1]))
            ])
            for attachment_data in attachment_obj.read(attachment_ids,
                                                       ['name']):
                yield fuse.Direntry(
                    '%d-%s' % (attachment_data['id'], attachment_data['name']))
Ejemplo n.º 7
0
    def readdir(self, path, offset):
        print self.db
        path = _path_to_docid(path)
        print "readdir: %r" % path
        for r in '.', '..':
            yield fuse.Direntry(r)

        if path == "":
            startkey = "+,\0"
            endkey = "+" + chr(ord(",") + 1)
        else:
            startkey = "+" + path + "/"
            endkey = "+" + path + chr(ord("/") + 1)
        for row in self.db.view('_all_docs', startkey=startkey,
                                endkey=endkey).rows:
            cpath = row.key
            #TODO unescape, if necessary
            print repr(cpath)
            if "," in cpath:
                prefix, cpath = cpath.split(",", 1)
                if "/" in cpath:
                    dirname, name = cpath.rsplit("/", 1)
                else:
                    name = cpath
                yield fuse.Direntry(name.encode('utf-8'))
    def readdir(self, path, offset):
        log.info("readdir(%s)" % path)
        yield fuse.Direntry('.')
        yield fuse.Direntry('..')
        if path == "/.command":
            for entry in self.readCommandDir():
                yield entry
            return

        # Get field
        fieldset = self.getField(path)
        #        if not fieldset:
        #            return -errno.ENOENT

        if path == "/":
            entry = fuse.Direntry(".command")
            entry.type = stat.S_IFREG
            yield entry

        # Format file name
        count = len(fieldset)
        if count % 10:
            count += 10 - (count % 10)
        format = "%%0%ud-%%s" % (count // 10)

        # Create entries
        for index, field in enumerate(fieldset):
            name = format % (1 + index, field.name)
            entry = fuse.Direntry(name)
            if field.is_field_set:
                entry.type = stat.S_IFDIR
            else:
                entry.type = stat.S_IFREG
            yield entry
        log.info("readdir(%s) done" % path)
Ejemplo n.º 9
0
 def readdir(self, path, offset):
     LOG(LOG.FILE, 'requesting directory listing', path)
     d = self._getObjPth(path)
     LOG(LOG.FILE, '   listing...', str(d.children))
     r = tuple([fuse.Direntry(e) for e in d.children])
     LOG(LOG.FILE, '   listing...', str(r))
     return tuple([fuse.Direntry(str(e)) for e in d.children])
Ejemplo n.º 10
0
 def readdir(self, path, offset):
     if path.startswith('/files'):
         path = '/'.join(path.split('/')[2:])
         if not path:
             for f in self.files['files']:
                 yield fuse.Direntry(f)
             for d in self.files['dirs']:
                 yield fuse.Direntry(d)
         else:
             s = path.split('/')
             workingFolder = self.files
             for f in s:
                 if workingFolder['dirs'].get(f, 0) != 0:
                     workingFolder = workingFolder['dirs'][f]
                 else:
                     raise -errno.ENOENT
             for f in workingFolder['files']:
                 yield fuse.Direntry(f)
             for d in workingFolder['dirs']:
                 yield fuse.Direntry(d)
     elif path in self.structure:
         for e in sorted(self.structure[path],
                         key=lambda x: self.structure[path][x]['type']):
             if self.structure[path][e].get('hidden'): continue
             yield fuse.Direntry(e)
Ejemplo n.º 11
0
 def readdir(self, path, offset):
     """returns the union of the sets of available files and folders from context and recontext combined"""
     print "readdir on path: ", path
     yield fuse.Direntry('.')
     yield fuse.Direntry('..')
     for e in self.generateReaddir(path, offset):
         yield fuse.Direntry(e)
Ejemplo n.º 12
0
 def readdir(self, path, offset):
     phys_path = self._physical_path(path).rstrip('/') + '/'
     for r in ('..', '.'):
         yield fuse.Direntry(r)
     for r in os.listdir(phys_path):
         virt_path = r
         debug('readdir yield: ' + virt_path)
         yield fuse.Direntry(virt_path)
Ejemplo n.º 13
0
 def readdir(self, path, offset):
     print("readdir", path, offset)
     children = xfs.list(path)
     #print(children)
     for r in '.', '..':
         yield fuse.Direntry(r)
     for r in children:
         yield fuse.Direntry(r)
Ejemplo n.º 14
0
    def readdir(self, path, offset):
        direntry = self.dirs.get(path)
        if direntry is None:
            return -errno.ENOENT

        yield fuse.Direntry('.')
        yield fuse.Direntry('..')
        for f in direntry.keys():
            yield fuse.Direntry(f)
Ejemplo n.º 15
0
 def readdir(self, path, offset):
     print "*** readdir", path, offset
     rets = [fuse.Direntry("."), fuse.Direntry("..")]
     dlist = self.__backend.readdir(path)
     for de in dlist:
         ret = fuse.Direntry(str(de.filename))
         ret.ino = de.inode_num
         rets.append(ret)
     return rets[offset:]
Ejemplo n.º 16
0
    def readdir(self, path, offset):
        directory = io.fromPath(path)

        yield fuse.Direntry('.')
        yield fuse.Direntry('..')

        children = list(directory.children())
        for c in children:
            yield fuse.Direntry(c.name())
Ejemplo n.º 17
0
 def readdir(self, *args, **kwargs):
     show = kwargs['show']
     season = kwargs['season']
     for episode in pycapi.episodes_by_season(show, season):
         name = '%02i:: %s' % (int(episode[1]), episode[2])
         yield fuse.Direntry(name + '.mp4')
         yield fuse.Direntry(name + '.srt')
         if NULLHACK:
             yield fuse.Direntry(name + '.nul')
Ejemplo n.º 18
0
	def readdir(self, path, offset):
		if self.ewf_debug:
			print "READDIR:", path, "OFFSET:", offset
		for r in  '.', '..':
			yield fuse.Direntry(r)
		for name in self.files:
			yield fuse.Direntry(name[1:])
		for name in self.partitions:
			yield fuse.Direntry(name[1:])
Ejemplo n.º 19
0
 def readdir(self, path, offset):  #Why does this have an offset?
     fileobj = self.partition.get_file(path)
     if fileobj and fileobj.isDirectory():
         dirlist = [fuse.Direntry('.'), fuse.Direntry('..')]
         for f in fileobj.files:
             dirlist.append(fuse.Direntry(f))
         return dirlist
     else:
         return -errno.ENOENT
Ejemplo n.º 20
0
    def readdir(self, path, offset):
        """
        As only the root path exists, we only have to return the default entries
        """
        yield fuse.Direntry('.')
        yield fuse.Direntry('..')

        for path in self.files:
            yield (fuse.Direntry(path))
Ejemplo n.º 21
0
 def readdir(self, path, offset):
     print '*** getdir', path
     path = self.__splitPath(path)
     if path[0] == '/':
         for dir in self.dir_structure:
             yield fuse.Direntry(str(dir))
     else:
         for file in self.generateMongoDir(path[1]):
             yield fuse.Direntry(str(file))
Ejemplo n.º 22
0
 def readdir(self, path, offset):
     #print("===", "readdir", path)
     for e in  '.', '..':
         yield fuse.Direntry(e)
     node = self._get_node(path)
     try:
         for e in node.keys():
             yield fuse.Direntry(e)
     except:
         pass
Ejemplo n.º 23
0
    def readdir(self, path, offset):
        print "*** READDIR: ", path

        yield fuse.Direntry('.')
        yield fuse.Direntry('..')
        print ":::::" + sys.argv[-2]
        for x in os.listdir(sys.argv[-2] + path):
            yield fuse.Direntry(os.path.basename(x))

        return
Ejemplo n.º 24
0
    def readdir(self, path, offset):
        # TODO: offset?

        pool = svn.core.Pool(get_pool())

        if path == '/':
            yield fuse.Direntry('head')

        for f in self.__get_files_list(path, pool) + [".", ".."]:
            yield fuse.Direntry(f)
Ejemplo n.º 25
0
 def readdir(self, path, offset):
     # TODO: Make this pay attention to offset
     node = self._find(path)
     if node is not None:  # and isinstance(node, __main__.Base):
         if node.stat.st_atime + API_TTL < time.time():
             node.fetch()
         yield fuse.Direntry('.')
         yield fuse.Direntry('..')
         for n in node.children:
             yield fuse.Direntry(n)
Ejemplo n.º 26
0
 def readdir(self, path, offset):
     assert not offset  # We don't return offsets, so offset should be unused
     res = vfs.lresolve(self.repo, path)
     dir_name, dir_item = res[-1]
     if not dir_item:
         yield -errno.ENOENT
     yield fuse.Direntry('..')
     # FIXME: make sure want_meta=False is being completely respected
     for ent_name, ent_item in vfs.contents(repo, dir_item,
                                            want_meta=False):
         yield fuse.Direntry(ent_name.replace('/', '-'))
Ejemplo n.º 27
0
    def readdir(self, offset):
        yield fuse.Direntry('.')
        yield fuse.Direntry('..')

        for page in self.virt_pages.iterkeys():
            yield fuse.Direntry(page)

        all = self.wikiproxy.getAllPages()
        for page in all:
            if page.find('/') == -1:
                yield fuse.Direntry(page)
Ejemplo n.º 28
0
    def readdir(self, path, offset):
        log.info('readdir: %s' % path)
        pDir = self.FS.get(path)
        if not pDir: return -errno.ENOENT
        if pDir.type != stat.S_IFDIR:
            return [fuse.Direntry(pDir.name)]

        files = [fuse.Direntry('.'), fuse.Direntry('..')]
        for e in pDir.entries:
            files.append(fuse.Direntry(e.name))
        return files
Ejemplo n.º 29
0
 def readdir(self, path, offset):
     try:
         yield fuse.Direntry('.')
         yield fuse.Direntry('..')
         node = self.cache.get(path, lambda x: get_node(self.video, x))
         if node:
             for item in node.content():
                 yield fuse.Direntry(item.file_system_name())
     except:
         logging.error('VdrFuseFs: Unexpected error for readdir(%s): %s' %
                       (path, format_exception_info()))
Ejemplo n.º 30
0
    def readdir(self, path, offset = None, dh = None):
        # TODO: Update timestamps: readdir updates atime
        if not self.cacheManager.exists(path):
            yield
        elif not self.cacheManager.isDirectory(path):
            yield

        yield fuse.Direntry(".")
        yield fuse.Direntry("..")
        for entry in self.cacheManager.listDirectory(path):
            yield fuse.Direntry(entry)