dix: registry: add LookupDixAccessName()

Helper for converting Xace access masks to human-readable text.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-01-26 21:15:19 +01:00
parent c4632a40dc
commit c092df17a8
2 changed files with 45 additions and 0 deletions

View File

@ -260,6 +260,49 @@ LookupErrorName(int error)
}
#endif /* X_REGISTRY_REQUEST */
static inline void __accbit(Mask val, Mask mask, const char* name, char *buf, int sz) {
if ((val & mask) == mask) {
if (buf[0])
strncat(buf, ",", sz);
strncat(buf, name, sz);
}
}
void
LookupDixAccessName(Mask acc, char *buf, int sz) {
buf[0] = 0;
__accbit(acc, DixReadAccess, "Read", buf, sz);
__accbit(acc, DixWriteAccess, "Write", buf, sz);
__accbit(acc, DixDestroyAccess, "Destroy", buf, sz);
__accbit(acc, DixCreateAccess, "Create", buf, sz);
__accbit(acc, DixGetAttrAccess, "GetAttr", buf, sz);
__accbit(acc, DixSetAttrAccess, "SetAttr", buf, sz);
__accbit(acc, DixListPropAccess, "ListProp", buf, sz);
__accbit(acc, DixGetPropAccess, "GetProp", buf, sz);
__accbit(acc, DixSetPropAccess, "SetProp", buf, sz);
__accbit(acc, DixGetFocusAccess, "GetFocus", buf, sz);
__accbit(acc, DixSetFocusAccess, "SetFocus", buf, sz);
__accbit(acc, DixListAccess, "List", buf, sz);
__accbit(acc, DixAddAccess, "Add", buf, sz);
__accbit(acc, DixRemoveAccess, "Remove", buf, sz);
__accbit(acc, DixHideAccess, "Hide", buf, sz);
__accbit(acc, DixShowAccess, "Show", buf, sz);
__accbit(acc, DixBlendAccess, "Blend", buf, sz);
__accbit(acc, DixGrabAccess, "Grab", buf, sz);
__accbit(acc, DixFreezeAccess, "Freeze", buf, sz);
__accbit(acc, DixForceAccess, "Force", buf, sz);
__accbit(acc, DixInstallAccess, "Install", buf, sz);
__accbit(acc, DixUninstallAccess, "Uninstall", buf, sz);
__accbit(acc, DixSendAccess, "Send", buf, sz);
__accbit(acc, DixReceiveAccess, "Receive", buf, sz);
__accbit(acc, DixUseAccess, "Use", buf, sz);
__accbit(acc, DixManageAccess, "Manage", buf, sz);
__accbit(acc, DixDebugAccess, "Debug", buf, sz);
__accbit(acc, DixBellAccess, "Bell", buf, sz);
__accbit(acc, DixPostAccess, "Post", buf, sz);
buf[sz-1] = 0;
}
#ifdef X_REGISTRY_RESOURCE
/*
* Resource registry functions

View File

@ -34,4 +34,6 @@ const char *LookupRequestName(int major, int minor);
const char *LookupEventName(int event);
const char *LookupErrorName(int error);
void LookupDixAccessName(Mask acc, char *buf, int sz);
#endif /* _XSERVER_DIX_REGISTRY_H */