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)