mirror of https://github.com/perkeep/perkeep.git
61 lines
1.7 KiB
Python
Executable File
61 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from errno import ENOENT
|
|
from stat import S_IFDIR, S_IFREG
|
|
from sys import argv, exit
|
|
from time import time
|
|
|
|
from fuse import FUSE, FuseOSError, Operations, LoggingMixIn, fuse_get_context
|
|
|
|
|
|
class Context(LoggingMixIn, Operations):
|
|
"""Example filesystem to demonstrate fuse_get_context()"""
|
|
|
|
def getattr(self, path, fh=None):
|
|
uid, gid, pid = fuse_get_context()
|
|
if path == '/':
|
|
st = dict(st_mode=(S_IFDIR | 0755), st_nlink=2)
|
|
elif path == '/uid':
|
|
size = len('%s\n' % uid)
|
|
st = dict(st_mode=(S_IFREG | 0444), st_size=size)
|
|
elif path == '/gid':
|
|
size = len('%s\n' % gid)
|
|
st = dict(st_mode=(S_IFREG | 0444), st_size=size)
|
|
elif path == '/pid':
|
|
size = len('%s\n' % pid)
|
|
st = dict(st_mode=(S_IFREG | 0444), st_size=size)
|
|
else:
|
|
raise FuseOSError(ENOENT)
|
|
st['st_ctime'] = st['st_mtime'] = st['st_atime'] = time()
|
|
return st
|
|
|
|
def read(self, path, size, offset, fh):
|
|
uid, gid, pid = fuse_get_context()
|
|
if path == '/uid':
|
|
return '%s\n' % uid
|
|
elif path == '/gid':
|
|
return '%s\n' % gid
|
|
elif path == '/pid':
|
|
return '%s\n' % pid
|
|
return ''
|
|
|
|
def readdir(self, path, fh):
|
|
return ['.', '..', 'uid', 'gid', 'pid']
|
|
|
|
# Disable unused operations:
|
|
access = None
|
|
flush = None
|
|
getxattr = None
|
|
listxattr = None
|
|
open = None
|
|
opendir = None
|
|
release = None
|
|
releasedir = None
|
|
statfs = None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if len(argv) != 2:
|
|
print 'usage: %s <mountpoint>' % argv[0]
|
|
exit(1)
|
|
fuse = FUSE(Context(), argv[1], foreground=True) |