[Libosinfo] [libosinfo] Don't fail when there's an error loading the user DB

Daniel P. Berrange berrange at redhat.com
Tue Mar 19 10:49:13 UTC 2013


On Tue, Mar 19, 2013 at 11:29:36AM +0100, Christophe Fergeau wrote:
> On Tue, Mar 19, 2013 at 10:18:04AM +0000, Daniel P. Berrange wrote:
> > On Tue, Mar 19, 2013 at 11:05:21AM +0100, Christophe Fergeau wrote:
> > > osinfo_loader_process_default_path() currently returns an error if
> > > there was a problem when parsing the user database. This leads
> > > application to error out when an invalid XML file is dropped in
> > > ~/.config/libosinfo/db/
> > > As the stricter behaviour can be achieved using public libosinfo API,
> > > we can change osinfo_loader_process_default_path() to be less strict
> > > and more useful to applications.
> > > ---
> > >  osinfo/osinfo_loader.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
> > > index 467af3f..bc17a2e 100644
> > > --- a/osinfo/osinfo_loader.c
> > > +++ b/osinfo/osinfo_loader.c
> > > @@ -1892,8 +1892,10 @@ void osinfo_loader_process_default_path(OsinfoLoader *loader, GError **err)
> > >          goto error;
> > >  
> > >      osinfo_loader_process_user_path(loader, &error);
> > > -    if (error)
> > > -        goto error;
> > > +    if (error) {
> > > +        g_warning("Error loading libosinfo user data: %s", error->message);
> > > +        g_clear_error(&error);
> > > +    }
> > 
> > It would be nice if we defined an error code for the "Directory does not exist"
> > error scenario, so we can skip that gracefully, but still report an fatal error
> > for parser problems.
> 
> This still means applications need to be aware that they need to check
> _process_default_path() error and ignore some errors (which imho is what
> you want to do most of the time), so this patch makes things better for
> this use case.

Oh, no, I mean that if you add a specific error code for this case,
you can make _process_default_path() skip the "not found" error, and
still treat othe errors as fatal, instead of using an g_warning.

> However I agree that silently ignoring errors (+ an ugly g_warning()) is
> not great, so I'm fine with going with the approach you suggest.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the Libosinfo mailing list