[PATCH xserver 10/19] loader: Remove silly "unspecified" version handling
Emil Velikov
emil.l.velikov at gmail.com
Wed Jan 25 00:23:14 UTC 2017
On 23 January 2017 at 19:32, Adam Jackson <ajax at redhat.com> wrote:
> Nobody who is using this functionality is ever not specifying a major
> version, which makes sense. If you don't care about a minor version,
> that's equivalent to saying you require minor >= 0, so just say so;
> likewise patch level.
>
> Likewise nobody using this functionality is ever not specifying an ABI
> class.
>
>From a person how's native language extensively uses double negatives
- the ones used above are a bit confusing.
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
> hw/xfree86/common/xf86Module.h | 6 ------
> hw/xfree86/doc/ddxDesign.xml | 20 +++++++++---------
> hw/xfree86/loader/loadmod.c | 47 +++++++++++++++++-------------------------
> 3 files changed, 29 insertions(+), 44 deletions(-)
>
> diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
> index ff0e23e..faea07f 100644
> --- a/hw/xfree86/common/xf86Module.h
> +++ b/hw/xfree86/common/xf86Module.h
> @@ -141,12 +141,6 @@ typedef struct {
> const char *moduleclass; /* module class */
> } XF86ModReqInfo;
>
> -/* values to indicate unspecified fields in XF86ModReqInfo. */
> -#define MAJOR_UNSPEC 0xFF
> -#define MINOR_UNSPEC 0xFF
> -#define PATCH_UNSPEC 0xFFFF
> -#define ABI_VERS_UNSPEC 0xFFFFFFFF
> -
> #define MODULE_VERSION_NUMERIC(maj, min, patch) \
> ((((maj) & 0xFF) << 24) | (((min) & 0xFF) << 16) | (patch & 0xFFFF))
> #define GET_MODULE_MAJOR_VERSION(vers) (((vers) >> 24) & 0xFF)
> diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml
> index 2ff2894..05ee042 100644
> --- a/hw/xfree86/doc/ddxDesign.xml
> +++ b/hw/xfree86/doc/ddxDesign.xml
> @@ -5293,12 +5293,12 @@ XFree86 common layer.
> as follows:
> <programlisting>
> typedef struct {
> - CARD8 majorversion; /* MAJOR_UNSPEC */
> - CARD8 minorversion; /* MINOR_UNSPEC */
> - CARD16 patchlevel; /* PATCH_UNSPEC */
> - const char * abiclass; /* ABI_CLASS_NONE */
> - CARD32 abiversion; /* ABI_VERS_UNSPEC */
> - const char * moduleclass; /* MOD_CLASS_NONE */
> + CARD8 majorversion;
> + CARD8 minorversion;
> + CARD16 patchlevel;
> + const char * abiclass;
> + CARD32 abiversion;
> + const char * moduleclass;
> } XF86ModReqInfo;
> </programlisting>
>
> @@ -5323,8 +5323,8 @@ typedef struct {
> The module's minor version must be
> no less than this value. This
> comparison is only made if
> - <structfield>majorversion</structfield> is
> - specified and matches.
> + <structfield>majorversion</structfield>
> + matches.
> </para></listitem></varlistentry>
>
> <varlistentry>
> @@ -5333,8 +5333,8 @@ typedef struct {
> The module's patchlevel must be no
> less than this value. This comparison
> is only made if
> - <structfield>minorversion</structfield> is
> - specified and matches.
> + <structfield>minorversion</structfield>
> + matches.
> </para></listitem></varlistentry>
>
> <varlistentry>
> diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
> index 85689be..528cc88 100644
> --- a/hw/xfree86/loader/loadmod.c
> +++ b/hw/xfree86/loader/loadmod.c
> @@ -617,32 +617,24 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
>
> /* Check against requirements that the caller has specified */
> if (req) {
> - if (req->majorversion != MAJOR_UNSPEC) {
> - if (data->majorversion != req->majorversion) {
> - LogMessageVerb(X_WARNING, 2, "%s: module major version (%d) "
> - "doesn't match required major version (%d)\n",
> - module, data->majorversion, req->majorversion);
> - return FALSE;
> - }
> - else if (req->minorversion != MINOR_UNSPEC) {
> - if (data->minorversion < req->minorversion) {
> - LogMessageVerb(X_WARNING, 2, "%s: module minor version "
> - "(%d) is less than the required minor "
> - "version (%d)\n", module,
> - data->minorversion, req->minorversion);
> - return FALSE;
> - }
> - else if (data->minorversion == req->minorversion &&
> - req->patchlevel != PATCH_UNSPEC) {
> - if (data->patchlevel < req->patchlevel) {
> - LogMessageVerb(X_WARNING, 2, "%sL module patch level "
> - "(%d) is less than the required patch "
> - "level (%d)\n", module, data->patchlevel,
> - req->patchlevel);
> - return FALSE;
> - }
> - }
> - }
> + if (data->majorversion != req->majorversion) {
> + LogMessageVerb(X_WARNING, 2, "%s: module major version (%d) "
> + "doesn't match required major version (%d)\n",
> + module, data->majorversion, req->majorversion);
> + return FALSE;
> + }
> + else if (data->minorversion < req->minorversion) {
> + LogMessageVerb(X_WARNING, 2, "%s: module minor version (%d) is "
> + "less than the required minor version (%d)\n",
> + module, data->minorversion, req->minorversion);
> + return FALSE;
> + }
> + else if (data->minorversion == req->minorversion &&
The above three can get a s/else if/if/.
But even without it (or the commit nitpick) things look a lot better.
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>
-Emil
More information about the xorg-devel
mailing list