From e7291758ac0b3316a4776e2bc7b09b4f523089fe Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Mon, 8 Jul 2024 12:42:07 +0200 Subject: [PATCH] (submit/xext-saver) 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 --- Xext/saver.c | 54 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/Xext/saver.c b/Xext/saver.c index 4de23a296..4bad445bd 100644 --- a/Xext/saver.c +++ b/Xext/saver.c @@ -1244,21 +1244,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 @@ -1315,21 +1320,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