dix: add new, combined resource lookup function. Move all dix lookup API
deprecated so far to a new file dix/deprecated.c. Remove the deprecation warnings for the time being.
This commit is contained in:
parent
63e46e4fc3
commit
ed75b05651
|
@ -8,6 +8,7 @@ libdix_la_SOURCES = \
|
|||
atom.c \
|
||||
colormap.c \
|
||||
cursor.c \
|
||||
deprecated.c \
|
||||
devices.c \
|
||||
dispatch.c \
|
||||
dispatch.h \
|
||||
|
|
162
dix/deprecated.c
Normal file
162
dix/deprecated.c
Normal file
|
@ -0,0 +1,162 @@
|
|||
/***********************************************************
|
||||
|
||||
Copyright 1987, 1998 The Open Group
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this software and its
|
||||
documentation for any purpose is hereby granted without fee, provided that
|
||||
the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of The Open Group shall not be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from The Open Group.
|
||||
|
||||
|
||||
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
SOFTWARE.
|
||||
|
||||
******************************************************************/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include "dix.h"
|
||||
#include "misc.h"
|
||||
#include "dixstruct.h"
|
||||
|
||||
/*
|
||||
* These are deprecated compatibility functions and will be marked as such
|
||||
* and removed soon!
|
||||
*
|
||||
* Please use the noted replacements instead.
|
||||
*/
|
||||
|
||||
/* replaced by dixLookupWindow */
|
||||
_X_EXPORT WindowPtr
|
||||
SecurityLookupWindow(XID id, ClientPtr client, Mask access_mode)
|
||||
{
|
||||
WindowPtr pWin;
|
||||
int i = dixLookupWindow(&pWin, id, client, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn > 0 && --warn)
|
||||
ErrorF("Warning: LookupWindow()/SecurityLookupWindow() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupWindow().\n");
|
||||
return (i == Success) ? pWin : NULL;
|
||||
}
|
||||
|
||||
/* replaced by dixLookupWindow */
|
||||
_X_EXPORT WindowPtr
|
||||
LookupWindow(XID id, ClientPtr client)
|
||||
{
|
||||
return SecurityLookupWindow(id, client, DixUnknownAccess);
|
||||
}
|
||||
|
||||
/* replaced by dixLookupDrawable */
|
||||
_X_EXPORT pointer
|
||||
SecurityLookupDrawable(XID id, ClientPtr client, Mask access_mode)
|
||||
{
|
||||
DrawablePtr pDraw;
|
||||
int i = dixLookupDrawable(&pDraw, id, client, M_DRAWABLE, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn > 0 && --warn)
|
||||
ErrorF("Warning: LookupDrawable()/SecurityLookupDrawable() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupDrawable().\n");
|
||||
return (i == Success) ? pDraw : NULL;
|
||||
}
|
||||
|
||||
/* replaced by dixLookupDrawable */
|
||||
_X_EXPORT pointer
|
||||
LookupDrawable(XID id, ClientPtr client)
|
||||
{
|
||||
return SecurityLookupDrawable(id, client, DixUnknownAccess);
|
||||
}
|
||||
|
||||
/* replaced by dixLookupClient */
|
||||
_X_EXPORT ClientPtr
|
||||
LookupClient(XID id, ClientPtr client)
|
||||
{
|
||||
ClientPtr pClient;
|
||||
int i = dixLookupClient(&pClient, id, client, DixUnknownAccess);
|
||||
static int warn = 1;
|
||||
if (warn > 0 && --warn)
|
||||
ErrorF("Warning: LookupClient() is deprecated. Please convert your "
|
||||
"driver/module to use dixLookupClient().\n");
|
||||
return (i == Success) ? pClient : NULL;
|
||||
}
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
_X_EXPORT pointer
|
||||
SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype,
|
||||
Mask access_mode)
|
||||
{
|
||||
pointer retval;
|
||||
int i = dixLookupResource(&retval, id, rtype, client, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn > 0 && --warn)
|
||||
ErrorF("Warning: LookupIDByType()/SecurityLookupIDByType() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupResource().\n");
|
||||
return (i == Success) ? retval : NULL;
|
||||
}
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
_X_EXPORT pointer
|
||||
SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes,
|
||||
Mask access_mode)
|
||||
{
|
||||
pointer retval;
|
||||
int i = dixLookupResource(&retval, id, classes, client, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn > 0 && --warn)
|
||||
ErrorF("Warning: LookupIDByClass()/SecurityLookupIDByClass() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupResource().\n");
|
||||
return (i == Success) ? retval : NULL;
|
||||
}
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
_X_EXPORT pointer
|
||||
LookupIDByType(XID id, RESTYPE rtype)
|
||||
{
|
||||
return SecurityLookupIDByType(NullClient, id, rtype, DixUnknownAccess);
|
||||
}
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
_X_EXPORT pointer
|
||||
LookupIDByClass(XID id, RESTYPE classes)
|
||||
{
|
||||
return SecurityLookupIDByClass(NullClient, id, classes, DixUnknownAccess);
|
||||
}
|
||||
|
||||
/* end deprecated functions */
|
|
@ -223,8 +223,8 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
|
|||
if (!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, access, pTmp))
|
||||
return BadDrawable;
|
||||
} else
|
||||
pTmp = (DrawablePtr)SecurityLookupIDByClass(client, id, RC_DRAWABLE,
|
||||
access);
|
||||
dixLookupResource((void **)&pTmp, id, RC_DRAWABLE, client, access);
|
||||
|
||||
if (!pTmp)
|
||||
return BadDrawable;
|
||||
if (!((1 << pTmp->type) & (type ? type : M_DRAWABLE)))
|
||||
|
@ -264,11 +264,12 @@ dixLookupGC(GCPtr *pGC, XID id, ClientPtr client, Mask access)
|
|||
_X_EXPORT int
|
||||
dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
|
||||
{
|
||||
pointer pRes = (pointer)SecurityLookupIDByClass(client, rid, RC_ANY,
|
||||
DixReadAccess);
|
||||
pointer pRes;
|
||||
int clientIndex = CLIENT_ID(rid);
|
||||
client->errorValue = rid;
|
||||
|
||||
dixLookupResource(&pRes, rid, RC_ANY, client, DixReadAccess);
|
||||
|
||||
if (clientIndex && pRes && clients[clientIndex] && !(rid & SERVER_BIT)) {
|
||||
*pClient = clients[clientIndex];
|
||||
return Success;
|
||||
|
@ -277,62 +278,6 @@ dixLookupClient(ClientPtr *pClient, XID rid, ClientPtr client, Mask access)
|
|||
return BadValue;
|
||||
}
|
||||
|
||||
/*
|
||||
* These are deprecated compatibility functions and will be removed soon!
|
||||
* Please use the new dixLookup*() functions above.
|
||||
*/
|
||||
_X_EXPORT _X_DEPRECATED WindowPtr
|
||||
SecurityLookupWindow(XID id, ClientPtr client, Mask access_mode)
|
||||
{
|
||||
WindowPtr pWin;
|
||||
int i = dixLookupWindow(&pWin, id, client, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn-- > 0)
|
||||
ErrorF("Warning: LookupWindow()/SecurityLookupWindow() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupWindow().\n");
|
||||
return (i == Success) ? pWin : NULL;
|
||||
}
|
||||
|
||||
_X_EXPORT _X_DEPRECATED WindowPtr
|
||||
LookupWindow(XID id, ClientPtr client)
|
||||
{
|
||||
return SecurityLookupWindow(id, client, DixUnknownAccess);
|
||||
}
|
||||
|
||||
_X_EXPORT _X_DEPRECATED pointer
|
||||
SecurityLookupDrawable(XID id, ClientPtr client, Mask access_mode)
|
||||
{
|
||||
DrawablePtr pDraw;
|
||||
int i = dixLookupDrawable(&pDraw, id, client, M_DRAWABLE, access_mode);
|
||||
static int warn = 1;
|
||||
if (warn-- > 0)
|
||||
ErrorF("Warning: LookupDrawable()/SecurityLookupDrawable() "
|
||||
"are deprecated. Please convert your driver/module "
|
||||
"to use dixLookupDrawable().\n");
|
||||
return (i == Success) ? pDraw : NULL;
|
||||
}
|
||||
|
||||
_X_EXPORT _X_DEPRECATED pointer
|
||||
LookupDrawable(XID id, ClientPtr client)
|
||||
{
|
||||
return SecurityLookupDrawable(id, client, DixUnknownAccess);
|
||||
}
|
||||
|
||||
_X_EXPORT _X_DEPRECATED ClientPtr
|
||||
LookupClient(XID id, ClientPtr client)
|
||||
{
|
||||
ClientPtr pClient;
|
||||
int i = dixLookupClient(&pClient, id, client, DixUnknownAccess);
|
||||
static int warn = 1;
|
||||
if (warn-- > 0)
|
||||
ErrorF("Warning: LookupClient() is deprecated. Please convert your "
|
||||
"driver/module to use dixLookupClient().\n");
|
||||
return (i == Success) ? pClient : NULL;
|
||||
}
|
||||
|
||||
/* end deprecated functions */
|
||||
|
||||
int
|
||||
AlterSaveSetForClient(ClientPtr client, WindowPtr pWin, unsigned mode,
|
||||
Bool toRoot, Bool remap)
|
||||
|
|
|
@ -899,81 +899,31 @@ LegalNewID(XID id, ClientPtr client)
|
|||
!LookupIDByClass(id, RC_ANY)));
|
||||
}
|
||||
|
||||
/* SecurityLookupIDByType and SecurityLookupIDByClass:
|
||||
* These are the heart of the resource ID security system. They take
|
||||
* two additional arguments compared to the old LookupID functions:
|
||||
* the client doing the lookup, and the access mode (see resource.h).
|
||||
* The resource is returned if it exists and the client is allowed access,
|
||||
* else NULL is returned.
|
||||
*/
|
||||
|
||||
_X_EXPORT pointer
|
||||
SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode)
|
||||
_X_EXPORT int
|
||||
dixLookupResource(pointer *result, XID id, RESTYPE rtype,
|
||||
ClientPtr client, Mask mode)
|
||||
{
|
||||
int cid;
|
||||
ResourcePtr res;
|
||||
pointer retval = NULL;
|
||||
|
||||
if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
|
||||
clientTable[cid].buckets)
|
||||
{
|
||||
res = clientTable[cid].resources[Hash(cid, id)];
|
||||
|
||||
for (; res; res = res->next)
|
||||
if ((res->id == id) && (res->type == rtype))
|
||||
{
|
||||
retval = res->value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (retval && client &&
|
||||
!XaceHook(XACE_RESOURCE_ACCESS, client, id, rtype, mode, retval))
|
||||
retval = NULL;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
_X_EXPORT pointer
|
||||
SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode)
|
||||
{
|
||||
int cid;
|
||||
int cid = CLIENT_ID(id);
|
||||
int istype = (rtype & TypeMask) && (rtype != RC_ANY);
|
||||
ResourcePtr res = NULL;
|
||||
pointer retval = NULL;
|
||||
|
||||
if (((cid = CLIENT_ID(id)) < MAXCLIENTS) &&
|
||||
clientTable[cid].buckets)
|
||||
{
|
||||
*result = NULL;
|
||||
client->errorValue = id;
|
||||
|
||||
if ((cid < MAXCLIENTS) && clientTable[cid].buckets) {
|
||||
res = clientTable[cid].resources[Hash(cid, id)];
|
||||
|
||||
for (; res; res = res->next)
|
||||
if ((res->id == id) && (res->type & classes))
|
||||
{
|
||||
retval = res->value;
|
||||
if ((res->id == id) && ((istype && res->type == rtype) ||
|
||||
(!istype && res->type & rtype)))
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (retval && client &&
|
||||
!XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type, mode, retval))
|
||||
retval = NULL;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* We can't replace the LookupIDByType and LookupIDByClass functions with
|
||||
* macros because of compatibility with loadable servers.
|
||||
*/
|
||||
|
||||
_X_EXPORT pointer
|
||||
LookupIDByType(XID id, RESTYPE rtype)
|
||||
{
|
||||
return SecurityLookupIDByType(NullClient, id, rtype,
|
||||
DixUnknownAccess);
|
||||
}
|
||||
|
||||
_X_EXPORT pointer
|
||||
LookupIDByClass(XID id, RESTYPE classes)
|
||||
{
|
||||
return SecurityLookupIDByClass(NullClient, id, classes,
|
||||
DixUnknownAccess);
|
||||
if (res) {
|
||||
if (client && !XaceHook(XACE_RESOURCE_ACCESS, client, id, res->type,
|
||||
mode, res->value))
|
||||
return BadAccess;
|
||||
*result = res->value;
|
||||
return Success;
|
||||
}
|
||||
return BadValue;
|
||||
}
|
||||
|
|
|
@ -114,6 +114,16 @@ _X_HIDDEN void *dixLookupTab[] = {
|
|||
SYMFUNC(QueryColors)
|
||||
/* cursor.c */
|
||||
SYMFUNC(FreeCursor)
|
||||
/* deprecated.c */
|
||||
SYMFUNC(LookupClient)
|
||||
SYMFUNC(LookupDrawable)
|
||||
SYMFUNC(LookupWindow)
|
||||
SYMFUNC(SecurityLookupDrawable)
|
||||
SYMFUNC(SecurityLookupWindow)
|
||||
SYMFUNC(LookupIDByType)
|
||||
SYMFUNC(LookupIDByClass)
|
||||
SYMFUNC(SecurityLookupIDByClass)
|
||||
SYMFUNC(SecurityLookupIDByType)
|
||||
/* devices.c */
|
||||
SYMFUNC(Ones)
|
||||
SYMFUNC(InitButtonClassDeviceStruct)
|
||||
|
@ -160,13 +170,6 @@ _X_HIDDEN void *dixLookupTab[] = {
|
|||
SYMFUNC(dixLookupWindow)
|
||||
SYMFUNC(dixLookupClient)
|
||||
SYMFUNC(dixLookupGC)
|
||||
/* following are deprecated */
|
||||
SYMFUNC(LookupClient)
|
||||
SYMFUNC(LookupDrawable)
|
||||
SYMFUNC(LookupWindow)
|
||||
SYMFUNC(SecurityLookupDrawable)
|
||||
SYMFUNC(SecurityLookupWindow)
|
||||
/* end deprecated */
|
||||
SYMFUNC(NoopDDA)
|
||||
SYMFUNC(QueueWorkProc)
|
||||
SYMFUNC(RegisterBlockAndWakeupHandlers)
|
||||
|
@ -287,16 +290,13 @@ _X_HIDDEN void *dixLookupTab[] = {
|
|||
SYMFUNC(ChangeResourceValue)
|
||||
SYMFUNC(CreateNewResourceClass)
|
||||
SYMFUNC(CreateNewResourceType)
|
||||
SYMFUNC(dixLookupResource)
|
||||
SYMFUNC(FakeClientID)
|
||||
SYMFUNC(FreeResource)
|
||||
SYMFUNC(FreeResourceByType)
|
||||
SYMFUNC(GetXIDList)
|
||||
SYMFUNC(GetXIDRange)
|
||||
SYMFUNC(LookupIDByType)
|
||||
SYMFUNC(LookupIDByClass)
|
||||
SYMFUNC(LegalNewID)
|
||||
SYMFUNC(SecurityLookupIDByClass)
|
||||
SYMFUNC(SecurityLookupIDByType)
|
||||
SYMFUNC(FindClientResourcesByType)
|
||||
SYMFUNC(FindAllClientResources)
|
||||
SYMVAR(lastResourceType)
|
||||
|
|
|
@ -233,17 +233,6 @@ extern int dixLookupClient(
|
|||
ClientPtr client,
|
||||
Mask access_mode);
|
||||
|
||||
/*
|
||||
* These are deprecated compatibility functions and will be removed soon!
|
||||
* Please use the new dixLookup*() functions above.
|
||||
*/
|
||||
extern WindowPtr SecurityLookupWindow(XID, ClientPtr, Mask);
|
||||
extern WindowPtr LookupWindow(XID, ClientPtr);
|
||||
extern pointer SecurityLookupDrawable(XID, ClientPtr, Mask);
|
||||
extern pointer LookupDrawable(XID, ClientPtr);
|
||||
extern ClientPtr LookupClient(XID, ClientPtr);
|
||||
/* end deprecated functions */
|
||||
|
||||
extern void NoopDDA(void);
|
||||
|
||||
extern int AlterSaveSetForClient(
|
||||
|
@ -641,4 +630,36 @@ extern int xstrcasecmp(char *s1, char *s2);
|
|||
/* ffs.c */
|
||||
extern int ffs(int i);
|
||||
|
||||
/*
|
||||
* These are deprecated compatibility functions and will be removed soon!
|
||||
* Please use the noted replacements instead.
|
||||
*/
|
||||
|
||||
/* replaced by dixLookupWindow */
|
||||
extern WindowPtr SecurityLookupWindow(
|
||||
XID id,
|
||||
ClientPtr client,
|
||||
Mask access_mode);
|
||||
|
||||
/* replaced by dixLookupWindow */
|
||||
extern WindowPtr LookupWindow(
|
||||
XID id,
|
||||
ClientPtr client);
|
||||
|
||||
/* replaced by dixLookupDrawable */
|
||||
extern pointer SecurityLookupDrawable(
|
||||
XID id,
|
||||
ClientPtr client,
|
||||
Mask access_mode);
|
||||
|
||||
/* replaced by dixLookupDrawable */
|
||||
extern pointer LookupDrawable(
|
||||
XID id,
|
||||
ClientPtr client);
|
||||
|
||||
/* replaced by dixLookupClient */
|
||||
extern ClientPtr LookupClient(
|
||||
XID id,
|
||||
ClientPtr client);
|
||||
|
||||
#endif /* DIX_H */
|
||||
|
|
|
@ -212,32 +212,18 @@ extern Bool LegalNewID(
|
|||
XID /*id*/,
|
||||
ClientPtr /*client*/);
|
||||
|
||||
extern pointer LookupIDByType(
|
||||
XID /*id*/,
|
||||
RESTYPE /*rtype*/);
|
||||
|
||||
extern pointer LookupIDByClass(
|
||||
XID /*id*/,
|
||||
RESTYPE /*classes*/);
|
||||
|
||||
extern pointer LookupClientResourceComplex(
|
||||
ClientPtr client,
|
||||
RESTYPE type,
|
||||
FindComplexResType func,
|
||||
pointer cdata);
|
||||
|
||||
extern pointer SecurityLookupIDByType(
|
||||
ClientPtr /*client*/,
|
||||
XID /*id*/,
|
||||
RESTYPE /*rtype*/,
|
||||
Mask /*access_mode*/);
|
||||
|
||||
extern pointer SecurityLookupIDByClass(
|
||||
ClientPtr /*client*/,
|
||||
XID /*id*/,
|
||||
RESTYPE /*classes*/,
|
||||
Mask /*access_mode*/);
|
||||
|
||||
extern int dixLookupResource(
|
||||
pointer *result,
|
||||
XID id,
|
||||
RESTYPE rtype,
|
||||
ClientPtr client,
|
||||
Mask access_mode);
|
||||
|
||||
extern void GetXIDRange(
|
||||
int /*client*/,
|
||||
|
@ -258,5 +244,34 @@ extern Atom *ResourceNames;
|
|||
void RegisterResourceName(RESTYPE type, char* name);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* These are deprecated compatibility functions and will be removed soon!
|
||||
* Please use the noted replacements instead.
|
||||
*/
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
extern pointer SecurityLookupIDByType(
|
||||
ClientPtr client,
|
||||
XID id,
|
||||
RESTYPE rtype,
|
||||
Mask access_mode);
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
extern pointer SecurityLookupIDByClass(
|
||||
ClientPtr client,
|
||||
XID id,
|
||||
RESTYPE classes,
|
||||
Mask access_mode);
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
extern pointer LookupIDByType(
|
||||
XID id,
|
||||
RESTYPE rtype);
|
||||
|
||||
/* replaced by dixLookupResource */
|
||||
extern pointer LookupIDByClass(
|
||||
XID id,
|
||||
RESTYPE classes);
|
||||
|
||||
#endif /* RESOURCE_H */
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user