?? aclfs.fist
字號(hào):
// warning: fist templates may not support all of the features for aclfs!mntstyle overlay;filter name;debug off;ioctl:fromuser SETACL {int u_num; int g_num;};fileformat ACLDATA {int us; int gr;};%%%op:ioctl:SETACL { if ($0.owner == %uid) { int u2, g2; if (fistGetIoctlData(SETACL, u_num, &u2) < 0 || fistGetIoctlData(SETACL, g_num, &g2) < 0) fistSetErr(EFAULT); else { fistSetFileData(".acl", ACLDATA, us, u2); fistSetFileData(".acl", ACLDATA, gr, g2); } } else fistSetErr(EPERM);}%op:lookup:postcall { if (fistLastErr() == EPERM) { int tmp_u, tmp_g; if (fistGetFileData(".acl", ACLDATA, us, tmp_u) >= 0 && fistGetFileData(".acl", ACLDATA, gr, tmp_g) >= 0 && (%uid == tmp_u || %gid == tmp_g)) { fistLookup($dir:1, name, $1, $dir:1.owner, $dir:1.group); } }}%op:lookup:precall { if (fistStrEq(name, ".acl") && $dir.owner != %uid) { fistReturnErr(ENOENT); }}%op:readdir:call { if (fistStrEq(name, ".acl")) fistSkipName(name);}%%intaclfs_encode_filename(const char *name, int length, char **encoded_name, int skip_dots, const vnode_t *vp, const vfs_t *vfsp){ int encoded_length; encoded_length = length + 1; *encoded_name = fistMalloc(encoded_length); fistMemCpy(*encoded_name, name, length); (*encoded_name)[length] = '\0'; return encoded_length;}/* returns length of decoded string, or -1 if error */intaclfs_decode_filename(const char *name, int length, char **decoded_name, int skip_dots, const vnode_t *vp, const vfs_t *vfsp){ int error = 0; *decoded_name = fistMalloc(length); fistMemCpy(*decoded_name, name, length); error = length; return error;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -