
Daniel P. Berrange wrote:
On Thu, Oct 02, 2008 at 04:12:10PM -0400, Cole Robinson wrote:
Daniel P. Berrange wrote:
Basically a good idea - we've discussed doing exactly this in the past. You can do further though, and kill off the 'dom' and 'net' parameters here too. Those are deprecated and should always be left NULL these days.
Sounds good.
Actually, lets go one step further than this. Just change the signature of virRaiseError itself, rather than creating a virRaiseErrorHelper. No caller in libvirt uses all these parameter it has, so might as well just remove them and have it set those fields to NULL/0 as directly.
I held off on doing this for my latest version of the patch. Some files call RaiseError directly so changing the arguments will be some extra work. There are a few places a couldn't quickly remove the custom error functions either, so I'll send a later patch that cleans up the sticky situations. For now, I think using the helper is okay, it will be easy to swap out for an updated __virRaiseError at a later time.
Hmm, I kind of like the idea of having this info by default, rather than offloading it to the error message. We could for example append filename:lineno to all error messages if debugging is enabled, or stick the data as extra string or int info to RaiseError.
I know there have been times when, using virt-manager/ virtinst, libvirt prints some generic lookup error msg, yet nothing seems to fail. It would be nice to get a definitive line number of the culprit just by using LIBVIRT_DEBUG.
That's an interesting idea - I can't remember offhand though whether the __FILE__ expands to the full file path, or just the final filename without directory separator. I'd only want this compiled in by default if it is the latter - we don't want another 500 K of long strings from full directory paths in every build.
Daniel
A test program and 'strings' indicates that only the file basename is stored, so it shouldn't be a problem. I'm about to post a complete version of this patch, fyi. Thanks, Cole