On Tue, Feb 15, 2011 at 12:51:19AM +0100, Simon Thum wrote:
> The attached patches allow to not just parse, but use percent options as
> double. It seems this has been the intent, as only one function was
> returning int. This makes sense mainly to adjust the newly-added
> synaptics noise cancellation in the low percent range.
> 
> Next, don't emit warnings when not marking as used. This lets drivers
> check option syntax more flexibly without scaring users.

both merged into my -next, thanks.

Cheers,
  Peter

> From a0261fb459f9715c075bc479ba841968ef199450 Mon Sep 17 00:00:00 2001
> From: Simon Thum <simon.t...@gmx.de>
> Date: Sun, 6 Feb 2011 19:07:19 +0100
> Subject: [PATCH 1/2] fix percent options parsing
> 
> Signed-off-by: Simon Thum <simon.t...@gmx.de>
> ---
>  hw/xfree86/common/xf86Option.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
> index 16c27e5..455cafa 100644
> --- a/hw/xfree86/common/xf86Option.c
> +++ b/hw/xfree86/common/xf86Option.c
> @@ -212,7 +212,7 @@ LookupBoolOption(pointer optlist, const char *name, int 
> deflt, Bool markUsed)
>      return deflt;
>  }
>  
> -static int
> +static double
>  LookupPercentOption(pointer optlist, const char *name, double deflt, Bool 
> markUsed)
>  {
>      OptionInfoRec o;
> -- 
> 1.7.3.4
> 

> From 9c4a8e6dc68c6f5293460e4dba52a2da3148d256 Mon Sep 17 00:00:00 2001
> From: Simon Thum <simon.t...@gmx.de>
> Date: Sun, 6 Feb 2011 19:13:00 +0100
> Subject: [PATCH 2/2] xfree86: allow to check for options without warnings in 
> the log
> 
> This allows set_percent_option in synaptics to work as described,
> and should generally enable to check option syntax without log spam.
> 
> Signed-off-by: Simon Thum <simon.t...@gmx.de>
> ---
>  hw/xfree86/common/xf86Option.c |   75 +++++++++++++++++++++++++--------------
>  1 files changed, 48 insertions(+), 27 deletions(-)
> 
> diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
> index 455cafa..480f386 100644
> --- a/hw/xfree86/common/xf86Option.c
> +++ b/hw/xfree86/common/xf86Option.c
> @@ -496,27 +496,33 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>       switch (p->type) {
>       case OPTV_INTEGER:
>           if (*s == '\0') {
> -             xf86DrvMsg(scrnIndex, X_WARNING,
> -                        "Option \"%s\" requires an integer value\n",
> -                        p->name);
> +             if (markUsed) {
> +                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                            "Option \"%s\" requires an integer value\n",
> +                            p->name);
> +             }
>               p->found = FALSE;
>           } else {
>               p->value.num = strtoul(s, &end, 0);
>               if (*end == '\0') {
>                   p->found = TRUE;
>               } else {
> -                 xf86DrvMsg(scrnIndex, X_WARNING,
> -                            "Option \"%s\" requires an integer value\n",
> -                             p->name);
> +                 if (markUsed) {
> +                     xf86DrvMsg(scrnIndex, X_WARNING,
> +                                "Option \"%s\" requires an integer value\n",
> +                                 p->name);
> +                 }
>                   p->found = FALSE;
>               }
>           }
>           break;
>       case OPTV_STRING:
>           if (*s == '\0') {
> -             xf86DrvMsg(scrnIndex, X_WARNING,
> -                        "Option \"%s\" requires an string value\n",
> -                        p->name);
> +             if (markUsed) {
> +                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                            "Option \"%s\" requires an string value\n",
> +                            p->name);
> +             }
>               p->found = FALSE;
>           } else {
>               p->value.str = s;
> @@ -529,18 +535,22 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>           break;
>       case OPTV_REAL: 
>           if (*s == '\0') {
> -             xf86DrvMsg(scrnIndex, X_WARNING,
> -                        "Option \"%s\" requires a floating point value\n",
> -                        p->name);
> +             if (markUsed) {
> +                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                            "Option \"%s\" requires a floating point "
> +                            "value\n", p->name);
> +             }
>               p->found = FALSE;
>           } else {
>               p->value.realnum = strtod(s, &end);
>               if (*end == '\0') {
>                   p->found = TRUE;
>               } else {
> -                 xf86DrvMsg(scrnIndex, X_WARNING,
> -                         "Option \"%s\" requires a floating point value\n",
> -                         p->name);
> +                 if (markUsed) {
> +                     xf86DrvMsg(scrnIndex, X_WARNING,
> +                             "Option \"%s\" requires a floating point "
> +                             "value\n", p->name);
> +                 }
>                   p->found = FALSE;
>               }
>           }
> @@ -549,8 +559,11 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>           if (GetBoolValue(p, s)) {
>               p->found = TRUE;
>           } else {
> -             xf86DrvMsg(scrnIndex, X_WARNING,
> -                        "Option \"%s\" requires a boolean value\n", p->name);
> +             if (markUsed) {
> +                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                            "Option \"%s\" requires a boolean value\n",
> +                            p->name);
> +             }
>               p->found = FALSE;
>           }
>           break;
> @@ -561,8 +574,10 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>                * hence 100 looks the same as 100% to the caller of sccanf
>                */
>               if (sscanf(s, "%lf%c", &p->value.realnum, &tmp) != 2 || tmp != 
> '%') {
> -                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                 if (markUsed) {
> +                     xf86DrvMsg(scrnIndex, X_WARNING,
>                              "Option \"%s\" requires a percent value\n", 
> p->name);
> +                 }
>                   p->found = FALSE;
>               } else {
>                   p->found = TRUE;
> @@ -571,9 +586,11 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>           break;
>       case OPTV_FREQ: 
>           if (*s == '\0') {
> -             xf86DrvMsg(scrnIndex, X_WARNING,
> -                        "Option \"%s\" requires a frequency value\n",
> -                        p->name);
> +             if (markUsed) {
> +                 xf86DrvMsg(scrnIndex, X_WARNING,
> +                            "Option \"%s\" requires a frequency value\n",
> +                            p->name);
> +             }
>               p->found = FALSE;
>           } else {
>               double freq = strtod(s, &end);
> @@ -590,17 +607,21 @@ ParseOptionValue(int scrnIndex, pointer options, 
> OptionInfoPtr p,
>                            !xf86NameCmp(end, "M"))
>                       units = 1000000;
>                   else {
> -                     xf86DrvMsg(scrnIndex, X_WARNING,
> -                         "Option \"%s\" requires a frequency value\n",
> -                         p->name);
> +                     if (markUsed) {
> +                         xf86DrvMsg(scrnIndex, X_WARNING,
> +                             "Option \"%s\" requires a frequency value\n",
> +                             p->name);
> +                     }
>                       p->found = FALSE;
>                   }
>                   if (p->found)
>                       freq *= (double)units;
>               } else {
> -                 xf86DrvMsg(scrnIndex, X_WARNING,
> -                         "Option \"%s\" requires a frequency value\n",
> -                         p->name);
> +                 if (markUsed) {
> +                     xf86DrvMsg(scrnIndex, X_WARNING,
> +                             "Option \"%s\" requires a frequency value\n",
> +                             p->name);
> +                 }
>                   p->found = FALSE;
>               }
>               if (p->found) {
> -- 
> 1.7.3.4
> 

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to