Changeset 5569

Show
Ignore:
Timestamp:
07/17/12 16:23:55 (7 years ago)
Author:
cmatthew
Message:

Fixed some formatting.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • seattle/branches/nacl_repy/fuse/lind_fuse.py

    r5555 r5569  
    3535 
    3636 
    37 # pull in some spaghetti to make this stuff work without fuse-py being installed 
     37# pull in some spaghetti to make this stuff work without 
     38# fuse-py being installed 
    3839try: 
    3940    import _find_fuse_parts 
     
    4647LOGGING = False 
    4748 
     49 
    4850def log(*messages): 
    4951    if LOGGING: 
    50        print ' '.join(map(str, messages)) 
     52        print ' '.join(map(str, messages)) 
     53 
    5154 
    5255# Convert a string errno value to the numeric value 
     
    8992    'ERANGE': 34,       # Math result not representable 
    9093 
    91     'EDEADLK':35,       # Resource deadlock would occur 
    92     'ENAMETOOLONG':36,  # File name too long 
    93     'ENOLCK':37,  # No record locks available 
    94     'ENOSYS':38,        # Function not implemented 
    95     'ENOTEMPTY':39,     # Directory not empty 
    96     'ELOOP':40, # Too many symbolic links encountered 
    97 #    'EWOULDBLOCK':EAGAIN,      # Operation would block 
    98     'ENOMSG':42,        # No message of desired type 
    99     'EIDRM':43, # Identifier removed 
    100     'ECHRNG':44,        # Channel number out of range 
    101     'EL2NSYNC':45,      # Level 2 not synchronized 
    102     'EL3HLT':46,        # Level 3 halted 
    103     'EL3RST':47,        # Level 3 reset 
    104     'ELNRNG':48,        # Link number out of range 
    105     'EUNATCH':49,       # Protocol driver not attached 
    106     'ENOCSI':50,        # No CSI structure available 
    107     'EL2HLT':51,        # Level 2 halted 
    108     'EBADE':52, # Invalid exchange 
    109     'EBADR':53, # Invalid request descriptor 
    110     'EXFULL':54,        # Exchange full 
    111     'ENOANO':55,        # No anode 
    112     'EBADRQC':56,       # Invalid request code 
    113     'EBADSLT':57,       # Invalid slot 
    114     'EBFONT':59,        # Bad font file format 
    115     'ENOSTR':60,        # Device not a stream 
    116     'ENODATA':61,       # No data available 
    117     'ETIME':62, # Timer expired 
    118     'ENOSR':63, # Out of streams resources 
    119     'ENONET':64,        # Machine is not on the network 
    120     'ENOPKG':65,        # Package not installed 
    121     'EREMOTE':66,       # Object is remote 
    122     'ENOLINK':67,       # Link has been severed 
    123     'EADV':68,  # Advertise error 
    124     'ESRMNT':69,        # Srmount error 
    125     'ECOMM':70, # Communication error on send 
    126     'EPROTO':71,        # Protocol error 
    127     'EMULTIHOP':72,     # Multihop attempted 
    128     'EDOTDOT':73,       # RFS specific error 
    129     'EBADMSG':74,       # Not a data message 
    130     'EOVERFLOW':75,     # Value too large for defined data type 
    131     'ENOTUNIQ':76,      # Name not unique on network 
    132     'EBADFD':77,        # File descriptor in bad state 
    133     'EREMCHG':78,       # Remote address changed 
    134     'ELIBACC':79,       # Can not access a needed shared library 
    135     'ELIBBAD':80,       # Accessing a corrupted shared library 
    136     'ELIBSCN':81,       # .lib section in a.out corrupted 
    137     'ELIBMAX':82,       # Attempting to link in too many shared libraries 
    138     'ELIBEXEC':83,      # Cannot exec a shared library directly 
    139     'EILSEQ':84,        # Illegal byte sequence 
    140     'ERESTART':85,      # Interrupted system call should be restarted 
    141     'ESTRPIPE':86,      # Streams pipe error 
    142     'EUSERS':87,        # Too many users 
    143     'ENOTSOCK':88,      # Socket operation on non-socket 
    144     'EDESTADDRREQ':89,  # Destination address required 
    145     'EMSGSIZE':90,      # Message too long 
    146     'EPROTOTYPE':91,    # Protocol wrong type for socket 
    147     'ENOPROTOOPT':92,   # Protocol not available 
    148     'EPROTONOSUPPORT':93,       # Protocol not supported 
    149     'ESOCKTNOSUPPORT':94,       # Socket type not supported 
    150     'EOPNOTSUPP':95,    # Operation not supported on transport endpoint 
    151     'EPFNOSUPPORT':96,  # Protocol family not supported 
    152     'EAFNOSUPPORT':97,  # Address family not supported by protocol 
    153     'EADDRINUSE':98,    # Address already in use 
    154     'EADDRNOTAVAIL':99, # Cannot assign requested address 
    155     'ENETDOWN':100,     # Network is down 
    156     'ENETUNREACH':101,  # Network is unreachable 
    157     'ENETRESET':102,    # Network dropped connection because of reset 
    158     'ECONNABORTED':103, # Software caused connection abort 
    159     'ECONNRESET':104,   # Connection reset by peer 
    160     'ENOBUFS':105,      # No buffer space available 
    161     'EISCONN':106,      # Transport endpoint is already connected 
    162     'ENOTCONN':107,     # Transport endpoint is not connected 
    163     'ESHUTDOWN':108,    # Cannot send after transport endpoint shutdown 
    164     'ETOOMANYREFS':109, # Too many references: cannot splice 
    165     'ETIMEDOUT':110,    # Connection timed out 
    166     'ECONNREFUSED':111, # Connection refused 
    167     'EHOSTDOWN':112,    # Host is down 
    168     'EHOSTUNREACH':113, # No route to host 
    169     'EALREADY':114,     # Operation already in progress 
    170     'EINPROGRESS':115,  # Operation now in progress 
    171     'ESTALE':116,       # Stale NFS file handle 
    172     'EUCLEAN':117,      # Structure needs cleaning 
    173     'ENOTNAM':118,      # Not a XENIX named type file 
    174     'ENAVAIL':119,      # No XENIX semaphores available 
    175     'EISNAM':120,       # Is a named type file 
    176     'EREMOTEIO':121,    # Remote I/O error 
    177     'EDQUOT':122,       # Quota exceeded 
    178     'ENOMEDIUM':123,    # No medium found 
    179     'EMEDIUMTYPE':124,  # Wrong medium type 
    180     'ECANCELED':125,    # Operation Canceled 
    181     'ENOKEY':126,       # Required key not available 
    182     'EKEYEXPIRED':127,  # Key has expired 
    183     'EKEYREVOKED':128,  # Key has been revoked 
    184     'EKEYREJECTED':129, # Key was rejected by service 
     94    'EDEADLK': 35,      # Resource deadlock would occur 
     95    'ENAMETOOLONG': 36, # File name too long 
     96    'ENOLCK': 37,  # No record locks available 
     97    'ENOSYS': 38,       # Function not implemented 
     98    'ENOTEMPTY': 39,    # Directory not empty 
     99    'ELOOP': 40,        # Too many symbolic links encountered 
     100#    'EWOULDBLOCK': EAGAIN,     # Operation would block 
     101    'ENOMSG': 42,       # No message of desired type 
     102    'EIDRM': 43,        # Identifier removed 
     103    'ECHRNG': 44,       # Channel number out of range 
     104    'EL2NSYNC': 45,     # Level 2 not synchronized 
     105    'EL3HLT': 46,       # Level 3 halted 
     106    'EL3RST': 47,       # Level 3 reset 
     107    'ELNRNG': 48,       # Link number out of range 
     108    'EUNATCH': 49,      # Protocol driver not attached 
     109    'ENOCSI': 50,       # No CSI structure available 
     110    'EL2HLT': 51,       # Level 2 halted 
     111    'EBADE': 52,        # Invalid exchange 
     112    'EBADR': 53,        # Invalid request descriptor 
     113    'EXFULL': 54,       # Exchange full 
     114    'ENOANO': 55,       # No anode 
     115    'EBADRQC': 56,      # Invalid request code 
     116    'EBADSLT': 57,      # Invalid slot 
     117    'EBFONT': 59,       # Bad font file format 
     118    'ENOSTR': 60,       # Device not a stream 
     119    'ENODATA': 61,      # No data available 
     120    'ETIME': 62,        # Timer expired 
     121    'ENOSR': 63,        # Out of streams resources 
     122    'ENONET': 64,       # Machine is not on the network 
     123    'ENOPKG': 65,       # Package not installed 
     124    'EREMOTE': 66,      # Object is remote 
     125    'ENOLINK': 67,      # Link has been severed 
     126    'EADV': 68, # Advertise error 
     127    'ESRMNT': 69,       # Srmount error 
     128    'ECOMM': 70,        # Communication error on send 
     129    'EPROTO': 71,       # Protocol error 
     130    'EMULTIHOP': 72,    # Multihop attempted 
     131    'EDOTDOT': 73,      # RFS specific error 
     132    'EBADMSG': 74,      # Not a data message 
     133    'EOVERFLOW': 75,    # Value too large for defined data type 
     134    'ENOTUNIQ': 76,     # Name not unique on network 
     135    'EBADFD': 77,       # File descriptor in bad state 
     136    'EREMCHG': 78,      # Remote address changed 
     137    'ELIBACC': 79,      # Can not access a needed shared library 
     138    'ELIBBAD': 80,      # Accessing a corrupted shared library 
     139    'ELIBSCN': 81,      # .lib section in a.out corrupted 
     140    'ELIBMAX': 82,      # Attempting to link in too many shared libraries 
     141    'ELIBEXEC': 83,     # Cannot exec a shared library directly 
     142    'EILSEQ': 84,       # Illegal byte sequence 
     143    'ERESTART': 85,     # Interrupted system call should be restarted 
     144    'ESTRPIPE': 86,     # Streams pipe error 
     145    'EUSERS': 87,       # Too many users 
     146    'ENOTSOCK': 88,     # Socket operation on non-socket 
     147    'EDESTADDRREQ': 89, # Destination address required 
     148    'EMSGSIZE': 90,     # Message too long 
     149    'EPROTOTYPE': 91,   # Protocol wrong type for socket 
     150    'ENOPROTOOPT': 92,  # Protocol not available 
     151    'EPROTONOSUPPORT': 93,      # Protocol not supported 
     152    'ESOCKTNOSUPPORT': 94,      # Socket type not supported 
     153    'EOPNOTSUPP': 95,   # Operation not supported on transport endpoint 
     154    'EPFNOSUPPORT': 96, # Protocol family not supported 
     155    'EAFNOSUPPORT': 97, # Address family not supported by protocol 
     156    'EADDRINUSE': 98,   # Address already in use 
     157    'EADDRNOTAVAIL': 99,        # Cannot assign requested address 
     158    'ENETDOWN': 100,    # Network is down 
     159    'ENETUNREACH': 101, # Network is unreachable 
     160    'ENETRESET': 102,   # Network dropped connection because of reset 
     161    'ECONNABORTED': 103,        # Software caused connection abort 
     162    'ECONNRESET': 104,  # Connection reset by peer 
     163    'ENOBUFS': 105,     # No buffer space available 
     164    'EISCONN': 106,     # Transport endpoint is already connected 
     165    'ENOTCONN': 107,    # Transport endpoint is not connected 
     166    'ESHUTDOWN': 108,   # Cannot send after transport endpoint shutdown 
     167    'ETOOMANYREFS': 109,        # Too many references: cannot splice 
     168    'ETIMEDOUT': 110,   # Connection timed out 
     169    'ECONNREFUSED': 111,        # Connection refused 
     170    'EHOSTDOWN': 112,   # Host is down 
     171    'EHOSTUNREACH': 113,        # No route to host 
     172    'EALREADY': 114,    # Operation already in progress 
     173    'EINPROGRESS': 115, # Operation now in progress 
     174    'ESTALE': 116,      # Stale NFS file handle 
     175    'EUCLEAN': 117,     # Structure needs cleaning 
     176    'ENOTNAM': 118,     # Not a XENIX named type file 
     177    'ENAVAIL': 119,     # No XENIX semaphores available 
     178    'EISNAM': 120,      # Is a named type file 
     179    'EREMOTEIO': 121,   # Remote I/O error 
     180    'EDQUOT': 122,      # Quota exceeded 
     181    'ENOMEDIUM': 123,   # No medium found 
     182    'EMEDIUMTYPE': 124, # Wrong medium type 
     183    'ECANCELED': 125,   # Operation Canceled 
     184    'ENOKEY': 126,      # Required key not available 
     185    'EKEYEXPIRED': 127, # Key has expired 
     186    'EKEYREVOKED': 128, # Key has been revoked 
     187    'EKEYREJECTED': 129,        # Key was rejected by service 
    185188    # for robust mutexes 
    186     'EOWNERDEAD':130,   # Owner died 
    187     'ENOTRECOVERABLE':131} # State not recoverable 
     189    'EOWNERDEAD': 130,  # Owner died 
     190    'ENOTRECOVERABLE': 131} # State not recoverable 
    188191 
    189192 
    190193if not hasattr(fuse, '__version__'): 
    191     raise RuntimeError, \ 
    192         "your fuse-py doesn't know of fuse.__version__, probably it's too old." 
     194    raise RuntimeError("your fuse-py doesn't know of fuse.__version__," 
     195                       " probably it's too old.") 
    193196 
    194197 
     
    207210 
    208211    """ 
     212 
    209213    def __init__(self): 
    210214        self.st_mode = 0 
     
    228232 
    229233    """ 
     234 
    230235    def __init__(self): 
    231236        self.f_bsize = 0  # preferred size of file  blocks, in bytes 
     
    248253        self.root = '/' 
    249254 
    250  
    251255    def getattr(self, path): 
    252256        log("getattr", path) 
     
    255259        except lind.SyscallError, e: 
    256260            return -errno[e[1]] 
    257         devid, inode, mode, linkcount, uid, gid, rdev,size, blocksize, blocks, \ 
    258                atime, atimens, mtime, mtimens, ctime, ctimens = stats 
     261        devid, inode, mode, linkcount, uid, gid, rdev, size, blocksize,\ 
     262               blocks, atime, atimens, mtime, mtimens, ctime, \ 
     263               ctimens = stats 
    259264        st = LindFileStat() 
    260265 
     
    277282        return st 
    278283 
    279  
    280284    def readlink(self, path): 
    281285        log("readlink (unimplemented)", path) 
    282         return -errno["ENOSYS"] 
    283  
     286        return - errno["ENOSYS"] 
    284287 
    285288    def readdir(self, path, offset): 
    286289        log("readdir", path, offset) 
    287290        lindfd = lind.open_syscall(path, lind.O_RDONLY, lind.S_IRWXU) 
    288         dents = map(lambda x:x[1], lind.getdents_syscall(lindfd, 999)) 
     291        dents = map(lambda x: x[1], lind.getdents_syscall(lindfd, 999)) 
    289292 
    290293        assert len(dents) < 998, "Readdir max was hit..." 
     
    292295            yield fuse.Direntry(e) 
    293296 
    294  
    295297    def unlink(self, path): 
    296298        log("unlink (unimplemented)", path) 
    297299        return -errno["ENOSYS"] 
    298300 
    299  
    300301    def rmdir(self, path): 
    301302        log("rmdir", path) 
     
    306307        return ret 
    307308 
    308  
    309309    def symlink(self, path, path1): 
    310310        log("symlink", path, path1) 
     
    314314            ret = -errno[e[1]] 
    315315        return ret 
    316  
    317316 
    318317    def rename(self, path, path1): 
     
    320319        return -errno["ENOSYS"] 
    321320 
    322  
    323321    def link(self, path, path1): 
    324322        log("link", path, path1) 
     
    328326            ret = -errno[e[1]] 
    329327        return ret 
    330  
    331328 
    332329    def chmod(self, path, mode): 
     
    334331        return -errno["ENOSYS"] 
    335332 
    336  
    337333    def chown(self, path, user, group): 
    338334        log("chown (unimplemented)", path, user, group) 
    339335        return -errno["ENOSYS"] 
    340336 
    341  
    342337    def truncate(self, path, len): 
    343338        log("truncate (unimplemented)", path, len) 
    344339        return -errno["ENOSYS"] 
    345340 
    346  
    347341    def mknod(self, path, mode, dev): 
    348342        log("mknod (unimplemented)", path, mode, dev) 
    349343        return -errno["ENOSYS"] 
    350344 
    351  
    352345    def mkdir(self, path, mode): 
    353346        log("mkdir", path, mode) 
     
    358351        return ret 
    359352 
    360  
    361353    def utime(self, path, times): 
    362354        log("utime (unimplemented)", path, times) 
    363355 
    364  
    365356    def access(self, path, mode): 
    366357        log("access", path, hex(mode)) 
     
    370361            ret = -errno[e[1]] 
    371362        return ret 
    372  
    373363 
    374364    def statfs(self): 
     
    389379        return st 
    390380 
    391  
    392381    def fsinit(self): 
    393382        print "Starting Lindfs" 
    394  
    395383 
    396384    class LindFuseFSFile(object): 
     
    404392 
    405393            self.fd = lindfd 
    406  
    407394 
    408395        def read(self, length, offset): 
     
    415402 
    416403            return ret 
    417  
    418404 
    419405        def write(self, buf, offset): 
     
    426412            return ret 
    427413 
    428  
    429414        def release(self, flags): 
    430415            log("close", self.fd, flags) 
    431416            return lind.close_syscall(self.fd) 
    432417 
    433  
    434418        def _fflush(self): 
    435419            log("flush", self.fd) 
    436420            return 0 
    437  
    438421 
    439422        def fsync(self, isfsyncfile): 
     
    442425            return 0 
    443426 
    444  
    445427        def flush(self): 
    446428            return self._fflush() 
    447  
    448429 
    449430        def fgetattr(self): 
     
    453434            except lind.SyscallError, e: 
    454435                return -errno[e[1]] 
    455             devid, inode, mode, linkcount, uid, gid, rdev,size, blocksize, blocks, \ 
    456                 atime, atimens, mtime, mtimens, ctime, ctimens = stats 
     436            devid, inode, mode, linkcount, uid, gid, rdev, size, blocksize,\ 
     437                   blocks, atime, atimens, mtime, mtimens, ctime,\ 
     438                   ctimens = stats 
    457439            st = LindFileStat() 
    458440            st.st_mode = mode # stat.S_IFREG | 0444 
     
    469451            return st 
    470452 
    471  
    472453        def ftruncate(self, len): 
    473454            return -errno["ENOSYS"] 
    474455 
    475  
    476456        def lock(self, cmd, owner, **kw): 
    477457            return -errno["ENOSYS"] 
    478  
    479458 
    480459    def main(self, *a, **kw): 
     
    506485 
    507486    server.parser.add_option("-v", "--verbose", 
    508                              action="store_true", dest="verbose", default=False, 
    509                              help="print extra information about what system calls are being called.") 
     487                             action="store_true", 
     488                             dest="verbose", 
     489                             default=False, 
     490                             help="print extra information about which system" 
     491                             " calls are being called.") 
    510492 
    511493    server.parser.add_option(mountopt="root", metavar="PATH", default='/', 
    512                              help="mirror filesystem from under PATH [default: %default]") 
     494                             help="mirror filesystem from under PATH " 
     495                             "[default: %default]") 
    513496    server.parse(values=server, errex=1) 
    514497