Re: GConf - defaults.



Owen Taylor wrote:

> Dietmar Maurer <dietmar ximian com> writes:
>
> > Hi Havoc,
> >
> > I do not suggest to remove the ability to get default values from the
> > configuration engine. But what do you do when:
> >
> > gconf_client_get_int (c, "user_level", ...)
> >
> > fails? Do you exit the program? I suggested to do something useful instead.
>
> Well, the problem with writing:
>
>  GError *error = NULL;
>
>  level = gconf_client_get_int (c, "user_level", &error);
>  if (error)
>    {
>      level = DEFAULT_LEVEL;
>      g_error_free (error);
>    }
>
> is not just the problem with writing this all over the place, but it
> is also that these fall back defaults don't get used at all normally,
> so they'll rot, and may not work at all.

Why don't we simply use:

level = bonobo_pbclient_get_int_with_default (db, "user_level", 0, NULL);


> The idea proposed to deal with failures of:
>
>  - corrupt (wrong type) keys in the database
>  - Backend not being reachable.
>
> Is that we provide a fallback way of getting the real default values -
> reading them from the schema file directly. These means that the as
> long as the schema file is there, we have something half-way reasonable
> to provide. If the schema file isn't there, we have a hosed install,
> and exiting is probably the friendliest thing to do.
>
> In GConf, the basic idea is that by using such a fallback default, and
> providing appropriate global error handling settings, you can make
> writing:
>
>  level = gconf_client_get_int (c, "user_level", NULL);
>
> the _right_ thing to do, not just a lazy thing that people will do
> anyways. I'm sure there is a translation of this idea into
> bonobo-config terms as well.
>
> Regards,
>                                         Owen





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]