diff --git a/dix/registry.c b/dix/registry.c index 02b42d46a..10fa21f84 100644 --- a/dix/registry.c +++ b/dix/registry.c @@ -217,6 +217,25 @@ LookupRequestName(int major, int minor) return requests[major][minor] ? requests[major][minor] : XREGISTRY_UNKNOWN; } +const char * +LookupMajorName(int major) +{ + if (major < 128) { + const char *retval; + + if (major >= nmajor) + return XREGISTRY_UNKNOWN; + if (0 >= nminor[major]) + return XREGISTRY_UNKNOWN; + + retval = requests[major][0]; + return retval ? retval + sizeof(CORE) : XREGISTRY_UNKNOWN; + } else { + ExtensionEntry *extEntry = GetExtensionEntry(major); + return extEntry ? extEntry->name : XREGISTRY_UNKNOWN; + } +} + const char * LookupEventName(int event) { diff --git a/hw/xfree86/loader/dixsym.c b/hw/xfree86/loader/dixsym.c index 79cc6e79e..49c7d271b 100644 --- a/hw/xfree86/loader/dixsym.c +++ b/hw/xfree86/loader/dixsym.c @@ -289,6 +289,11 @@ _X_HIDDEN void *dixLookupTab[] = { /* registry.c */ #ifdef XREGISTRY SYMFUNC(RegisterResourceName) + SYMFUNC(LookupMajorName) + SYMFUNC(LookupRequestName) + SYMFUNC(LookupEventName) + SYMFUNC(LookupErrorName) + SYMFUNC(LookupResourceName) #endif /* swaprep.c */ SYMFUNC(CopySwap32Write) diff --git a/include/registry.h b/include/registry.h index 90c3de367..edd6ef9a7 100644 --- a/include/registry.h +++ b/include/registry.h @@ -29,6 +29,7 @@ void RegisterExtensionNames(ExtensionEntry *ext); /* * Lookup functions. The returned string must not be modified or freed. */ +const char *LookupMajorName(int major); const char *LookupRequestName(int major, int minor); const char *LookupEventName(int event); const char *LookupErrorName(int error); @@ -51,6 +52,7 @@ void dixResetRegistry(void); #define RegisterResourceName(a, b) { ; } #define RegisterExtensionNames(a) { ; } +#define LookupMajorName(a) XREGISTRY_UNKNOWN #define LookupRequestName(a, b) XREGISTRY_UNKNOWN #define LookupEventName(a) XREGISTRY_UNKNOWN #define LookupErrorName(a) XREGISTRY_UNKNOWN