| 1 | from afs._util cimport * | 
|---|
| 2 | from afs._util import pyafs_error | 
|---|
| 3 |  | 
|---|
| 4 | cdef extern from "afs/prs_fs.h": | 
|---|
| 5 |     enum: | 
|---|
| 6 |         PRSFS_READ, PRSFS_WRITE, PRSFS_INSERT, PRSFS_LOOKUP, | 
|---|
| 7 |         PRSFS_DELETE, PRSFS_LOCK, PRSFS_ADMINISTER, | 
|---|
| 8 |         PRSFS_USR0, PRSFS_USR1, PRSFS_USR2, PRSFS_USR2, PRSFS_USR3, | 
|---|
| 9 |         PRSFS_USR4, PRSFS_USR5, PRSFS_USR6, PRSFS_USR7 | 
|---|
| 10 |  | 
|---|
| 11 | # This is defined in afs/afs.h, but I can't figure how to include the | 
|---|
| 12 | # header. Also, venus/fs.c redefines the struct, so why not! | 
|---|
| 13 | cdef struct vcxstat2: | 
|---|
| 14 |     afs_int32 callerAccess | 
|---|
| 15 |     afs_int32 cbExpires | 
|---|
| 16 |     afs_int32 anyAccess | 
|---|
| 17 |     char mvstat | 
|---|
| 18 |  | 
|---|
| 19 | READ = PRSFS_READ | 
|---|
| 20 | WRITE = PRSFS_WRITE | 
|---|
| 21 | INSERT = PRSFS_INSERT | 
|---|
| 22 | LOOKUP = PRSFS_LOOKUP | 
|---|
| 23 | DELETE = PRSFS_DELETE | 
|---|
| 24 | LOCK = PRSFS_LOCK | 
|---|
| 25 | ADMINISTER = PRSFS_ADMINISTER | 
|---|
| 26 | USR0 = PRSFS_USR0 | 
|---|
| 27 | USR1 = PRSFS_USR1 | 
|---|
| 28 | USR2 = PRSFS_USR2 | 
|---|
| 29 | USR3 = PRSFS_USR3 | 
|---|
| 30 | USR4 = PRSFS_USR4 | 
|---|
| 31 | USR5 = PRSFS_USR5 | 
|---|
| 32 | USR6 = PRSFS_USR6 | 
|---|
| 33 | USR7 = PRSFS_USR7 | 
|---|
| 34 |  | 
|---|
| 35 | DEF MAXSIZE = 2048 | 
|---|
| 36 |  | 
|---|
| 37 | def getAcl(char* dir, int follow=1): | 
|---|
| 38 |     cdef char space[MAXSIZE] | 
|---|
| 39 |     pioctl_read(dir, VIOCGETAL, space, MAXSIZE, follow) | 
|---|
| 40 |     return space | 
|---|
| 41 |  | 
|---|
| 42 | def getCallerAccess(char *dir, int follow=1): | 
|---|
| 43 |     cdef vcxstat2 stat | 
|---|
| 44 |     pioctl_read(dir, VIOC_GETVCXSTATUS2, <void*>&stat, sizeof(vcxstat2), follow) | 
|---|
| 45 |     return stat.callerAccess | 
|---|
| 46 |  | 
|---|
| 47 | def setAcl(char* dir, char* acl, int follow=1): | 
|---|
| 48 |     pioctl_write(dir, VIOCSETAL, acl, follow) | 
|---|