From 8236ef3b5613d4243f6809f33f9984d11822a7ca Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 8 Jul 2024 12:42:07 +0200 Subject: [PATCH] Xext: saver: use explicit switch/case for dispatching It's more robust / easier understandable programming style to use explicit switch statements, case'ing on the constants defined in the protocol header, instead of implicitly via a some opaque call table. It's also done this way in the other extensions, so making the code a bit more consistent. Signed-off-by: Enrico Weigelt, metux IT consult Part-of: --- Xext/saver.c | 54 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/Xext/saver.c b/Xext/saver.c index 5bbccb5f1..0a0b22c39 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -1247,21 +1247,26 @@ ProcScreenSaverSuspend(ClientPtr client) return Success; } -static int (*NormalVector[]) (ClientPtr /* client */ ) = { -ProcScreenSaverQueryVersion, - ProcScreenSaverQueryInfo, - ProcScreenSaverSelectInput, - ProcScreenSaverSetAttributes, - ProcScreenSaverUnsetAttributes, ProcScreenSaverSuspend,}; - static int ProcScreenSaverDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data < ARRAY_SIZE(NormalVector)) - return (*NormalVector[stuff->data]) (client); - return BadRequest; + switch (stuff->data) { + case X_ScreenSaverQueryVersion: + return ProcScreenSaverQueryVersion(client); + case X_ScreenSaverQueryInfo: + return ProcScreenSaverQueryInfo(client); + case X_ScreenSaverSelectInput: + return ProcScreenSaverSelectInput(client); + case X_ScreenSaverSetAttributes: + return ProcScreenSaverSetAttributes(client); + case X_ScreenSaverUnsetAttributes: + return ProcScreenSaverUnsetAttributes(client); + case X_ScreenSaverSuspend: + return ProcScreenSaverSuspend(client); + default: + return BadRequest; + } } static int _X_COLD @@ -1318,21 +1323,26 @@ SProcScreenSaverSuspend(ClientPtr client) return ProcScreenSaverSuspend(client); } -static int (*SwappedVector[]) (ClientPtr /* client */ ) = { - ProcScreenSaverQueryVersion, - SProcScreenSaverQueryInfo, - SProcScreenSaverSelectInput, - SProcScreenSaverSetAttributes, - SProcScreenSaverUnsetAttributes, SProcScreenSaverSuspend,}; - static int _X_COLD SProcScreenSaverDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data < ARRAY_SIZE(NormalVector)) - return (*SwappedVector[stuff->data]) (client); - return BadRequest; + switch (stuff->data) { + case X_ScreenSaverQueryVersion: + return ProcScreenSaverQueryVersion(client); + case X_ScreenSaverQueryInfo: + return SProcScreenSaverQueryInfo(client); + case X_ScreenSaverSelectInput: + return SProcScreenSaverSelectInput(client); + case X_ScreenSaverSetAttributes: + return SProcScreenSaverSetAttributes(client); + case X_ScreenSaverUnsetAttributes: + return SProcScreenSaverUnsetAttributes(client); + case X_ScreenSaverSuspend: + return SProcScreenSaverSuspend(client); + default: + return BadRequest; + } } void