github.com/olivere/camlistore@v0.0.0-20140121221811-1b7ac2da0199/lib/python/fusepy/context.py (about)

     1  #!/usr/bin/env python
     2  
     3  from errno import ENOENT
     4  from stat import S_IFDIR, S_IFREG
     5  from sys import argv, exit
     6  from time import time
     7  
     8  from fuse import FUSE, FuseOSError, Operations, LoggingMixIn, fuse_get_context
     9  
    10  
    11  class Context(LoggingMixIn, Operations):
    12      """Example filesystem to demonstrate fuse_get_context()"""
    13          
    14      def getattr(self, path, fh=None):
    15          uid, gid, pid = fuse_get_context()
    16          if path == '/':
    17              st = dict(st_mode=(S_IFDIR | 0755), st_nlink=2)
    18          elif path == '/uid':
    19              size = len('%s\n' % uid)
    20              st = dict(st_mode=(S_IFREG | 0444), st_size=size)
    21          elif path == '/gid':
    22              size = len('%s\n' % gid)
    23              st = dict(st_mode=(S_IFREG | 0444), st_size=size)
    24          elif path == '/pid':
    25              size = len('%s\n' % pid)
    26              st = dict(st_mode=(S_IFREG | 0444), st_size=size)
    27          else:
    28              raise FuseOSError(ENOENT)
    29          st['st_ctime'] = st['st_mtime'] = st['st_atime'] = time()
    30          return st
    31          
    32      def read(self, path, size, offset, fh):
    33          uid, gid, pid = fuse_get_context()
    34          if path == '/uid':
    35              return '%s\n' % uid
    36          elif path == '/gid':
    37              return '%s\n' % gid
    38          elif path == '/pid':
    39              return '%s\n' % pid
    40          return ''
    41              
    42      def readdir(self, path, fh):
    43          return ['.', '..', 'uid', 'gid', 'pid']
    44  
    45      # Disable unused operations:
    46      access = None
    47      flush = None
    48      getxattr = None
    49      listxattr = None
    50      open = None
    51      opendir = None
    52      release = None
    53      releasedir = None
    54      statfs = None
    55  
    56  
    57  if __name__ == "__main__":
    58      if len(argv) != 2:
    59          print 'usage: %s <mountpoint>' % argv[0]
    60          exit(1)
    61      fuse = FUSE(Context(), argv[1], foreground=True)